我试图了解接收器如何知道接收到的数据包是 VXLAN 封装的。
查看VXLAN RFC,我看不到任何定义数据包包含 VXLAN 标头的特定内容。我看到(从头开始解析数据包):
- 外部 MAC (L2) 标头
- 外部 IP (L3) 标头
- 外部 UDP (L4) 标头
- VXLAN 头
- 内部 MAC 头
- 内...等
但是我在外部 UDP 标头中没有看到任何特定的内容表明下一个标头是 VXLAN。
我错过了什么?
我试图了解接收器如何知道接收到的数据包是 VXLAN 封装的。
查看VXLAN RFC,我看不到任何定义数据包包含 VXLAN 标头的特定内容。我看到(从头开始解析数据包):
但是我在外部 UDP 标头中没有看到任何特定的内容表明下一个标头是 VXLAN。
我错过了什么?
外部 UDP 标头中的目标 UDP 端口在VXLAN 规范(端口 4789)中指定。这意味着它是一项众所周知的服务。因此,到达端口 4789 的 UDP 数据包预计是 VXLAN 数据包¹,就像到达端口 80 的 TCP 数据包预计是 HTTP 数据包¹一样。
您链接到的草稿已过时并且缺少此端口号(尽管它提到要从 IANA 获取端口号)。
¹) 当我谈论 VXLAN/HTTP 数据包时,我的意思当然是相应的 UDP/TCP 数据包,其中包含 VXLAN/HTTP 标头/协议。