网络类型
网络类型是根据数据链路层所运行的协议及规则来划分的
分类
-
P2P----Point to point----点到点网络
- 虚线画法
-
MA----Multi-access Network----多点接入网络(中间连交换机视为同一链路)
- 实线画法
- BMA----Broadcast Multi-access Network----广播型多点接入网络
- NBMA----Non Broadcast Multi-access Network----非广播型多点接入网络----只有单播
节点:三层设备(路由 PC)
MA网络
以太网协议----BMA
特点
- 需要MAC地址对设备进行区分和标识
- 传输效率高
核心
- 频分技术
BMA网络的构建方式:使用以太网线缆连接设备的以太网接口,形成的网络就是以太网网络,所运行的二层协议就是以太网协议
以太网线缆:同轴线,双绞线
以太网接口:双绞线接口、光纤接口
P2P
-
当一个网络中只能存在两台设备,并且不允许第三台设备加入,这样的网络被称为P2P网络
-
不需要MAC地址进行通讯
点到点网络的搭建:使用串口线线缆连接设备的串线接口,形成的网络
串线的标准
- E1标准----传输速率为2.048Mbps----欧洲标准
- T1标准----传输速率为1.544Mbps----北美标准
数据链路层协议
高级数据链路控制协议----HDLC
- 满足工业标准的标准HDLC协议
ISP根据SDLC(面向比特的同步数据链路控制协议)改进而来的HDLC协议
同步----以帧为单位来传输数据
异步----以字节为单位传输数据
- 非标的HDLC协议----思科提出的
上述两种协议相互不兼容,思科设备默认采用的串线协议是HDLC协议
HDLC网络搭建
华为设备串口网络默认使用协议为PPP,而非HDLC
[r1-Serial4/0/0]link-protocol hdlc ----在接口修改链路协议类型为HDLC
Warning: The encapsulation protocol of the link will be changed. Continue? [Y/N]
:y
串口线缆死亡时间10s
不使用MAC地址跟IP地址,实际上会配置IP地址满足上层协议的使用
HDLC接口地址借用
[r1-Serial4/0/0]ip address unnumbered interface LoopBack 0 ----从环回0接口借用IP地址
[r1]ip route-static 12.0.0.2 32 Serial 4/0/0 ---配置通往对端接口的路由信息
配完IP检查路由信息,不自动生成路由
串线不用配置IP,只需要从环回(掩码32)借用一个IP就行;但需要在对端补充通往本端主机路由的路由信息
点到点协议----PPP
优点
- 兼容性强
- 可移植性
- 速率快
- 因为PPP协议没有重传机制(会话建立过程中会重传,建立后的数据丢失,不会进行重传)
PPP会话的建立
- 链路建立阶段----LCP
- 链路控制协议----LCP协议----完成PPP会话建立第一阶段的协商
- 认证阶段----PPP认证(AAA)认证 授权 计费
- 密码认证协议----PAP
- 挑战握手协议----CHAP
- 网络层协议协商阶段----NCP协商
-
网络控制协议----NCP协议----一系列协议的总称,完成PPP会话建立第三阶段时针对网络层协议进行协商
- 若网络层使用IP协议,则对应使用NCP协议中的IPCP(互联网协议控制协议)协议协商
-
PPP链路过程
名称 | 含义 |
---|---|
Dead阶段 | 物理层不可用阶段 |
Establish阶段 | 进行LCP参数协商 |
Authenticate阶段 | (非必选,不选跃迁到下一阶段)认证阶段 |
Network阶段 | NCP参数协商 |
Terminate阶段 | 该阶段在进行资源释放,若所有资源均被完全释放,则回到Dead阶段 |
PPP数据帧结构
Flag----7E----十六进制0111 1110;固定----将信息的7E转义,避免识别成帧的7E
Address----FF----填充
Control----03----填充
protocol----协议----信息部分使用的协议(IP LCP NCP…)
PPP不是具体的协议,而是一堆协议的集合
0x80XX----NCP协议所包含的协议----使用其中一个,其他就不使用
0x00xx----上层应用协议
0xc0xx----常用协议
链路建立阶段----LCP建立
- MRU值----PPP数据帧所允许携带的最大数据单元,单位字节,默认值1500
- MRU协商完成,则不需要协商MTU;PPP网络先协商MRU,MA网络先协商MTU
MTU----最大传输单元----IP头部+数据
MSS----最大报文长度----TCP头部+数据
MRU----最大数据单元----数据
-
认证----协商PPP会话建立第二阶段是否需要认证,以及使用何种方式认证
-
魔术字----用于检测链路中是否存在环路
- 机制:如果三次以上接受到相同的魔术字,则LCP协商不通过
协商过程
----双向过程----
A设备发送链路配置请求报文给对端,若没有收到对端回复的任何一个链路配置报文,则每隔3秒重传一次链路配置请求报文,如果连续10次发送链路配置请求,仍然没有收到回复报文,则认为对端不可用,停止发送报文
如果对端不认可某些参数的数值,则回复的是NAK报文,该报文中将携带不认可的参数以及该参数的数值范围。本端收到该报文后,根据内容重新发送链路配置请求
如果对端不认可某种参数,则回复Reject报文,该报文中携带不认可的参数。本端收到该报文后,删除该参数,并重新发送链路配置请求
LCP协议报文类型
链路配置报文
NAK:参数内的数值、状态,本端不认可
Reject:参数,本端不能认识
链路终止报文
链路终止请求----Terminater-Request
链路确认请求----Terminater-ack
作用:不用等待10s,直接断开连接,节省资源
链路维护报文
回波请求----Echo-Request
回波应答----Echo-Reply
作用:检测底层链路有没有成环(自环)
认证阶段----PPP认证
PPP会话的建立是一次性会话,会话建立完成后,后续的修改不会影响到会话本身。
PPP认证本身不具备认证等功能,是通过调用AAA框架来完成的
该认证可以是单向的或者双向的----一般实际应用中会采用单向认证
PAP----密码认证协议
PPP是(被认证端)将需要认证的用户名、密码以明文形式携带在数据报文中发送给对端(认证端)进行认证
配置
被认证方:R1
[r1-Serial4/0/0]ppp pap local-user huawei password cipher 123456 ----配置用户名和密码信息
认证方:R2
[r2-aaa]local-user huawei password cipher 123456 ----创建用户名和密码信息
[r2-aaa]local-user huawei service-type ppp ----修改服务类型
[r2-Serial4/0/0]ppp authentication-mode pap ----修改接口的认证方式
CHAP----挑战握手协议
认证双方通过对比摘要值的方式进行认证
认证过程:
- 认证方先发送挑战报文,里面包含了认证方的用户名和一个随机值
- 被认证方收到该报文后,需要根据用户名信息查找对应密码,然后将密码信息与随机值一起做HASH运算得到摘要值,然后将该摘要值+用户名发送给认证方
- 认证方收到后,根据用户名信息查找本地密码信息,使用相同HASH算法进行计算,得出摘要值,将两个摘要值进行对比,若相同,则回复ACK报文;若不同,则回复NAK报文
被认证方
[r2-Serial4/0/0]ppp chap user admin
[r2-Serial4/0/0]ppp chap password cipher 654321
认证方
[r1-aaa]local-user admin password cipher 654321
[r1-aaa]local-user admin service-type ppp
[r1-Serial4/0/0]ppp authentication-mode chap
一条PPP链路的两端可以使用不同的认证协议认证对端;但被认证方必须支持认证方要求使用的认证协议并且正确配置用户名和密码信息
网络层协议协商阶段----NCP协商
如果网络层使用的是IP协议,则需要使用IPCP协议进行协商
-
协商内容----授权
-
IP报文的压缩方式
-
IP地址
-
IP地址是否为可用IP地址
-
该IP地址是否与本地冲突
-
-
协商过程
- 静态地址协商
对端的IP地址为合法的单播地址,且和本端不同,则本端认可对端可以使用该IP
当认可对端的IP地址后,将自动学习到达对端的主机路由
- 动态地址协商
当对端没有IP地址时,本端将一个合法的单播IP地址携带在报文中,供对端使用
配置方:
[r2-Serial4/0/0]remote address 1.1.1.1 ----分配出的IP地址
获取方:
[r1-Serial4/0/0]ip address ppp-negotiate ----接受对端发送的IP地址(无掩码)
虚拟专用网络----VPN
在公网网络上建立逻辑上的线缆实现专用网络,进行加密通信(数据包加密;目标地址转换)
- 虚拟----利用公共网络资源建立私有网络
- 专用----用户按需构建
- 核心技术----隧道技术
GRE
隧道技术----在隧道的两端,通过封装及解封装技术在公网上建立一条数据通道,使用这条数据通道进行数据传输
GRE----是一种隧道封装技术,是一种标准的三层隧道技术,是一种点对点的隧道
SIP:12.0.0.1 | DIP:23.0.0.3 | GRE | GRE SIP:192.168.1.1 | GRE DIP:192.168.2.1 | 数据 |
---|---|---|---|---|---|
乘客协议 | 乘客协议 | 封装协议 | 传输协议 | 传输协议 | 乘客协议 |
IP协议字段PRO(上层协议信息)----GRE 47----IP头部信息,如果发现协议类型字段值为47,则表示该上层协议为GRE协议
原IP中的TTL被封装后使用的是GRE的TTL值
配置----双方接口
[r1]interface Tunnel 0/0/0 ----创建隧道接口
[r1-Tunnel0/0/0]ip address 192.168.3.1 24 ----IP一定是私网IP
[r1-Tunnel0/0/0]tunnel-protocol gre ----定义封装方式
[r1-Tunnel0/0/0]source 12.0.0.1 ----定义封装源IP
[r1-Tunnel0/0/0]destination 23.0.0.3 ----定义封装目IP
[r1]ip route-static 192.168.2.0 24 192.168.3.2 ---补充路由信息
源目IP地址:建立的隧道的关键
GRE两端配置完成后,必须存在指向隧道的路由信息,否则数据无法被GRE进行封装,也就无法正常通讯
GRE过程
设备从连接私网的接口接收到报文后,检查报文头部中目的IP地址字段,在路由表中查找出接口,如果发现出接口是隧道接口,则将报文发送给隧道模块进行处理
隧道模块接收报文后,首先根据乘客协议的类型和当前GRE隧道的配置生成校验和参数,对报文进行GRE封装,即添加GRE头部信息
然后,设备给报文添加传输协议报文头部,即IP头部。该IP报文头部的源地址就是隧道的源地址,目的地址就是隧道的目的地址
最后,设备根据新添加的IP报文头部的目的地址,在路由表中查找相应的出接口,并发送报文,之后,封装后的报文将在公网环境下进行数据传输
接收端设备从连接公网的接口收到报文后,首先会分析IP头部信息,如果发现协议类型字段值为47,则表示该上层协议为GRE协议,于是将报文交给GRE模块进行处理
GRE模块去掉IP报文头部和GRE报文头部,并根据GRE报文头部中的协议类型字段,确定将该报文交于那个乘客协议进行处理
----过程中路由接口无法拆开封装的信息,只有GRE模块才能拆开
数据流向
发送方:路由----Tunnel----GRE+传输----路由----出接口(查找两次路由)
接收方:IP----协议类型字段值47----Tunnel----去掉GRE+传输----路由(查找一次路由)
不足:点对点,不能
keep alive检测
用于检测隧道对端是否可达,开启后GRE隧道向对端发送探测报文,若对端不可达,隧道连接关闭,避免数据空洞----依靠对端的回包,来探测对端隧道状态
配置
[r1-Tunnel0/0/0]keepalive ---开启keepalive检测功能
[r1-Tunnel0/0/0]keepalive period 5 retry-times 3
period ----代表发送周期
retry-times ----探测报文重传次数
如果在隧道一端开启了keepalive检测功能,无论对端是否配置keepalive,对端都会回复接收到的keepalive探测报文,即会向源发送一个回应报文
多点通用路由封装----MGRE
不是VPN技术;既不是BMA也不是NBMA,实际是P2P网络
MGRE逻辑拓扑中,虽然是网络中存在多个节点,但是发送数据时,依然是点到点数据发送,不存在广播和组播行为
故,这种网络结构近似NBMA网络
下一跳解析协议----NHRP
C/S架构
Hub–spoke----中心–分支架构
- Hub----服务端----中心节点----固定IP
- Spoke----客户端----分支节点----不固定IP
NHS—下一跳服务器----一般是中心节点
选择公网接口IP不会发生改变的设备作为NHRP的中心节点和NHS;这样分支都能通过中心节点隧道的IP和物理IP建立隧道关系
然后,NHRP要求分支将物理接口IP----虚拟接口IP的映射关系发送NHS;此时NHS将映射关系记录在动态的NHRP表中;当发送信息时,查看NHRP表进行对应的数据封装
分支节点的表单----静态 中心节点的表单----动态
中心的表单由分支注册而来的
分支的表单由静态方式写上的
检查:
方法一:测试隧道间的通信
方法二:查看中心的表单和分支的表单;若对应上,则MGRE隧道没有问题
不足:
分支节点间通讯,浪费中心设备资源
中心进行大量数据封装与解封装,造成网络延迟
不支持广播和组播行为,无法使用动态协议维护路由信息
Full–mesh:全连接架构
需要在接口关闭的情况下进行配置,才能相互发送注册信息
每个设备即是中心也是分支;相互注册
动态智能VPN技术----DSVPN
MGRE+NHRP----华为创造;专门为Hub----Spoke架构服务的
MGRE隧道
- 静态隧道----Spoke–Hub----永久存在----MGRE隧道
- 动态隧道----Spoke–Spoke----通讯完毕拆除
NHRP映射表
-
静态表项
- 由网络管理员手工配置
-
动态表项
- 由NHRP协议动态生成
- HUB将Spoke的注册报文中Tunnel地址和公网地址的映射关系,记录到NHRP动态映射表
- Spoke通过NHRP解析报文提取对端Spoke的Tunnel地址和公网地址的映射关系,生成NHRP映射表
- 老化时间----7200s----两小时
- 由NHRP协议动态生成
NHRP映射表建立过程
建立Spoke–Hub隧道
Spoke----向HUB发起注册请求
Spoke定时向Hub发送NHRP注册请求报文,报文中携带Spoke节点的Tunnel地址和公网接口地址
Hub----向Spoke注册应答
HUB从NHRP注册请求报文提取Spoke节点的Tunnel地址和公网接口地址,生成NHRP动态映射表并发送注册应答报文给Spoke节点,进而建立静态隧道
分支之间的路由学习
-
非shortcut方式
- 分支之间相互学习路由信息
- 分支到分支;路由192.168.4.0 24 192.168.5.4 类似的 走隧道的方式
- 这种情况下,Spoke会消耗大量的CPU和内存资源,对其路由表容量和性能有较高的要求。而实际应用中,Spoke的性能往往较低,能存放的路由数量有限。因此,这种路由部署方案只适用于网络节点较少、路由信息量小的中小型网络
-
shortcut方式
- 分支的路由汇聚到总部
- 分支到中心;路由192.168.4.0 24 192.168.5.1 下一跳路由均为中心的方式
- 由于Spoke减少了自身的路由数量,所以适用于那些网络规模大、分支较多的大型网络
建立Spoke–Spoke隧道
分支之间路由学习方式不同,NHRP映射表的生成过程也不同;故,分支间隧道建立方式不同
非shortcut方式
源spoke可以学习到目的spoke的tunnel地址,因此,源spoke可以直接根据目的spoke的tunnel地址来查找目的spoke的公网地址,从而生成目的spoke的映射关系
手工配置所有分支到分支的路由信息,如192.168.4.0 24 192.168.5.4
R2需要访问R4;R2将流量发送给R1(本地路由项使得流量走向Tunnel0/0/0接口,接口只规定封装源IP(接口公网IP),目的公网IP需要按照映射表来封装,此时只有向中心R1的映射关系 S:25.0.0.2 D:15.0.0.1;故R2将流量发送给R1
此时,R1还会发送NHRP的请求报文给中心R1
R1转发流量和NHRP请求报文给R4;(R1无法直接将R4的信息给R2)报文中携带Spoke节点的Tunnel地址和公网接口地址;R1转发时封装的源目改变,但内容没有改变
当R4收到流量和NHRP请求报文后,获取到R1的对应关系(Tunnel----公网接口),流量直接在R4----R2中进行传递,而不经过中心
由于R2没有R4的对应关系,所以R4也将自己的对应关系发送给R2,以便隧道的建立;之后双方进行在R4----R2中进行通讯;
Local的映射表:R2向R4请求对应关系,R4应答R2的请求,构造出本地Local后,才向R2发送
R1没有的原因:R1给中心的注册信息(注册请求报文)----R2是给R1的应答报文;报文不一样
shortcut方式
所有Spoke的路由下一跳均为Hub的Tunnel地址,源Spoke无法学习到目的Spoke的Tunnel地址。因此,源Spoke只能根据报文的目的地址来查找Spoke的公网地址,会生成目的Spoke的子网地址和公网地址的NHRP映射关系
手工配置所有分支到中心的路由信息,如192.168.4.0 24 192.168.5.1
R4访问R2,按照封装内容将数据发送给R1,R1转发数据并给R4发送重定向
R2:收到R4的数据后进行应答,按照封装内容将应答发送给R1,R1转发数据并给R2发送重定向,R2收到重定向后,向R1发送NHRP(向R4请求192.168.4.1的公网IP),R1进行转发,R4进行应答(在本地构建Local)子网地址和公网地址的NHRP映射关系:192.168.4.1----45.0.0.4
R4:收到重定向后,向R1发送NHRP(向R2请求192.168.2.1的公网IP),R1进行转发,R4进行应答(在本地构建Local)子网地址和公网地址的NHRP映射关系:192.168.4.1----45.0.0.4
之后双方进行通讯(不经过R1)
对方的请求报文----route tunnel
对方的应答报文----route network
发出的应答报文----Local
MGRE环境下的RIP网络
除公网外的网段,都要进行主类宣告
RIP以组播方式发送报文,MGRE环境下是P2P通讯,禁止发送广播和组播报文
由于分支只有中心的表项,发送的组播行为,实际上是单播行为
而分支向中心注册后,中心的NHRP表项中存在多种映射关系,中心向外发送时,无法一次性将报文发送给这些对象(禁止广播 组播)中心无法向外发送
导致分支使用单播向中心发送路由信息,中心能学习到所有路由信息,而分支学不到任何一条路由信息
伪广播:将一次性报文(广播报文),分成多个不同的目标分别单播发送报文,从而达到广播行为
又因为RIP水平分割机制的存在,分支只能获取到中心的路由信息,不能获取分支间的路由信息
中心从隧道接口学到所有分支的路由信息,从此口进的不从此口出,导致中心只能向外发送中心的路由信息
- 关闭水平分割机制----随即而来的是环路问题----非shortcut方式
- 对学习的路由信息进行汇总----环路问题----在中心对汇总网段进行空接口防环----shortcut方式
总结
中心开启伪广播功能
(以下二选一)
中心将水平分割机制关闭——注意环路问题
中心将路由信息进行汇总——注意中心空接口防环
开放式最短路径优先----OSPF协议
链路状态型协议----组播方式更新数据----无类别路由协议
IGP动态路由的评判标准
- 选路是否合理
- 占用资源大小
- 收敛速度快慢
OSPF结构化部署
OSPF域----一系列连续的OSPF路由器组成的网络称为OSPF域
当OSPF路由器接口处于不同的区域时,接口为每个区域分别维护一套LSDB
当邻居关系建立起来,本地会有LSDB信息(关于自己的信息)
多区域的设计
- 限制TOPO信息的洪泛
- 将拓扑变化的影响控制在区域内部
- 区域边界路由器上进行路由汇总,减少网络中的路由条目数量
区域划分规则----网络搭建的要求
- OSPF域中所有非骨干区域都必须与骨干区域相连
- 骨干区域不能被分割
其他规则
非骨干之间不允许直接相互分布区域间路由信息
违反规则
假定没有“所有非骨干区域都必须与骨干区域相连”规则
环路问题7.7.7.7----R2-R4-R5-R3-R1-R2
定义:ABR
- 连接多个区域,至少有一个接口连接骨干区域
- 在区域零中至少有一个活跃的邻居
功能: 将A区域的拓扑转换成路由后,发送到B区域中----传递域间路由信息
假定没有"骨干区域不能被分割"规则
环路问题
规定:从非骨干区域收到的路由信息,ABR设备能接收该路由但不会使用这条路由信息(OSPF的区域水平分割机制----域间防环机制) ----从一个区域学习到的路由信息,不能传回该区域
总结
OSPF规定:
1、伪ABR设备---不允许转发区域间路由信息
2、真实ABR设备
能够将自己直连的非骨干区域的区域内路由信息传递给骨干区域----连接非骨干区域的接口计算出的路由信息
能够将自己直连的骨干区域的的区域内路由信息传递给非骨干区域---骨干区域的接口计算出的路由信息
能够将自己从骨干区域学习到的域间路由信息传递给非骨干区域
OSPF路由器角色
区域内部路由器----IR
- 所有接口同属于一个OSPF区域
区域骨干路由器----BR
- 连接多个区域,且至少有一个接口接入 Area 0 的路由器
区域边界路由器----ABR
- 连接多个区域,且至少有一个接口连接骨干区域
- 在 Area 0 中至少有一个活跃的邻居
AS边界路由器----ASBR
- 工作在OSPF自治系统边界的路由器
- ASBR 将 OSPF 域外的路由引入到本域,外部路由在整个 OSPF 域内传递
同时运行多种路由协议的路由器不一定是 ASBR
ASBR 一定是将外部路由重分发到 OSPF ,或者执行了路由重分发操作的路由器
OSPF数据包
Hello
- 用于发现、建立OSPF邻居、周期保活;协商参数
DD(DBB)----数据库描述报文
- 报文中携带的是LSA的头部数据(路径信息摘要)
- 避免重复更新
LSR----链路状态请求报文
- 请求获取未知的链路信息
LSU----链路状态更新报文
- 携带完整的LSA信息
- 触发更新
LSack----链路状态确认报文
- 确认LSU
- 可靠性机制
OSPF报文格式
所有 OSPF 报文具有相同的头部,长度固定24 字节
OSPF报文头部
名称 | |
---|---|
版本( Version ) | OSPFv2 的值为 2 |
类型( Type ) | 表示 OSPF 报文的类型;值与报文类型对应关系是: 1 - Hello 2 - DD 3 - LSR 4 - LSU 5 - LSAck |
报文长度( Packet Length ) | 整个 OSPF 报文的长度,单位是字节 |
路由器 ID( Router Identification ) | 路由器的 OSPF Router-ID |
区域 ID( Area Identification ) | 表示所属的区域 ID ,是一个 4 字节的数值 |
校验和( Checksum ) | 用来校验报文有效性 |
认证类型( Authentication Type ) | 表示报文使用的认证类型 不认证 简单(明文)认证 MD5认证 |
认证数据( Authentication Data ) | 用于报文认证的内容 如果不认证,则该字段全用0填充 |
Router-ID选择标准:手工配置>环回的最大IP>物理接口的最大IP
在启动OSPF进程前,必须有接口IP地址,若有IP地址,则在第一次启动OSPF进程时,会选取第一个配置的IP地址作为RID值
区分路由器RID和OSPF的RID;OSPF拿路由器RID作为OSPF的RID值
在思科设备中,若没有IP地址,则OSPF启动失败 ----默认执行RFC标准
在华为设备中,若没有IP地址,则OSPF启动后,RID为0.0.0.0 ----先执行华为标准,再执行RFC标准
华为标准:状态最先UP的接口的IP地址作为RID
RFC标准:
取Loopback接口IP地址中最大的作为RID
取物理接口IP地址最大的作为RID
Hello报文
协商参数,只有参数匹配,才能正确建立邻居关系
名称 | |
---|---|
网络掩码( Network Mask ) | 表示接口的网络掩码 通过以太网接口连接,那么直连的两个接口必须配置相同的网络掩码 如果与自己接口网络掩码不同,则忽略这个 Hello 报文,不会建立邻居关系 |
Hello 间隔( Hello Interval ) | 接口周期性发送 Hello 报文的时间间隔,单位是秒 不相同,则邻居关系无法正常建立 P2P 或 Broadcast 类型的接口上,Hello 间隔是 10 秒 在 NBMA 及 P2MP 类型的接口上,Hello 间隔是 30 秒 |
选项( Options ) | 该字段一共 8 比特,每比特标记置为1,则代表OSPF支持某种特性 |
路由器优先级( Router Priority ) | 路由器优先级,也叫做 DR 优先级,用于 DR 和 BDR 的选举 默认情况下,OSPF 接口的 DR 优先级是 1 |
路由器失效时间( Router Dead Interval ) | 路由器等待对方发送 Hello 报文的时间,超过这个时间认为是路由器已离线 不相同,则邻居关系无法正常建立 默认情况下,失效时间 是 Hello 的 4 倍 |
指定路由器DR( Designated Router ) | 网络中 DR 的接口 IP 地址 如果值为 0.0.0.0 ,表示没有 DR ,或 DR 还未选举出来 |
备份指定路由器BDR( Backup Designated Router ) | 网络中 BDR 的接口 IP 地址 如果值为 0.0.0.0 ,表示没有 BDR ,或 BDR 还未选举出来 |
邻居( Neighbor ) | 表示邻居的 Router-ID ,是在直连链路上发现的有效邻居 |
DBD( DD )报文
DD报文的交互过程会一直持续,直到双方的 LSDB 同步完成
- 隐性确认机制
- 主从关系选举
- LSA摘要信息共享
名称 | |
---|---|
接口最大传输单元( Interface Maximum Transmission Unit ) | 接口的 MTU 默认情况下,接口发送的 DD 报文中,无论接口实际的 MTU 值是多少,值都为 0 华为默认不开启MTU值检测,可以开启该功能 |
选项( Options ) | 路由器支持的 OSPF 可选项 |
I 位( Initial Bit ) | 初始化位 进行主从关系选举时,值为 1 主从选举完成后,值为 0 |
M 位( More Bit ) | 如果值为 1 ,表示后续还有 DD 报文 如果值为 0 ,表示这是最后一个 DD 报文 |
MS 位( Master Bit ) | 主路由器发送的 DD 报文中,值为 1 从路由器发送的 DD 报文中,值为 0 |
DD 序列号( DD Sequence Number ) | DD 报文的序列号,在 DD 报文交互过程中,逐次加 1 DD 序列号必须由主路由器决定,而从路由器只能使用主路由器发送的 DD 序列号来发送自己的 DD 报文----隐性确认机制 |
LSA 头部( LSA Header ) | 当路由器使用 DD 报文描述自己的 LSDB 时,LSA 头部信息就在这里 一个 DD 报文可能包含一条或多条 LSA 头部信息 |
[r1-GigabitEthernet0/0/0]ospf mtu-enable ----开启MTU检测机制,两端都需要开启
如果双方都开启该功能,则进行MTU检测
- 若两边相同,则检测通过
- 若两边不同,则状态卡在exstart状态
LSR报文
链路状态类型、链路状态ID、通告路由器 ----LSA三元组,通过这三个参数可以唯一的标识出一条LSA信息
名称 | |
---|---|
链路状态类型( Link-State Type ) | 表示 LSA 类型 OSPF 有多种 LSA 类型,每种 LSA 描述 OSPF 网络的某个部分,使用不同的类型编号 1 - Router LSA - 路由器LSA 2 - Network LSA - 网络LSA 3 - Network Summary LSA - 网络汇总LSA 4 - ASBR Summary LSA - ASBR汇总LSA 5 - AS External LSA - AS外部LSA 7 - |
链路状态标识( Link-State ID ) | LSA 的标识 不同的 LSA 类型,字段的定义不同 |
通告路由器( Advertising Router ) | 生成这条 LSA 的路由器的 Router-ID |
LSU报文
当路由器感知到网络发生变化时,会触发 LSU 报文的泛洪,及时把网络变化通告给其它路由器
-----BMA 网络中-----
非 DR 、BDR 路由器向组播地址 224.0.0.6 发送 LSU 报文
DR 和 BDR 会侦听这个组播地址
DR 在接收 LSU 报文后向 224.0.0.5 发送 LSU 报文,从而将更新信息泛洪到整个 OSPF 区域
所有的 OSPF 路由器都会侦听 224.0.0.5 这个组播地址
LSack报文
为了确认 LSA 已经送达,需要对报文中的 LSA 进行确认----显性确认机制
LSAck 报文包含路由器确认的 LSA 头部信息
OSPF状态机
Attempt:尝试状态
在NBMA网络类型下,如果需要启动OSPF协议,需要使用peer命令指定邻居IP地址,否则不会发送hello报文,配置该命令后,邻居状态会进入到init
OSPF工作过程
确认可达性:Hello
摘要同步:DBD(DD)
完整信息同步:LSR LSU LSack
OSPF的接口网络类型
指的是OSPF的接口在不同网络类型下的不同工作方式
[r3]display ospf interface GigabitEthernet 0/0/0 —查看OSPF接口网络类型
接口的类型
一般情况下,链路两端的OSPF接口网络类型必须一致,否则双方无法建立邻居关系
网络类型 | 工作方式 | 开销值 |
---|---|---|
BMA(Broadcast) | 可以建立多个邻居 选举 DR 和 BDR Hello 报文发送间隔是 10 秒、死亡时间是 40 秒 | |
P2P(P2P) | 只能建立一个邻居 不选举 DR 和 BDR Hello 报文发送间隔是 10 秒、死亡时间是 40 秒 | 48 |
环回接口(P2P)华为设备定位P2P;该接口实际上没有真实数据的收发 不选举 DR 和 BDR Hello 报文发送间隔是 10 秒、死亡时间是 40 秒 环回接口默认学习32位主机路由 | ||
P2MP | 可以建立多个邻居 选举 DR 和 BDR Hello 报文发送间隔是 30 秒、死亡时间是 120 秒 会学习邻居接口的主机路由 | 1562 |
NBMA(NBMA) | 可以建立多个邻居,但需要手动配置邻居 选举 DR 和 BDR Hello 报文发送间隔是 30 秒、死亡时间是 120 秒 | 48 |
vlink(P2P)以单播形式发送Hello报文 Hello 报文发送间隔是 10 秒、死亡时间是 40 秒 |
广播型多路访问类型----BMA
display ospf interface GigabitEthernet 0/0/0
名称 | |
---|---|
State | 本接口的身份 |
Type: Broadcast | 接口使用BMA网络下的工作方式 |
Priority | 接口优先级 |
Designated Router | DR的IP |
Backup Designated Router | BDR的IP |
Poll 120 | 轮询时间(秒) 仅在NBMA网络下启用 每120秒向外发送一次Hello 报文,用于发现启动OSPF的路由器 |
Retransmit 5 | 重传时间(秒)----不能设置太小,至少大于报文在传输过程中来回的时间 重传LSA信息 |
Transmit Delay 1 | 传输延迟时间(秒) ----专门为LSA的设置----老化LSA信息----每个LSA单独计时 传输过程中不会改变;即发出时剩余多少时间,收到时就是多少时间 传播到接口之前,路由设备必须延长数据包的期限(+1) 填充在LSA内;全网要保持一致;网络慢,设置成大的 |
BMA 网络中,会选举 DR 和 BDR ;所有非 DR 、BDR 路由器仅与 DR 和 BDR 建立邻接关系
BMA 网络中,接口以组播方式发送 Hello 报文、LSU 报文以及 LSAck 报文 (两个地址均有可能)
单播方式发送 DD 报文及 LSR 报文 (将LSA信息给邻接关系的接口时,以单播方式方式发送LSU)
当路由器需要向 DR 和 BDR 发送 OSPF 报文时,使用 224.0.0.6 这个组播地址作为目的 IP 地址
当需要向所有的 OSPF 路由器发送报文时,使用 224.0.0.5
默认情况下,广播类型接口的 Hello 报文发送间隔是 10 秒;死亡时间是 40 秒
[r3-GigabitEthernet0/0/0]ospf timer ? ----修改时间
dead 死亡时间
hello
ldp-sync
poll 轮询时间
retransmit 重传时间
[r3-GigabitEthernet0/0/0]ospf trans-delay ? ----修改传输延迟时间(1-500)
非广播型多路访问类型----NBMA
当OSPF链路工作于帧中继ATM、FR时,其OSPF链路的网络类型为NBMA
NBMA 网络不具备广播能力;所有OSPF报文均是单播发送
需要手动配置邻居关系,才可以发送OSPF报文信息
NBMA 网络中,也会进行 DR 和 BDR 选举
默认情况下,NBMA 类型接口的 Hello 报文发送间隔是 30 秒;死亡时间是 120 秒
开销值48
点对点类型----P2P
P2P 网络是在一条链路上只能连接两台路由器的环境
P2P 网络中,接口以组播方式发送各种协议报文,组播地址是 224.0.0.5 (因为不一定配置IP)
默认情况下,P2P 类型接口的 Hello 报文发送间隔是 10 秒;死亡时间是 40 秒
P2P 类型的网络中,不会选举 DR 和 BDR (不需要进行选举,2-way进入到exstart)
有且仅有一个邻居;建立PPP时形成主机路由
开销值为48;使用E1标准 100/2.048=48.828
点对多点类型----P2MP
P2MP 网络中,路由器接口的数据链路层封装不会自动设置,必须手动指定
P2MP 网络中无需选举 DR 、BDR
OSPF 在 P2MP 类型的接口上以组播方式发送 Hello 报文,以单播方式发送其它报文
默认情况下,Hello 报文发送间隔是 30 秒
开销值1562
MGRE环境下跑OSPF且接口网络类型为P2MP,不需要做多余修改
环回接口 ( 虚拟接口 )
OSPF特殊定义的一种接口网络类型
没有真实数据的收发,不需要DR与BDR的选举,不存在邻居关系
开销值为零 ----华为特殊定义的开销值----修改参考带宽不影响该开销
type:P2P 类型字段 ----华为没有特殊定义类型,故是P2P;而思科是Loopback
Hello 报文发送间隔是 10 秒;死亡时间是 40 秒
环回接口默认学习32位主机路由
修改成Broadcast后
- waiting ----等待计时器,计时器超时,认为自己是DR(BDR)设备,不能同时即是DR又是BDR;时间与死亡时间相同 ,并且停留在exstart状态,超过一定时间后,状态切换到2-way
通过OSPF学习到的环回接口,掩码均是32位;即通告时将环回掩码置为32;学习到主机路由
好处:
保证精准性的前提下避免环路,避免路由黑洞
若需要传递真实的掩码,可以将接口网络类型修改为Broadcast
环回接口的另一种作用:
协议使用RID值是使用环回的,使用RID值进行通讯,环回一般配置32位掩码
网络优化
R1----R3:之间使用P2P接口网络类型
中间的接口均修改为P2MP接口网络类型
OSPF的不规则区域划分
规定
- 所有非骨干都必须与骨干直接相连
- 骨干区域不能被分割
额外规定
非骨干区域之间不允许传递域间路由信息
从非骨干区域收到的路由信息,ABR设备能接收该路由但不会使用这条路由信息 (虽然不用,但会传递出去)
不规则区域的主要有两种情况
- 远离骨干的非骨干区域
- 不连续骨干区域
不规则区域产生的原因
- 网络故障导致
- 客观因素导致
解决不规则区域的最佳方式----重新规划OSPF配置和内容,使得整个OSPF域满足区域划分的规则
场景一
问题描述
1.区域零和区域一内的运行OSPF的路由器学习不到远离骨干的非骨干区域路由信息(除了连接区域一和区域二的伪ABR路由设备)
2.而远离骨干的非骨干区域中的IR设备,一条路由信息都学习不到
解决问题的核心:使R3成为ABR设备(路由传递)
解决方法
1.R2和R3之间拉一根线;R1和R3之间拉一根线;R1和R4之间拉一根线
2.使用Tunnel隧道
很少使用这个方法,更常用后面两种方法
思路
- R2与R3之间打通隧道,并宣告在区域零内;使得R3成为ABR设备
若R2–R4之间打通隧道,物理链路不通,方法不可行
问题一:某些路由信息开销值突然增大(以R2为例)
原因:
R3将R4发布的路由信息传递给R5 R2 R6,而R5 R6再传递给R2;
而R2(ABR设备)在非骨干区域收到的路由信息,接收但不会使用,故使用R3的路由信息
问题二:为什么R5 R6的开销值是正常的?
原因:
R3向R5 R6传递路由信息;R2也向R5 R6传递路由信息
R5 R6选择开销值小的路由信息,即R3传递的路由信息
假如R5 R6选择R2的路由信息,则造成环路,R5-R2;R2-R3(R2-R5-R3 )
缺点
-
可能产生选路不佳(R3-R1,走Tunnel隧道,速率慢,显然R3-R5-R2更快)
-
可能造成重复更新(R2和R3将重复的路由信息发送给R5 R6)
-
导致中间区域的资源消耗增加
- R2-R3建立隧道,相互间需要进行建邻、保活、交换LSA信息等
- 导致隧道依靠的真实物理链路资源消耗增加
3.虚链路----vlink
为解决OSPF不规则区域所诞生的技术
不进行数据传输,不存在重复更新问题
思路
- 让真ABR设备给伪ABR设备进行一次担保
- 使得伪ABR设备具有传递路由的功能,即给予真ABR设备的权限
在设备需要穿越的区域进行配置;而虚链路只能穿越一个区域
原因
配置的是RID,而RID只能在同一个区域内找到,设备不能跨区域寻找到对应RID的设备
该邻居关系不能在OSPF邻居中查看,需要对应的命令查看
Router ----本端RID
Neighbor ----对端RID
interface ----本端接口
cost ----本端到对端的开销值;vlink自动选择最佳路线(不固定)
采用单播形式传输数据,不使用组播(224.0.0.x:TTL恒为1)
Vlink被视为是骨干区域的一段延伸(Vlink永远属于Area 0)
(因为伪ABR设备能传递路由信息,那么应连接着区域零)
缺点
-
只能穿越一个区域
-
导致穿越区域的资源消耗增加
- R2-R3建立隧道,相互间需要进行建邻、保活、交换LSA信息等
- 导致隧道依靠的真实物理链路资源消耗增加
实际上,Vlink更多应用在一些修复次优路径或者骨干区域不健壮问题上
骨干链路单点故障问题
问题
当12.0.0.0/24网段,物理链路故障时,骨干区域被分割
且R4访问R3的环回时,形成了绕路(次优路径)
R1--R2之间建立vlink,彼此路由学习不到
解决方法
R3——R4之间建立vlink,穿越区域零
R3与R4可以在area 1 内相互学习路由信息
骨干区域依然是完整的,没有被分割
R4从area 0学习到R3环回信息,接收且使用
Vlink环路问题
场景一
Vlink选择不恰当,可能会引发环路问题
问题
R5的环回发布出去,传递给R4;R4传递给R3(不使用)再传递给R2、R1、R3
R3接收后路由信息的下一跳为R1、R1的下一跳为R2、R2的下一跳为R3;造成了环路问题
原因
R4发送的路由信息,R3接收但不使用(Vlink选择不恰当)
解决方法
在物理链路相连的两台设备上建立vlink,即R3——R4之间建立vlink
场景二
场景描述
R1上配置10.0.0.0/8汇总网段信息,并向外传递
问题一
R2将路由信息传递给R3,再传递给R4;R4传递给R5的是非汇总路由信息
原因
由于R4与R2之间存在vlink,属于区域零内,可以由TOPO信息计算出路由信息,对传递的路由不接收
R4在向R5传递路由信息时,使用的是自己非汇总路由信息(TOPO计算的路由信息)
在R4上做汇总路由10.1.0.0/16
问题二
R3与R4之间相成环路
原因
R4将汇总路由信息从区域零通告到区域一,即通告给R3;
由于R4传递的汇总路由信息,掩码更长,根据规则,使用该条路由信息(而不使用R2传递的路由信息)
R3中10.1.0.0/16的下一跳是R4,而R4中10.1.0.0/16的下一跳是R3(vlink传递,依靠物理链路)
解决方法:OSPF规定,Vlink所在的非骨干区域,不能传递汇总路由。也就是说,ABR设备不能向配置了vlink链路的区域传递汇总路由
即ABR设备在vlink穿越的区域中不传递汇总路由信息
4.多进程双向重发布
在解决OSPF的不规则区域问题中,最常用的方法
场景描述
Area0、Area1运行OSPF 1
Area2运行OSPF 2
RID:OSPF域内,有且只有一个;不同进程号配置相同的RID,不影响
同区域内运行不同进程号不影响建邻;关键在于是否在相同区域内
配置完成后,R3从ABR变成ASBR
因为其运行在不同的网络中,且执行了重发布操作
重发布:在运行不同协议或不同进程的边界设备上,将一种协议按照另一种协议的规则发布出去
问题:为什么R1-R4的开销值为1?
原因
不同路由协议对于开销值的计算不一样,将另一种路由协议的开销值引入本地中,在本地看来该开销值没有参考价值
故重发布操作在引入路由信息时,会清除掉该路由信息原本的开销值
但是在引入时,该参数不能没有,故会赋予路由信息一个种子度量值
种子度量值:把一种路由引入进其它协议后的默认度量值
即不指定某条路由在新路由协议中的度量值,则路由使用默认的度量值,也就是种子度量值
路由协议 | 度量值 | 种子度量值(可改变) |
---|---|---|
RIP | 跳数 | 0 |
OSPF | 开销 | 1 |
ISIS | 开销 | 1 |
BGP | MED | 保留 |
-
将路由引入到运行RIP路由协议时,度量值为0,视为无穷大
- 也就是说,在引入到RIP的时候,需要手动指定度量值,否则引入过去的路由度量值无穷大,不会装载进路由表
-
将路由引入到OSPF 度量值为1
-
将路由引入到IS-IS 度量值为1
-
将路由引入到BGP 度量值为IGP度量值
OSPF对于域外路由信息的标识为O_ASE;优先级为150
(OSPF对于域外不信任,将优先级设置150,即域内优于域外)
OSPF的LSA
类型 | LS ID | 通告者 | 作用范围 | 携带信息 |
---|---|---|---|---|
Type-1 LSA(Router) | 通告者的RID | 区域内所有运行OSPF协议的路由器的RID | 单区域 | 本地接口的直连拓扑信息 |
Type-2 LSA(Network) | DR的接口IP地址 | 单个MA网络中DR所在的路由器的RID | 单区域 | 单个MA网络拓扑信息的补充信息 |
Type-3 LSA(Summary) | 路由信息的目标网络号 | ABR,在通过下一个ABR设备时会被修改为新的ABR设备的RID值 | ABR相邻的单区域 | 域间路由信息 |
Type-5 LSA(ase) | 域外路由的目标网络号 | ASBR的RID | 整个OSPF网络 | 域外路由信息 |
Type-4 LSA(asbr) | ASBR的RID | 与ASBR同区域的ABR设备,在通过下一个ABR设备时会被修改为新的ABR设备的RID值 | 除去ASBR所在区域的单区域 | ASBR的位置信息 |
Type-7 LSA(NSSA) | 域外路由的目标网络号 | ASBR,当离开NSSA区域后转换为5类 | NSSA区域 | 域外路由信息 |
打开一条LSA的方式:display ospf lsdb 类型字段 LinkState ID
链路状态老化时间
一条LSA的老化时间,16bit的整数(0-65535)
当该LSA被始发路由器产生时,该参数有效,且数值为0
之后随着该LSA在网络中被洪泛,老化时间逐渐累加
一般情况下,老化时间不会超过1800S。
该参数存在最大老化时间—3600S。----当一条LSA的老化时间到达最大老化时间时,将被认定失效,从本地的LSDB中删除。
在OSPF网络中,只有始发路由器能够提前使某条LSA老化,即有意识的清除该LSA信息。
可选项----与hello报文相同
链路状态类型-----本条LSA的类型,不同LSA类型在描述不同OSPF的信息
链路状态ID-----LSA的标识。不同的LSA类型,该字段内容含义不同。
通告路由器-----产生本条LSA的路由器的RID。
链路状态序列号----标识一条LSA的新旧
每台路由器在发送相同LSA信息时,序列号逐次加一。
序列号起始为0x80000001
序列号截止为0x7FFFFFFF
链路状态校验和
而是参与到LSA的新旧关系比较中。
长度—LSA的总长
判断LSA的新旧关系
OSPF使用链路状态序列号、校验和以及老化时间来判断LSA的新旧关系。
- 拥有较高链路状态序列号的LSA被认为是最新的LSA信息。
- 如果序列号相同,则比较校验和,拥有较大校验和的LSA被认为更新。
- 如果校验和与序列号均相同,则比较老化时间。
- 如果某条LSA的老化时间为3600S,则认为该LSA最新。
- 如果没有任何一条LSA老化时间为3600S,则比较两条LSA老化时间的差值。
- 如果差值大于15min,则认为老化时间小的LSA为更新
- 如果差值小于15min,则认为这两条LSA相同
Type-1 LSA
同一进程同一区域内,每台设备只发送一个一类LSA——描述TOPO信息(描述同区域内的接口)
LSA的Type名称为Router的LSA是一类LSA信息。每台路由器的所有属于相同区域的接口共用一个一类LSA信息。如果路由器连接在多个区域,则会在多个区域单独产生一条一类LSA信息来描述自己属于该区域的拓扑信息。
链路ID——TOS度量——为一组link;剩下是重复的不同组link
TOSxxx:早期版本的参数,为了兼容老版本
名称 | |
---|---|
V | 表示本路由器是vlink链路的端点 |
E | 表示本路由器是ASBR设备 |
B | 表示本路由器是ABR设备 伪ABR设备或真ABR设备都有可能 |
链路数量 | 表示该LSA描述多少条link 每条link均包含链路ID、链路数据、度量值等信息 |
链路类型 | 不是网络类型 |
- 链路类型不同,导致链路ID和链路数据内容不同
Link Type | Link ID | Data |
---|---|---|
Point-to-Point | 邻居的Router ID | 该网段上本地接口的IP地址 |
TransNet | DR的接口IP地址 | 该网段上本地接口的IP地址 |
StubNet | 该Stub网段的网络号 | 该Stub网段的网络掩码 |
Virtual | 虚连接邻居的Router ID | 去往该虚连接邻居的本地接口的IP地址 |
先确认LSA的链路类型,再看其余内容
Type-2 LSA
DR会在本区域内洪泛Type-2 LSA信息,来列举出接入该MA网络的所有路由器的RID信息,以及网络的掩码信息
2类LSA只能由本区域的DR设备发送
链路状态ID——DR的接口IP地址
[R1]display ospf lsdb Network Link ID
Type-3 LSA
[R1]display ospf lsdb summary Link ID
链路状态ID——目标网段的网络号
三类LSA中的度量值——指通告者到达目的地的开销值
接收三类LSA路由器的度量值——LSA中的开销值 + 本地到达通告者的开销值
检查机制——递归通告路由器是否可达;可达,则LSA可用
当接收到一条三类LSA后,需要由TOPO信息寻找出该三类LSA的通告者
- 若能寻找到,证明该条三类LSA可以使用
- 若寻找不到,证明该条三类LSA无效
三类LSA的跨区域传递
- 由于同区域内,路由器可以根据递归出相应路由器的RID;但在不同区域中,无法通过这种方式递归出其他区域路由器的RID
- 故3类LSA在进行跨区域传输时,需要更换通告者
- 即由每个区域的ABR设备重新构造一个新的描述相同目标网段的3类LSA信息
使得区域内设备接收到三类LSA后,能够递归出通告者RID
- 即由每个区域的ABR设备重新构造一个新的描述相同目标网段的3类LSA信息
- 故3类LSA在进行跨区域传输时,需要更换通告者
Type-5 LSA
由ASBR设备发送,在整个OSPF域中传播。传递的是域外的路由信息。
名称 | |
---|---|
度量值 | 外部路由的开销值;默认为一 |
E位 | 表示外部路由使用的度量值类型 |
转发地址( FA ) | |
外部路由标记 |
[r4-ospf-1]import-route rip 1 cost 10 ----在重发布时修改种子度量值
[r4-ospf-1]import-route rip 1 cost 10 type 1 ----修改域外路由信息的开销值类型
-
E位
- 类型一
- 置为0
- 域内所有设备到达目标网段的开销值等于本地始发出该条LSA的ASBR的开销值加上种子度量值
- 类型二
- 默认
- 域内所有设备到达域外目标网段的开销值都等于种子度量值
- 类型一
-
转发地址
-
在五类LSA中默认为0.0.0.0
- 当FA字段不是默认值时,则数据层面流量的转发依照转发地址进行数据传输
-
当同时满足如下条件时,FA字段才被允许设定为其他值
-
- 引入外部路由的ASBR在其连接外部网络的接口上激活了OSPF(同一接口被两个不同协议宣告?)
- 该接口没有被配置为静默接口
- 该接口的网络类型为MA
- 该接口的IP地址在OSPF中被宣告
-
-
-
外部路由标记
- 仅外部路由信息携带
- 常被用于路由策略
- 默认为一( 华为路由器 )
[r4-ospf-1]import-route rip 1 tag ? ----设定外部路由标记
INTEGER<0-4294967295> Tag value
Type-4 LSA
伴随着五类LSA的出现而出现
4类LSA的LS ID是ASBR的RID值
4类LSA又被称为ASBR汇总LSA,是一条到达ASBR的主机路由信息
4类LSA的任务就是辅助5类LSA完成验算过程,找到ASBR的位置
Type-7 LSA
七类LSA报文格式与五类LSA报文格式相同
Options字段在五类LSA中,显示为E( 代表可以洪泛五类LSA )
N——代表允许处理七类LSA信息,仅在NSSA区域置为1
P——代表支持七类LSA转五类LSA操作,一般与N位共同使用( 该标记位加密,任何情况下都无法查看 )
- 转发地址
- 用于解决次优路径问题
- 通告者会把最佳的下一跳放入转发地址中,接收者看到FA字段,则将不按照算法来计算下一跳,而直接使用转发地址作为下一跳
- 用于解决次优路径问题
在7类LSA中,一般会使用通告者(ASBR)设备的环回接口IP地址作为转发地址
如果存在多个环回接口,则使用最先宣告的地址作为转发地址
如果没有环回接口,则使用物理接口作为转发地址——华为的设定
路由撤销
类型 | 方式 |
---|---|
一类LSA | 序列号 + 1 校验和不变 老化时间 = 0 |
二类LSA | 1. 本端还存在邻居时,序列号 + 1 2. 本端不存在邻居时,老化时间 = 3600 s |
三类LSA | 序列号不变 老化时间 = 3600 s |
五 / 七类LSA | 序列号不变 老化时间 = 3600 s |
OSPF优化
优化对象:减少OSPF链路中LSA的更新量
- 路由汇总——减少骨干区域的LSA
- 特殊区域——减少非骨干区域的LSA
OSPF路由汇总
[GS-R2-ospf-1-area-0.0.0.1]abr-summary 192.168.0.0 255.255.224.0
[GS-R3-ospf-1-area-0.0.0.2]abr-summary 192.168.32.0 255.255.224.0
明细路由:由一、二类LSA计算出的路由信息
汇总对象:ABR传递出的路由信息
配置位置:明细路由所在区域
配置完成后
只要汇总路由中有一条明细路由尚未失效,则继续传递汇总路由
当使用明细路由失效后,则汇总路由会被撤销
汇总并不影响ABR设备自身的明细路由信息??(不影响本地路由表?)
[r1-ospf-1]asbr-summary 10.1.0.0 255.255.0.0
最大开销值 = 种子度量值
- 类型二:汇总网段的开销值 = 明细路由中最大的开销值 + 1
- 类型一:汇总网段的开销值 = 明细路由中最大的开销值
OSPF特殊区域
Type-1 | Type-2 | Tpye-3 | Type-4 | Type-5 | Type-7 | |
---|---|---|---|---|---|---|
常规区域 | √ | √ | √ | √ | √ | × |
Stub Area | √ | √ | √ | × | × | × |
Totally stub | √ | √ | × | × | × | × |
NSSA | √ | √ | √ | × | × | √ |
Totally NSSA | √ | √ | × | × | × | √ |
第一大类
- 不能是骨干区域
- 不能存在虚链路
- 区域内不存在ASBR设备
末梢区域( Stub Area )
[r1-ospf-1-area-0.0.0.2]stub
[r5-ospf-1-area-0.0.0.2]stub
该区域中不接收四、五类LSA
ABR设备不向该区域传递四、五类LSA
由于存在访问域外的需求,故
自动生成一条指向骨干区域的三类缺省路由
区域内的设备都需要配置成相同的特殊区域
完全末梢区域( Totally Stub )
[r1-ospf-1-area-0.0.0.2]stub no-summary ----仅在区域内的ABR配置
在末梢区域的基础上,进一步拒绝三类LSA信息,仅保留三类缺省路由信息
第二大类
- 不能是骨干区域
- 不能存在虚链路
- 区域内存在ASBR设备
非完全末梢区域( NSSA )
[r1-ospf-1-area-0.0.0.2]nssa
[r5-ospf-1-area-0.0.0.2]nssa
该区域中不接收四、五类LSA
由于五类LSA是描述域外路由信息的;而本区域的ASBR需要将域外路由信息传递给整个OSPF域
故在本特殊区域内——五类LSA转换成七类LSA
当七类LSA离开本区域时,由本区域的ABR设备进行七类LSA转五类LSA的操作
区域内的ABR设备会自动下发指向骨干区域的七类缺省路由
区域内的设备都需要配置成相同的特殊区域
O_NSSA —— 七类域外路由信息的标记,默认优先级:150
完全的非完全末梢区域( Tonally NSSA )
[r1-ospf-1-area-0.0.0.2]nssa no-summary ----仅在区域内的ABR设备配置
在NSSA区域的基础上,进一步拒绝三类LSA,自动产生一条3类缺省路由
在完全NSSA区域中,三类缺省 > 七类缺省
特殊区域导致环路
NSSA的环路问题
场景一
场景二
[r3-ospf-1-area-0.0.0.1]nssa default-route-advertise ----在NSSA区域下发缺省路由
总结
- NSSA区域的七类LSA需要ASBR或ABR下发
- 若多台设备均下发七类缺省路由成功,虽然会收到彼此下发的缺省路由,但不会将缺省路由加载到本地路由表中( 本地缺省 > 别人缺省 )
- 对第一台下发七类缺省路由的设备来说,本地存在通往外部区域的路由且本地作为七类缺省路由的通告者,不会学习其他设备的七类缺省路由
该逻辑成功解决了NSSA环路问题
华为:保留NSSA区域中ABR设备产生的七类LSA缺省路由
在NSSA区域中,可能同时存在多个ABR,为了防止路由环路的产生
OSPF规定:边界路由器之间不计算对方发布的缺省路由信息
NSSA负载分担解决次优路径问题
七类LSA转五类LSA的规定
- P比特位用于告知路由器七类LSA是否需要被转换
- 执行转换操作的路由器是NSSA区域中RID值最大的ABR设备
- 只有P比特位和FA字段不为0的七类LSA才能被转换
[r4-ospf-1-area-0.0.0.1]nssa suppress-forwarding-address ---在进行7转5时,抑制FA字段
[r1-ospf-1-area-0.0.0.1]nssa translator-always ---强制开启进行7转5操作
NSSA区域中,没有FA字段,将会有很大可能因为七类LSA转五类LSA操作出现次优路径
FA字段解决NSSA区域环路问题
(FA一定意义上起到了域外路由防环的作用)
MGRE环境下运行OSPF
MGRE环境下使用默认接口网络类型(P2P)
可以改成BMA(记得修改DR)或者P2MP(不选举)接口网络类型
- 为什么中心只有一个邻居,且邻居处于init状态(邻居发出Hello包且中心收到)
dis ospf peer b ----描述邻居的状态
- 而邻居上没有任何邻居关系,说明邻居没有收到中心的Hello包
- 中心启动OSPF,但没有发送Hello包(down状态)
原因:
1.中心收到不同源地址的Hello包,向外回包时,多个peer关系,无法构建数据包
2.MGRE环境类似NBMA,禁止广播和组播;P2P接口网络类型以组播发送各种OSPF数据包
解决方法:
开启中心的伪广播功能
新的问题:
中心与刚开始的邻居,双双处于full状态,而中心没有另一个邻居的信息,而在该邻居中,中心处于init状态
即中心向外发出Hello包,且该邻居收到中心的Hello包;该邻居也发出Hello包,但中心不接收
中心的Hello包(包中仅仅携带刚开始建立邻居的RID,没有后加入邻居的RID)
原因:
中心的接口网络类型为P2P,只能建立一个邻居关系,对于之后收到的Hello包,选择丢弃
解决方法:
修改中心的Tunnel接口网络类型(Broadcast)
新的问题:
1.中心修改接口网络类型后,新旧邻居均处于2-way状态;一会后,其中一个full状态,另一个保持在2-way状态
2.中心没有关于OSPF协议的路由信息
3.2-way状态的邻居,认为中心处于exstart状态,即认为与中心条件匹配成功
4.full状态的邻居,认为中心处于full状态,即两者关系正常
原因:(假设中心RID最小)
中心为Broadcast接口网络类型,而2-way状态的分支,依然是P2P接口网络类型;
一边认为需要DR与BDR的选举,一边认为不需要DR与BDR的选举
但中心已经与另一个邻居双双处于full状态,即DR已经选举出来,接下来进行BDR的选举
这里的DR选举
刚开始接口优先级都为默认值(1),相同情况下看RID值,而中心认为大的为DR,条件匹配成功,进入exstart状态
而RID大的设备,是P2P接口网络类型(只要处于2-way状态,就一定进入exstart状态)然后发送出DBD报文,并与中心进行主从关系选举,最终到full状态
而RID较小的设备,不认识DR设备(RID较小的设备,P2P接口网络类型,只认识中心)
中心进行BDR选举(在Hello包中携带DR设备的信息) ,而该设备回包时不携带DR设备的信息
中心与分支的认知产生偏差;中心认为分支没有选出DR设备,不应该进行BDR设备的选举;中心需要等待分支选举出DR设备,再进行BDR的选举;
而分支是P2P接口网络类型,不进行DR与BDR的选举;状态从2-way进到exstart状态,发送出DBD报文,不发送选举时的Hello包,故中心视角中,该分支卡在2-way状态
中心等待分支选举出DR设备,分支不进行选举----中心视分支在2-way
分支进入exstart状态,发送DBD报文,认为与中心条件匹配成功,正在进行主从关系,而中心不发送DBD----分支视中心在exstart
解决方法:
将MGRE环境下的接口网络类型均修改为Broadcast(都认为进行DB与BDR的选举)
此时邻居状态都进入full状态
但选举时出现问题(比中心RID大的认为自己是DR,而中心是BDR,两个DR之间没有进行比较RID,且两台设备之间只有中心的邻居关系,没有对方的)
且中心只学习到一条分支的路由,只有一个分支学习到中心路由信息,另一个分支一个都学不到
所有设备对BD与BDR的认知都出现了问题
其中一个DR设备将LSA信息发送给中心,而中心在计算时,不能计算出另一个DR设备的地方(没有对应拓扑信息)
而中心不能将LSA的信息发送给另一个DR设备,导致该DR对网络认知不全面,从而一条路由都学不到
为什么两个DR设备情况不一样;其中一个DR设备先发送LSA信息(该LSA信息中仅包含了中心与本身的信息,而不包含另一个DR的信息)当中心收到该LSA后,只会认为该广播域内只有本身和该DR设备,而没有其他人,故而另一个DR设备不被认识,故而该DR设备发送LSA信息时,中心选择丢弃,导致该DR设备一条路由都学习不到
原因:
两条DR设备之间没有建立Tunnel隧道,相互不认识
解决方法:
手动配置中心为DR设备,使其他分支放弃选举
总结
若需要MGRE下运行OSPF,则需要
- 开启中心的伪广播功能
- 修改中心和分支的Tunnel接口网络类型
- 手动配置中心为DR设备(若接口网络类型均为P2MP,则不需要)
MGRE下Tunnel接口网络类型为P2P,开销值1562
(Tunnel不传输数据,但不同于环回,Tunnel拥有实际带宽(64kbps),封装与解封装,发送给真实接口)
华为将Tunnel接口的传输速率定为64kbps ----人为将Tunnel接口的开销改大
不希望有其他路由时,走Tunnel接口(发出封装数据,收到解封装数据)