2.5.1 NDP消息

即插即用
承载所有 NDP 消息的 IPv6 数据包的跳数被限制为 255
功能
·路由器发现Router Discovery         发现本地路由
·前缀发现Prefix Discovery          发现分配给该链路的前缀
·参数发现Parameter Discovery           发现相连链路的参数链路的MTU---取最新的、跳数限制
·地址自动配置Address Autoconfigutation 能够确定它的完整地址
·地址解析Address Resolution        不需要ARP能发现链路层的地址
·下一跳确定Next-Hop Determination       能确定到达目的节点下一条链路层节点本地目的节点或到达目的节点的路由器
·邻居不可达检测Neighbor Unreachability Detection
·地址冲突检查Duplicate Address Detection       
·重定向Redirect                    IPv4ICMP协议
NDP消息
·路由器请求消息Router SolicitationRS   请求发送一个RA
·路由器通告消息Router AdvertisementRA 通告路由器的存在链路细节链路前缀、链路MTU、跳数限制
·邻居请求消息Neighbor SolicitationNS 请求邻居链路层地址并且冲突检测邻居不可达检测
·邻居通告消息(Neighbor AdvertisementNA
·重定向消息(Redirect
RS--------------------------------------------------------------------------------
TCP/IP卷一 2.5 邻居发现协议(NDP)_职场 

TCP/IP卷一 2.5 邻居发现协议(NDP)_职场_02

 
IPv6源地址1)发出接口所分配的IPv6地址    2::(出现在没有分配地址的情况,节点刚刚开始进行地址自动配置时会出现没有地址)
IPv6目的地址所有路由器FF02::2
Type133
code0
checksum
Reserved保留32b
option
包括始发接口的链路层地址若源地址未指定则不一定包含。
RA--------------------------------------------------------------------------------
TCP/IP卷一 2.5 邻居发现协议(NDP)_IPv6 NS NA RA RS_03 

TCP/IP卷一 2.5 邻居发现协议(NDP)_IPv6 NS NA RA RS_04

 
 
Type134
code0
checksum
Cur hop limit跳数限制
如果接收到的cur hop limit的值不为0则主机应该把它的curhoplimit变量值修改成接收到的值。
Flags
Managed address configuration   管理地址的配置标记置位则利用DHCPv6协议告诉链路的主机使用有状态地址分配否则用无状态地址分配
Other configuration 其他的有状态配置置位则会告诉链路的主机使用DHCPv6来获取其他链路信息MO可以一起使用。
Home Agent
PrfDefault Router preference2b
proxy
保留
Router lifetime路由器生存时间只有始发路由器是缺省路由器才为非0
·0      1主机不存在添加一个新的条目到默认路由列表       
        2)主机存在,则重新刷新默认路由列表时间
·0        马上使该条目失效
reachable time 邻居可达时间,用于实现NDP协议中邻居不可达性检测功能的字段
retrans timer   重传计时,用于实现NDP协议有关地址解析和邻居不可达性检测功能的字段,它指定重传邻居请求消息之间的最小时间
option
·发起RA消息的接口的链路层地址
·RA消息所在链路的MTU说明
·分配给链路的一个或多个前缀。该消息是无状态地址自动配置的基本信息
不一定使以前接收到的广播所包含所有信息失效
·非请求RA可能不完整(不包括所有选项)
·请求式RA则必须包含所有选项。
NS--------------------------------------------------------------------------------
TCP/IP卷一 2.5 邻居发现协议(NDP)_休闲_05
 
IPv6源地址1)发出接口所分配的IPv6地址    2::(地址冲突时)
IPv6目的地址:目标地址或多播地址(FF02::1+接口ID24位)
如果NS被发送到请求组播地址,则发送该NS的主机必须在NS中放入自己链路地址作为源链路地址选项,发送源不确定时不放入。在其他情况下,发送者应该(没有强制必须)包含源链路选项。在多播式请求中包含源链路地址选项可以让目标主机能够利用该地址来回复NA
Type135
code0
checksum
Reserved
Target Address:请求目标IPv6地址不可能是一个组播地址目标地址是一个正在进行重复地址检测的临时地址。
option
始发接口的链路层地址
NSNA都可以用来进行重复地址检测。特别的,重复地址检测通过发送携带不确定源ip地址目标地址为自己临时地址NS信息来进行。这个NS信息会触发已经使用这个地址的节点用这个地址来回复一个多播NA来表明所请求的地址已经在使用。
如果收到的NS不满足所有以下的有效性检测,节点必须丢弃这个NS.
1)IPhop limit字段的值为255。数据报不能被中间路由器转发
2)如果NS包括了authentication扩展头而且数据报检测正确
3)ICMP校验和正确有效
4)ICMPcode字段值为0
5)ICMP长度至少有24字节。
6)Target Address不是组播地址
7)所有选项的长度都大于0
8)如果IP源地址是不确定地址即全0地址),IP目的地址是请求组播地址。
9)如果IP源地址是不确定地址,则数据报中不包括源链路地址选项。
10)必须忽略保留字段的值,以及无法识别的选项。
NA--------------------------------------------------------------------------------
TCP/IP卷一 2.5 邻居发现协议(NDP)_休闲_06
 
