1. LSA泛洪机制
LSU(Link - State Update)报文承载:当一个路由器产生新的LSA或者收到邻居传来的更新的LSA时,它会将这些LSA封装在LSU报文中,然后向除了接收该LSA的接口之外的所有接口转发。
可靠传输保证:为了确保LSA能够可靠地在网络中传播,接收方在收到LSU报文后会发送Link - State Acknowledgment(LSAck)报文来确认收到了LSA。如果发送LSU的路由器没有收到LSAck,它会在一定时间后重传LSU报文,直到收到确认或者达到重传次数限制。
区域内泛洪和区域间泛洪:在一个OSPF区域内,LSA会从产生它的路由器开始,通过邻居之间的传递逐渐在整个区域内传播,这是区域内泛洪。
2. 泛洪周期
没有固定泛洪周期:与一些基于距离矢量的路由协议(如RIP的定期更新)不同,OSPF没有固定的LSA泛洪周期。LSA的泛洪是由网络拓扑变化触发的。当网络中的链路状态发生变化,如接口状态变化(从UP变为DOWN或者反之)、链路的开销(Cost)改变等情况,产生变化的路由器会立即生成新的LSA并开始泛洪。
3. LSA标识方法
通过头部信息标识:LSA头部包含了多个关键信息用于标识LSA。主要包括:
LSA类型(Type):不同类型的LSA有不同的用途和传播范围。例如,类型1(Router - LSA)是由每个路由器产生的关于自身链路状态的通告,包括直连的链路和接口的信息;类型2(Network - LSA)是由指定路由器(DR)产生的关于广播型网络或者非广播多路访问(NBMA)网络的链路状态通告。
链路状态ID:根据LSA类型的不同,链路状态ID有不同的含义。对于类型1的LSA,链路状态ID就是产生该LSA的路由器的Router - ID;对于类型2的LSA,链路状态ID是DR所连接的网络的IP地址。
通告路由器:即产生该LSA的路由器的Router - ID。这在判断LSA来源和比较新旧时非常重要。
序列号:用于区分相同类型、相同链路状态ID和相同通告路由器的LSA的不同版本。序列号越大,通常表示LSA越新。
4. LSA如何判断新旧
首先看序列号:如果两个LSA的类型、链路状态ID和通告路由器都相同,那么就看序列号。序列号越大的LSA越新。例如,一个LSA的序列号是8000,另一个是8001,那么序列号为8001的LSA是更新的。
序列号相同看校验和:如果序列号相同,就比较校验和。校验和是对LSA内容进行计算得到的一个数值,用于检查LSA在传输过程中是否发生错误。校验和大的LSA被认为是更新的。