为什么 Linux 作为路由器不转发我的协议的所有数据包?

为什么 Linux 作为路由器不转发我的协议的所有数据包?

我正在 IP 层上实现我自己的协议,并将 iph->protocol 设置为 150 值。 AFAIK 这个协议号 150 不是为任何现有协议保留的。我使用两台带有 Linux 的 qemu 来宾机器,它们之间还有一个同样运行在 Linux 上的路由器。

问题在于通过这个 Linux 路由器在这些 qemu 机器之间转发使用我的协议 150 的数据包。该路由器仅转发固定数量的 10 个数据包中的少数几个。问题是路由器正在转发数量不确定的数据包,范围为 1..number_of_sent_packets/2。有趣的是,路由器最多转发一半的已发送数据包。我只是没有注意到路由器转发了一半以上。

路由器的作用不是只转发 IP 数据包而不查看数据包内传输的内容作为有效负载吗?我在路由器上使用标准(普通)Linux 内核。

我应该在 Linux 上检查或设置什么才能转发我的数据包?有任何想法吗?

相关内容