ovs 不会自动分配 VNI: 应该是由 SDN 控制器比如 OVN 控制的

47 阅读1分钟

分析了 ovs 代码:

  • 在 Vxlan.c 第 42 行定义 VXLAN_ID_IS_VALID(vxlanID) (0 < (vxlanID) && (vxlanID) <= 0xffffff),说明有效的 VXLAN VNI 取值为 1 至 16,777,215(0x1…0xffffff),VNI 0 被视为无效。
  • VXLAN_VNI_TO_TUNNELID / VXLAN_TUNNELID_TO_VNI 宏只是把 24 位 VNI 与 64 位 tunnel ID 之间做位移映射,没有额外的偏移或保留区间。
  • Linux datapath 使用相同布局(例如 netdev-native-tnl.c 第 1145–1151 行,对 VNI 做 >>8 位操作并检查低 8 位),验证了同样的 24 位范围限制。
  • vtep.xml 文档明确指出 VXLAN VNI 必须处于 0–16,777,215 范围,呼应了行业标准。
  • OVS 不会自动分配 VNI;需要由控制器或用户明确指定,除 VNI 0 外,没有其他预留区间。