Mininet、RYU コントローラー、および OpenFlow 1.3 を使用して、次の方法でスイッチを使用しh1
てホストがホストに接続されるトポロジを作成しています。h2
p0es0
h1 h1-eth0:p0es0-eth3
h2 h2-eth0:p0es0-eth4
私の Ryu Controller アプリケーションには、p0es0
スイッチにルールをインストールして、h2 から h1 に、またはその逆に到達できるようにするための次のコード スニペットがあります。
# Install rule to forward packets destined to "10.0.0.2" (h2) via port 3
ofproto = sw.ofproto
match = sw.ofproto_parser.OFPMatch( eth_type = 0x0800, ipv4_dst="10.0.0.1")
action = sw.ofproto_parser.OFPActionOutput(4)
inst = [sw.ofproto_parser.OFPInstructionActions(sw.ofproto.OFPIT_APPLY_ACTIONS, [action])]
mod = sw.ofproto_parser.OFPFlowMod(datapath=sw, match=match,
instructions=inst, cookie=0, command=ofproto.OFPFC_ADD, idle_timeout=0,
hard_timeout=0, priority=100, flags=ofproto.OFPFF_SEND_FLOW_REM)
sw.send_msg(mod)
# Install rule to forward packets destined to "10.0.0.1" (h1) via port 4
match = sw.ofproto_parser.OFPMatch( eth_type = 0x0800, ipv4_dst="10.0.0.1")
action = sw.ofproto_parser.OFPActionOutput(4)
inst = [sw.ofproto_parser.OFPInstructionActions(sw.ofproto.OFPIT_APPLY_ACTIONS, [action])]
mod = sw.ofproto_parser.OFPFlowMod(datapath=sw, match=match,
instructions=inst, cookie=0, command=ofproto.OFPFC_ADD, idle_timeout=0,
hard_timeout=0, priority=100, flags=ofproto.OFPFF_SEND_FLOW_REM)
sw.send_msg(mod)
私の dump-flow コマンドは、期待どおりにスイッチにルールが正しくインストールされていることを確認します。
*** p0es0 -------------------------------------------------- -------------------
OFPST_FLOW 応答 (OF1.3) (xid=0x2):
cookie=0x0、期間=1103.417s、テーブル=0、n_packets=0、n_bytes=0、send_flow_rem 優先度=100、ip、nw_dst=10.0.0.2 アクション=出力:4
cookie=0x0、期間=1103.414s、テーブル=0、n_packets=0、n_bytes=0、send_flow_rem 優先度=100、ip、nw_dst=10.0.0.1 アクション=出力:3
ただし、ping を実行しようとするとh2
、h1
Destination Host Unreachable エラーが発生します。tcpdump を on で使用してみましたp0es0-eth3
-- ARP Request パケットしか表示されません。
ここで何か不足していますか?
ありがとう。