【发布时间】:2019-02-14 13:57:30
【问题描述】:
我正在使用 Ryu simple_switch_13.py(稍作修改)和 Mininet 来模拟软件定义的网络。
例如,如果我 ping:
h1 ping h2
流匹配已创建,但第一个数据包未在流的数据包计数中注册。
这在 Openflow 中正常吗?交换机/控制器是否必须首先接收不匹配的数据包,创建匹配,然后再匹配任何其他数据包?
【问题讨论】:
我正在使用 Ryu simple_switch_13.py(稍作修改)和 Mininet 来模拟软件定义的网络。
例如,如果我 ping:
h1 ping h2
流匹配已创建,但第一个数据包未在流的数据包计数中注册。
这在 Openflow 中正常吗?交换机/控制器是否必须首先接收不匹配的数据包,创建匹配,然后再匹配任何其他数据包?
【问题讨论】:
OpenFlow 的正常行为是接收流的第一个数据包,然后使用默认流条目将其发送到控制器,该默认流条目大致如下(取决于控制器类型):
cookie=0x0, duration=10.97s, table=0, n_packets=0, n_bytes=0, priority=0, action=CONTROLLER:65535
当第一个数据包到来时,它将由交换机发送给控制器,然后,控制器决定流表项并通过OpenFlow消息(flowAdd)将其发送给交换机。第一个数据包不会与创建的流规则匹配。
这是一个简单的例子,希望对你有用。
【讨论】: