IPv6地址创建EUI-64格式接口ID的过程详解
IPv6地址创建EUI-64格式接口ID的过程详解
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字段(后三个字节)之间插入十六进制数FFFFE,并在OUI字段最高有效字节中翻转U/L位与网络前缀结合派生的。
翻转U/L位
原U/L位如果是0(表示全局唯一),则转换为1;如果是1(表示本地管理),则转换为0。
插入FFFFE
在翻转后的MAC地址OUI字段和EUI字段之间插入十六进制数FFFFE,使原来的48位MAC地址扩展到64位。
生成接口ID
将从48位MAC地址扩展得到的64位字段与网络前缀结合形成完整的EUI-64格式的接口ID地址。
EUI-64在IPv6无状态自动配置(SLAAC)中的作用
在无状态自动配置过程中,每个IPv6设备利用EUI-64方法自动生成其接口ID,同时通过监听RA(Router Advertisement,路由器通告)消息来获取网络前缀。RA消息包含了网络的前缀信息以及其他配置参数。设备将获取到的前缀与自己生成的接口ID结合,就可以得到一个全局唯一的IPv6地址,无需任何人工干预或DHCP服务器的支持。
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分别在字节中的最低位和次低位,最低位先发送,到了对端还是最低位
两种看似不一样,但是结果还是一样的。