一、OSPF协议概述
1.1 为什么需要动态路由协议
动态路由协议缺点?
- 需要有较强的理解和分析能力(ISIS、BGP)
- 网络较大,那么收敛时间较长(可以把收敛当作从开始到路由学习完整的过程)
- 网络较大,会带来一定的设备负担,特别是当网络设计不合理的时候
1.2 动态路由协议分类
传达的是路由信息(道听途说)
传递链路信息(客观描述)
1.3 OSPF的路由计算
tep 1 客观描述
建立邻居关系,然后都会向它的邻居来描述自身使能了OSPF的接口情况,内容包括(但是不限于)网络类型、开销、IP掩码等。
Step 2 整合
每台OSPF路由器都描述自身启用OSPF的链路状态信息,最后进行交换,最终形成一个叫做LSDB(链路状态数据库)的表。类似于中国每个省份把自己省份的地图进行集合,然后通告给中国其他的省份
Step 3 使用SPF计算路由
以本设备为根,以SPF算法计算到达该拓扑的任意地方的路径。类似于以自身为起点去往中国的任何一个地方。
由于知道了整个拓扑信息,就相当于使用了上帝视角,做到“路由自主、路由自由”。SPF算法可以保证没有环路。
Step 4 提交路由表
OSPF计算出来的提交路由表,根据优先级、度量值的比较,从而写入路由表
1.4 OSPF基础术语
区域
一个设备可能位于多个区域(多个分组)
一个链路的两端位于一个区域
Router-ID
作用
- 标识一台设备,从而标识产生的LSA等信息
- 参与一些OSPF选举
选举原则
[AR1]#ospf 1 router-id 1.1.1.1
2.若没有手动指定,设备会选取全局Router ID作为OSPF的RouterID,
- 如果存在配置了IP地址的Loopback接口,则选择Loopback接口地址中最大的作为全局Router ID。
- 如果设备上不存在Loopback接口或者存在Loopback接口但没有配置IP地址,则从其他接口的IP地址中选择最大的作为全局Router ID(不考虑接口的UP/DOWN状态)
注意:
ENSP
度量值Cost
OSPF报文类型
HELLO
用于发现、建立和维持邻居关系,同时进行DR/BDR选举、验证等等工作
DD(DBD)
1.用于exstart和exchange阶段的Master和Slave选举以及DD报文的交互
2.DD报文里面包含的设备收集到的LSA信息的摘要(类似于不可描述的学习资料的目录)
LSR request
LSU
LSAck
报文要和状态机进行结合使用
OSPF三张表
邻接表(邻居表)
LSDB表
OSPF路由表
最终还是要提交全局的IP路由表
二、OSPF协议工作原理
邻居关系 vs 邻接关系
邻居关系:泛泛之交,只是见面打声招呼,即相互之间只发送hello报文
邻接关系:除了打招呼意外,还会有很多深入的交流,例如发起LSR请求,LSU更新和LSAck确认。
很奇怪的是,我们一般都说邻居关系,但实际上指的就是邻接关系,只有在讨论DR和BDR的时候,才会严格区分邻居关系和邻接关系
OSPF网络类型
- 一般而言,网络工程师在部署OSPF网络的时候,需要保证建立邻居关系的双方网络类型一致。
- 在封装了PPP的串行口上,默认为P2P链路
- 在以太网链路上,默认为Broadcast网络,当明确就是两个设备进行直连,例如两个设备直接使用以太网互联,那么可以修改为P2P,其他则不能修改。
DR与BDR
DR和BDR作用
在广播网络和NBMA网络中,任意两台路由器之间都要传递路由信息。网络中有n台路由器,则需要建立n*(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。
为解决这一问题,OSPF定义了DR。通过选举产生DR后,所有其他设备都只将信息发送给DR,由DR将网络链路状态LSA广播出去。
为了防止DR发生故障,重新选举DR时会造成业务中断,除了DR之外,还会选举一个备份指定路由器BDR。这样除DR和BDR之外的路由器(称为DROther)之间将不再建立邻接关系,也不再交换任何路由信息,这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。
邻接关系的情况,深入交换,停留在Full
DR<--->BDR
DR<---->DRother
BDR<--->DRother
邻居关系的情况,只是见面打声招呼,停留在Two-Way
DRother<--->DRother
如果MA没有使用DR/BDR技术,那么邻接个数就是n(n-1)/2个,使用DR/BDR则变成2(n-2)+1个,如果一个广播域中设备越多,效果越明显
DR与BDR的选举
DR的选举原则:
a)比较在此多路访问网络接口的OSPF优先级(默认值为1,可配置范围0~255,该值越大越优先。0表示此设备不参与该网段的DR选举,一定为DROther)
b)如果接口的OSPF优先级相同,则选举在此MA网络中Router-id大的成为DR
c)DR的选举是非抢占的(为了能够让接口OSPF优先级大者成为DR,在DR选举中引入了一个Wait Timer,该计时器默认为Dead计时器--以太网接口为40秒,即该网段中在40秒内启用的OSPF路由器则根据接口优先级来选举DR)
Q:DR挂了怎么办?
A:BDR顶上来
Q:三种角色中,哪个是必不可少的?
A:DR
Q:一个区域内DR可以有多少个?
A:有几个MA网络,就有几个DR
详细到感天动地的OSPF邻居建立过程
2、OSPF的hello报文是周期性发送的,现在假设A先发送hello报文至组播地址224.0.0.5,在hello报文中表明自己的RouterID为1.1.1.1,并且Active neighbor列表中没有看到任何路由器,此时A进入Init State。
4、A收到后,发现B的hello报文中包含自己的RouterID,对方看到我了,而我现在也看到对方,此时进入Two-Way State。
Two-Way阶段直接略过,紧接着交换LSA信息,最后直奔Full状态
为了减少LSA的泛洪,需要在这个阶段选举DR和BDR,需要等待大约40秒,因 此MA网络邻居建立较慢。
5、考虑到双方可能知道的拓扑信息都很多,因此没必要上手就全部就换,而是通过交换DBD摘要信息来“查缺补漏”,从而提高效率。
但是DBD也是至关重要的,如何保证其可靠性呢?IP报文无法实现可靠性,因此可以通过第一个DBD报文携带的RouterID来选取Master和Slave(谁的RouterID大谁为Master),双方使用Master的seq编号,进行DD报文交换,并且只有Master能将seq+1(窗口仅为1),Slave只能沿用Master的序列号(Master用99,Slave也用99),从而保证DBD不丢失。此时处于ExStart State(主要用来确定Master和Slave)
R2的第一个DD报文
R1的第一个DD报文
但是R2的RouterID为2.2.2.2,大于R1,因此R2是Master,R1是Slave
R1使用R2的序列号进行更新,并且只有R2可以将序列号+1
6、双方通过后续的DBD将自己的LSDB中的LSA以摘要形式进行同步,此时处于Exchange State
7、双方通过DBD都知道自己缺少啥了,此时就通过LSR来进行请求某条缺失的特定的LSA,收到LSR后就要回复LSU,收到LSU后,回复LSAck(Loading State -Full State )
只有LSU包含完整的LSA信息!!!
display ospf peer详解
OSPF区域的概念
- 数量越多LSDB就越大,性能消耗大
- 拓扑改变SPF就要重算一次
- 没有办法有效地进行路由控制(例如汇总)
- 通过划分骨干(Area 0)和非骨干,使得每个区域的LSDB减小,减少路由器负担
- SPF算法的影响范围限制在区域内
- 使得路由汇总、过滤等成为可能
多区域的注意事项
- 非骨干区域原则上必须和骨干区域互联
- 通过合理的层次化划分,防止区域间的环路
OSPF路由器类型
ASBR:引入外部路由(非本OSPF计算的路由)的设备
三、OSPF典型配置
进程只是在本设备上进行OSPF的划分,进程和进程之间是相互独立的。IA阶段只要考虑单进程即可。
2.area id
区域id,要么使用十进制,要么是用点分十进制。
area 10 = area 0.0.0.10
area 0.0.1.2 = area 258(2^8+2^1)
实际工程中,建议双方的标识方式一致即可(要么都用十进制,要么都用点分十进制),避免换算
3.network
network不是通告,是激活,是确定哪个(些)接口属于哪个区域。
反掩码,将4个255减去掩码就是反掩码。必须是先0后1
其中0标识必须匹配,1标识无需匹配。
掩码:用来确定网络位和主机位!!!
反掩码:用来确定哪些bit需要匹配,0表示必须匹配,1表示无需匹配。
例如路由器有三个接口
192.168.1.1/24
192.168.2.1/24
192.168.3.1/24
此时使用命令
ospf 1
area 0
network 192.168.0.0 0.0.255.255
那么三个接口均启用OSPF被划入区域0
建议的写法
- 接口级别的精确写法
network 192.168.2.1 0.0.0.0
- 反掩码级别的精确写法
network 192.168.2.1 0.0.0.255 = 192.168.2.0 0.0.0.255
- 偷懒摸鱼级别的写法
network 0.0.0.0 255.255.255.255
Q:如果一个Loopback的IP地址被选为了Router ID,那么这个接口需要启用OSPF吗?
A:
cost根据需要进行修改,要记住是去往目的网段的沿途出接口的开销
带宽参考值不建议修改