OSPF路由协议重点总结
【单区域】
一.RIP的缺点
{1}以跳数评估的路径并非最优路径、限制网络直径不能超过16跳;
{2}收敛速度慢;
{3}更新发送全部路由表浪费网络资源。
二.OSPF
OSPF是开放式最短路径优先,是IETF开发的一种链路状态路由协议,使用基于带宽的度量值;
采用SPF算法计算路由,从算法上保证无路由环路;
通过邻居关系维护路由,避免定期更新对带宽的消耗;
路由更新效率高,网络收敛快,适用于大中型网络;
报文封装于IP,协议号89,组播地址224.0.0.5和224.0.0.6
三.OSPF基本概念
OSPF基本协议模型:计算路由——传播路由——发起路由——建立邻居
Router ID:
运行OSFP协议必须要有router ID,RID是32比特无符号整数,可以唯一的标识一台路由器;
可以手工配置也可自动生成;
如果没有命令,当配置了lookback接口,则选其接口上数值最大的IP地址作为RID;如果没有这个接口,则选它已经配置的IP地址且链路开启的接口上数值最大的IP地址作为RID。
LS:
直连网段状态:接口的网段和状态 描述:网段、掩码、接口开销
直连拓扑状态:0SPF邻居和邻居状态 描述:邻居RID、连接接口、
接口开销
接口开销:OSPF参考带宽和接口带宽 描述:OSPF参考带宽默认100M、lookback接口开销默认1
LSA:
LSA是链路状态通告,是按一定格式封装后的链路状态信息,LSA1是路由器链路状态通告(每台路由器都会发LSA1),LSA2是传送网络链路状态通告。LSA封装在LSU报文中,在洪泛时内容不变。
LSDB:
LSDB是链路状态数据库,每台OSPF路由器都有一个LSDB,用于存储LSA。
同一个区域中的OSPF路由器的LSDB一致。
LSA封装在LSU报文中,在区域内洪泛,最终达到区域内LSDB一致。
LSA在洪泛过程中内容保持不变。
SPF计算:以自己LSA 1为根,进行SPF计算。各OSPF路由器单独进行SPF计算,互不影响。
OSPF的度量值为cost,也叫开销,是以链路的接口带宽为依据。
OSPF网络类型:
Broadcast广播多路访问:以太网接口
NBMA(Non-Broadcast Multi-Access,非广播多点访问网络):帧中继接口
P2MP(Point-to-MultiPoint,点到多点)
P2P(Point-to-Point,点到点):PPP HDLC接口
注:NBMA、P2MP已被淘汰。
OSPF报文类型与封装:
四.OSPF工作原理
1.建立邻居关系(点对点):
邻居之间通过交换Hello报文,确认邻居是否工作正常;如果在一定的时间间隔内,收不到邻居发来的Hello报文,就认为邻居已经失效,从邻居表中删除。
DR/BDR的选举(广播多路访问):
采用DR/BDR建立邻接关系,可以降低需要维护的邻接关系数量。
选举规则:
{1}首先比较Hello报文中携带的优先级:
优先级最高的被选举为DR,优先级次高的被选举为BDR;优先级为0的不参与选举。
{2}优先级一致的情况下,比较Router ID;Router ID越大越优先
{3}保持稳定原则:当DR/BDR已经选举完毕,就算一台具有更高优先级的路由器变为有效,也不会替换该网段中已经选举的DR/BDR成为新的DR/BDR。
例:RTE后来加入网络,虽然它的Router ID比原有的DR和BDR都高,但是出于稳定性的考虑,只能成为DRother路由器。当DR失效时,BDR立刻成为新的DR,DRother路由器进行竞争,Router ID高的成为新的BDR。
邻居关系无法建立原因总结:
2.状态转换:Down——Init——2-Way ; ExStart——Exchange——Loading——Full。
Down:初始状态。表示没有从邻居收到任何信息(Hello报文)。
动作:路由器会定期向外发送Hello报文,尝试发现邻居。
Init(初始):路由器收到了一个Hello报文,但这个Hello报文的“邻居列表”里还没有自己的Router ID。
动作:意味着对方已经看到了我,但我还没有和对方完成一次完整的握手。我会在下一个Hello报文中将对方的Router ID加入我的“邻居列表”。
2-Way(双向通信):路由器收到了一个Hello报文,并且这个报文的“邻居列表”中包含了自己的Router ID。
动作:双向通信已建立。
注意:
在广播网络中,此时会进行DR/BDR的选举。
选举完成后,DR/BDR会与所有邻居继续下一步,而DRother之间将停留在此状态,它们之间不需要建立完全的邻接关系。
在点对点网络中,没有DR/BDR选举,所有邻居直接进入下一步。
ExStart(预启动):双方准备开始同步数据库摘要,但需要先确定一个“主”路由器和一个“从”路由器,由“主”来控制同步过程。
动作:通过交换空的DBD报文(其中包含初始序列号)来进行选举。Router ID大的成为主路由器。
Exchange(交换):主从关系确立后,开始正式交换数据库的“目录”。
动作:双方相互发送DBD报文,报文中包含自己LSDB中所有LSA的头部信息(目录)。对方收到后,对比自己的目录,就能知道自己缺了哪些(LSA),或者谁的版本更新。
Loading(加载):根据交换来的“目录”,请求自己需要或更新的详细信息。
动作:
路由器查看对方发来的目录,发现自己没有或版本较旧的LSA,就发送 LSR报文 去请求。
对方收到LSR后,用 LSU报文 回应,里面包含了完整的LSA内容。
收到LSU后,回复 LSAck报文 进行确认。
Full(完全邻接):双方路由器的LSDB已完全同步。
动作:时,双方数据库的内容一模一样。路由器会立即以自己的LSA为根,进行SPF算法计算,得出最优路由路径,并将其加入路由表。
补:OSPF协议包具备超时重传机制;OSPF协议包具备序列号,对重复包不做处理
3.洪泛新LSA:
当有新的LSA生成或收到时,这条新的LSA应当被泛洪。泛洪新的LSA时,只需要使用LS Update报文和LS Ack报文。
1. 当RTA有新的LSA要泛洪时,RTA向RTB发送一个LS Update报文,在这个报文里包含这条LSA
2. 收到新的LSA以后,RTB向RTA泛洪一个LS Ack报文进行确认。当在两个处于完全邻接状态(邻居状态为Full)的路由器之间泛洪新的LSA时,邻居状态不受影响。
广播网络中LSDB更新:在广播和NBMA网络中,链路状态发生变化时,主要是通过DR路由器发送更新报文。
OSPF LSA洪泛与老化:
OSPF LSA老化:LSA不老化的缺点:当网络长时间中断,故障网络中的设备发起的LSA长时间无效,但仍然存储在LSDB中,浪费设备内存。
OSPF LSA采用递增老化:LSA自发起时开始计时,到达最大老化时间后,从LSDB中清除。
OSPF最大老化时间3600秒,LSA头部的老化时间字段用于计时。
OSPF LSA老化与全网刷新:
正常OSPF网络的路由维护:LSA老化时间到达最大老化时间的一半(30分钟),发起路由器随机等待一段时间后重新发起该LSA,然后洪泛,刷新所有路由器LSDB。
新发起的LSA序列号加1,老化时间为0。LSA在整个洪泛过程中,除老化时间外,其余各字段都保持不变。
报文:
Hello报文:建立并维护邻居关系 (间隔10s,失效40s)
Database description(DD):数据库内容汇总(LSA头部)
Link state request(LSR):请求自己没有或更新的链路状态信息
Link state update(LSU):链路状态更新信息(LSA头部+内容)
Link state acknowledge(LSAck):对LSU的确认
OSPF区域号:
OSPF路由域:运行OSPF路由协议的网络。OSPF区域:OSPF是一种支持划分多区域的协议。
Area ID:32位,用数字或IP地址表示。
【多区域】
五.单区域存在的问题
{1}LSDB 庞大,占用内存大,SPF计算开销大。
{2}LSA洪泛范围大,拓扑变化影响范围大。
{3}路由不能被汇总,路由表庞大,查找路由开销大。
划分区域的好处:
{1}每个区域独立存储LSDB,划分区域减小了LSDB。
{2}LSA洪泛被限制在区域内,有效控制了拓扑变化的影响范围。
{3}区域边界可以做路由汇总,减小了路由表。
六.多区域基本概念
OSPF多区域基本结构:
骨干区域:Area 0,OSPF的Area 0必须是连续的,不能被分割。
非骨干区域:必须和Area 0直接相连,非骨干区域之间不能直接交换路由信息,必须通过Area 0。
特殊区域:具有某些特殊性质的区域,如Stub、NSSA区域。
OSPF多区域链路状态数据库:
每个区域都有自己独立的LSDB,SPF计算独立运行。
LSA洪泛和LSDB同步只在区域内进行。
OSPF对区域间路由信息的描述:
OSPF只知道本区域的拓扑结构,并不知道其他区域的拓扑结构,其他区域的路由信息,依靠本 区域的ABR来描述。
OSPF对区域间路由的描述与计算:
ABR先计算区域内的LSA 1、2,并为计算出来的路由向其他区域发起LSA 3,而且为Area 0中的 LSA 3向其他区域重新发起LSA 3。
OSPF对外部路由信息的描述:OSPF通过ASBR来描述外部路由的可达性。
OSPF对外部路由的描述与计算:ASBR为外部路由发起LSA5,在整个OSPF路由域中洪泛。
七.0SPF的LSA分类
八.OSPF的LSA传播过程
LSA报文头格式:
OSPF外部路由开销类型:
开销类型1:开销 = LSA携带开销 + 到始发ASBR的开销
开销类型2:开销 = LSA携带开销
先比较LSA携带开销,再比较到始发ASBR的开销,两者都相等才负载。
OSPF外部路由开销类型:
先进行SPF计算,把外部路由LSA挂到SPF树上去,能挂上去的进行开销比较,挂不上去的直接忽略。
类型1优于类型2,相对于类型1,类型2相当于加了无穷远。重发布外部路由时,默认开销类型2。
到始发ASBR的开销计算:
转发地址为0.0.0.0 区域内通过ASBR的LSA 1计算得到。区域间通过ASBR的LSA 4计算得到。
普通区域重发布的外部路由,转发地址默认为0.0.0.0。
转发地址为某IP地址:在OSPF路由表中查询得到;若查询不到,则忽略该LSA。
OSPF选路原则:
按照路由类型的优先级选择:
{1}区域内路由(Intra Area){2}区域间路由(Inter Area)
{3}第一类外部路由(Type1 External){4}第二类外部路由(Type2 External)
在类型相同的情况下,选择路由开销(Cost)较小的路由。
OSPF协议的路由聚合/汇总:ABR或ASBR将具有相同前缀的路由信息聚合后发布到其它区域
优点:减少LSA3类、LSA5类的数目,减少路由信息;减小路由表的规模;提高路由器的运算速度
九.OSPF特殊区域
特殊区域是指人为定义的一些区域,它们在逻辑中一般位于OSPF区域的边缘,只与骨干区域相连。
常见的特殊区域有以下几类:
{1}Stub区域(末梢区域)
{2}Totally Stub区域(完全末梢区域)
{3}NSSA区域(非纯末梢区域)
{4}完全NSSA区域(完全非纯末梢区域)
特性 | Stub | Totally Stub | NSSA | 完全NSSA |
内容 | 不知外部,只知内外 | 只知内部 | 不知外部,但自己可引入 | 极度精简,但自己可引入 |
阻断的LSA | Type 4, Type 5 | Type 3, Type 4, Type 5 | Type 4, Type 5 | Type 3, Type 4, Type 5 |
允许的LSA | 1、2、3 | 1、2 | 1、2、3、7 | 1、2、7 |
默认路由 | ABR下发的 Type 3 LSA | ABR下发的 Type 3 LSA | ABR下发的 Type 7 LSA (需手动触发) | ABR下发的 Type 3 LSA |
ASBR | 不允许 | 不允许 | 允许(产生Type 7) | 允许(产生Type 7) |