ospf、lsa、域内、域间路由(IE培训时的笔记)
ospf
路由表的构成:
直连路由:(与设备直接相连的网络)
设备接口配置合法ip地址 设备的接口状态为UP
静态路由:由管理员手工配置的路由信息
一般用于网络规模较小,一般用于相对稳定的网络
优势:无需占用网络带宽,设备之间无需交互报文信息,可以节约CPU内存等硬件资源
动态路由:由路由器根据路由协议自动计算的路由信息
- 根据算法分类:
距离矢量路由协议:RIP
什么叫距离矢量路由协议?
链路状态路由协议:OSPF,IS-IS
什么叫链路状态路由协议?
- 根据使用范围进行分类:
IGP:内部网关路由协议
RIP OSPF IS-IS
运行于AS内部,主要用于路由信息的发现
EGP:外部网关协议
BGP
运行于AS之间,主要用于路由的最优选路控制,以及策略的部署
- 根据路由是否携带掩码:
- 有类路由协议
在传递路由时,不带子网掩码信息,不支持VLSM(可变长子网掩码?)和CIDR(无类别域间路由?)
RIPV1
- 无类路由协议
在传递路由时,携带子网掩码信息,支持VLSM和CIDR
RIPV2 OSPF IS-IS BGP
目前主流路由协议均为无类路由协议
RIP的缺点(淘汰的原因):
- 收敛速度慢
- 以跳数作为度量值无法精确的描述网络带宽情况
- 最大跳数为15跳,限制了网络的规模
- 防环机制不完善,可能会出现环路风险
- 安全机制较差(RIPV1不支持认证)
- RIP不适用于大型网络
————————————————————————————————————————————————————————————————————
面试:理论题 实验题(LAB中解法提问) 项目题
项目题:100台路由器进行企业网的组网,这些路由器性能不一,请选择一种IGP进行组网,说出你的理由?
思路:网络规模超级大
层次化的规划
IGP:RIP OSPF IS-IS
1.排除RIP,因为RIP的缺点。。。。。
2.用 OSPF和IS-IS都行。但是必须OSPF和IS-IS做对比
想用什么,猛夸什么
————————————————————————————————————————————————————————————————————
OSPF(开放式最短路径优先协议)
OSPF协议特点:
- 无路由自环
区域内OSPF防环:
通过LSA的泛洪实现区域内LSDB的同步
通过SPF算法计算得到无环的树状结构
区域间防环:ABR不处理来自非骨干区域的LSA3
只有ABR可以在区域间传递路由信息
- 适用于大型规模的网络:
区域的划分
路由的分级管理(层次化部署)
- 收敛速度快:
- 支持等价负载均衡
- 以带宽作为度量值,可以更好的反应链路情况
- 支持路由协议认证
- 以组播的形式进行报文的发送
224.0.0.5(所有运行ospf协议的都监听) 224.0.0.6(DR和BDR监听)
8. 采用链路状态算法,是IETF开发的公有路由协议
区域号是一个32bit的整数,可以写作十进制数,也可以写作点分十进制
路由 area 0 area 1
area 0.0.0.0 area 0.0.0.1
骨干区域:区域编号固定为0
非骨干区域:区域编号非0
区域部署规则: 所有非骨干区域必须和骨干区域相连,骨干区域在网络中必须唯一,不能被分割。
OSPF路由器角色:
- IR(internal router):区域内部路由器,所有接口都属于同一个OSPF区域的路由器
- BR(backbone router):骨干路由器,至少有一个接口在驱赶区域内的路由器(可能为IR)
- ABR(area border router):区域边界路由器,连接多个区域,且所连接的区域中包含骨干区域的路由器
- ASBR(AS boundary router):AS边界路由器,用于连接OSPF网络和其他AS网络的路由器
RID:是一个32bit整数,是一台路由器在AS内的唯一标识,任何一个运行OSPF的设备都有一个唯一的RID
- 手工指定RID最优先
- 如果没有配置RID,则以环回口中最大的IP地址作为RID
- 如果没有环回口,则以物理接口中最大的IP地址作为RID
如果修改了RID则需要手工重启OSPF进程才生效
COST开销:是OSPF中唯一度量值,与接口带宽有关,带宽越大,开销越小,线路越优
COST=参考带宽/接口带宽
参考带宽:100Mb/s(10^8b/s)
只要接口带宽超过参考带宽,开销值均为1
OSPF的邻居建立:
邻居关系:能够互相交互OSPF hello报文的两台OSPF路由器,称为OSPF邻居关系
邻接关系:能够互相交互完整的LSBD的两台OSPF设备,称为OSPF邻接关系
所有的邻接关系一定是邻居关系
OSPF报文:
- hello:用于发现,建立,维持邻居关系
- DD:是LSDB的摘要信息(LSA的头部),用于摘要描述LSBD
- LSR:链路状态请求,用于请求特定的LSA信息
- LSU:链路状态更新,用于更新LSA信息(完整的LSA的信息)
- LSAck:链路状态确认,用于LSU报文的确认
OSPF DR选举:
- 为什么要选举DR?
- 在MA网络中,通过DR的选举,可以减少设备之间的连接关系数量
维护 n*(n-1)/2 数量的
- 减少重复的LSA交互
维护 n-1 数量的
- 怎么进行DR的选举?
DR的选举规则:
1. 网络如果已经存在DR,则默认现在DR(非抢占原则)
2. 优先级数值较大的设备为DR
取值范围0-255,缺省为1,数值越大越优先
3. 优先级相同时,RID较大的设备为DR
4. 如果优先级为0,则放弃选举
- 在什么情况下选?
在一个MA网络中进行选举,而不是一个区域内!!!
协议号
OSPF 89
ICMP 1
UDP 17
TCP 6
VRRP 112 虚拟路由冗余协议
OSPF报文字段:绿色字段是影响邻居关系建立的字段
Header:
- version:版本号,表示当前使用的OSPF协议版本,共8bit
- type:表示当前报文的类型,共8比特
- 报文长度:表示当前OSPF协议头加内容的总长度,单位为字节,共16比特
- RID:表示当前OSPF设备的RID,共32bit
RID必须不同,否则无法建立邻居关系
- AREA ID(区域号):表示当前OSPF接口所属区域,32bit
区域编号必须一致,否则无法建立邻居关系
- 校验和:用于校验OPSF报文完整性,防止被篡改,16bit
- 认证类型:0(表示不启用认证)空认证 1表示启用OSPF明文认证 2表示启用MD5哈希认证(密文)认证 16bit
认证类型必须一致
- 认证数据:根据认证类型不同,内部字段不同,64bit(8字节)(1字节=8bit)
如果认证类型为0,则该字段均置位0
如果认证类型为1,则该字段为相关明文认证信息
如果认证类型为2,则该字段为MD5哈希相关信息
认证密钥必须一致
hello:
- 子网掩码: 表示发送该报文的接口掩码信息,32bit
除p2p网络外,子网掩码必须一致
- hello time:表示发送hello报文的间隔时间,16bit
计时器必须一致,否则无法建立邻居关系
网络类型 链路类型
P2P:10s PPP HDLC
P2MP:30s 没有任何一种链路类型与其对应,需要手工设置该网络类型
NBMA:30s FR ATM
brocast:10s 以太网
- options:可选项,包含OSPF特殊区域标识信息,8bit
DN:用于OSPF在MPLS VPN网络中防环,从MPLS骨干网收到LSA3、LSA5、LSA7,会将DN置位
O:该字段支持发出路由器支持OPAQUE LSA(LSA9、LSA10、LSA11)
DC:该位置位,表示OSPF设备支持按需链路功能
EA:当始发路由器具备接受和转发外部属性LSA的能力时,该字段置位
N:在hello报文中,N=1表示有能力处理LSA7,
P:在LSA中,P=1,表示该LSA需要进行7转5
MC:表示支持MOSPF
E:该bit置位,表示OSPF设备有能力处理LSA5
MT:表示OSPF设备支持多拓扑结构
特殊区域标识必须一致,否则无法建立邻居关系
- 路由优先级:用于OSPF DR选举 0-255
邻居关系建立不会影响
如果优先级均为0,则只会建立邻居关系,不会建立邻接关系
- dead time:表示OSPF邻居关系失效时间,缺省情况下是hello的4倍, 32bit
计时器必须一致,否则无法建立邻居关系
- DR:当前网络中已经选举的DR设备,写的是DR的IP地址 32bit
- BDR:当前网络中已经选举的BDR设备 32bit
- 已知邻居列表:包含已知的邻居设备RID
#display ospf error //显示ospf的错误信息
邻居关系状态机
down:是OSPF邻居初始状态,表示没有收到任何OSPF信息
init:表示收到了OSPF报文,但在邻居列表中没有自身的RID信息
2-way:表示双向通信已经建立,从邻居的hello报文中收到了自身的RID信息,此时将对方的状态标记为2-way
DR的选举发生于2-way状态
attempt:已经向邻居发送hello消息,但还没有都得到邻居的回应,只出现于OSPF的NBMA网络
帧中继基本配置:(建立ospf邻居)
接口下
#link-protocol fr //封装帧中继
#undo fr inarp // 关闭逆向arp
#fr map ip 123.1.1.2 102 (broadcast)(支持伪广播(三层看起来是组播,二层是单播))(不用下面的peer互指就可以起ospf的邻居,但是需要 #ospf network-type broadcast) //写映射
#fr map ip 123.1.1.3 103 (broadcast)
中间的配置
看图
NBMA网络中(不支持广播和组播),默认想要建立邻居关系,需要手工建立邻居,通过发送单播报文建立邻居。
peer 123.1.1.2 (以单播形式发送ospf的hello报文)
如果帧中继链路支持伪广播,则可以通过修改链路的OSPF网络类型,来实现自动发现邻居
如果在帧中继的HUB-SPOKE模型中进行OSPF组网,需要注意将HUB端设置为DR(SPOKE端优先级设置为0)
在HUB-SPOKE模型中,使用P2MP的网络,可以简化网络的配置结构,在新的spoke节点加入时,无需改变原始节点配置,只需要配置新节点的OSPF即可通信。
P2MP网络类型会自动生成一条32位主机路由,从而进行计算
EXSTART:是OSPF邻接关系建立的关键状态,在该状态下会进行主从的协商,协商过程主要通过DD报文来进行协商
RID较大的设备成为主设备,RID较小的设备成为从设备
主从的协商是在两台邻接关系的设备之间协商
DD报文字段:
- 接口MTU:共16个bit,表示当前接口的MTU,DD交互与MTU有关,会进行MTU检测(华为设备默认不开启MTU检测功能)
- options:类似于hello报文中的options字段,8bit
- 控制位:
I:表示初始化,进行主从选举的DD报文,I bit置位
M:表示MORE,M置位表示还有后续DD报文,该报文部署最后一个DD报文
MS:表示MASTER,MS置位表示该设备认为自身为MASTER角色
- DD序列号:用于DD报文的可靠性传输控制,32bit
- LSA headers:用于主从选举的DD中不包含任何LSA头
DD报文的交互采用单播的方式
#ospf mtu-enable //打开ospf mtu(最大传输单元)的检测(在接口下敲)
MTU值较小的设备会认为对方的DD报文非法,可以将MTU值较小那端关闭MTU检测功能,来形成邻接关系
MTU值不一致会导致DD无法正常交互,此时会停留于EXSTART状态
进入exchange状态后,从设备向主设备单播发送DD报文,在其包含自身的LSDB摘要(包含LSA的头部信息)
其中使用的序列号是主设备确认的序列号
主设备进入EXCHANGE标志:收到从设备发来的M bit置位0的DD报文。
主设备向从设备发送自身的LSDB摘要信息
从设备收到信息后会发送一个空的DD报文用于对主消息的确认
如果DD中所描述的LSA均以存在于LSDB,则直接从exchange状态过渡到full状态
如果DD中所描述的LSA于LSDB中的信息不同,则会从exchange状态变为loading状态
通过确认机制和重传机制,且报文有序化来确保DD交互的可靠,该过程也是LSDB同步的基础
LSR中包含LSA头部的三要素信息(LS TYPE,LSID,ADV ROUTER),通过该信息可以唯一确定需要的LSA,LSR中没有完整的LSA头部信息
LSU中包含LSA的数量以及多份LSA信息
LSack:通过LSA的头部信息来对特定的LSA进行确认,一个ack中可以包含多个确认信息
p2p 组播 224.0.0.5
NBMA 单播
P2MP 单播
在链路状态路由协议中,每台设备会泛洪自身的LSA,在区域内LSA的集合(LSDB)是完全同步的,每台设备会以自身为根进行SPF计算,形成无环的树状拓扑,最终将最优路径记录到路由表中形成路由
LSA头部信息
- LS AGE :16 bit,表示LSA已经存活的时间,单位是秒 取值范围0-3600s(一个小时)
每1800s进行一次LSA的泛洪,rip是30s进行一次周期性的更新
每条链路默认延迟时间为1s,LS AGE在传递过程中,每传递一次会增加1秒
LSA的删除,通过发送一个LS AGE为3600s的LSA信息,表示删除该LSA
数值越大,表示LSA越旧
- options:8 bit,功能与hello类似
- LS TYPE:8 bit,表示LSA的类型,常见的是123457
- LS ID:32 bit,一般用于LSA的标识信息,其中如果该LSA所描述的是节点信息,则LS ID为该节点的ID,如果该LSA所描述的是网络信息,则LS ID 为该网络的网络号
- ADV ROUTER:32 bit,表示该LSA始发设备的RID
LS 序列号:32 bit的有符号整数,第一个比特,不代表数值大小,而代表负号。数值越大,标识LSA越新,每次LSA更新时序列号会+1
初始值-2^31+1=0x80000001
0x7FFFFFFF
- LS 校验和:8 bit,用于校验LSA的完整性
- 长度:8 bit,用来表示LSA的总长度(包含LSA头)
LSA1( router lsa ): 每台OSPF路由器在每个区域内会生成一份LSA1来描述在该区域内的自身链路信息
每份信息通过link的形式显示,每个link中包含link ID, link Data ,Metric等关键信息
在LSA1中LS ID 为所描述的节点RID
stubnet link:表示OSPF设备所连接到某个网络
transit network link:表示OSPF设备连接到一个伪节点上
link id:表示伪节点ID(DR的IP地址)
link data:表示连接该节点的接口IP
在OSPF MA网络中会构建一个伪节点,MA网络中所有设备均与伪节点相连,设备到达伪节点的开销值为设备的接口开销,伪节点到达物理节点的开销为0
伪节点的节点ID为该MA网络中DR的接口IP地址
network-lsa二类lsa:是LSA1 transit link的补充信息,所描述的是该MA网络的掩码信息,以及该网络中所连接的所有节点信息。
(是由DR产生的)
只在所描述的区域内泛洪
p2p link:在OSPF 点到点网络类型中,会使用2个link来描述一个接口的信息,其中一个stubnet来描述串行链路多连接的网络信息,一个p2p link 来描述所连接的对端节点信息
p2p网络没有二类lsa(最多只能有两台设备)
因为ppp协商,就算两端网络不是一个子网,也可以通信(直连)
SPF计算:
OSPF根据LSDB进行最短路径树的计算,在计算过程中分为2个阶段
第一阶段:计算所有的transit节点(和p2p),同时忽略stub节点,生成一个最短路径树
第二阶段:计算stub节点,将其挂在对应的transit节点上
例:
候选列表:
SPF树:
1.1.1.1(0)
1.1.1.1 2.2.2.2(48)
1.1.1.1 2.2.2.2 10.3.1.1(48+1)
1.1.1.1 2.2.2.2 10.3.1.1 3.3.3.3(48+1+0)
1.1.1.1 2.2.2.2 10.3.1.1 4.4.4.4(48+1+0)
候选列表:
SPF树:
4.4.4.4(0)
4.4.4.4 10.3.1.1(1)
4.4.4.4 10.3.1.1 2.2.2.2 1.1.1.1(1+0+48)
4.4.4.4 10.3.1.1 3.3.3.3 1.1.1.1(1+0+48)
OSPF域间路由计算
LSA3(NetWork-Summary LSA):用于描述区域间路由信息,由ABR设备生成,在所生成的区域内传递,一个LSA3描述的就是一个网络信息
描述了ABR到达其他区域的网络的metric
LSID为描述的网络的网络号
OSPF区域间防环规则:
ABR:连接多个区域,且其中包含骨干区域的路由器。
- 只有ABR可以在区域间传递路由信息
OSPF非骨干区域必须和骨干区域相连
- ABR不处理来自非骨干区的三类LSA
OSPF骨干区域不能被分割
3.每个ABR都会生成一份LSA3
区域1 区域0 区域1
路由是完整的
因为三类lsa不包含区域号
r1 ABR
2 ABR
3 ABCDEFG
4 BCDEFG
5 BCDEFG
6 BCDEFG
7 BCDEFGHIJ
8 FGHIJ
9 FGHIJ
10 FGHIJ
1 ABCDE
2 ABCDE
3 ABCDE
4 ABCDE
5 A-I
6 D-I
7 D-I
8 D-I
9 D-J
10 DEFGHIJ
不完整的ABR:连接了多个区域,但在骨干区域内,没有完整的邻接关系,该设备在接收处理三类LSA时,不按照ABR规则处理,可以接收并计算路由,同时该设备可以生成三类LSA,实现区域间路由传递
RFC1583
RFC2328
RFC3509
OSPF多区域的好处:
避免骨干区过大/避免单区域过大(避免路由变化带来的动荡、增强稳定性、减少层次化管理)
减小LSDB的大小
减小LSA的扩散
增强稳定性
加快收敛
减少带宽
减少路由表项层次化管理
减少SPT(最短路径树)的计算
避免路有变化带来的震荡
OSPF多区域部署的注意事项:
骨干区不能被分割(因为ABR不会处理来自非骨干区的LSA3;解决方法为“虚连接”)
非骨干区域必须连接骨干区域(会导致路由表不全,因为ABR不会处理来自非骨干区的LSA3)