控制器直接转发数据包

网络工程 sdn 开放流 迷你网
2022-02-23 10:06:17

在 SDN 网络中,当交换机接收到在其流表中找不到匹配的数据包时,它将将该数据包转发给控制器。控制器将决定这个数据包并将这个数据包转发给发送者交换机以进行进一步的操作。

控制器可以直接将此数据包发送到目标交换机吗?

例如想象一下这个拓扑: 地形

h1 想向 h2 发送一个数据包,因此数据包首先到达 sw1。由于 sw1 没有规则,数据包将被发送到控制器。控制器决定该数据包并将数据包返回给 sw1 以转发给 sw2。

控制器本身是否可以将数据包转发到 sw2 而不是将其返回到 sw1?

2个回答

SDN 控制器通常不转发用户数据(至少不使用 OpenFlow)。它通常只能从不匹配的数据包(提取的基本数据)中获取摘要,因此甚至可能没有任何要转发的内容。

是的,可以直接发送数据包。

来自最新的OpenFlow 规范,(它是 1.5,但它也适用于 1.3 和 1.4),第 94 页。

/* Action structure for OFPAT_OUTPUT, which sends packets out ’port’.
* When the ’port’ is the OFPP_CONTROLLER, ’max_len’ indicates the max
* number of bytes to send. A ’max_len’ of zero means no bytes of the
* packet should be sent. A ’max_len’ of OFPCML_NO_BUFFER means that
* the packet is not buffered and the complete packet is to be sent to
* the controller. */

这意味着您需要在 sw1 中安装一个流,该流将数据包输出到控制器,其 max_len 的值为 OFPCML_NO_BUFFER。

当控制器接收到由 sw1 中的流生成的整个数据包的 Packet-In 时,您可以将 Packet-Out 发送到 sw2。

Packet-Out 必须对通向 h2 的端口有一个输出操作。