开放式最短路径优先OSPF
1.OSPF基本知识
OSPF作为基于链路状态的协议,解决了RIP在收敛慢,路由环路,可扩展性差等问题,还有以下优点:
- 采用组播方式发布报文,可以减少对其他不运行ospf路由器的影响
- ospf直尺无类域间选路(CIDR)
- 支持对等价路由进行负载分担
- 支持报文加密
LSA 链路状态通告
LSDB 链路状态数据库
在ospf网络中,每台路由器根据自己周围的网络拓扑结构生成LSA并通告更新报文将LSA发送到网络中的其他路由器。
每台路由器通过LSDB掌握全网的拓扑结构
路由器根据最短路径优先(SPF)算法计算到达目的网络的路径,而不是根据路由通告获得路由信息。
每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树(SPT)。
2.OSPF运行机制
2.1 5个步骤
- 通过交互Hello报文形成邻居关系
- 通过泛洪LSA通告链路状态信息
LSA描述了路由器所有的链路,接口,邻居及链路状态等信息 - 通过组建LSDB形成带权有向图
- 通过SPF算法计算并形成路由
- 维护和更新路由表
2.2 OSPF五种类型的报文
1. hello报文
hello报文用于建立和维护邻接关系,hello报文中包括了定时器的数值,本网络中DR,BDR以及已知的邻居。
2. DBD报文 database description packet
邻接关系初始化用来协商主从关系,邻接关系建立后,描述本端LSDB,用来数据库同步
3. LSR报文 link state request packet
两台路由器交互DD报文之后,发送LSR报文向对方请求更新LSA。
4. LSU报文 link state update packet
用来向对端路由器发送其所需要的LSA或者泛洪本端更新的LSA,报文内容是多条完整的LSA的集合
5. LSAck link state acknowledge packet
用来对接受到的LSU报文进行确认
2.3 ospf支持的网络类型
1.广播类型 broadcast
当链路层协议是Ethernet 或 FDDI时,缺省情况下,ospf认为网络类型是broadcast
在该类型网络中
以组播方式发送hello报文,LSU报文和LSAck报文,其中,224.0.0.5为ospf设备的预留IP组播地址,224.0.0.6为OSPF DR/BDR的预留IP组播地址。
以单播发送DD报文和LSR报文
2.NBMA网络 non-broadcast multi-access
帧中继和x.25,缺省情况下为NBMA网路
单播形式发送协议报文(hello,DD,LSR,LSU,LSAck)
3.P2MP网络 point-to-multipoint
没有一种链路层协议会缺省为P2MP,常用做法是将非全连通的NBMA改为P2MP
以组播方式(224.0.0.5)发送hello报文。
以单播方式发送其他协议报文(DD,LSR,LSU,LSAck)
4.P2P类型 point-to-point
链路层协议为PPP,HDLC或LAPB
以单播方式(224.0.0.5)发送协议报文(hello,DD,LSR,LSU,LSAck)
3.DR和BDR的选举
3.1 Router-id
选取方式:通过命令手动配置和自动设定
如果没有手动配置,设备会从当前接口IP地址中自动选取一个作为Router-id。顺序为:
- 优先从loopback地址中选择最大的IP地址作为router-id
- 如果没有配置loopback地址,则在接口地址中选取最大的IP地址作为router-id
- 只有当被选举为router-id的接口IP被删除或者修改后,才会进行router-id重新选举
3.2 DR,BDR选举的原因
在广播网络和NBMA网络中,任意两台路由器都要传递路由信息,网络中有n台路由器,则需要建立n*(n-1)/2个邻接关系,任何一台路由器的路由变化都会导致多次传递,浪费网络带宽。
通过选举DR,所有其他设备只将信息发送给DR,由DR将网络链路状态LSA广播出去
为了防止DR发生故障,重新选举DR会造成业务中断,选举BDR,除DR和BDR之外的路由器(DR-Other)之间不建立邻接关系,也不在交换路由信息。
3.3 DR,BDR选举规则
1. 选举制
路由器接口的DR优先级决定了该接口在选举DR,BDR所具有的资格
优先级默认为1, 0不参加选举,接口优先级高的选举为DR,次高的为BDR
2. 终身制
也叫非抢占制,新加入路由器在网络中存在DR,即使本路由器的DR优先级比现有DR高,也不会生成自己是DR。
在一个广播网络或NBMA网络上,最先启动的两台具有DR选举资格的路由器,成为DR和BDR
3.继承制
如果DR故障,下一个成为DR的一定是BDR,在BDR成为新的DR后,选举一个新的BDR,虽然这个过程所需的时间比较长,但不会影响路由计算。
4.OSPF邻居关系和邻接关系
hello报文(报文发送间隔/DR和BDR接口地址/IP地址掩码) -----> 互为邻居关系 ----> 交互DD报文,交互LSA报文 ----> 邻接关系
在广播网络与NBMA网络中,DR other之间不需要交换LSA信息,所以建立的是邻居关系
DR与BDR之间,DR,BDR与DRother之间需要交换LSA信息,建立的是邻接关系
在p2p,p2mp网络中,不需要选举DP和BDR,DD报文是通过组播发送
5. OSPF邻居状态机
8种邻居状态机,分别是down,init,appmpt,2-way,exstart,exchange,loading,full
down 邻居会话的初始阶段,表明没有在邻居失效间隔时间间隔内收到来自邻居的hello报文
appmpt 处于本状态时,定期向手工配置的邻居发送hello报文,只适用于NBMA类型的接口
init 本状态表明已经收到邻居的hello报文,但是对端并没有收到本端发送的hello报文
2-way 互为邻居,本状态表示双方互相收到了对端发送的hello报文,建立了邻居关系,如果不形成邻接关系则邻居状态机停留在此状态,否则进入exstart状态
exstart 协商主/从关系,建立主/从关系主要是为了保证在后续的DD报文交换中能够有序的发送
exchange 交换DD报文,本端设备将本地的LSDB用DD报文来描述,并发送给邻居设备
loading 正在同步LSDB,两端设备发送LSR报文向邻居请求对方的LSA,同步LSDB
full 建立邻接,两端设备的LDSB已同步,本端设备和邻居设备建立邻接关系
6. OSPF区域
随着网络规模的日益增大,当一个大型网络中的路由器都运行ospf路由协议时,路由器数量的增多会导致链路状态数据库LSDB非常庞大,占用大量存储空间,并使得运行SPF算法的复杂度增加,导致路由器负担很重。
在网络规模增大后,拓扑结构发生变化的概率增大,网络会经常处于“动荡”之中,造成网络中会有大量的ospf协议报文在传递,降低了网络的带宽利用率。
ospf协议通过将自治系统划分成不同的区域解决LSDB频繁更新的问题,提高网络的利用率。
OSPF中为什么要划分多区域
- 减小路由表大小
- 限制LSA的扩散
- 加快收敛
- 增强稳定性
7. 路由器类型
类型 | 说明 |
---|---|
区域内路由器(internal router) | 所有接口属于同一个ospf区域 |
区域边界路由器ABR(area broder router) | 同时属于两个 以上的区域,但其中一个必须是骨干区域 |
骨干路由器(backbone router) | 至少有一个接口属于骨干区域,所有ABR和位于area 0 的内部设备 |
自治系统边界路由器ASBR (as boundary router) | 只要一台ospf设备引入外部路由的信息,它就是ASBR |
8. OSPF区域类型
区域 | 作用 | 说明 |
---|---|---|
普通区域 | 缺省情况下,ospf区域被定义为普通区域,包括:1.标准区域,最通用的区域,它传输区域内路由,区域间和外部路由 2.骨干区域 area0 负责区域之间的路由,非骨干区域之间的路由信息,必须通过骨干区域来转发 | 骨干区域自身必须保持连通,所有非骨干区域必须与骨干区域保持连通 |
stub区域 | stub区域的ABR不传播它接收到的自治系统外部路由.stub区域的ABR生成一条缺省路由,并发布给stub区域中的其他非ABR路由器,totally stub区域允许ABR发布type 3 缺省路由,不允许发布自治系统外部路由和区域间路由,只允许发布区域内路由.stub过滤4,5类LSA,ABR会产生缺省的3类LSA,区域内不能引入外部路由。totally stub过滤3,4,5类LSA,ABR会产生缺省的3类LSA,区域内不能引入外部路由。 | 骨干区域不能配置成stub区域,stub区域不能存在ASBR,因此自治系统外部的路由不能在本区域内传播,虚连接不能穿过stub区域 |
NSSA区域 | nssa区域不允许存在5类LSA,允许引入外部路由,type7 LSA由NSSA的ASBR产生,仅在本区域传播,type7 LSA到达ABR,转为type 5 LSA泛洪到整个OSPF区域,nssa过滤4,5类LSA,ABR会产生缺省的7类LSA,该区域能引入外部路由。totally nssa过滤3,4,5类LSA,ABR会产生缺省的3类LSA,该区域能引入外部路由。 | nssa区域的ABR会发布type 7 LSA缺省路由传到本区域,所有区域间路由必须通过ABR发布,虚连接不能穿过nssa区域 |
ospf网络划分区域以后,一个区域内参与SPF算法的只有区域内的LSA,其他区域LSA不参与本区域SPF算法,区域的震荡被限制在一个更小的范围,提高网络的稳定性
9. OSPF防环方法
1.区域防环
OSPF规定直接在两个非骨干区域之间发布路由信息是不允许的,只允许在一个区域内部或者在骨干区域和非骨干区域之间发布路由信息,因此,每个ABR必须连接到骨干区域
2.区域间水平分割
ABR只会将type3 LSA转发到骨干区域,如果始发的是本区域的路由是不会被再次注入进来的,目的就是为了防止环路
3.type 3LSA防环
ABR不会向区域0传播它在非0区域学习到的type3 LSA路由,因为这本来就是从区域0传来的,ABR不会计算从非骨干区域来的type3 LSA,防止次优路径。
10. OSPF LSA类型
1. type 1 LSA Router-LSA
OSPF网络里每一台路由设备都会发布type 1 LSA,用于描述设备的链路状态和开销,在路由器所属区域内传播
2. type 2 LSA Network-LSA
由DR产生,描述本网段的链路状态,在所属的区域内传播
3.type 3 LSA Network-summary-LSA
由ABR发布,用来描述区域间的路由信息
用来将area 1和area 0的路由信息分别发布到对方区域,不会通告给totally stub区域和totally nssa区域。
4.type 4 LSA ASBR-summary-LSA
由ASBR发布,描述ASBR的路由信息,并通告给除ASBR所在区域的其他相关区域
5.type 5 LSA AS-external-LSA
由ASBR产生,描述到AS外部的路由,通告到除stub区域和nssa区域以外的所有区域
6.type 7 LSA nssa-LSA
由ASBR产生,描述到AS外部的路由,仅在NSSA区域传播,nssa区域的ABR收到NSSA LSA后,会有选择的将其转化为type 5 LSA,以便将外部路由信息通告到ospf网络的其他区域
11. OSPF虚连接
虚连接(virtual link)是指在两台ABR之间通过一个非骨干区域建立的一条逻辑上的链接通道
虚连接的存在增加了网络的复杂程度,而且使故障排查更加困难,在网络规划中应尽量避免使用虚连接
12. OSPF路由聚合
1. ABR聚合
ABR想其他区域发送路由时,以网段为单位生成type 3 LSA,如果该区域存在一些连续网段,可以通过命令将连续的网段聚合成一个网段,ABR只发送一条聚合后的LSA。
2. ASBR聚合
配置路由聚合后,如果本地设备为ASBR,将对引入的聚合地址范围的type 5 LSA进行聚合,配置nssa区域时,还要对引入的聚合地址范围的type 7 LSA进行聚合
如果本地设备即是ASBR,又是ABR,则对type 7 LSA转化成type 5 LSA进行聚合处理
13. OSPF网络规划设计原则
1.保持OSPF网络的稳定性,router id的规划
router-id的选举规则
手动指定和系统自动选取,选取原则为:
a.loopback中选取ip地址最大的
b.如果未配置loopback,从接口IP中选取IP最大的作为router-id
c.只有在接口ip删除或者修改后,router-id才会重新选举
实际工作中,推荐手工指定配置router-id,规划处一个私有网段用于router-id的选择,建立loopback接口,配置32位掩码地址用于router-id
2.层次化的网络设计,ospf区域的规划
大型ospf网络中,遵循核心,汇聚,接入的分层原则,骨干路由器的选择一般包括出口路由器和核心交换机
area 编号采用area 10,20,30递增方式,以便后期网络扩容的时候增加区域编号
3.非骨干区域的路由表项优化,特殊区域的使用
特殊区域的使用可以达到优化非骨干区域的路由表项的目的
大部分情况下,建议把非骨干区域统一规划成totally nssa区域
4.骨干区域的路由表项优化,非骨干区域IP子网规划和路由汇聚
建议新建ospf网络时设计利于路由汇总的IP网络,对于扩建的网络尽量进行IP地质的重新规划,通过路由汇聚精简骨干区域路由器的路由表,减少骨干区域内ospf交互的报文数量
5.上行流量的引导,ospf缺省路由的引入和选路优化
通过调整ospf接口的cost值可以使得路由器选择不同的链路出口来达到负载分担的目的
缺省情况下,ospf计算cost值得参考带宽为100Mbits/s,100M带宽的端口cost值为1,可以使用bandwitch-reference 命令选择一个合适的参考带宽
6.路由汇总场景下的防环设计,黑洞路由的使用
路由汇聚和路由黑洞通常配合使用
7.ospf网络基本安全,ospf静默接口的使用
在ospf网络设计中,通常会禁止将ospf报文发往用户端,为了防止终端用户窥探ospf报文信息
推荐在ospf网络的边缘设备上使用静默端口来阻止通往用户侧的ospf报文
14. OSPF缺省配置
hello报文发送间隔 p2p,broadcast类型接口为10秒,p2mp,nbma类型接口为30秒
邻居失效时间 p2p,broadcast类型接口为40秒,NBMA类型接口为120秒
stub router保持时间 500秒
计算接口开销带宽参考值 100Mbits/s