0

hard_timeout が経過した後、スイッチがフロー ルールをいつ削除するかを知りたいです。テストできる ofp_flow_mod属性があることはわかっています。コントローラーで次のようにしました。flagsOFPFF_SEND_FLOW_REM

def handle_flowRemoval(self, event):
    msg = event.parsed
    if msg.flags == of.OFPFF_SEND_FLOW_REM:
        print ("The switch %s has raised the removal event!" % event.dpid)

実際、hard_timeout が期限切れになった後、このメソッドはトリガーされません。どうしてか分かりません。誰でもそれを修正する方法を提案できますか。

タンク・ユー

4

1 に答える 1

1

スイッチにフローがインストールされていることが確実な場合は、トポロジ モジュールを追加し、FlowRemoved イベント mixin をリッスンするのが最善の方法です。

メインクラスに次のようなものを追加します

core.openflow.addListenerByName("FlowRemoved", self._handle_flow_removal)

そして、どこかでイベントを読む

def _handle_flow_removal (self, event):
    """
    handler flow removed event here
    """
    print event.__dict__() # to get available info

FlowRemoved イベント mixin は、172 行目の POX topology.py モジュールにあり ます https://github.com/noxrepo/pox/blob/carp/pox/openflow/topology.py

于 2016-04-11T09:20:55.283 に答える