首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POX l3_learning例

POX l3_learning例
EN

Stack Overflow用户
提问于 2015-06-26 07:39:27
回答 1查看 1.4K关注 0票数 3

我正在尝试从POX控制器中的forwarding.l3_learning示例中学习。

在过期处理程序中,如果数据包在缓冲区中的时间过期,则从控制器中删除。

稍后,控制器指示交换机将数据包丢弃在以下行中:

代码语言:javascript
复制
po = of.ofp_packet_out(buffer_id = buffer_id, in_port = in_port)
core.openflow.sendToDPID(dpid, po)

在创建的要切换的消息中,我没有看到这样的特定指令。我不明白交换机怎么知道它应该丢包。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-08 17:33:18

这是一条没有操作的PACKET_OUT消息。由于没有动作,交换机只会丢弃数据包。如果希望交换机再次应用匹配(比如数据包从网络中传入时),则需要显式地将操作设置为output:OFPP_TABLE

这一点在OpenFlow规范中并没有明确说明,但是所有的开关实现都是这样工作的(例如,参见这里)。

发送没有操作的PACKET_OUT的原因是交换机将数据包保存在缓冲区中(位于buffer_id指定的时隙),直到控制器告诉交换机该如何处理它。随着时间的推移,如果控制器从来不对数据包做任何事情,这些缓冲区将被填满,因此,通过显式地将它们发送出去而不执行任何操作,缓冲区将被释放。

如果交换机中的所有缓冲区都已满,则将数据包(而不是仅buffer_id)发送到PACKET_IN消息中,这会降低控制器的性能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31067661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档