IPv6源地址:发出接口所分配的IPv6地址 
IPv6目的地址1)邻居请求的源地址 2)所有节点(FF02::1 -------S位相关
Type136
code0
checksum
Flags
·Router   :路由标记位,标明始发节点是路由器,用于在邻居可达性检测中检查变为主机的路由器
·Solicited    :请求标记,表示答复一个邻居通告消息
·Override :覆盖标记,表示邻居通告消息超出任何现有邻居的缓存条目,需要所缓存的链路层地址。
·Reserved
Target Address:1邻居请求信息的目标地址   2自己地址未请求的通告发送者节点的链路层发生变化
option
目标链路层地址(自己的链路层地址)
如果NA数据报不满足以下所有条件,主机必须丢弃收到的数据报。
·The IP Hop Limit field has a value of 255, i.e., the packet could not possibly have been forwarded by a router.
·IP数据报的hop limit字段的值为255
·If the message includes an IP Authentication Header, the message authenticates correctly.
·ICMP Checksum is valid.
·ICMP Code is 0.
·ICMP length (derived from the IP length) is 24 or more octets.
·Target Address is not a multicast address.
·If the IP Destination Address is a multicast address the Solicited flag is zero. 非答复一个邻居请求
·All included options have a length that is greater than zero.
Redirect----------------------------------------------------------------------------
IPv6源地址发出接口所分配的IPv6地址 
IPv6目的地址1邻居请求的源地址 2所有节点FF02::1
Type137
code0
checksum
目标地址更好的下一跳地址
目的地址被重定向的目标地址的ipv6地址
option
目标节点链路层地址
option可选项-----------------------------------------------------------------------TCP/IP卷一 2.5 邻居发现协议(NDP)_职场_07
 
TLV
Type
·1    源链路层地址
·2    目标链路层地址
·3    前缀信息
·4    重定向的报头
·5    MTU
Length 8B/32B
Value:长度可变(8b倍数)
·只要前缀条目的失效时间一到,这个条目就被丢弃。对于目的缓存条目,并不需要做对应的更新
·只要默认路由器列表的某个条目的失效时间一到,这个条目就被丢弃。当从默认路由器列表中删除某个路由器条目的时候,主机必须更新目的缓存中所有使用这个路由器作为下一跳的条目。
前缀列表的更新和默认路由器列表的更新的处理是不一样的。
临时IP--->NS IP冲突检测(有状态自动配置)--->IP&接口绑定--->RS&接收RA--->根据M&O标志位指示--->
----------------------------------------------------------
路由器发现
RA默认间隔:200s ipv6 nd ra-interval
    生存时间1800s ipv6 nd ra-lifetime 不希望某个路由作为默认网关设为0
    可达时间0      ipv6 nd reachable-time
    M标记:     ipv6 nd managed-config-flag
    O标记:     ipv6 nd other-config-flag
禁止发RA包:     ipv6 nd suppress-ra
地址自动分配
MAC-to- EUI64转换法:
1)MAC中间插入FFFE
2)U/L7取反
0000:0B0A:2D51 ------ 0020:0BFF:FE0A:2D51 (IPv6的一半) + 64位前缀FE80::/64
有状态自动配置:借助DHCPv6。(收到M置位的RA
无状态自动配置:RA中获得链路链路前缀+接口ID
自动配置只在支持多播的链路上使用,并且要求接口也支持多播。除了两个例外:一是路由器生成链路本地地址。二是路由器在绑定地址之前进行重复地址检测。
邻居冲突检测(任意播除外)
获取新地址为临时状态的地址(地址冲突检测没完之前,该地址不能用),发送目标为自己的NS请求验证。临时地址不是唯一的,自动配置就会停止,然后需要手动配置了。
邻居地址解析(IPv4使用ARP)
私有地址
私有地址回复....安全
邻居不可达检测
·incomplete正在解析邻居地址解析发送至被请求节点组播地址但还没收到NA
·reachablereachable time内收到某些可达性信息确认默认30s
·stale超过reachable time才收到可达性信息确认
·probe每经过retransmit time或每1000ms前者没指定),向目标节点发送NS搜索可达性确认
·delay:一个数据包stable状态时等待5s,如果还没收到可达性确认则转换到probe。(可达性机会的优化)
incomplete---可达性信息确认---->reachable----超过reachable_time--->stable---有数据包到达时-->delay-----超过5s没可达性消息确认---->Probe------>发送NS