IPv6 接口标识符
IPv6 地址中的接口标识符(ID)用于识别链路上的唯一接口,有时被称为 IPv6 地址的 “主机部分”。接口 ID 在链路上必须是唯一的,始终为 64 位长,并且可以根据数据链路层地址动态创建。
MAC 地址 中的 L/G 位(有时也称为 U/L 位)和 I/G 位都位于每个 MAC 地址的最高有效字节中,其中 I/G 位是该字节中最低有效位,L/G 位是该字节中第二低有效位。
IG 位区分 MAC 地址是单播地址还是组播地址。I/G 位为 0 表示是单播地址,I/G 位为 1 表示是组播地址。
U/L 位指示接口 ID 是本地唯一(仅在该链路上)还是全局(全球)唯一;从全球唯一 MAC 地址派生的 ID 被认为是全局唯一的。
接口 ID 的第一个字节中的第八位是用于管理多播组的 I/G 位;它不会改变。
在绝大多数情况下(广播消息除外),会看到两个位都设置为 0(单播和供应商分配)。
EUI-64 格式接口 ID 生成过程
接口的数据链路层类型决定了 IPv6 接口 ID 的动态创建方式以及地址解析的工作方式。
以太网中的 EUI-64 格式接口 ID 是通过在 MAC 地址的组织唯一标识符 OUI 字段(前三个字节) 和在供应商代码 EUI 字段(后三个字节)之间插入十六进制数 FFFE ,并在 OUI 字段最高有效字节中翻转 U/L 位与网络前缀结合派生的。
翻转 U/L 位
原 U/L 位如果是 0(表示全局唯一),则转换为 1;如果是 1(表示本地管理),则转换为 0。
插入 FFFE
在翻转后的 MAC 地址 OUI 字段和 EUI 字段之间插入十六进制数 FFFE,使原来的 48 位 MAC 地址扩展到 64 位。
生成接口 ID
将从 48 位 MAC 地址扩展得到的 64 位字段与网络前缀结合形成完整的 EUI-64 格式的接口 ID 地址。
3 张图 3 个角度 一目了然的图解
EUI-64 在 IPv6 无状态自动配置(SLAAC)中的作用
在无状态自动配置过程中,每个 IPv6 设备利用 EUI-64 方法自动生成其接口 ID,同时通过监听RA(Router Advertisement,路由器通告)消息来获取网络前缀。RA 消息包含了网络的前缀信息以及其他配置参数。设备将获取到的前缀与自己生成的接口 ID 结合,就可以得到一个全局唯一的 IPv6 地址,无需任何人工干预或 DHCP 服务器的支持。
- 下文《MAC 地址格式详解》引自 51cto 刘长卿 2016-04-02
MAC 地址格式详解
MAC(Medium Access Control,介质访问控制),它通常被固化在每个 NIC(Network Interface Card,以太网网卡)。MAC 地址长 48 位(6 字节),采用十六进制格式。
24 位 OUI(组织唯一标识符)由 IEEE(电气和电子工程师协会)分配给厂商,厂商再用其他的 24 位 EUI(扩展唯一标识符)为其生产的每个网卡分配一个全球唯一的全局管理地址 。
I / G( Individual / Group )
如果 I/G = 0,则是某台设备的 MAC 地址,即单播地址;如果 I/G = 1,则是多播地址(组播 + 广播 = 多播)。
G / L( Global / Local,也称为 U/L 位,其中 U 表示 Universal )
如果 G/L = 0,则是全局管理地址,由 IEEE 分配;如果 G/L = 1,则是本地管理地址,是网络管理员为了加强自己对网络管理而指定的地址。
在数据链路层,数据帧通常依赖于 MAC 地址来进行数据交换。数据传输是按字节逐位传输的,一个字节传输完了才到下一个字节。对于 I/G 和 G/L 位的位置,目前有两种说法,或者说两种格式。
第一种,每个字节的高位在前,低位在后,I/G 位和 G/L 分别在字节中的最低位和次低位,最高位先发送,到了对端还是最高位
第二种,每个字节的低位在前,高位在后,I/G 位和 G/L 分别在字节中的最低位和次低位,最低位先发送,到了对端还是最低位
两种看似不一样,但是结果还是一样的。