是否可以实现基于 IP 中的 MAC 而不是 UDP 中的 MAC 的虚拟网络?

网络工程 局域网 ip 协议论 传输协议 隧道
2022-02-28 19:22:53

我们知道 flannel 用于MAC in UDP创建覆盖网络。我的问题是:

UDP头只提供了一个额外的端口号字段,假设一台物理机只运行一个flanneld进程,那么不需要通过端口号来区分哪个进程转发数据包。在这种情况下,我们可以省略 UDP 层,只将 Layer2 数据放在一个 IP 帧中吗?

问这个问题的另一种方法是: Does port number important when building a virtual network

我知道这个想法看起来很疯狂,但我只想讨论是否可行。

此外,我们可以想象给定一个新的协议类型编号,并且 flannel 可以有一部分作为内核模块运行。

1个回答

IPv4 数据包头有一个协议字段,而 IPv6 数据包头有 Next Header 字段。两者都执行相同的功能。该字段的值将是一个注册协议,IP 数据包的有效负载将传递到该协议。

IANA 在Protocol Numbers维护已注册的协议编号列表如果你的协议有一个注册的协议号和一个用 IP 注册的处理程序,那么 IP 会将数据包有效负载传递给协议处理程序。

您目前不存在的协议是如何运作的,我们无法为您回答,因为它实际上并不存在,而且 Flannel 的供应商不提供可选的付费支持,因此这里与问题无关关于您的主机/服务器操作系统。


例如,OSPF 的注册协议号为89. 如果主机中有一个OSPF进程已经注册到IP,那么任何89在协议字段中的IP数据包都将被传递给OSPF进程。本质上,OSPF 有自己的传输协议,不依赖于常见的 TCP 或 UDP 传输协议。