一、题目
下列那些 OSPF 报文中会出现完整的LSA 信息?
A.hello
B.DD
C.LSR
D.LSU
E.LSAck
二、答案
D
三、解析
A. Hello报文:Hello报文主要用于发现和维护邻居关系,它并不包含完整的LSA信息。Hello报文主要用于交换网络参数、邻居信息以及DR(指定路由器)和BDR(备份指定路由器)的选举信息。因此,A选项不正确。
B. DD报文(Database Description Packet):DD报文用于描述本端设备的链路状态数据库(LSDB)的摘要信息,而不是完整的LSA信息。DD报文中的每个条目通常只包含LSA的头部信息(如LSA类型、链路状态ID、通告路由器等),用于标识和同步LSDB。因此,B选项不正确。
C. LSR报文(Link State Request Packet):LSR报文用于向对方请求特定的LSA信息。它包含需要请求的LSA的摘要信息(通常是LSA的头部),但并不包含完整的LSA信息。LSR报文的作用是触发对方发送完整的LSA信息。因此,C选项不正确。
D. LSU报文(Link State Update Packet):LSU报文用于发送详细的链路状态信息,即包含完整的LSA信息。当路由器收到LSR报文或需要主动通告新的LSA时,它会使用LSU报文来发送完整的LSA信息。因此,D选项正确。
E. LSAck报文(Link State Acknowledgment Packet):LSAck报文用于确认LSU报文中包含的LSA信息已被成功接收。它并不包含完整的LSA信息,而是对LSU报文中的LSA信息进行确认。因此,E选项不正确。
四、扩展 — LSU报文
一、LSU报文的基本功能
LSU报文是OSPF协议中用于向相邻路由器发送链路状态更新信息的一种报文。当一个路由器的链路状态(如网络连接状态)发生改变时,如网络连接断开或恢复,该路由器会生成一个LSU报文,并向其相邻路由器发送。通过这种方式,LSU报文确保了网络中的每个路由器都能及时获取最新的链路状态信息。
二、LSU报文的生成与发送
- 链路状态变化检测:当路由器检测到其链路状态发生变化时,如接口UP/DOWN、邻居关系变化等,它会识别出这些变化并准备生成相应的LSA(链路状态通告)。
- LSA生成:路由器将链路状态变化转换为LSA,LSA中包含了描述链路状态的详细信息,如链路类型、链路成本、链路所连网络等。
- LSU报文封装:路由器将生成的LSA封装到LSU报文中,并准备发送。LSU报文包含了报文类型、报文长度、路由器ID、链路状态序列号等重要字段,用于标识和传输LSA。
- 邻居发现与选择:在发送LSU报文之前,路由器已经通过Hello报文与相邻路由器建立了邻居关系。路由器会根据邻居表选择目标路由器来发送LSU报文。
- 报文发送:路由器将LSU报文发送给其相邻的邻居路由器。如果邻居路由器是DR(指定路由器)或BDR(备份指定路由器),则直接发送给它们;否则,发送给所有相邻的路由器。
三、LSU报文的接收与处理
- 报文接收:相邻路由器接收到LSU报文后,会首先验证报文的完整性和正确性。
- LSA解析:验证通过后,路由器会解析LSU报文中的LSA,提取链路状态信息。
- 数据库更新:路由器将提取的链路状态信息与自己的链路状态数据库(LSDB)进行比较。如果LSU报文中的LSA是新的或更新的,则将其添加到LSDB中;如果LSA已经存在但序列号更高,则更新LSDB中的相应条目。
- 路由计算:LSDB更新后,路由器会重新运行SPF(最短路径优先)算法,计算新的最短路径树,并更新路由表。
- LSU转发:除了自己处理LSU报文外,路由器还会将LSU报文转发给其相邻的路由器(除了发送者),以便将链路状态变化信息扩散到整个网络。
四、LSU报文的优化机制
为了避免网络中的洪泛现象,OSPF协议引入了一些优化机制来限制LSU报文的传播。例如,当路由器收到LSU报文时,它不会立即转发给所有邻居路由器,而是先向发送路由器发送链路状态请求(LSR)报文,请求详细的链路状态信息。发送路由器收到LSR报文后,会回复链路状态确认(LSAck)报文,确认LSU报文已经成功送达。只有收到LSAck报文的路由器才会继续将LSU报文发送给其他邻居路由器。这种机制确保了LSU报文的传播是可控和高效的。