如何封装二层帧?

网络工程 ip 通讯协议 层2 桥接
2021-07-08 14:27:07

如何封装第 2 层(以添加一些信息)并通过 Internet 发送。在接收端,将使用添加的信息,然后将数据包解封装以获得原始 L2。

4个回答

如果您想在第 2 层建立隧道,首先想到的是符合RFC 2661第 2 层隧道协议这并非微不足道,因为它建立在 PPP 之上。但是很多设备已经支持它。

想到的一个简单的方法是EtherIP,它按照RFC 3378以非常直接的方式在 IP 数据包中隧道传输以太网帧我不认为它被广泛使用,但我相信 Cisco 无线局域网控制器使用它来实现移动组。

编辑:您说您要在魔术盒中添加一些信息、运输它、打开它并交付它。虽然当然隧道是一种可能的方式,但如果添加的信息很小,您可以使用标准IP 选项,也许使用符合RFC 4227的实验性选项代码

正如其他答案中所述:注意 MTU,您确定您在正确的论坛中吗?

听起来您需要创建自己的协议。第 2 层协议(例如以太网)具有固定的框架,不可扩展以添加信息。试图改变帧会导致 FCS 不正确,这将导致整个帧和有效载荷因损坏而被丢弃。如果框架已经达到其最大尺寸,那么如果再放大它,它就会像一个巨人一样被丢弃。此外,第 2 层帧头被路由器从第 3 层数据包中剥离,因此这些帧永远不会穿过 Internet。

第 3 层数据包也有限制。您可以将一个数据包包装在另一个数据包(隧道)中,但是您可能会超过 MTU。第3层数据包头将采用第3层协议的格式,通过添加信息来改变它会产生后果。

您可以轻松创建隧道(出于不同原因一直这样做),但数据包是根据数据包标头路由的,其中包括有效负载的长度。如果更改数据包有效负载以添加信息,则必须更改数据包头,在 IPv4 的情况下,这将需要重新计算 Header Checksum 字段中的 CRC。

对于您要执行的操作,需要考虑很多事情,这将是一个自定义协议,在这里将是题外话。此外,它会涉及编程,这在这里是题外话。

封装是通过诸如互联网协议软件套件之类的软件完成的。

看看 VXLAN 协议。它将 L2 信息封装在一个 UDP 数据包中。我不是说使用 VXLAN——您的自定义协议会有所不同,但其结构与您的想法相似。

由于您的问题相当模糊,因此您将在此处获得详细的答案。