IPv6 Address Autoconfiguration
Autoconfiguration仅适用于具有群播能力的interface(例如:Ethernet)。
IPv6定义2种方法来对每个interface个别自动配置参数:
一是利用server(例如DHCPv6)来进行配置,
此称为stateful autoconfiguration。另一是IPv6能够进行自我配置,此称为stateless
autoconfiguration。这2种配置方法可任意单一或混合使用。除了host必须自行配置一个link-local地址以外,透过自动配置程序,每个interface可配置零到多个ULA(Unique
Local Address)地址以及零到多个Global地址。自动配置的程序如下:
Ø 首先用前缀FE80::/64和自行产生的Interface
ID,合并形成link-local地址,并且利用DAD(Duplicate
Address Detection)程序来确认创建的link-local地址在link上是唯一的识别ID,没跟其它interface的地址发生冲突。Link-local地址是interface初始化时自行创建的地址,它是最基本也是最重要的地址,没有它则无法顺利继续整个自动配置。当无法自动配置link-local地址时,只能手动完成配置。当DAD检测到地址冲突时,必须马上对系统提报错误信息。
Ø 利用routers发布的Router
Advertisement messages来决定哪些信息需要自动配置(可配置参数:地址、MTU、Hop
Limit、default router以及route
information等信息)。并且依据M bit域值及O bit域值决定是否利用stateful
autoconfiguration来配置参数(可配置参数:地址和其它信息)。
Ø 如果link上没配置router,host应该尝试stateful
autoconfiguration来配置参数。
Ø 为了避免地址发生冲突,IPv6要求所有的配置到的unicast
address必须通过DAD检测后才能以该地址的身份发送或接收封包。
Stateless
autoconfiguration的特点是: host无需手动就能够自动配置参数。透过router发布的Router
Advertisement message,host可以配置到IPv6地址、default
router的地址、Hop Limit和MTU等信息。但是,无法自动配置服务器地址,例如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个时段:
preferred及deprecated。Preferred时段代表可任意使用这个地址建立联机。Deprecated时段代表该地址的有效时间即将过期,还可使用但不鼓励新联机使用。一旦有效时间过期,以此地址建立的联机将面临中断情形。
n
一般情况下,当某个地址进入deprecated时段时很可能是因为需要执行地址切换,此时会有另一个新分配到的地址在preferred时段。任何新建立的联机应该优先选择preferred阶段的地址。利用这样的机制,只要所有联机中的应用层在下线前仍在地址绑定的有效时间内,就能够达到不断线的目标。
n RFC
2462要求router初始发布Router Advertisement message的Prefix
Information option的valid 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的列表里,并且以优先权最高且可用的router为default 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状态包含Preferred和Deprecated状态,地址的有效时间取自于Router
Advertisement message的Prefix Information选项中的Valid
Lifetime字段。
u
Preferred 上层建立新联机时,优先选择的地址。地址的preferred 时间取自于Router
Advertisement message的Prefix Information选项中的Preferred
Lifetime字段。
u
Deprecated 此状态的地址仍为有效地址,但不鼓励应用层用来建立新联机(除非没preferred状态的地址可用)。
u
Invalid 该地址的有效时间已经过期。Host不能再以此地址的身份发送或接收封包。
Duplicate Address Detection
DAD检测的目的是防止不同的interface使用同一unicast
address。不论透过stateless autoconfiguration,stateful
autoconfiguration或手动配置,当interface配置到地址时,必须先通过DAD检测后,才能以该地址的身份发送或接收封包。
DAD藉由发送Neighbor Solicitation message,在特定的时间内侦测是否已有其它interface使用该address。DAD的执行过程如下:
Ø 发送 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
Advertisement或Neighbor 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
评论
发表评论