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

ミニネットのバージョン: 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 に答える