OpenFlow 13,RYU SDN控制器,究竟是什么buffer_id?

时间:2018-04-28 20:55:56

标签: sdn openflow ryu

我一直在努力使用在OpenFlow13上工作的RYU SDN控制器已经有一段时间了。我不明白我们需要一个buffer_id。

我正在尝试编写代理应用程序,因此当我收到192.168.2.2作为ipv4.dst时,我将其修改为172.10.2.2。

我使用命令

执行此操作
actions = [parser.OFPActionSetField(eth_dst=pkt_ethernet.dst),parser.OFPActionSetField(ipv4_dst=pkt_ipv4.dst),parser.OFPActionOutput(2)]

out = parser.OFPPacketOut(datapath=datapath, buffer_id=msg.buffer_id,
                              in_port=in_port, actions=actions, data=data)
    datapath.send_msg(out)

pkt_ipv4.dst有新的IP。

我得到一个错误的请求,OFPBRC_BUFFER_EMPTY(7)

我正在尝试将数据包发送出去而不向控制器添加流量。但我计划稍后添加流量。

1 个答案:

答案 0 :(得分:0)

“在大多数情况下,交换机和路由器都配置为“尽力而为”包转发。”

https://fasterdata.es.net/network-tuning/router-switch-buffer-size-issues/

如果交换机无法立即转发数据包,则需要将其排队并存储在缓冲区中,以防止其被丢弃。

buffer_id仅用于唯一标识和跟踪数据包(如果它在缓冲区中)。如果它不在缓冲区中,则不指定缓冲区ID,并将其设置为OFP_NO_BUFFER

您正在尝试发送一个包含OFPacketOut的{​​{1}},该{@ 1}}引用了一个空缓冲区。您只需为任何传入的buffer_id指定一次缓冲区,否则将OFPacketIn设置为buffer_id