我是 Mininet 的新手并创建了一个拓扑。我需要在 mininet 拓扑中创建的交换机中启用 ECN。
如何在交换机中启用ECN?
提前致谢
问候哈桑·阿弗里迪
我是 Mininet 的新手并创建了一个拓扑。我需要在 mininet 拓扑中创建的交换机中启用 ECN。
如何在交换机中启用ECN?
提前致谢
问候哈桑·阿弗里迪
由于您使用 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 的值