1

我通过打开 6633 端口并侦听 OF 数据包来使用 java 解析 openflow 数据包。

我的代码因某些 openflow PACKET_IN 数据包而中断。请参见下图。


我正在使用 mininet 模拟拓扑。

mn --mac --switch ovsk,protocols=OpenFlow13 --controller remote,ip=172.23.107.166,port=6633 --ipbase=2.2.2.0/24 --topo linear,10

Mininet 版本:2.2.1rc1

Openvswitch 版本:2.0.2


以下是wireshark捕获的截图。

在此处输入图像描述


您可以观察到总长度 (342) 超过了长度 (170)。

因此,我的 java 代码正在解析额外的数据包字节(因为不适当的数据长度:342),即来自下一个数据包的字节,因此解析的以下数据包被破坏。

它应该在读取 170 个字节后停止解析。然后应该开始解析下一个数据包。

你能解释为什么会这样吗?

4

1 回答 1

1

170 字节的 TCP 段长度就是 -当前段中的字节数。由于 openflow 总长度为 342 字节,其数据跨越多个 TCP 段,因此您的 java 代码需要能够处理这个问题。

于 2016-08-02T17:43:01.587 回答