問題タブ [ryu]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - フロー エントリをスイッチに事前にプログラムするための API
simple_switch.py 内で以下の関数を使用して、スイッチへのフローを設定しています。
上記のように、"msg.buffer_id." が必要です。この "msg" は、イベント ハンドラに渡される PACKET_IN イベントから取得されます。より一般的な API があるかどうか知りたいです。パスを知っていて、フローを事前にプログラムしたい場合に、フローを設定するために使用します。
python - MPLS ヘッダーがプッシュされた後、ovs スイッチ (バージョン 2.3.1) からパケットが転送されないのはなぜですか?
mpls ラベルをプッシュおよびポップする ryu アプリを作成しています。ovs (バージョン 2.3.1) スイッチ s1 のフロー エントリを次に示します。
フローエントリが一致してもパケットが転送されない理由は誰でも知っています。Wireshark を開いて s1-eth2 を参照して mpls ヘッダーをチェックすると、mpls ヘッダーまたは ethertype = 0x8847 のパケットが検出されないことが原因です。
s1-eth2 で確認できるパケットは、ICMPv6 (ルーター要請メッセージ)、DHCP、および MDNS のみです。それらのいずれも、ホスト 1 から h2 に送信している ping とは関係ありません。私のトポロジ:h1-s1-s2-h2
私のコードにはバグがありますか、それとも ovs または openflow_v1.4 ryu のバグですか?
ありがとう。
openflow - OpenFlow と Ryu コントローラーを使用して、STP によって無効化/ブロックされたポートを「アクティブ化」して、パケットを転送できるようにするにはどうすればよいですか?
ループのあるトポロジーの SDN ネットワークで OpenFlow 1.3 プロトコルを使用してパケットを送信する方法を探しています。私が選んだコントローラーはRyuです。ARP パケットをキャッチしているホストを特定し、フラッドストームを回避するためにSTPを使用しています。
私の問題は、ルーティング アルゴリズムによって計算されたパスに、STP によってブロック/無効化されたポートが含まれている場合、接続を確立できない (ホストが互いに ping を実行できない) ことです。
熟考した後、ルーティング パス上にある無効化/ブロックされたポートを「アクティブ化」する必要があるという結論に達しました。しかし、私はそれを行う方法を見つけることができません..
では、問題は次のとおりです。どうすれば解決策を達成できますか? Ryuのポートを「アクティブ化」する方法はありますか? または、私の解決策が達成できない場合、この問題を解決するために使用できる他の方法はありますか?
ryu - Ryu: データパスを変換して IP アドレスを切り替えます
現在、オープンソースの OpenFlow コントローラーである Ryu の上にアプリケーションを作成しています。
OF-Config 接続 (または OVSDB 接続) を作成するには、Ryu コントローラーに接続されている各スイッチの IP アドレスを取得する必要があると思います。ただし、データパス オブジェクトまたはデータパス ID をスイッチの IP アドレスに変換する API が見つかりません。
なので、そういうAPIがあれば知りたいです。そうでない場合は、IP アドレスを使用せずに接続を確立する方法についてコメントをお待ちしております。
mininet - get_all_link(self) トポの可能なすべてのリンクを出力する
4 つのスイッチと 4 つのホストを備えたトポがあります。スイッチはループを構成します。私の目標は、スイッチがコントローラーに接続されているときのネットワークのトポロジーを学習することです。問題は、関数get_all_links()
が可能なすべてのリンクを返すか、少なくとも意味をなさないものを返すことです。port_modify
イベントが発生したときにその関数を呼び出します。
トポを構築するために使用するコードは次のとおりです。
Ryuのコードは次のとおりです。
したがって、リンクを確認すると、4 つしかないのに 24 個のリンクが表示されます。
コードの一部はSDNLabにあります。スペースを節約するために、いくつかのイベントを削除しました。完全なコードについては、https ://github.com/Ehsan70/RyuApps/blob/master/topo_learner.py にアクセスしてください。
mininet - トポにループがあると Mininet pingall が失敗する
Ryu を SDN コントローラーとして使用して、ループのあるトポを制御しています。
学習スイッチ技術を使用してパケットをルーティングしています。私の主な機能/ハンドラーは次のとおりです。
トポにループが必要です。ループがping可能になるようにトポ/コントローラーを適切に構成する方法を知っている人はいますか?
私の完全なコントローラー コード: https://github.com/Ehsan70/RyuApps/blob/master/topo_learner.py 私の topo コード: https://github.com/Ehsan70/RyuApps/blob/master/Pkt_Topo_with_loop.py