OSPF协议---进阶篇
链路状态和LSA的理解
链路状态信息的理解
OSPF作为链路状态路由协议,不直接传递各路由器的路由表,而传递链路状态信息,各路由器基于链路状态信息独立计算路由。所有路由器各自维护一个链路状态数据库。邻居路由器间先同步链路状态数据库,再各自基于SPF(Shortest Path First)算法计算最优路由,从而提高收敛速度
所谓Link State(链路状态)指的就是路由器的接口状态。在OSPF中路由器的某一接口的链路状态包含了如下信息
① 该接口的IP地址及掩码
② 该接口的带宽(开销)
③ 该接口所连接的邻居
④ 链路的类型
OSPF路由器同步的是最原始的链路状态信息,而且对于邻居路由器发来的链路状态信息,仅作转发。最终所有路由器都将拥有一份相同且完整的原始链路状态信息
LSA头部理解
LSA(Link State Advertisement)是路由器之间链路状态信息的载体。LSA是LSDB的最小组成单位,也就是说LSDB由一条条LSA构成的。所有的LSA都拥有相同的头部,关键字段的含义如下:
LS age:此字段表示LSA已经生存的时间,单位是秒。3600s为老化时间,从lsdb中清除 通告的时候是0开始增长 更新时间1800s通告一次(通过LSU维护更新状态)
LS type:此字段标识了LSA的格式和功能。常用的LSA类型有五种
Link State ID:此字段是该LSA所描述的那部分链路的标识,例如Router ID等
Advertising Router:此字段是产生此LSA的路由器的Router ID
LS sequence number:此字段用于检测旧的和重复的LSA。32位有符号数 默认从0x80000001开始 最大0x7fffffff
如何标识唯一一条LSA
LS type,Link State ID和Advertising Router的组合共同标识一条LSA
如何比较一条LSA的新旧
1.如序列号越大越新
① 当路由器生成一条新的LSA时,使用序列号0x80000001做为该LSA的初始序列号,此后,每次更新该LSA,序列号加1
2.比较checksum 越大越新
3.比较age 越小越新
① 如果age=max age即3600s认为该条lsa是最新的立即更新
② 每条LSA都有一个年龄字段,LSA驻留在OSPF的数据库中,已经LSA的传播过程中年龄字段不断增加。OSPF有一个MaxAgeDiff的值,如果两条LSA的序列号相同,而年龄不同,如果年龄差值超过MaxAgeDiff值,那么认为是不同的两条LSA,将进行更新过程。如果小于MaxAgeDiff值,那么认为是相同的LSA,将丢弃后续收到的那条LSA
③ OSPF还有一个MaxAge的值,如果LSA的年龄超过该值,那么这条LSA会被从数据库中清除,并将该老化的LSA扩散出去,导致从所有的路由器数据库中清除
LSRefeshTime是LSA的定期刷新定时器,该定时器控制定期刷新LSA
MaxAgeDiff 15分钟
MaxAge 1小时
LSRefeshTime 30分钟
OSPF更新机制
定时更新
OSPF为每个LSA条目维持一个老化计时器(3600s),当计时器超时,此LSA将从LSDB中删除
为了防止LSA条目达到最大生存时间而被删除,OSPF通过定期更新(每1800s刷新一次)机制来刷新LSA。OSPF路由器每1800s会重新生成LSA,并通告给其他路由器
触发更新
当链路状态发生变化后,路由器立即发送更新消息,其他路由器收到更新消息后立即进行路由计算,快速完成收敛
OSPF的SPF算法
在同一个区域当中,OSPF使用SPF算法来实现破除环路和最优路径的计算,其中在一个OSPF区域里面会有Router-LSA(LSA-1)和Network-LSA(LSA-2)泛洪,Router-LSA(LSA-1)由每一台运行OSPF的路由器为每一个区域产生一份LSA,Network-LSA(LSA-2)由MA网络里面的DR产生
Router-LSA(LSA-1)
描述P2P网络
每台OSPF路由器使用一条Router-LSA描述本区域内的链路状态信息
LSA头部的三个字段含义如下
① Type:LSA类型,Router代表是LSA-1
② LS id:链路状态ID(也就是产生该LSA的Router ID)
③ Adv rtr:产生此Router-LSA的路由器Router ID
一条Router-LSA可以描述多条链路,每条链路描述信息由Link ID,Data,Link Type和Metric组成,其关键字含义如下
Link Type:链路类型,Router LSA描述的链路类型主要有4种
① Point-to-Point:描述一个从本路由器到邻居路由器之间的点到点链接,属于拓扑信息
② TransNet:描述一个从本路由器到一个Transit网段(例如MA网段或者NBMA网段)的链接,属于拓扑信息
③ StubNet:描述一个从本路由器到一个Stub网段(例如Loopback接口)的链接,属于路由信息
Link ID:此链路的对端标识,不同链路类型的Link ID表示的意义也不同
Data:用于描述此链路的附加信息,不同的链路类型所描述的信息也不同
Metric:描述此链路的开销
描述MA网络
在描述MA网络类型的Router-LSA中,Link ID为DR的接口IP地址,Data为本地接口的IP地址
RTB、RTC、RTE之间通过以太链路互连,以RTC产生的LSA为例,Link ID为DR的接口IP地址(10.1.235.2),Data为本地路由器连接此MA网络的接口IP地址(10.1.235.3),Link Type为TransNet,Metric表示到达DR的开销值
TransNet描述的链接中仅包括与DR的连接关系及开销,没有网络号/掩码及共享链路上其他路由器的任何信息
LSA-1的总结
Network-LSA
MA共享网段或NBMA共享网段中网络号/掩码及路由器间的链接关系,可以通过Network-LSA来呈现。在Network-LSA中关键字的含义如下
① Type:LSA类型,Network-LSA是二类LSA
② LS id:DR的接口IP地址
③ Adv rtr:产生此Network-LSA的路由器Router ID,即DR的Router ID
④ Net mask:该网段的网络掩码
⑤ Attached Router:连接到该网段的路由器列表,呈现了此网段的拓扑信息
基于上述字段表达的信息,Ls id和Net mask做与运算,即可得出该网段的IP网络号,另外,从DR路由器到其所连接的路由器的开销为0
从Attached Router部分可以看出,2.2.2.2、3.3.3.3、5.5.5.5共同连接到该共享MA网段中,DR路由器为2.2.2.2,网络号10.1.235.0,掩码255.255.255.0