trema/learning_switch

異なるスイッチ間でFlowTableの情報が共有されている?

Closed this issue · 3 comments

例:
host1からhost2へパケットを送ったあと,host2からhost1へパケットを送った場合,
host1とhost2が属するスイッチ(例えばlsw1とする)のFlowTableにhost2からのパケットはhost1のポートへ送る情報がある.しかしなぜかdump_flowするとlsw1のみならずlsw2にも同じFlowTableの情報がありなぜFlowTableの情報が共有されているのか,という問題が存在する.

FlowTableが共有されているのはまだ僕はレポートにできていないので,他の人のを引用させていただきますが,https://github.com/handai-trema/learning_switch-yamatchan にあるとおり正常な動作のようです.(メールで連絡があったようにマルチラーニングスイッチの意図した動作ではないようですが)

@s-kojima ありがとうございます。これを再現する手順 (trema run, send_packets, dump_flows) を載せてもらえると助かります。

すいません,これは昨日までのconfファイルのときに生じていた問題についてでした(授業中に質問に伺ったとおりです),
現在のconfファイルの問題ではありません.
誤解をさせてしまったのでしたら申し訳ありません.
質問に伺ったときの内容は「このネットワークの構造の場合(古いほうのconfファイル),以下のコマンドを実行した場合(host1->host2,host2->host1というパケットの送信),フローテーブルはhost2が属しているスイッチのみ更新されていると思うが,なぜ2つのスイッチともフローテーブルが更新されているのか?」でした.
きちんと図にかいてスイッチとコントローラの動作を検証したところ,古いほうのconfファイルでhost1とhost2がいるスイッチそれぞれでフローテーブルが更新されているのは正しい動作でした(フローテーブルの内容は全く同じというわけでもない気がします)
confファイルが更新されたのでもう問題ないかと思いましたが,質問に伺った手前そのまま放置しておくのもどうかと思ったので,検証した結果をお伝えしたくて上のissueのとおりそのまま残しておかせていただいておりました.それで誤解をまねいたようでしたら(現在のconfファイルの問題であるかのように)大変申し訳ありません.
現在のファイルの問題ではないので,申し訳ありませんがこのissueを正しいステータスにしていただけたらと思います.

ちなみに以下の通りのことをしました.

$ ./bin/trema send_packets --source host1 --dest host2
$ ./bin/trema send_packets --source host2 --dest host1
$./bin/trema dump_flows lsw1
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=2.609s, table=0, n_packets=0, n_bytes=0, idle_age=2, priority=65535,udp,in_port=2,vlan_tci=0x0000,dl_src=84:32:d0:57:56:14,dl_dst=4a:9b:9e:f2:10:7a,nw_src=192.168.0.2,nw_dst=192.168.0.1,nw_tos=0,tp_src=0,tp_dst=0 actions=output:1
$./bin/trema dump_flows lsw2
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=7.452s, table=0, n_packets=0, n_bytes=0, idle_age=7, priority=65535,udp,in_port=1,vlan_tci=0x0000,dl_src=84:32:d0:57:56:14,dl_dst=4a:9b:9e:f2:10:7a,nw_src=192.168.0.2,nw_dst=192.168.0.1,nw_tos=0,tp_src=0,tp_dst=0 actions=output:2

@s-kojima 了解しました! この後の演習でも、おかしいなと思うことがあったら遠慮せずイシューを切ってみてください。