前言:
IPv6地址有128bits,即使有简化书写的方式,为主机配置IPv6地址也是一件工作量不小的活儿。IPv6地址除了手工配置外,还能够自动配置,自动配置有两种方式:
有状态自动配置Stateful Configutaio
主机通过配置协议(如DHCPv6)获取IPv6地址以及其他信息(DNS、域名等)。状态化自动配置相比与手工配置工作效率要高得多,而相比与无状态自动配置来说更加可控,能够更加清晰的了解到主机及地址分配的相关信息。短板是需要额外部署应用服务器,如DHCPv6 Server。
无状态自动配置 Stateless Configuration
相比于前者,无状态地址自动配置则显得更加的便捷,IPv6终端使用无状态自动配置能够做到即插即用。无需部署额外的应用服务器、无需使用DHCPv6,在IPv6路由器与IPv6主机之间,利用ICMPv6协议中的路由器请求消息Router Solicitation和路由器通告Router Advertisement消息来完成无状态自动配置过程。主机通过RS消息发现链路上的IPv6路由器,而IPv6路由器通过RA消息向主机通告IPv6地址前缀信息,主机在收到IPv6前缀信息后,与自己的网卡接口ID一起构成128bits的单播IPv6地址。
[转载]关于IPv6自动配置及M、O比特的小结
那么对于自动配置来说,主机在什么情况下,采用哪种配置方式呢?这就要说到IPv6路由器发送出来的路由器通告消息RA了,在RA消息中有两个非常重要的比特位,具体如下:
1.关于M及O比特
Managed Address Configuration Flag, 也就是M比特或者M标记
默认为0。该标记指示主机该使用何种自动配置方式来获取IPv6单播地址。当M比特被设置为1时,收到该RA消息的主机将使用配置协议(例如DHCPv6)来获取有状态(Stateful)IPv6地址。
Other Stateful Configuration Flag ,也就是O比特或者O标记
默认为0。该标记指示主机使用何种方式来配置除了IPv6地址外的其他配置信息(如DNS、域名等)。当O比特被设置为1,则收到该RA消息的主机将使用配置协议(如DHCPv6)来获取除了IPv6地址以外的其他配置信息。
2.关于M及O比特的组合
M=0,O=0 应用于没有DHCPv6服务器的环境。主机使用RA消息中的前缀构造IPv6单播地址,同时使用其他方法(非DHCPv6),例如手工配置的方法设置其他配置信息(DNS等)。
M=1,O=1 主机使用DHCPv6来配置IPv6单播地址以及其他配置信息(DNS等)。这种应用也称为DHCPv6 Stateful。
M=0,O=1 主机使用RA消息获得的IPv6前缀构造IPv6地址,同时使用DHCPv6来获取除了地址之外的其他配置信息。这种应用也被称为DHCPv6 stateless。
M=1,O=0 主机仅仅使用DHCPv6来获取IPv6地址,至于其他配置信息则并不通过DHCPv6获得,这种组合不建议使用。
3.测试
测试结果 M比特位的影响(O bit=0时)
在思科的设备上,将M比特置0(默认就是0),RA消息会携带IPv6前缀信息,Win7主机收到该RA消息后,使用消息内的前缀信息构建IPv6地址,但是不会发送DHCPv6 Solicitation消息去请求地址信息。
在思科的设备上,将M比特置1,RA消息依然会携带IPv6前缀信息,而Win7主机收到该RA消息后,依然会使用RA消息中的IPv6前缀构建IPv6单播地址,同时主机发送DHCPv6 Solicitation消息去请求地址信息。
在华为的设备上,将M比特置0(默认就是0),RA消息会携带IPv6前缀信息,Win7主机收到该RA消息后,使用消息内的前缀信息构建IPv6地址,但是不会发送DHCPv6 Solicitation消息去请求地址信息。
在华为的设备上,将M比特置1 ,则该接口发送的RA消息将不包含任何IPv6前缀,自然主机也就无法使用RA中的前缀构造IPv6地址。当主机收到M=1的RA消息,将会发送DHCPv6 Solicitation消息去请求IPv6地址
以上测试,思科平台采用C3640-IK9O3S-M。同时注意上述测试O比特始终为0。总结一下,其实M比特对于windows7而言,就是一个是否使用DHCPv6获取IPv6地址的开关,如果为0,否则,如果为1,则是,而且为1时并不代表就不能使用无状态自动配置来获取地址。
4.参考文档
•The Cable Guy: IPv6 Autoconfiguration in Windows Vista | Microsoft Learn
•Archived MSDN and TechNet Blogs | Microsoft Learn