1、ICS 33.040.40 M 33 YD 中华人民共和国通信行业标准YD/T 1343-2005 IPv6邻居发现协议基于IP峭的邻居发现协议Technical specification for neighbor discovery protocol in IPv6 2005-0511发布2005-11-01实施中华人民共和国信息产业部发布YD厅1343-2005 目次前言.,怔l 范围2 规范性引用文件.3 术语.24 缩略语.45 概述.46消息格式.76.1 路由器请求消息格式.,刁6.2 路由器通告消息格式86.3 邻居请求消息格式.96.4 邻居通告消息格式106.5 重定向消息
2、格式.116.6 选项格式.127 主机模型.157.1 数据结构归7.2 发送算法.M7.3 垃圾收集和超时要求.178 路由器和前缀发现178.1 消息有效性验证.口8.2 路由器要求.188.3 主机要求.239 地址解析和邻居不可达检测.279.1 消息有效性.279.2 地址解析.289.3 邻居不可达性检测.引10 重定向功能.3410.1 验证重定向消息.3410.2 路由器要求M10.3 主机要求.3511 选项处理.仍12 协议常数36日安全性考虑.37M 重编号的考虑.37YD厅1343-2005 前言本标准修改采用E凹的盯C2461 ( 1998) ,主要差异如下:1.按
3、照GB1(20)系列的要求对标准格式进行了修改;2.本标准的第1、2,3, 4章按照GB1(20)系列要求编写,第5,6、7、8、9、10、11、12、13、14章分别等同于盯C2461的第3,4、5,6、7、8、9、10、11、12章;3.盯C2461的附录A、B、C、D、E、F的内容未在本标准。11 本标准是IPv6协议系列标准之一,该系列标准预计的结构及名称如下:1. IPv6基本协议一-IPv6协议2. IPv6技术要求一一支持计算机移动部分3. IPv6技术要求一一地址、过渡及服务质量4. IPv6地址结构协议一-IPv6元状态地址自动配置5. IPv6邻居发现协议一一基于IPv6的
4、邻居发现协议6. IPv6协议一致性测试方法本标准由中国通信标准化协会提出并归口。本标准起草单位:信息产业部电信研究院本标准主要起草人:袁琦刘治李春安阑志刚杜和青YD厅1343-2005 IPv6邻居发现协议一一基于IPv6的邻居发现协议1 范围本标准规定了IP怖的邻居发现协议,包括路由器和前缀发现、地址解析和邻居不可达检测、重定向等功能要求。本标准规定的功能不直接依赖于组播。本标准适用于非特殊规定下的链路类型。本标准不适用于在非广播多连接(NBMA)链路上使用的邻居发现机制。2 规范性引用文件下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用文件,其随后所有的修改单(不包括
5、勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。IETF RFC 0768 ( 1980 ) 用户数据包协议IETF RFC 0791 ( 1981 ) IETF盯C0792 ( 1981 ) IETF RFC 0793 ( 1981 ) IETF RFC 0826 ( 1982) IETF RFC 0905 ( 1984 ) IETF盯C1191 ( 1990 ) IETF RFC 1256 ( 1991 ) IETF RFC 1519 ( 1993 ) IETF盯C1546 ( 199
6、3 ) IETF RFC 1584 ( 1994 ) IETF RFC 1586 ( 1994) E宵RFC1587 ( 1994 ) EF RFC 1620 ( 1994) IETF RFC 1700 ( 1994 ) IETFRFC 1745 (1994) IETF RFC 1771 ( 1995 ) IETF RFC 1793 ( 1995 ) IETF RFC 1981 ( 1998 ) IETF RFC 2119 ( 1997 ) IETF RFC 2233 ( 1997) 互联网协议互联网控制消息协议传输控制协议以太网地址解释协议(ARP)ISO传输协议规范ISODP8073 路径
7、MTU发现ICMP路由器发现消息元类域间路由(CIDR):地址分配和聚合策略主机泛播服务OSPF的组播扩展在帧中继网络运行OSPF的要求OSPF的NSSA选项在共享媒体上的因特网结构扩展被分配的号码基于IPOSPF交互的BGP4IIDRP边界网关协议4(BGP4) OSPF外部属性LSAIPv6路径MTU发现盯C中用来指出所需级别的密钥词组使用SMIv2的接口组MffiYD厅1343-2005 IETF RFC 2328 ( 1998 ) IETF RFC 2373 ( 1998) IETF RFC 2401 ( 1998 ) IETF RFC 2402 ( 1998 ) IETF RFC 2
8、406 ( 1998 ) IETF RFC 2460 ( 1998 ) IETF RFC 2461 ( 1998 ) IETF RFC 2462 ( 1998 ) IETF RFC 2463 ( 1998 ) IETF盯c2464 ( 1998 ) OSP凹开放式最短路径优先(版本2)IPv6地址结构因特网协议的安全体系E认证头E封装安全净荷IPv6协议IPv6邻居发现协议IPv6地址自动配置IPv6互联网控制消息协议IPv6数据包在以太网网络上的传输3 术语下列术语和定义适用于本标准。3.1 节点node 实现F协议的设备,包括主机和路由器。3.2 泛播地址anycast address 一
9、组接口的标识符(一般属于不同节点)。发送到泛播地址的数据包会发送到由这个地址标识的一个接口(根据路由协议的距离量度为最近的一个接口)。3.3 3.4 3.5 3.6 2 前缀prefix 由地址的初始比特位构成的比特串。在连接on-link分配给特定链路上接口的地址,如果满足下列条件,节点认为地址是在连接:一一它被一个链路前缀覆盖;一一邻居路由器指定地址为重定向消息的目标;一-接收(目标)地址的邻居通告消息;一一接收来自地址的邻居发现消息。非连接offlink 在连接的反义词。没有分配给特定链路上任何接口的地址。最长前缀匹配longest prefix match 确定前缀集合中哪个前缀覆盖目
10、标地址的过程。如果前缀的比特位和目标地址的比特位从左最大匹YD厅1343-2005 配,前缀就覆盖这个目标地址,当多个前缀覆盖一个地址时,具有最长前缀的地址将得到匹配。3.7 可达性reachability 到达邻居的单向转发路径是否工作正常,发送给邻居的包是否到达邻居的E层,是否被接收的F层正确处理。对于邻居路由器,可达性是指节点的E层发送的包发送到路由器的E层,并且路由器确实转发了数据包(p它配置为路由器而不是主机);对于主机,可达性是指节点的E层发送的包发送到邻居主机的E层。3.8 链路MTUlink MTU 最大传输单元,即在链路上一次所能传输的最大数据包大小(以字节为单位)。3.9
11、目标地址target 地址解析所解析出的地址,或重定向时新的第一跳地址。3.10 代理proxy代表另一个节点而响应邻居发现查询消息的路由器。当移动节点离开off-link状态时,就为移动节点作代理。3.11 ICMP目的地不可达指示ICMP destination unreachable indication 返回到原始发送者的出错指示。如果某节点发生错误,而不是初始发送包的节点发生错误,则产生一个ICMP错误消息。如果出错发生在发送节点,并通知了上层发送者,不要求向源发送一个ICMP错误消息。3.12 随机时延阳ndomdelay 当发送消息时,为了防止多个节点同时传输,或者防止周期性的传
12、送消息而造成与其他节点同步,需要把一个传输延迟一段时间。随机时延在最小和最大时延值之间呈均匀分布。3.13 非对称可达性asymmetric reachability 非自反或非传递可达性的链路。非自反可达性是指数据包能从A到B,但不能从B到A;非传递可达性是指数据包能从A到B,从B到C,但数据包不能从A到C。许多元线链路具有这种特性。3.14 全部节点组播地址all-nodes multicast address 到达所有节点的本地链路范围地址:FF02:1。3.15 全部路由器组播地址all-routers multicast address 到达所有路由器的本地链路范围地址:町02:1。
13、3.16 3 YD厅1343-2005 请求节点组播地址solicited-node multicast address 链路本地范围的组播地址。3.17 链路本地地址link-Iocal address 用于到达邻居,仅有链路范围的单播地址;路由器的所有接口必须有本地链路地址,主机的接口也要求有本地链路地址。3.18 未规定的地址unspecified address 保留的地址值,表示没有地址(例如,地址未知);不能用作目的地地址,如果发送者不知道自己的地址,可以用作源地址(例如,在地址自动配置期间没有使用地址)。未规定的地址值为0:0:0:0:0:0:0:004 缩略语下列缩略语适用于本
14、标准。AH Authentication Header 认证头ARP Address Resolution Protocol 地址解析协议AS Autonomous System 自治系统ESP Encapsulating Security Payload 封装安全载荷IC如fPInternet Control Message Prot01 互联网控制消息协议E Internet Protoco1 互联网协议IPv4 Internet ProtocoI v4 互联网协议版本4IPv6 Internet Protoco1 v6 互联网协议版本6MTU Maximum Transmission U
15、nit 最大传输单元NBMA NonBroadcast MultiAccess 非广播多连接ND Neighbour Discovery 邻居发现TCP Transmission ControI Prot,01 传输控制协议PMTU Path Maximum Transmission Unit 最大传输单元5 概述节点(主机和路由器)使用邻居发现来确定相连链路上邻居的链路层地址,并迅速删除元效的缓存值。主机也使用邻居发现来寻找进行包转发的邻居路由器。另外,节点使用邻居发现机制,可以主动跟踪哪些邻居是可达的,或者是不可达的,并检测改变的链路层地址。当路由器或到达路由器的路径发生故障时,主机主动寻
16、找正在工作的另一个路由器或另一条路径。IPv6的邻居发现协议和IPv4的ARP、ICMP路由器发现和ICMP重定向相对应,在IPv4中没有相应的邻居不可达检测机制和协议。4 邻居发现支持的链路类型有:点到点、组播、NBMA、共享介质、可变MTU和不对称可达性。邻居发现机制具有以下功能。( 1 )路由器发现:主机怎样定位相连链路上的路由器。(2 )前缀发现:主机怎样发现-组地址前缀,这些前缀定义了哪些目的地在相连链路上是在连接的YD厅1343-2005 (on-link)。( 3 )参数发现:节点怎样了解发送接口的链路参数(如链路MTU)或网络参数(如跳数限制值)。(4)地址自动配置:节点怎样自
17、动配置接口的地址。(5 )地址解析:在给出目的地E地址的情况下,节点怎样确定在连接(on-link)目的地(例如,邻居)的链路层地址。( 6 )下一跳确定:将目的地P地址映射成邻居P地址的算法,下一跳可以是路由器或目的地。(7)邻居不可达检测:节点怎样确定邻居不可达,如果邻居是路由器,可以使用默认路由器。如果邻居既是路由器也是主机,需要再执行地址解析。(8 )重复地址检测:节点怎样确定将要使用的地址没有被另一个节点正在使用。(9 )重定向:路由器怎样通知主机到达目的地的最佳下一跳。邻居发现定义了5种不同的ICMP包类型:路由器请求、路由器通告消息、邻居请求、邻居通告消息和重定向消息。( 1 )
18、路由器请求当接口工作时,主机立即发送路由器请求消息,要求路由器产生路由器通告消息,而不必等待下一个预定时间。(2)路由器通告路由器周期性地通告它的存在以及配置的链路和网络参数,或者对路由器请求消息作出响应。路由器通告消息包含在连接(on-link)确定、地址配置的前缀和跳数限制值等。路由器发现是基本协议的一部分,主机不必探测路由协议。在组播链路上,每个路由器周期地组播路由通告包,来通告它的可用性。主机从所有路由器接收路由器通告,建立默认路由器列表。路由器频繁地产生路由器通告,以使主机在几分钟内了解到它的可用性,也可单独使用邻居不可达检测算法进行故障检测。路由器通告包含用作在连接(on-link
19、)确定和/或地址配置的前缀列表,以及表明特定前缀用途的前缀标志位。主机使用通告的在连接(on-link)前缀建立和维护列表,列表用来决定包的目的地是在连接( on-link)还是在路由器外。即使目的地不包含在被通告的在连接(on-link)前缀中,目的地也可以是在连接(on-link)。在这种情况下路由器发送重定向消息,来通知发送者目的地是一个邻居。路由器通告允许路由器通知主机如何执行地址配置。例如,路由器能指示主机是使用状态地址配置,还是使用元状态地址配置。路由通告消息包含网络参数,例如,主机的发送接口使用的跳数限制值等,包含可选的链路参数,如链路MTU。这样可有利于集中管理这些设置在路由器
20、上的重要参数,并能自动传送到所有相连的主机上。路由器通告含有链路层地址,不需要另外的包交换来解析路由器的链路层地址;含有链路前缀,不需要单独的机制配置掩码。路由器通告链路上主机使用的MTU,保证链路上所有节点使用相同的MTU值。(3 )邻居请求节点发送邻居请求消息来确定邻居的链路层地址,或者验证邻居通过缓存的链路层地址仍然可达,邻居请求消息也可用于重复地址检测。5 YD厅1343-2005 节点通过组播邻居请求消息完成地址解析,邻居请求消息要求目标节点返回它的链路层地址。邻居请求消息组播到目标节点的请求节点组播地址,目标通过单播邻居通告消息返回链路层地址。发起者的邻居请求消息中包含链路层地址。
21、邻居请求消息也可以用来确定多个节点是否分配了相同的单播地址。重复地址检测的邻居请求消息在地址自动配置中规定。(4)邻居通告邻居请求消息的响应,节点也可以发送非请求邻居通告来指示链路层地址的变化。邻居不可达检测可以检测邻居或邻居前向路径发生的故障,这样就要求确认发送给邻居的包到达了那个邻居且正在被E层进行处理。邻居不可达检测使用两种方法进行确认:一种是上层协议提供连接正在处理的确认,即先前发送的数据认为是正确发送(例如,最近收到新的确认)j另一种是节点发送单播邻居请求消息,请求的邻居通告消息作为下一跳的可达性确认。为了减少不必要的网络流量,探测消息仅发送到邻居。在路由器故障或链路层地址改变的链路
22、和节点故障的情况下,邻居不可达检测是提高包传送能力的一部分,例如,由于ARP缓存元效,移动节点没有失去任何连接而离开非连接。不像ARP,邻居发现检测半链路的故障,避免发送流量到失去双向连接的邻居。路由器通告消息不包含优先权字段,不必处理稳定性不同的路由器。邻居不可达检测将检测失效的路由器,并切换到工作的路由器。(5 )重定向路由器用于通知主机到达目的地的最佳下一跳。重定向包含新第一跳的链路层地址,单独的地址解析不必接收重定向。多个前缀可以和同一链路有关,默认情况下,主机从路由通告获得所有在连接(on-link)前缀。但路由器可以配置成忽略路由器通告中的某些或所有前缀,在这种情况下,主机认为目的
23、地是非连接,并发送流量到路由器,然后路由器发布合适的重定向。IP畸重定向的接收认为下一跳是在连接。在IPv4中,根据链路的网络掩码指示下一跳不是在连接,主机忽略重定向。IPv6重定向机制和共享介质的重定向机制类似。在非广播和共享媒介链路中节点不可能知道在连接目的地的所有前缀。邻居发现也可以处理下列情况。( 1 )链路层地址改变如果节点得知自己的链路层地址改变,就会组播邻居通告包到所有节点,迅速更新元效的缓存链路层地址。发送非请求通告消息仅能提高可靠性(例如,在不可靠时)。邻居不可达检测算法保证所有节点可以可靠地发现新地址,时延可能会比较长。(2 )人口负载均衡在接收来自相同链路上多个网络接口的
24、数据包时需要负载均衡。这个节点在相同接口分配了多个链路层地址,例如,单个的网络驱动程序可以把多个网络接口卡表示为具有多个链路层地址的逻辑接口。负载均衡允许路由器省略路由器通告包中的源链路层地址,强制邻居使用邻居请求消息了解路由器的链路层地址。根据不同的请求消息发送者,返回的邻居通告消息包含不同的链路层地址。( 3 )泛播地址6 YD厅1343-2005 泛播地址用于标识提供同样服务的一组节点,可以配置相同链路上的多个节点能够识别相同的泛播地址。通过节点接收对于相同目标的多个邻居通告,邻居发现来处理泛播。所有的泛播地址的通告标记为non-override的通告,这样可以使用特定的规则来确定应该使
25、用哪个通告。(4 )代理通告如果目标地址不能响应邻居请求,愿意代表该目标地址接收包的路由器会发布non-override的邻居通告。目前没有规定代理的使用,代理通告可以处理离开非连接(off-link)的移动节点,但不能作为通用的机制来处理节点。使用链路本地地址惟一标识路由器(对于路由器通告和重定向消息),主机能在站点重编号且使用新的全球前缀时保持路由器联系。邻居发现使用的跳数限制等于255,可以防止非连接发送者故意发送邻居发现消息。在IPv4中发送者既发送重定向消息,也发送路由器通告消息。6 消息格式6.1 路由器请求消息格式为了使路由器迅速产生路由器通告,主机发送路由器请求消息,路由器请求
26、消息格式如图1所示。2 3 o 1 2 3 4 5 6 7 890 1 2 345 6 7 890 1 234 5 6 7 890 1 t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-+-t-t-t-t-t-t-t-t-t-+-t-t-t-t-t 类型代码校验和t-t-+-t-t-t-t-t-t-t-t-t-t-t-t-t-t-f-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t 保留t-t-+-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t 选项.t-t-t-t-t-t-t-t-t-t-t-
27、t-图1路由器请求消息格式图1中:( 1 ) IP域源地址:分配给发送接口的F地址,当发送接口没有分配地址时,可以是未规定的地址。目的地址:全部路由器组播地址(Multicast Address )。跳数限制:255。认证头:如果在发送方和目的地址之间存在P认证头的安全联盟(SecurityAssociation) ,发送方的消息中必须包含这个字段。(2) ICMP域类型:133。代码:0。校验和:ICMPv6中的ICMP校验和。保留:这个字段未使用。发送方必须初始化为0,同时接收方必须忽略。(3 )有效选项源链路层地址:在已知的情况下就是发送方的链路层地址,不包括未规定的源地址。否则它应在链
28、7 YD厅1343-2005 路层上有地址。本标准的将来版本会定义新的选项类型,因此接收者必须能忽略不能识别的选项,继续处理消息。6.2 路由器通告消息格式路由器周期性地发送路由器通告消息,或者对路由器请求作出响应,路由器通告消息格式如图2所示。2 3 o 1 2 3 4 5 6 7 890 1 2 345 6 7 890 1 2 3 4 5 6 7 890 1 t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t卢t-t-t-t-t-t-t-t类型代码校验和t-t-t-t-t-tt-t-t-r-+-t-t-t-t-t-t-t-t-t-t-t-t-
29、t-t-t-t-+句.t-t-t-t-t|当前跳数限制IMIOI 保留|路由器生存时间t-t-t-t-t-t-t-t-t-t-t-t-+町t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-+-t-t可达时间t-t-t-t-t-t-t-t-t-t-t-t t-t-t-t-+-t-t-t-+-t-t-t-t-t-t-t-t-t-t-t-t 重传定时器3 t-t-t-t-t-t二+-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t选项.t-t-t-t-t-t-t-t-t-t-t-t-固2路由器通告消息格式图2中:( 1 ) IP
30、域源地址:必须是分配给消息发送接口的本地链路地址。目的地址:激活路由器请求的源地址或全部节点组播地址。跳数限制:255。认证头:如果在发送方和目的地址之间存在E认证头的安全联盟,发送方的消息中必须包含这个字头。(2) ICMP域:类型:1340 代码:0。校验和:ICMPv6中的ICMP校验和。当前跳数限制:8位元符号整数。缺省值应当位于发送的E包头的跳数限制宇段。值为0表示未规定(本路由器)。M: 1比特的管理地址配置标志位。当置1时,主机使用无状态地址自动配置以外,还使用管理(状态)协议进行地址自动配置。0: 1比特其他状态配置标志位。当置1时,主机使用管理(状态)协议对其他(非地址)信息
31、进行自动配置。保留:6比特未使用字段。发送方必须初始化为0,接收方必须忽略。路由器生存时间:16位元符号整数。生存时间与缺省路由器有关,以秒为单位。最大值为18.2ho0 值表示不是缺省路由器,不应该出现在缺省路由器列表中。路由器生存时间仅适用于缺省路由器,不适用于包含在其他消息字段或选项中的信息。信息中需要时间限制的选项包含生存时间字段。可达时间:32位元符号整数。以毫秒为单位,节点在收到可达确认后认为邻居是可达的时间。用于邻居不可达检测算法。值为0时表示未规定(本路由器)。重传定时器:32位无符号整数。以毫秒为单位,重传邻居请求消息之间的时间间隔。用于地址解析8 YD厅1343-2005
32、和邻居不可达检测算法。值为0时表示未规定(本路由器)。(3 )可能的选项源链路层地址:发送路由器通告的接口链路层地址。只用于有地址的链路层。路由器可以忽略这项选项,以便能够在穿过多个链路层地址时使用负载分配。MTU:在具有可变MTU的链路上发送,在其他链路上也可发送。前缀信息:这些选项规定了链路上的前缀,和/或者用于地址自动配置。路由器应当包含所有链路上的前缀(除了本地链路前缀),这样多穴主机具有相连链路的在连接地址全部的前缀信息。如果信息不全,多穴主机将不能选择正确的接口来发送流量到邻居。本标准的将来版本会定义新的选项类型,因此接收者必须能忽略无法识别的选项,继续处理消息。6.3 邻居请求消
33、息格式节点发送邻居请求来请求目标节点的链路层地址,同时也向目标提供自身的链路层地址。邻居请求在节点处理地址时是多点传送的,在节点对邻居的可达性进行校验时是单点传送的。邻居请求消息格式如图3所示。2 3 o 1 2 3 4 5 6 7 890 1 234 5 6 7 8 9 0 1 2 3 4 5 6 7 890 1 t-t-t-t-t-t-t-t-t-t白t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t类型代码校验和t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t町t-t-t-t-t-t-t-t-t-t保留t-
34、t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t 目标地址+ + t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t 选项.圄3邻居请求消息格式图3中:( 1 ) IP域源地址:发送消息的接口所分配的地址,或者(如果正在进行多个地址检测ADDRCONF)是未规定的地址。目的地址:目标地址相应的请求节点组播地址或是目标地址。跳数限制:255。认证头:如果在发送方和目的地址之间存在E认证头的安全联盟,那么发送方应当包含这个字头。(2) ICM
35、P域类型:135。代码:0。校验和:ICMPv6中的ICMP校验和。9 YD厅1343-2005 保留:这个字段未使用。发远方必须初始化为0,同时接收方必须忽略。目标地址:所请求的目标E地址。它不能是组播地址。(3 )可能的选项源链路层地址:发送方的链路层地址。如果源E地址是未规定的地址,不能包括这个选项。否则在有地址的链路层上组播请求必须包含这个选项,单播请求也应当包含。本标准的将来版本会定义新的选项类型,因此接收者必须能忽略不能识别的选项,继续处理消息。6.4 邻居通告消息格式节点通过发送邻居通告消息来回应邻居请求消息,并且发送非请求邻居通告消息,以便迅速地传达新信息(非可靠地)。邻居通告
36、消息格式如图4所示。o 1 2 3 o 1 2 345 6 7 890 1 2 3 4 5 6 7 890 1 2 3 4 5 6 7 890 1 t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t 类型代码校验和t-t-t-+-+-t-+-+-+-+-t-+-t-t-+-t-+-t-t-t-t-t-+-+-+-t-t-+-t-t-t-+-t IRISIOI 保留+-t-t-t-t-t-t-t-t-t-t-+-+-t-t-t-t-+-t-t-t-+-t-t-t-+-t-+-t-+-t-t-+ + + + 目标地址+
37、 + + t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-.-t-t-t-t-t-t-t-t-t-t-t-t 选项.t-t-t-t-+-t-t-t-+-+-t-+-固4邻居通告消息格式图4中:( 1 ) IP域源地址:分配给发送通告接口的地址。目的地址:对于请求通告,目的地址指调用邻居请求的源地址,或者如果请求的源地址是未规定的地址,目的地址是指全部节点组播地址。对于非请求通告消息,即指全部节点组播地址。跳数限制:2550 认证头:如果在发送方和目的地址之间的P认证头中存在安全联盟,那么发送方应当包含这个字头。(2) ICMP域类型:1360 代码:0。校验和:
38、ICMPv6中的ICMP校验和。R:路由器标志位。设置为1时,R位表示发送方为路由器。邻居不可达检测使用R位来检测路由器到主机的改变。S:请求标志位。设置为1时,S位表示从目的地址发送的通告消息,作为对邻居请求的响应。S位用来作为邻居不呵达检测的可达性确认。在组播通告或非请求单播通告中不能设置这一项。10 YD厅1343-2005 0: override标志。设置为1时,0位表示通告应当替换巳存在的缓存表项,更新缓存的链路层地址。未设置时,通告不能更新缓存的链路层地址,虽然它会更新链路层地址未知的邻居缓存表项。在泛播地址的请求通告和非请求通告中不应设置这一项。在其他请求通告和非请求通告中应该设
39、置这一项。保留:29比特未使用的字段。发送方必须初始化为0,接收方必须忽略。目标地址:对于请求通告,邻居请求消息中的目标地址宇段。对于非请求通告,就是发生改变的链路层地址。目标地址不能是组播地址。(3 )可能的选项目标链路层地址:目标的链路层地址,例如,通告的发送方。当响应组播请求时,这项选项必须包含在有地址的链路层中。当响应单播邻居请求时也应当包括本选项。当对等节点没有返回邻居通告消息的缓存表项时,为了避免邻居请求的无穷递归,对于组播请求必须包括这个选项。当响应单播请求时,因为请求的发送方有正确的链路层地址,可以省略此选项;否则不能首先发送单播请求。这种情况下包括链路层地址不会增加开销,在收
40、到先前请求的响应前发送者会删除缓存的链路层地址。本标准的将来版本会定义新的选项类型,因此接收者必须能忽略不能识别的选项,继续处理消息。6.5 重定向消息格式路由器发送重定向包来通知到目的地路径上更佳下一跳节点。主机可被重定向到更佳下一跳路由器,但重定向也可通知目的地(实际上是邻居)。后者可通过把ICMP目标地址设置成ICMP目的地址来完成。定向消息格式如图5所示。2 3 o 1 2 3 4 5 6 7 890 1 2 3 4 5 6 7 890 1 2 345 6 7 890 1 t-t-t-t-t-t-t-t-t-t-t-t司+-+-+-+-+-+-+-+-+白t-t-t-t-t-t-t-t
41、-t-t-t-t类型代码校验和t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t 保留t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t + + + 目标地址+ t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t-t + + + 目的地址+ + +-+-+-+-+-t-t-+-+-+-t-+-+-+-+-t-+-+-t-+-+-t-+司+-+-+-+-+-+-+
42、-+-+-+选项.+-+-+-+明白+-+-+-+-+-+-+-+-国5重定向消息格式11 YD厅1343-2005 图5中:( 1 ) IP域源地址:分配给发送消息接口的本地链路地址。目的地址:触发重定向的数据包的源地址。跳数限制:255。认证头:如果在发送方和目的地址之间的P认证头中存在安全联盟,发送方应当包含这个字头。(2) ICMP域类型:137。代码:0。校验和;ICMPv6中的ICMP校验和。保留:这个字段未使用。发送方必须初始化为0,接收方必须忽略。目标地址:到达ICMP目的地址的更佳下一跳的P地址。若目标是通信的终点,例如,目的地是邻居,目标地址字段必须包含和ICMP目的地址宇
43、段相同的值。否则目标是更佳下一跳路由器,目标地址必须是路由器的本地链路地址,以便主机能惟一地识别路由器。目的地址:重定向到目标的目的E地址。(3)可能的选项目标链路层地址:目标的链路层地址应当包括这个选项(如果已知)。注意,在NBMA链路上,主机可以根据重定向消息中存在的目标链路层地址选项,来决定邻居的链路层地址。这时重定向消息必须包括这个选项。重定向头:重定向包的长度不超过1280字节时,触发发送重定向的E包的数量不受限制(尽可能多)。6.6 选项格式邻居发现消息包括0及更多的选项,些选项可能会在同一个消息中出现多次。所有选项的格式如图6所示。12 图6中:。2 3 o 1 2 3 4 5
44、6 7 890 1 2 3 4 5 6 7 890 1 2 3 4 5 6 7 890 1 +-+-t-+-+-+-+白-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+类型| 长度+-+-t-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-t-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+町+-+-+-+-+牛+-+-+-+-+-+-+-+-+圄6选项格式类型:8比特,选项类型标识符。具体定义见表1。表1选项类型定义选项名称类型源链路层地址1 目的链路层地址2 前缀信息3 重定向头4 MTU 5 YD厅1343-2005 长度:8位元符号整数。选项的长度(包括类型和长度字段)以8字节为单位。0值是无效的。节点必须自动丢弃包含了长度为0的选项的数据包。6.6.1 源/目的链路层地址源/目的链路层地址格式如图7所示。2 3 012345678901234567