EIGRP RTP seq/ack 号

网络工程 思科 eigrp
2022-02-01 13:45:25

这篇文讨论了 EIGRP 中的 RTP。我的问题是如何选择序列号以及为什么在发送新数据包时设备应该提及最后一个数据包的序列号?例如

A-----seq:23 ack:0 ---->B
A<----seq:23 ack:23---- B

到目前为止没问题,它说实际上我已经收到了 seq:23 并且我承认 23。

A-----seq:24 ack:23---->B

第一个问题来了,为什么 A 要把 ack:23 放在它的包里呢?我的意思是它应该为零,因为 A 没有收到 seq:24 的 ack?

A<----seq:24  ack:24-----B

现在 B 用 ack:24 确认 A seq:24?请参考上面的链接,我有点困惑。

1个回答

Нi!RFC1889的 61 页

关于您的问题:“是如何选择 seq 号的”

当设备发送会话的第一个 RTP 数据包时,seq 编号必须是随机的,以使对加密的已知明文攻击更加困难,在下一个数据包中,seq 只是递增

“B 第一个问题就在这里”,没有问题,A 告诉 B,A 已收到最后一个 B 数据包的 ack(即 seq 23)

“现在 B 用 ack:24 确认 A seq:24 ???”,是的 ;-),B 向 A 确认,通过发送 ack 24 收到了 seq 24

添加:

有最新版本的增强型内部网关路由协议 draft-savage-eigrp-02

 The following sequence number rules must be met for the reliable
 EIGRP protocol to work correctly:

     o A sender of a packet includes its global sequence number
       in the sequence number field of the fixed header. The
       sender includes the receivers sequence number in the
       acknowledgment number field of the fixed header.
     o Any packets that do not require acknowledgment must be
       sent with a sequence number of 0.
     o Any packet that has an acknowledgment number of zero (0)
       indicates that sender is not expecting to explicitly
       acknowledging delivery. Otherwise, it is acknowledging
       a single packet.
     o Packets that are network layer multicast must contain
       acknowledgment number of 0.

但是,在 rfc 中,没有关于第一个 seq 编号的信息,所以我已经在硬件上进行了测试。正如我所看到的,seq 编号从 1 开始(不是随机的,就像在 RTP 中一样)。有趣的是,看起来,seq 号将递增,直到我们重新启动设备或重新启动 eigrp 进程(“no router eigrp”)。"clear ip eigrp nei" wasnt drop seq num to zero, hm