您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > IPv6-邻居发现协议介绍
IPv6邻居发现协议介绍Jade2014/11/28前言•IPv6NeighborDiscovery协议(NDP)用于发现同一link上的其他主机,获取其他主机的链路层地址,发现路由器,还用于维护邻居的可达性;•参考文档:•RFC4861.NeighborDiscoveryforIPVersion6目录•概述•报文格式说明•邻居发现协议功能–路由器和前缀发现–地址解析(AR)–可达性验证(NUD)–重复地址检测(DAD)术语•Node:实现IPv6的设备•Router:转发IP报文的node•Host:非router•Link:一种node在linklayer可以通信的设施或媒介。如eternet,PPPlinks,X.25,FrameRelay,即紧邻IP层的下一层•Neighbor:连接到相同link的node•Prefix:组成IPv6地址的最左边的连续n个bit•Target:出现在地址解析请求中的目标地址(要解析的IPv6地址)或者是重定向报文中的第一个下一跳•NMMA:non-broadcastmulti-access,一种通过两个以上接口连接的link,天然不支持组播或广播。如X.25,Framerelay术语•all-nodesmulticastaddress本地链路所有节点组播地址–可以到达link范围内所有node的地址:FF02::1•all-routersmulticastaddress本地链路所有路由器组播地址–可以到达link范围内所有路由器的地址:FF02::2•solicited-nodemulticastaddress被请求组播地址–本地链路范围内根据被请求目标地址计算得到的组播地址–FF02::1:FFxx:xxxx,其中xxxxxx为NS请求中的目标地址的低24bit•link-localaddress本地链路地址–本地链路范围内可以到达邻居的地址:FE80::xxxx:xxxx:xxxx:xxxx–xxxxxxxx为EUI-64(linkID),ethernet时linkID为MAC地址•unspecifiedaddress未定义地址–保留地址,表示缺少地址,用::表示概述•NDP功能–RouterDiscovery–PrefixDiscovery–ParameterDiscovery(MTU/hoplimit)–AddressAutoconfiguration–Addressresolution–Next-hopdetermination–NeighborUnreachabilityDetection(NUD)–DuplicateAddressDetection(DAD)–RedirectNDP消息组•协议定义了2对报文和1条Redirect报文–RouterSolicitation(RS)•主机发送该报文请求router广播RA–RouterAdvertisement(RA)•router通过该报文广播前缀信息,internet参数信息•router响应node发送的RS报文–NeighborSolicitation(NS)•解析链路层地址•验证邻居的可达性(NUD)•验证地址的唯一性(DAD)–NeighborAdvertisement(NA)•响应NS•链路层地址变化时,广播NA–Redirect•用于router通知主机更好的下一跳VsIPv4•IPv6的NDP协议组合了IPv4时的ARP,RDISC(RFC1256ICMPRouterDiscoveryMessages),ICMPRedirect•相比IPv4的增强–router发现作为协议基本功能,主机不需”窥探“路由协议–RA携带了link地址,不需额外的分组交换获取router的link地址–RA携带了prefix,不需单独配置host的掩码–RA使能地址自配置–RA广播linkMTU,保证那些没有知名MTU预定义值的link上的所有node使用相同的MTU–定义被请求节点组播地址,降低非解析目标节点的中断数–Redirect携带了新的下一条的link地址,不需再发起的单独的报文交换去获取–Samelink上可以配置多个prefix–IPv6有明确的NUD规范,并且作为协议的基本组成部分–将地址解析放在ICMP层,有利于利用IPv6层的安全机制NDP在不同链路类型上的适用性•NDP支持不同类型的link,但是由于不同link不能完全满足NDP协议的要求,不同link可以支持NDP的部分功能•Point-to-point–对于类mulicast的P2Plink可以运行NDP•Mulitcast–Fullymeet•non-broadcastmultipleaccess(NBMA)–支持NDP协议的Redirect,NUD,下一跳确定功能–地址解析,传送RS/RA不在该规范定义•sharedmedia–只有Redirect适用•variableMTU–不适用•asymmetricreachability–不适用–RFC3971SEcureNeighborDiscovery(SEND)目录•概述•报文格式说明•邻居发现协议功能–路由器和前缀发现–地址解析(AR)–可达性验证(NUD)–重复地址检测(DAD)RS报文格式•RS报文用于host向router请求快速响应RA报文•IP头–源IP地址:接口上已配置的地址或者未定义地址;–目的IP地址:所有路由器组播地址:FF02::2–Hoplimit:255(下面的消息如无特殊说明,均为255)•ICMP域:Type:133;Code:0;•Options–源link层地址,即NS发送方接口的链路层地址–当源IP地址为未定义时,不可携带该option;否则携带RA报文格式•router周期广播RA或者响应host发送的RS报文IP头–源IP地址:发送该消息的接口上的link-local地址–目的IP地址:RS的源地址(响应RS)或者所有节点组播地址(广播):FF02::1•ICMP域:Type:134;Code:0;–CurHopLimit:外发报文中IP头中的HopCount取值,0表示未定义–M:置1表示host应该通过DHCP方式获取IP和其他配置信息,为1时,忽略O选项–O:置1表示其他配置信息通过DHCP方式获取;M/O全0,表示nodhcpserver–RouterLifetime:router作为defaultrouter的时间,0表示该router不可作为defaultrouterRA报文格式•router周期广播RA或者响应host发送的RS报文•ReachableTime:用于NUD,表示收到可达性确认后的邻居的可达性时间;0表示未定义•RetransTimer:用于NUD和地址解析时NS的重传间隔时间(毫秒)•Option–源链路层地址,可选,RA发送方的链路层地址–MTU:可选,视链路类型而定–Perfix信息:可选,用于无状态地址自配置协议,参考《rfc2462IPv6StatelessAddressAutoconfiguration》。建议router携带所有的onlink的前缀信息(除local-link的之外)NS报文格式•Node发送NS报文请求解析targetNode的链路层地址,同时携带了自身的链路层地址,当Node发送NS用于解析地址时,以组播方式发送;当验证可达性时,以单播方式发送•IP头–源IP:发送方接口IP或者为未定义IP(用于DAD检测时)–目的IP:被请求节点组播地址或者目标地址•ICMP域–Type:135;Code:0–TargetAddress:目标解析IP地址,不能是组播地址•Options–发送方链路层地址,特例当源IP为未定义IP时,必须不能携带;否则组播时必须携带,单播时建议携带NA报文格式•Node发送NA报文响应NS报文,或者用于组播通知链路层地址变化•IP头–源IP:发送方接口IP–目的IP:发送NS方的源地址,或者是组播地址(DAD场景)•ICMP域–Type:136;Code:0–R:表示发送NA方是否为router,被NUD用作检测router是否变为host–S:表示是否响应NS报文,只用于NUD,当组播NA时或者主动组播NA时不能设置–O:表示要求覆盖已经存在的缓存记录,并更新缓存的链路层地址;如果未设置,不会更新存在的缓存记录,但是会更新一个没有链路层地址的缓存记录。在响应解析任播地址时,不能设置,在proxyNA中不能设置;其他NA中应该设置NA报文格式•Node发送NA报文响应NS报文,或者用于组播通知链路层地址变化•ICMP域–Targetaddress:对于响应NS的NA报文,表示待解析的目标地址(即NS中的该域);对于主动组播的NA,表示哪个IP地址对应的链路层地址发生了变化•Options–目标链路层地址:Targetaddress对应的链路层地址。当响应组播NS时,必须包含(?DAD时是否有必要包含),当响应单播NS时,应该包含;主动组播RA时,必须包含Redirect报文格式•Redirect用于router向host告知通往目的地的更好的下一跳信息Option格式Source/TargetLink-layerAddress•SourceLink-layerAddress出现在NS/RS/RA中;•TargetLink-layerAddress出现在NA和Redirect报文中;PrefixInformation格式•PrefixLen:前缀的bit数,0-128(0或128什么含义?)•L:onlinkflag,当设置时,可用于on-link(是否直连)判决;当未设置时,RA对于前缀on-link还是off-link不持立场,即host不能认为通过该前缀生成的IP是off-link的。只有当ValidLifetime为0,且L设置为1,才表示该前缀的地址为off-link•A:用于RFC2462无状态地址自配置•ValidLifetime&Perferred:参考RFC2462无状态地址自配置•Prefix:一个IP地址或者IP地址的前缀,不能携带link-local的prefixRedirectHeader格式•IPheader+data:触发Redirect报文的原始IP头+data,长度满足mininumMTURedirectHeader格式•IPheader+data:触发Redirect报文的原始IP头+data,长度满足mininumMTU目录•概述•报文格式说明•邻居发现协议功能–路由器和前缀发现–地址解析(AR)–可达性验证(NUD)–重复地址检测(DAD)主机的概念模型&数据模型概念模型是为了便于描述邻居协议如何工作而定义的数据模型和行为模型数据模型–邻居缓存:和本机最近有过交互的邻居的集合•最近和本机有过交互的邻居记录,以单播IP地址为key,记录对应的link地址,以及该邻居是否为router或host,以及一个用于解析到link地址前缓存的待发封包的队列•记录NUD算法涉及的相关数据记录,如邻居状态,重发计数,定时器等–目的地缓存:和本机最近有过交互的目的地集合(本质上是最近使用的路由表放进缓存)•记录目的地和对应的下一跳(即邻居,实际上是一个指向邻居缓存中一条记录的指针)的关系,包括了on-link和off-link的所有目的地,实际上也包含到本机的记录•其他信息,如PMTU,和目的地的往返时间–前缀列表•前缀列表集合,该列表通过RA获得和维护,记录每个前缀的生存时间•link-local前缀永不超时–默认路由器列表•一个封包可能发网的router的集合,实际每条记录是一个指向邻居缓存中一条记录的指针协议并未要求完全按照上述数据模型实现,只要外在行为一致即可,实际上linux基本上是按照这个数据模型实现的数据模型数据模型–邻居可达状态•INCOMPLETE–在进行地址解析过程,此时单播IP对应的link地址为空•REACHABLE
本文标题:IPv6-邻居发现协议介绍
链接地址:https://www.777doc.com/doc-5521842 .html