地址解析如何与多播一起工作,特别是 IPv6?

网络工程 ip IPv6 ARP 多播 UDP
2022-03-03 01:29:27

如果我想发送 IPv6 UDP 多播消息,L3 到 L2 地址解析是如何发生的?

我想我了解 ARP 以及同样的想法如何适用于单播,但我很难理解它如何适用于多播。

我知道 MLD 和 NDP,但不确定它们如何影响我的问题。

1个回答

IPv6 不使用 ARP,它使用 ND。ARP 使用广播,它会中断 LAN 上的每个主机,但 IPv6 没有广播。相反,每个 IPv6 接口必须为接口上配置的每个 IPv6 单播或任播地址订阅一个请求节点多播地址。这些请求节点多播地址基于 IPv6 单播或任播地址,因此,解析请求很可能只会中断具有该 IPv6 地址的一台主机,或者可能会中断少数几台主机。这是比 ARP 更好的解决方案。

请参阅RFC 4291,IP 版本 6 寻址体系结构,第 2.7.1 节。预定义多播地址

Solicited-Node 多播地址是根据节点的单播和任播地址计算的。Solicited-Node 多播地址是通过获取地址的低 24 位(单播或任播)并将这些位附加到前缀 FF02:0:0:0:0:1:FF00::/104 来形成的范围内的多播地址

     FF02:0:0:0:0:1:FF00:0000

     FF02:0:0:0:0:1:FFFF:FFFF

例如,IPv6地址4037::01:800:200E:8C6C对应的Solicited-Node组播地址为FF02::1:FF0E:8C6C。仅高位不同的 IPv6 地址(例如,由于与不同聚合相关的多个高位前缀)将映射到相同的 Solicited-Node 地址,从而减少节点必须加入的多播地址的数量。

节点需要计算和加入(在适当的接口上)已为节点接口(手动或自动)配置的所有单播和任播地址的关联 Solicited-Node 多播地址。

IPv6 将请求的节点多播地址用于 IPv6 第 3 层单播或任意播地址,它希望将其解析为第 2 层地址。主机将为要解析的地址计算请求节点多播地址,并将邻居请求消息多播到多播组。具有第 3 层地址的主机将使用其第 2 层地址进行回复。

请参阅RFC 4861,IP 版本 6 (IPv6) 的邻居发现

节点通过多播请求目标节点返回其链路层地址的邻居请求来完成地址解析。邻居请求消息被多播到目标地址的被请求节点多播地址。目标在单播邻居通告消息中返回其链路层地址。单个请求-响应数据包对足以让发起方和目标方解析彼此的链路层地址;发起者在邻居请求中包含其链路层地址。

要从 IPv6 第 3 层多播地址创建 IPv6 第 2 层多播地址,您只需使用33-33并附加 IPv6 第 3 层多播地址的最后 32 位。这为您提供了比 IPv4 更多的第 2 层多播地址,因为 IPv4 仅在第 2 层多播地址中使用 23 位的第 3 层多播地址。

请参阅RFC 2464,通过以太网传输 IPv6 数据包

  1. 地址映射——多播

具有多播目标地址 DST 的 IPv6 数据包,由十六个八位字节 DST 1到 DST[16] 组成,被传输到以太网多播地址,其前两个八位字节的值是十六进制值 3333,其后四个八位字节是最后四个八位字节夏令时。

              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |0 0 1 1 0 0 1 1|0 0 1 1 0 0 1 1|
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |   DST[13]     |   DST[14]     |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |   DST[15]     |   DST[16]     |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

此外,RFC 7042、IANA 注意事项以及 IEEE 802 参数的 IETF 协议和文档使用,第 2.3.1 节。前缀为“33-33”的标识符

2.3.1。前缀为“33-33”的标识符

所有以“33-33”为前缀的 MAC-48 组播标识符(即 33-33-00-00-00-00 到 33-33-FF-FF-FF- 范围内的 2**32 个组播 MAC 标识符) FF) 按照 [RFC2464] 中的规定用于 IPv6 多播。在所有这些标识符中,组位(第一个八位字节的底部位)是打开的,这是与现有硬件一起作为多播标识符正常工作所必需的。它们还启用了本地位,并在 IPv6 网络中用于此目的。

(历史注释:在 IPv6 设计过程中习惯使用“3”表示未知值或示例值,加利福尼亚州帕洛阿尔托 Coyote Hill Road 3333 号是 PARC(帕洛阿尔托研究中心,原“施乐 PARC”)的地址. 以太网最初是由数字设备公司、英特尔公司和施乐公司指定的。从这些公司名称的第一个字母来看,前 IEEE [802.3] 以太网协议有时被称为“DIX”以太网。)