IPv6的邻居发现技术
选择算法是:选择那些已知可达的路由器,而不选择可达性还不确定的路由器。每一个表项还有一个相关的失效计时器值(从路由器通告信息中得到),它的作用是删除不再通告的表项。
上述数据结构可以用不同的方法实现。其中一种实现方法是对所有数据结构使用单个最长匹配路由表。不管采用哪种特定的实现方法,为了防止重复性的邻居不可达检测,路由器的邻居缓存表项可以由使用该路由器的所有目的地缓存表项共享。
邻居缓存包含有邻居不可达检测算法维护的信息。邻居可达性状态是最关键的信息,它的取值是下列的5个值之一。
*不完整性(INCOMPLETE):正在进行地址解析,邻居的链路层地址还没确定。
*可达性(REACHABLE):邻居在最近处于可达状态(在小于10s以前)。
*失效性(STALE):在数据流发送给该邻居以前邻居是不可达的,并无法验证其可达性。
*延迟(DELAY):邻居不再是可达的,同时数据流在最近已经发送给邻居,但不立即对该邻居进行探测,而在一个短时延后发送探测信息,这样就可以为上层协议提供可达性确认。
*探测(PROBE):邻居不再是可达的,同时发送单播邻居请求探测以验证可达性。
4、数据包的发送算法
节点向目的地发送数据包时,使用目的地缓存、前缀列表、默认路由器列表确定合适的下一跳的IP地址,然后路由器查询邻居缓存确定邻居的链路层地址。
IPv6单播地址的下一跳确定操作如下:发送者使用前缀列表中的前缀进行最长前缀匹配,确定包的目的地是在连接的还是非连接的。如果下一跳是在连接的,下一跳地址就和目的地地址相同,否则发送者从默认路由器列表中选择下一跳。如果默认路由器列表为空,则发送者认为目的地是在连接的。
下一跳确定的信息存储在目的地缓存中,下一个包可以使用这些信息。当路由器发送包时,首先检查目的地缓存,如果目的地缓存没有相关信息存在,就激活下一跳确定过程。
在学习到下一跳路由器的IPv6地址后,发送者检查邻居缓存以决定链路层地址。如果没有下一跳IPv6地址的表项存在,路由器的工作如下:
*创建一个新表项,并设置其状态为不完全。
*开始进行地址解析。
*对传送的包进行排队。
当地址解析结束时,获得链路层地址,存储在邻居缓存中。此时表项到达新的可达状态,排队的包能够传送。
IPv6 相关文章:
- IPv6 3G应用分析(01-05)
- 基于SOCKS地IPv4向IPv6过渡技术(01-08)
- 移动IPv6路由关键技术及其优化(01-08)
- 吴建平:建设IPv6切莫重“养鸡”轻“生蛋”(01-19)
- IPv6研发与应用(01-24)
- 刘东谈IPv6标准化(01-24)