如何处理流量移除事件

How to handle flow removal event

我想知道在通过 hard_timeout 后开关何时删除任何流规则。我知道 ofp_flow_mod 有一个属性 flags,我可以在其中测试 OFPFF_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过期后不会触发此方法。我不知道为什么。任何人都可以建议如何修复它。

坦克你

如果您确定交换机上安装了流,最好的方法是添加拓扑模块并监听 FlowRemoved 事件混合

在您的主 class 中添加类似

的内容
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 事件混合在第 172 行的 POX topology.py 模块中 https://github.com/noxrepo/pox/blob/carp/pox/openflow/topology.py