微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用流模块处理无效的 TTL 数据包? RYU OpenFlow 1.3

如何解决如何使用流模块处理无效的 TTL 数据包? RYU OpenFlow 1.3

我想将 TTL 无效的数据包转发到控制器。有没有办法为此设置流模式?

解决方法

答案是肯定的,你可以做到。 根据{{​​3}},你可以在你的sdn应用的packet_in_handler函数中得到TTL无效的数据包:

@set_ev_cls(ofp_event.EventOFPPacketIn,MAIN_DISPATCHER)
def packet_in_handler(self,ev):
    msg = ev.msg
    dp = msg.datapath
    ofp = dp.ofproto

    if msg.reason == ofp.OFPR_NO_MATCH:
        reason = 'NO MATCH'
    elif msg.reason == ofp.OFPR_ACTION:
        reason = 'ACTION'
    elif msg.reason == ofp.OFPR_INVALID_TTL:
        reason = 'INVALID TTL'
    else:
        reason = 'unknown'

    self.logger.debug('OFPPacketIn received: '
                      'buffer_id=%x total_len=%d reason=%s '
                      'table_id=%d cookie=%d match=%s data=%s',msg.buffer_id,msg.total_len,reason,msg.table_id,msg.cookie,msg.match,utils.hex_array(msg.data))

有关 OpenFlow 的更多信息,请阅读 Packet_in 消息this Ryu controller doc page

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。