IPv6-邻居发现协议介绍_第1页
IPv6-邻居发现协议介绍_第2页
IPv6-邻居发现协议介绍_第3页
IPv6-邻居发现协议介绍_第4页
IPv6-邻居发现协议介绍_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IPv6邻居发现协议介绍,Jade2014/11/28,前言,IPv6NeighborDiscovery协议(NDP)用于发现同一link上的其他主机,获取其他主机的链路层地址,发现路由器,还用于维护邻居的可达性;参考文档:RFC4861.NeighborDiscoveryforIPVersion6,目录,概述报文格式说明邻居发现协议功能路由器和前缀发现地址解析(AR)可达性验证(NUD)重复地址检测(DAD),术语,Node:实现IPv6的设备Router:转发IP报文的nodeHost:非routerLink:一种node在linklayer可以通信的设施或媒介。如eternet,PPPlinks,X.25,FrameRelay,即紧邻IP层的下一层Neighbor:连接到相同link的nodePrefix:组成IPv6地址的最左边的连续n个bitTarget:出现在地址解析请求中的目标地址(要解析的IPv6地址)或者是重定向报文中的第一个下一跳NMMA:non-broadcastmulti-access,一种通过两个以上接口连接的link,天然不支持组播或广播。如X.25,Framerelay,术语,all-nodesmulticastaddress本地链路所有节点组播地址可以到达link范围内所有node的地址:FF02:1all-routersmulticastaddress本地链路所有路由器组播地址可以到达link范围内所有路由器的地址:FF02:2solicited-nodemulticastaddress被请求组播地址本地链路范围内根据被请求目标地址计算得到的组播地址FF02:1:FFxx:xxxx,其中xxxxxx为NS请求中的目标地址的低24bitlink-localaddress本地链路地址本地链路范围内可以到达邻居的地址:FE80:xxxx:xxxx:xxxx:xxxxxxxxxxxx为EUI-64(linkID),ethernet时linkID为MAC地址unspecifiedaddress未定义地址保留地址,表示缺少地址,用:表示,概述,NDP功能RouterDiscoveryPrefixDiscoveryParameterDiscovery(MTU/hoplimit)AddressAutoconfigurationAddressresolutionNext-hopdeterminationNeighborUnreachabilityDetection(NUD)DuplicateAddressDetection(DAD)Redirect,NDP消息组,协议定义了2对报文和1条Redirect报文RouterSolicitation(RS)主机发送该报文请求router广播RARouterAdvertisement(RA)router通过该报文广播前缀信息,internet参数信息router响应node发送的RS报文NeighborSolicitation(NS)解析链路层地址验证邻居的可达性(NUD)验证地址的唯一性(DAD)NeighborAdvertisement(NA)响应NS链路层地址变化时,广播NARedirect用于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上可以配置多个prefixIPv6有明确的NUD规范,并且作为协议的基本组成部分将地址解析放在ICMP层,有利于利用IPv6层的安全机制,NDP在不同链路类型上的适用性,NDP支持不同类型的link,但是由于不同link不能完全满足NDP协议的要求,不同link可以支持NDP的部分功能Point-to-point对于类mulicast的P2Plink可以运行NDPMulitcastFullymeetnon-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:2Hoplimit: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:1ICMP域:Type:134;Code:0;CurHopLimit:外发报文中IP头中的HopCount取值,0表示未定义M:置1表示host应该通过DHCP方式获取IP和其他配置信息,为1时,忽略O选项O:置1表示其他配置信息通过DHCP方式获取;M/O全0,表示nodhcpserverRouterLifetime:router作为defaultrouter的时间,0表示该router不可作为defaultrouter,RA报文格式,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:0TargetAddress:目标解析IP地址,不能是组播地址Options发送方链路层地址,特例当源IP为未定义IP时,必须不能携带;否则组播时必须携带,单播时建议携带,NA报文格式,Node发送NA报文响应NS报文,或者用于组播通知链路层地址变化IP头源IP:发送方接口IP目的IP:发送NS方的源地址,或者是组播地址(DAD场景)ICMP域Type:136;Code:0R:表示发送NA方是否为router,被NUD用作检测router是否变为hostS:表示是否响应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-linkA:用于RFC2462无状态地址自配置ValidLifetime&Perferred:参考RFC2462无状态地址自配置Prefix:一个IP地址或者IP地址的前缀,不能携带link-local的prefix,RedirectHeader格式,IPheader+data:触发Redirect报文的原始IP头+data,长度满足mininumMTU,RedirectHeader格式,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在过去一小段时间是邻居是可达的STALE不确定邻居是否可达,但是不需发起NUD流程验证邻居是否可达DELAY不确定邻居是否可达,但是上层已向该邻居发送数据,延迟等待上层是否可以确认该邻居是否可达PROBE不确定邻居是否可达,正在发起NUD流程验证邻居是否可达,行为模型,行为模型概念性发送算法当向一个目的IP发送封包时,需要综合目的地缓存,前缀列表,默认路由器列表决定为到达IP对应的目的地需要使用的下一跳地址(下一跳确定算法);当确定下一跳的IP后,需要查询邻居缓存获取对应的link地址下一跳确定算法发送方按照最长前缀匹配原则遍历前缀列表,确定该目的地是on-link还是off-link;如果是on-link,则目的地等于下一跳如果不是on-link,则从当前默认路由器列表中选择一个作为下一跳默认路由器选择原则:1.优选reachable或可能reachable的路由器,如果有多个时,参考RFC4311IPv6Host-to-RouterLoadSharing2.没有reachable或可能reachable的路由器时,轮流命中所有默认路由器,从而触发NUD算法检测邻居可达性处于效率考虑,下一跳算法的输出会保存在目的地缓存中,避免同一目的地的每个封包都要执行一次下一跳确定算法;发送封包时,应先查询目的地缓存,没有则创建一条记录如果由于NUD算法发现下一跳不再可达,需要再次执行下一跳确定算法,行为模型,行为模型概念性发送算法确定下一跳IP后,查询邻居缓存,如果没有记录,则新增一条,状态设置为INCOMPLETE,并发起NUD算法,在NUD结束前,缓存待发封包到邻居的待发封包队列中;NUD获取link地址后,更新邻居状态并将待发封包发送出去特例:对于组播封包,无需进行此过程,组播地址认为是永远on-link的,并且link地址可以通过组播地址推算(参考RFC2464)确定下一跳IP后,查询邻居缓存命中,如果邻居为可达则直接发送出去;或者需要NUD验证邻居可达性,并缓存待发封包垃圾回收和超时机制,目录,概述报文格式说明邻居发现协议功能路由器和前缀发现地址解析(AR)可达性验证(NUD)重复地址检测(DAD),路由器和前缀发现,路由器和前缀发现的功能路由器发现用于定位邻居路由器,生成defaultrouter列表前缀发现主机明确哪些IP地址是on-link,是不需经过router直接可达的无状态地址自配置也需要前缀信息,但是和本文中的前缀发现是并列的,准确的说是,为了降低网络流量,路由器发现报文捎带了无状态地址自配置信息host不能发送RA报文,不能接收RS报文为何要发现路由器往一个指定的IP地址(非组播)发送封包时,需要确定下一跳,发送者需要将目的IP地址和从RA获取到的所有prefix做最长前缀匹配,当可以匹配其中prefix时,认为该封包是直接可达的;否则需要将该封包发送给defaultrouter中的一个,路由器和前缀发现过程,router可以在配置的min/max内的一个随机时间间隔发送RA报文host的接口使能后,需要及时获取RA,向link-local所有路由器组播地址发送RSrouter可以选择向该node单播一条RA,也可以选择向link-local所有节点组播地址组播一条RA,但是无论如何,都需要延迟一定(随机)时间在发送RAhost收到RA后,处理无状态地址自配置过程;如果RA指示该router可以作为defaultrouter,保存该router到defaultrouter列表,并启动routerlifetime定时器;如果该router已经存在,重启定时器;如果该router变为host,需要做出相应处理(目的缓存中引用该router的记录需要废除);对于前缀信息:如果前缀在host中不存在,且validlifetime非0,创建并启动定时器;如果已存在,且validlifetime非0,重启定时器,如果为0,立即做超时处理;如果validlifetime为0,但是host未保存,忽略之;如果前缀为local-link,忽略之,host,router,UnsolicitedRouterAdvertisements,RouterSolicitation,SolicitedRouterAdvertisements,参考RFC4861,6.2.4.SendingUnsolicitedRouterAdvertisements参考RFC4861,6.3.7.SendingRouterSolicitations参考RFC4861,6.2.6.ProcessingRouterSolicitations参考RFC4861,6.3.4ProcessingReceivedRouterAdvertisements,目录,概述报文格式说明邻居发现协议功能路由器和前缀发现地址解析(AR)可达性验证(NUD)重复地址检测(DAD),地址解析,地址解析用于确认IP地址对应的链路层地址UnsolicitedNeighbourAdvertisements用于node的link地址发生变化时,向本地所有节点组播地址组播主机向一个单播IP发送数据时,如果缓存中没有该IP对应的地址,则在缓存中创建记录,状态为incomplete,同时向该IP对应的组播地址组播NS封包,该封包中携带自身的link地址和自身IP地址;在收到NA前,主机会间隔一定周期尝试多次发送NS请求,如果最终没有收到NA,响应ICMPaddressunreachable主机收到NS时,如果该地址为tentative,则忽略NS;如果NS中源IP不是未定义IP,且封包中包括源link地址,则需要更新(存在但是链路层地址不一致)或创建(不存在时)本地缓存的邻居记录主机回应NS,当NS中的目的地址不是组播地址时,可以不携带自身的link地址;当为组播时,必须携带自身的link地址;如果主机为router,设置route标志;如果目标地址为任播或者主机提供代理服务时,NA中的override标志置0;否则设置为1;如果NS的源IP为未定义,则NA必须组播,且Solicited标志置为0,否则置为1且单播NA发送方接收NA后,如果本地无缓存记录,不处理该NA;否则根据缓存记录的状态,NA中的标志和link地址做出相应处理,当状态为incomplete时,记录link地址,如果NA中Solicited为1,状态变为reachable,否则为stale;根据Router标志更新该邻居是否为router标志;发送缓存的封包;如果状态不为incomplete,情况1:如果overide为0,且link地址和缓存中不同,如果状态为reachable,设置为stale,否则忽略该NA;情况2:如果overrid为1或者link地址和当前缓存中相同或者NA中没有link地址:a)缓存中插入该link地址(如果有携带且和当前不同);b)如果Solicited为1,将状态设置为reachable;如果Solicited为0,并且link地址变化,则将状态置为stale;否则状态不变;c)更新本地记录中的router标志,如果由1变为0,需要将该router从defaultrouterlist中删除,host,router,UnsolicitedNeighbourAdvertisements,NeighbourSolicitation,SolicitedNeighbourAdvertisements,7.2.2.SendingNeighborSolicitations7.2.3.ReceiptofNeighborSolicitations7.2.4SendingSolicitedNeighborAdvertisements7.2.5ReceiptofNeighborAdvertisements7.2.6SendingUnsolicitedNeighborAdvertisements,地址解析,host,router,Unsolici

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论