mininet 環境で simple_switch_14.py アプリケーションを実行すると、ホストの ping が正常に機能します。
次に、次のコード文字列を変更します。
1) 「from ryu.ofproto import ofproto_v1_4」から「from ryu.ofproto import ofproto_v1_5」
2) 「OFP_VERSIONS = [ofproto_v1_4.OFP_VERSION]」から「OFP_VERSIONS = [ofproto_v1_5.OFP_VERSION]」
3) 「out = parser.OFPPacketOut(datapath=datapath, buffer_id=msg.buffer_id, in_port=in_port, actions=actions, data=data)」を「out = parser.OFPPacketOut(datapath=datapath, buffer_id=msg.buffer_id, match=parser.OFPMatch(in_port=in_port), アクション=アクション, データ=データ)"
これは、このアプリケーションを openflow 1.5 バージョンの環境で実行しようとしていることを意味します。
次のエラーが表示されます。
EVENT ofp_event->SimpleSwitch14 EventOFPPacketIn パケット 1 00:00:00:00:00:01 ff:ff:ff:ff:ff:ff 1 EventOFPErrorMsg を受信しました。version=0x6, msg_type=0x1, msg_len=0x44, xid=0x703a0cc
-- msg_type: OFPT_ERROR(1)
OFPErrorMsg(type=0x2, code=0x4, data=b'\x06\x0d\x00\x38\x07\x03\xa0\xcc\x00\x00\x01\x00\x00\x10\x00\x00\x00\x01\x00\x16\x80\x00\x00\x04\x00\x00\x00\x01\x80\x00\x06\x06\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x10\xff\xff\xff\xfb\xff\xe5\x00\x00\x00\x00\x00\x00')
|-- type: OFPET_BAD_ACTION(2)
|-- code: OFPBAC_BAD_OUT_PORT(4)
-- データ: version=0x6, msg_type=0xd, msg_len=0x38, xid=0x703a0cc `-- msg_type: OFPT_PACKET_OUT(13)
では、なぜ「bad out port」エラーが生成されるのか、openflow プロトコルの v1.4 と v1.5 の間で「out ポート」または「アクション」で何が変更されたのでしょうか?
ありがとう