は、私の知る限りでは答えは、この概念だけではポックスを聞かせてサポートしていません何のOpenFlowではありません。 Poxはスイッチにパケットを生成するように指示できますが、この他のパケットをここに送信するアクションを持つフローテーブルエントリはありません。
しかし、次のようにこれを実装することができ可能な方法は次のとおりです。
マッチTCPプロトコルとポート番号に2つのアクションを持っています。アクション番号1はパケットを送信し、アクション番号2はパケットをいくつかのスペアテーブルに送信してフローテーブルを送信します。
このテーブルには、このダミーパケットを送信するようにパケットを変更するアクションがあります。あなたは特定のものを作ることはできませんでしたが、あなたは何かナンセンス値に宛先IPを変更するか、ナンセンスVLANを一種のsudoマーカーとして設定すると言うことができます。
編集: ユーザーは、私はいくつかの痘は、私が使用して計画されたプロセスを表示するコマンド見つけようとしますので、私は予備のテーブルで何を意味するのかを明確にするために求めました。 まず最初に、基本的なpoxコマンドの多くについて、this wikiを提案します。これは少し日付が入りますが、いくつかのケースでは間違っていますが、全体的には非常に便利です。
私は、すべてのフローテーブルが処理のための単一のリストである必要がないと言う、openflow 1.3が有効になっているという概念について話しています。代わりに、すべてのパケットは処理のためにテーブル0に行くことができ、アクションが、テーブル5が拡張処理を行うためにパケットを送信することができるか、またはテーブル0が何を発見したかに基づいてよりターゲットを絞った処理を行うことができる。これにより、より多彩なアクションが可能になります。この新しいコンセプトは、テーブルのテーブルまたは最終要素がフローテーブルエントリである2次元配列と考えることができます。申し訳ありませんが、言葉の表がたくさん現れます。
デフォルトでPoxはOpenFlow1.0を使用しているため、この概念をサポートしていませんが、それを可能にする拡張機能があり、その詳細情報はhereです。重要な部分のいくつかを以下に見つけることができます。
# Turn on Nicira packet_ins
msg = nx.nx_packet_in_format()
event.connection.send(msg)
# Turn on ability to specify table in flow_mods
msg = nx.nx_flow_mod_table_id()
event.connection.send(msg)
msg = nx.nx_flow_mod()
msg.priority = 1 # Low priority
msg.actions.append(of.ofp_action_output(port = of.OFPP_CONTROLLER))
msg.actions.append(nx.nx_action_resubmit.resubmit_table(table = 1))
event.connection.send(msg)
msg = nx.nx_flow_mod()
msg.table_id = 1
msg.priority = 1 # Low priority
msg.actions.append(of.ofp_action_output(port = of.OFPP_FLOOD))
event.connection.send(msg)
マルチテーブル・サポートが有効になっている。この例では、フロー1は、洪水にすべてのパケットを言う流れを有しているが、テーブルから、コントローラおよび表1に、すべてのパケットを送信する追加されます。うまくいけば、これは彼らがどのように働くかについての一般的な考えを与えるでしょう。
poxを使用してパケットを編集する方法がわからない場合、アクションリストに追加して宛先MACアドレスを変更するアクションの例を以下に示します。 VLAN用
ofp_action_dl_addr.set_dst(EthAddr("01:02:03:04:05:06"))
私が以前提案した方法は、あなたは
msg.actions.append(of.ofp_action_vlan_vid(vlan_vid=1234))
Arduicを行うことができ、感謝!私はあなたの実装提案の主なアイデアを把握していると思いますが、私はあなたが「フローテーブルのためのいくつかのスペアテーブル」を意味するのか混乱しています。あなたはおそらく私のために詳しく説明できますか? – renopos
OpenFlow/Poxのマルチテーブルの概念に関する簡単な説明を投稿するために編集しました。また、私が提案していたものを試して実装するのに役立つサンプルコードもあります。 – arduic
本当にありがとうございます。私はあなたがNiciraについて話しているかもしれない気がしました - これは昨夜あなたの最初の答えを読んだ後に簡単に調べたものですが、もう少し調べてみる必要があります。 提案した実装に固有の例か、単なる例ですか?パケットをそのまま送信する1つのテーブルにルールをインストールし、パケットを別のテーブルに転送してから、VLANヘッダーを編集してダミーとして転送することは可能でしょうか? そのVLAN IDを持つすべてのパケットがドロップされたことを示す、すべてのスイッチに別のルールをインストールできますか? – renopos