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

评论