

控制器专家们好,在floodlight控制器上下发一个关于vlan的流表,显示推送成功,但在ovs交换机上查不到该流表,控制器日志提示不配套dl_vlan字段,得怎么修改


中午好🌞🌞🌞
本答案参考通义千问
在使用 OpenFlow 1.3 协议与 Floodlight 控制器 配合 Open vSwitch (OVS) 时,若你发现流表下发成功但 OVS 上未显示该流表,并且控制器日志提示 不配套 dl_vlan 字段,这通常意味着你在流表中使用了 dl_vlan(数据链路层 VLAN ID)字段,而 OVS 或 OpenFlow 交换机不支持该字段,或者你的控制器配置与交换机协议版本不兼容。
dl_vlan 字段的兼容性问题dl_vlan 是一个有效的字段。dl_vlan 字段,或需要额外的配置。OFActionSetField 设置 vlan_vid,可能会导致兼容性问题。以下是详细的解决方案,按步骤进行:
ovs-ofctl --version
dl_vlan 字段,改用 vlan_vid 字段vlan_vid 而不是 dl_vlan。vlan_vid,并设置相应的 VLAN ID。dl_vlan):Match match = new Match();
match.setEthType(EthType.EtherType.IPv4);
match.setDlVlan(VlanVid.of(100));
vlan_vid):Match match = new Match();
match.setEthType(EthType.EtherType.IPv4);
match.setVlanVid(VlanVid.of(100)); // 使用 vlan_vid 替代 dl_vlan
注意: 在 OpenFlow 1.3 中,
setVlanVid()方法会自动处理 VLAN 的格式(即是否带CFI位),不需要手动设置。
ovs-vsctl show
ovs-ofctl dump-aggregate <bridge-name>
ovs-ofctl dump-flows <bridge-name>
| 步骤 | 操作 |
|------|------|
| 1 | 确认 OVS 支持 OpenFlow 1.3 |
| 2 | 将流表中的 dl_vlan 字段替换为 vlan_vid |
| 3 | 修改 Floodlight 流表代码 |
| 4 | 检查 OVS 的 OpenFlow 配置 |
| 5 | 验证流表是否成功下发 |
| 6 | 升级 OVS 和 Floodlight 到最新版本 |
push_vlan 和 set_field 操作。ovs-ofctl -d <bridge-name> dump-flows --protocol=OpenFlow13
如有更多关于流表构造、控制器配置或 OVS 日志的问题,欢迎继续提问!