0

我是 Mininet 的新手并创建了一个拓扑。我需要在 mininet 拓扑中创建的交换机中启用 ECN。

如何在交换机中启用ECN?

提前致谢

问候哈桑·阿弗里迪

4

1 回答 1

0

由于您使用 OVS 版本 2.0.2,因此您的交换机至少支持 OpenFlow 版本 1.3。从 OpenFlow 1.1 及更高版本实现的显式拥塞通知 (ECN) 字段。为了应用该字段,您必须告诉 mininet 您将使用高于 1.0 的版本,这是默认版本。要启动 mininet 拓扑,我们必须使用遥控器,以便我们可以手动传递流修改。要在终端中启动 mininet,我们使用

sudo mn --topo single,3 --mac --controller remote --switch ovsk,protocols=OpenFlow13

Mininet 没问题,但是我们必须创建一个桥来与交换机通信,然后我们会告诉交换机通过这个桥我们将通过 OpenFlow 1.3 版的流修改。为了在新终端中做到这一点,我们在 mininet vm 上 ssh 并使用

sudo ovs-vsctl set bridge s1 protocols=OpenFlow13

所以现在我们打开了一扇通往开关的门,可以与之交谈并传递我们的 flow mods,我们必须在其中再次定义 openflow 协议版本。对于单个 mod,我们可以做类似的事情

sudo ovs-ofctl -O OpenFlow13 add-flow s1 in_port=1,actions=output:2

sudo ovs-ofctl -O OpenFlow13 add-flow s1 in_port=2,actions=output:1

现在我们已经手动通过了 2 次流修改,h1 和 h2 之间的 ping 应该可以正常工作。要安装 ECN 流模块,我们可以执行类似的操作

sudo ovs-ofctl -O OpenFlow13 add-flow s1 dl_type=0x0800,nw_ecn=3,actions=output:3

请注意,如 OpenFlow 文档中所述

当指定 dl_type=0x0800 或 0x86dd 时,匹配 IP ToS 或 IPv6 流量类别字段中的 ecn 位。当 dl_type 为通配符或设置为 0x0800 或 0x86dd 以外的值时,忽略 nw_ecn 的值

于 2016-06-08T19:57:15.293 回答