IPv6 Address Autoconfiguration

Autoconfiguration仅适用于具有群播能力的interface(例如:Ethernet)。
IPv6定义2种方法来对每个interface个别自动配置参数: 一是利用server(例如DHCPv6)来进行配置, 此称为stateful autoconfiguration。另一是IPv6能够进行自我配置,此称为stateless autoconfiguration。这2种配置方法可任意单一或混合使用。除了host必须自行配置一个link-local地址以外,透过自动配置程序,每个interface可配置零到多个ULAUnique Local Address)地址以及零到多个Global地址。自动配置的程序如下:
Ø  首先用前缀FE80::/64和自行产生的Interface ID,合并形成link-local地址,并且利用DADDuplicate Address Detection)程序来确认创建的link-local地址在link上是唯一的识别ID,没跟其它interface的地址发生冲突。Link-local地址是interface初始化时自行创建的地址,它是最基本也是最重要的地址,没有它则无法顺利继续整个自动配置。当无法自动配置link-local地址时,只能手动完成配置。当DAD检测到地址冲突时,必须马上对系统提报错误信息。
Ø  利用routers发布的Router Advertisement messages来决定哪些信息需要自动配置(可配置参数:地址、MTUHop Limitdefault router以及route information等信息)。并且依据M bit域值及O bit域值决定是否利用stateful autoconfiguration来配置参数(可配置参数:地址和其它信息)。
Ø  如果link上没配置routerhost应该尝试stateful autoconfiguration来配置参数。

Ø  为了避免地址发生冲突,IPv6要求所有的配置到的unicast address必须通过DAD检测后才能以该地址的身份发送或接收封包。
Stateless autoconfiguration的特点是: host无需手动就能够自动配置参数。透过router发布的Router Advertisement messagehost可以配置到IPv6地址、default router的地址、Hop LimitMTU等信息。但是,无法自动配置服务器地址,例如DNS或其它servers。当需要配置其它参数时,必须使用stateful autoconfiguration

定义在DHCP options中的DNS server或其它参数等,如果将来被定义成RA messages可携带的options,则仍可以透过stateless autoconfiguration方式来获取这些参数值。
请注意!Stateless autoconfiguration仅适用于hosts。至于routers的配置方法,不在本书的讨论范围内。(Routers配置link-local address的方式与hosts相同。)







Address Renumbering(地址更换)

IPv6考虑到地址重新配置时(譬如:更换ISP),所有正在联机中的应用层不会受到影响。即使在地址切换过程中,用户不会遇到断线或断网的情况。其做法如下:
n   每个配置到的地址都有个使用寿命称为valid lifetime,表示该地址绑定在interface的有效时间。透过router重新发布Router Advertisement message,地址绑定的有效时间跟着刷新。
n   有效时间分为2个时段: preferreddeprecatedPreferred时段代表可任意使用这个地址建立联机。Deprecated时段代表该地址的有效时间即将过期,还可使用但不鼓励新联机使用。一旦有效时间过期,以此地址建立的联机将面临中断情形。
n   一般情况下,当某个地址进入deprecated时段时很可能是因为需要执行地址切换,此时会有另一个新分配到的地址在preferred时段。任何新建立的联机应该优先选择preferred阶段的地址。利用这样的机制,只要所有联机中的应用层在下线前仍在地址绑定的有效时间内,就能够达到不断线的目标。
n   RFC 2462要求router初始发布Router Advertisement messagePrefix Information optionvalid lifetime域值不得低于2小时。假设preferred时间设为30分钟,那么即使在地址切换过程中,所有已经存在的联机在90分钟内都不会有断线之虑。

Router Lifetime

IPv6也考虑到当router进入维护或更换router时,提供机制来避免断网,即达到24小时不断网的目标。其做法如下:
n  首先必须有2个或以上的router配置在同一link。网络管理者预先设定每个router的优先权及寿命,优先权(Default Router Preference字段)及寿命(Router Lifetime字段)会在router发布RA message时告知所有的hosts
n  透过router重新发布RA message,其优先权及寿命跟着刷新。每个host会将所有寿命未终的router记录在一个称为Default Router List的列表里,并且以优先权最高且可用的routerdefault router
n  default router的寿命终结或者host侦测到default router已经不可用时,host将自动依据router list的优先级寻找下一个可用的router且设为default router

Autoconfigured Address State

自动配置的地址可能处于以下几种状态:







u Tentative  刚配置到但尚未完成DAD检测的地址状态,Interface还不能以此地址的身份发送或接收封包。当通过DAD检测后,即进入Valid状态。
u Valid  通过DAD检测后的状态,host可以用这个地址的身份发送及接收封包。Valid状态包含PreferredDeprecated状态,地址的有效时间取自于Router Advertisement messagePrefix Information选项中的Valid Lifetime字段。
u Preferred  上层建立新联机时,优先选择的地址。地址的preferred 时间取自于Router Advertisement messagePrefix Information选项中的Preferred Lifetime字段。
u Deprecated  此状态的地址仍为有效地址,但不鼓励应用层用来建立新联机(除非没preferred状态的地址可用)。
u Invalid  该地址的有效时间已经过期。Host不能再以此地址的身份发送或接收封包。

Duplicate Address Detection

DAD检测的目的是防止不同的interface使用同一unicast address。不论透过stateless autoconfigurationstateful autoconfiguration或手动配置,当interface配置到地址时,必须先通过DAD检测后,才能以该地址的身份发送或接收封包。 DAD藉由发送Neighbor Solicitation message,在特定的时间内侦测是否已有其它interface使用该addressDAD的执行过程如下:
Ø  发送 Neighbor Solicitation Messages
在发送Neighbor Solicitation message之前,interface必须先加入all-node multicast address和该地址的solicited-node multicast address。前者能从接收到的Neighbor Advertisement messages中检测是否该地址已被其它interface使用。后者能从接收到的Neighbor Solicitation messages中检测是否有其它的interface正在执行DAD检测该地址。
发送的Neighbor Solicitation message内容如下:
IPv6 source address(::)
IPv6 dest address:检测地址的solicited-node multicast address
Target address 字段:检测地址
发送Neighbor Solicitation message后,在特定的时间内检查是否有符合以下Neighbor AdvertisementNeighbor Solicitation messages的特定内容。若有符合的message则代表此地址冲突,否则视DAD检测成功。
Ø  检查接收到的 Neighbor Advertisement Messages

target address域值为检测的地址,皆代表已经有其它interface使用此地址。
Ø  检查接收到的 Neighbor Solicitation Messages
       IP source address (::)target address域值为检测的地址时,代表有其它interface正在执行DAD检测此地址。

RFC 7527特别针对DAD算法做了改善。





參考文獻

RFC 4862  IPv6 Stateless Address Autoconfiguration

评论

此博客中的热门博文

DHCPv6 简介

IPv6 簡介以及地址介紹

Neighbor Discovery 简介

Multicast Listener Discovery (MLD) 简介

MLDv2 简介

Mobile IPv6 简介

ICMPv6

IP Security 簡介