ipv6无状态地址生成

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ipv6无状态地址生成相关的知识,希望对你有一定的参考价值。

参考技术A IPv6根据 MAC地址 自动生成接口地址是属于 IEEE EUI-64标准
具体介绍:

EUI-64
IEEE EUI-64地址表示有一个用于 网络接口 寻址的新标准。

在IPV6中,无状态自动配置机制使用EUI-64格式来自动配置 IPV6地址
无状态自动配置是指在网络中没有 DHCP服务器 的情况下,允许节点自动配置 IPV6地址 的机制。

EUI-64的构造规则--根据接口的 MAC地址 再加上固定的前缀来生成一个IPV6的地址

工作原理:自动将48bit的以太网 MAC地址 扩展成64bit,再组合一个64位的 ipv6地址 前缀,组成一个IPV6地址。(link-local 地址也是依据此原理)

注:对于以太网链路的接口即用自己的MAC地址,对于串口链路和loopback接口会借用设备的以太网口(接口号最小的比如有F0/0,F0/1,那么默认都借用F0/0接的MAC地址)的mac地址进行组合。
转换过程原理:
1、对于一个MAC地址,由两部分组成,24位的公司的ID(由 IEEE 唯一分配),24位公司的扩展ID(公司自己编制),联合产生全球唯一的48位MAC地址(也称IEEE 802 地址),如下:

ccccccUG cccccccc cccccccc xxxxxxxx xxxxxxxx xxxxxxxx
| 24位IEEE分配 || 24位厂商自己编制 |

注:第一字节的第7位称为U/L位,表示此地址是全球管理还是本地管理。如果为0就为全球管理,为1就为本地管理。
第一字节第8位称为I/G为,表示此地址是单播地址还是 组播地址 。如果为0就为单播地址,为1就为 组播地址 。

2、先将此48位MAC地址公司ID和公司扩展ID之间插入特定16位值0xFFFE,形成64位的EUI-64地址,如下:
ccccccUG cccccccc cccccccc 11111111 11111110 xxxxxxxx xxxxxxxx xxxxxxxx
| 24位IEEE分配 | FFFE | 24位厂商自己编制 |

3、再将EUI-64地址的第一字节第7为反转,形成IPV6地址的接口ID,加之IPV6前缀形成完整的IPV6地址。

4、实例:
a,MAC地址为 00-AA-00-3F-2A-1C
b,转换EUI-64为 00-AA-00-FF-FE-3F-2A-1C
c,第一个字节为0000 0000,第7为反转为0000 0010转换16进制为0x02。
d,得到结果为02-AA-00-FF-FE-3F-2A-1C,转换为ip6表示格式为2AA:FF:FE3F:2A1C

Android5.0网络之ipv6

移动设备的大量兴起势必进一步加强ip地址不足的危机。

ipv6或许成为一种比較好的选择方案。

ipv6地址的获取分为两种方式:无状态;有状态

无状态:通过接收路由公告(RA)来设置自己的ipv6地址

有状态:通过dhcpv6 server分发ipv6地址


Android5.0代码中,framework层对ipv6的支持已经没问题,native层只提供了设置ipv6地址的接口。

对于无状态方式,kernel层就支持。仅仅要收到RA,就会自己主动设置ipv6地址

对于有状态方式。Android5.0中的dhcp代码还没有实现对Ipv6的支持

看起来google对ipv6的热情还不高,或许今后会有所改善。


以上是关于ipv6无状态地址生成的主要内容,如果未能解决你的问题,请参考以下文章

02-IPv6地址配置

RFC4862 IPV6无状态地址自动配置 阅读记录

RFC4862 IPV6无状态地址自动配置 阅读记录2

家里联通宽带如何使用ipv6

Android5.0网络之ipv6

YESLAB学霸日记——华为数通之IPv6 NDP之有状态自动配置实验