OSPF作为一种基于IP协议号89的链路状态内部网关动态路由协议
根据IP的版本讲OSPF分为OSPFv2(ipv4版本)和OSPFv3(ipv6版本),OSPFv1被扼杀于实验中本文讲述OSPFv2
(声明:本文不详细解释LSA和特殊区域,请查看LSA详解)
SPF算法
又称为Dijkstar算法,通过一次次迭代计算出一个节点到每个节点的最小开销(权)每个节点由此方法可以得到一颗无环的SPT(最短路径树)
开销
端口开销=实际带宽/参考带宽(缺省100Mb/s)
可以通过以下指令修改:
1.参考带宽:bandwidth-reference xxx(ospf视图下)
2.接口开销:OSPF cost xxx(接口视图下)
Router ID
在OSPF自治系统中唯一表示路由器
手动>最大loopback口IP>最大物理口IP
三大表项
1.邻居表
2.LSDB表
3.OSPF路由表
四大网络类型
1.广播:以太网
2.NBMA(非广播多路访问):帧中继,ATM
3.P2P(点到点):PPP,HDLC
4.P2MP(点对多点):管理员手动配置
六大报文类型
1.Hello
周期性发送,用于建立和维持邻居关系
HelloInterval:16b,10s(以太网)
RouterDeadInterval:失效时间,40s(以太网)
Neighbor:用RouterID标识邻居
2.DD
用于路由器主从选举和LSA摘要交互
Interface MTU:16b,最大传输单位,华为缺省0
I(qInitialization):1b,置1表示第一个DD报文
M(More):1b,置1表示后续DD报文不带有LSA headers(后面DD报文描述同一条LSA)
M/S(master/slave):1b,置1为主,置0为从,根据RouterID评判,大者为M发送端
Sequence Number:32b,序列号保障报文完整可靠
3.LSA
分为6类,用于构建LSDB
1:Router-LSA
2:Network-LSA
3:Network-summary-LSA
4:ASBR-summary-LSA
5:AS-external-LSA
7:NSSA- AS-external-LSA
三要素:type,ID,ADV Router
通用头部
Age:时间,0-3600是,越小越新当为3600s时,撤回此LSA
checksum:校验和,越大越优
4.LSU
对LSA进行更新和回复LSR
5.LSR
请求LSA详情
6.LSAck
对LSU中的LSA进行确认
角色
DR:指定路由器
BDR:备份指定路由器
Dother:其他路由器
ABR:区域边界路由器
ASBR:自治系统边界路由器,一般来说,有路由引入的设备就是
邻接与邻居
邻接:Dother和Dother之间
邻居:DR和所以路由器,BDR和所有路由器
邻居建立
条件
1. Hello时间、Dead时间一致
2. 区域一致
3. 认证一致
4. Router-id不一致
5. 特殊区域标识一致
6. 在MA网络中,网络掩码一致
过程
邻接关系
R1发送Hello报文携带自己的RouterID,邻居为空
R2收到后进入Init状态,也发出携带自己的RouterID并且邻居为R1的Hello报文
R1收到后进入2-way状态,给R2发发出携带自己的RouterID并且邻居为R2的Hello报文
R2收到后也进入2-way状态
R1R2达成邻接关系
邻居关系
Exstar交换DD报文来协商路由器主从,然后进入Exchange状态,该状态下依旧交互DD报文,但此时DD报文包含完整的LSA通告,用这些报文来学习对端的LSA,知道对方有什么LSA发送LSR进行请求更新,此时就是Loading状态,最后两端LSDB达到一致,即Full状态,至此邻居关系达成
角色选举
按照先选DR再选BDR
DR选举
优先级0-255(0不参与选举)
不抢占,优先级越高越优,相等比较RouterID越大越优,最高为DR,次高为BDR
底层算法
最开始Hello报文的DR和BDR都为空,此时发送Hello并开启Dead time计时器,倘若收到报文中这两项为非空则接受填入自己的表项,如果超时未收到,则从Dother中开始选举,先选举DR再选举BDR
LSA处理方法
1.比较序列号,越大越优
2.比较校验和,越大越优
3.比较Age,差值>15min(900s)选小的,<=15min(900s)则视为相同
!注意:Age为3600s优先处理(棒棒糖序列法)
棒棒糖序列法
OSPF的序列号空间是32位的,取值范围从0x80000001到0x7FFFFFFE
1.序列号用尽时通过发送一条3600s的LSA告知设备
2.设备认为此LSA是最新更新LSDB
3.由于A最大Age为3600s,LSA会被老化而失效
4.这个时候始发的路由器会再发送一遍该LSA信息,但将其中的序列号置为0x80000001,其他设备收到后将该LSA判定为最新的LSA信息进行接收,至此解决序列号用尽问题
区域划分
骨干区域:区域0
非骨干区域:非区域0区域
防环机制
1.骨干区域和非骨干区域必须相连(物理和逻辑上相连都行)
2.ABR从非骨干区域获得的LSA不参与路由计算
3.ABR不会将描述到达某个区域内网段路由的3类LSA再注入回该区域(水平分割)
4.采用SPF算法,其本身无环路存在
认证
1.区域认证:区域视图下使用 authentication-mode hmac-md5/keychain/md5/simple XXX
2.接口认证:接口视图下使用ospf authentication-mode
!记得镜像配置
认证模式
hmac-md5
基于MD5哈希函数的消息认证码算法,结合了密钥和消息内容,生成一个固定长度的哈希值,用于验证消息的完整性和身份认证
kechain
加密规则(key)的集合,每个规则包含认证算法、认证密钥和Key的活跃时间。认证算法和认证密钥用于控制加密/解密报文,Key的活跃时间表示在这段时间内,能够使用配置的算法和密钥对报文认证后发送/接收
md5
md5加密,产生128位(16字节)的哈希值
路由聚合
特性
1.抑制明细路由,通告聚合路由
2.减小表项,降低更新大小和系统消耗
3.路由抖动不影响已通告路由
4.只发生于ABR,ASBR
缺陷
配置不当,引起环路
指令
区域视图下:ABR-summary 网络号 子网掩码
区域视图下:ASBR-summary 网络号 子网掩码
配置
实验拓扑
要求
1.R1,R2,R3在区域2,R2和R4在区域0,R4和R5在区域1
2.在ABR、ASBR上配置路由汇总,减少区域间、外部路由数量
3.修改OSPF的参考带宽值
4.在OSPF中引入缺省路由
5.修改OSPF域内、域间路由和域外路由的缺省路由优先级。
操作
1.配置地址(省略)
2.R1
[R1]ospf 1 router-id 10.0.1.1
[R1-ospf-1]area 2
[R1-ospf-1-area-0.0.0.2] network 10.0.123.1 0.0.0.0
[R1-ospf-1-area-0.0.0.2] network 10.0.1.1 0.0.0.0//宣告网段
[R1-ospf-1-area-0.0.0.2] quit
[R1-ospf-1]quit
[R1]interface LoopBack 0
[R1-LoopBack0] ospf network-type broadcast//设置网络类型为广播
[R1-LoopBack0] quit
其他路由器同理
3.在ABR、ASBR上配置路由汇总
[R4]ospf 1
[R4-ospf-1]area 1
[R4-ospf-1-area-0.0.0.1] abr-summary 10.5.0.0 255.255.254.0
[R4-ospf-1-area-0.0.0.1] quit
4.修改参考带宽
[R1]ospf 1
[R1-ospf-1] bandwidth-reference 10000
[R1-ospf-1] quit
其余设备同理
5.引入缺省路由
[R1]ip route-static 0.0.0.0 0.0.0.0 LoopBack 0
[R1]ospf 1
[R1-ospf-1] default-route-advertise always type 1
[R1-ospf-1] quit
效果演示
查看ospf路由表
R2的lsdb
在R2中引入路由并作ASBR路由聚合查看路由表仅有一条ospf路由
思考
OSPF引入外部路由时存在两种类型:类型1与类型2,这两种不同的类型有什么区别?
开销计算方式不同,1类认为各个开销值是同一数量级的1类cost算法采用接口相加遵循cost=到ASBR的开销+到ABR的开销+到目的网段的开销,2类则认为到ASBR的距离远大于其他开销,cost直接等于0+0+到目的网段的开销,当1类优先与2类。第一类外部路由:该路由引入OSPF时的COST加上本路由器到达ASBR/Forwarding Address的COST值;