我正在尝试使用 scapy 和 python 建立与 HP-MSR 路由器的 bgp 会话。我成功创建了一个 tcp 套接字。此后,路由器向我发送一条 BGP Open 消息。作为回复,我发送 BGP Open 消息,并确认路由器的 BGP Open。路由器也在确认我的 BGP Open 消息。最后Router能够实现“Open Confirm”状态。当它达到打开确认状态时,它开始发送一些 [TCP Re-transmission message, Group: Sequence] 错误。它保持在打开确认状态,直到保持时间到期。
案例1)当我的bgp id低于Router id时。在这种情况下,路由器发送 Keep alive 消息,但它也发送相同的错误 [TCP Re-transmission message, Group: Sequence]。当我发送一些保持活动消息时,我没有得到路由器的任何确认,并且它保持在“打开确认状态”,直到保持计时器到期。在这种情况下,路由器还按预期发送“连接冲突解决方案”。
情况 2)当我的 bgp id 大于路由器 ID 时。在这种情况下,路由器不会发送任何保持活动消息,也不会确认我的消息。它一直发送相同的错误消息 [TCP Re-transmission message, Group: Sequence] 直到保持计时器到期。
我正在考虑,路由器应该遵循下面的 bgp 图:
-> syn
syn, ack <-
-> ack
Bgp open <-
-> BGP Open
-------------------- Open Confirm
Keep alive <-
-> Keep alive
-------------------- Established
我期望上图中解释的行为。