网站制作域名是免费的吗,wordpress微语,展厅设计培训,做机械的有什么网站目录
前言#xff1a;
一、报文内容
二、地址解析----NS/NA
目标的被请求组播IP地址
邻居不可达性检测#xff1a;
重复地址检测
路由器发现
地址自动配置
默认路由器优先级和路由信息发现
重定向 前言#xff1a; 邻居发现协议NDP#xff08;Neighbor Discovery…目录
前言
一、报文内容
二、地址解析----NS/NA
目标的被请求组播IP地址
邻居不可达性检测
重复地址检测
路由器发现
地址自动配置
默认路由器优先级和路由信息发现
重定向 前言 邻居发现协议NDPNeighbor Discovery Protocol是IPv6协议体系中一个重要的基础协议。邻居发现协议 替代了IPv4的ARPAddress Resolution Protocol和ICMP路由器发现Router Discovery它定义了使 用ICMPv6报文实现地址解析邻居不可达性检测重复地址检测路由器发现重定向以及ND代理等功能。 一、报文内容
NDP协议中一共有五种ICMPv6报文类型分别是RSRANSNA和Redirect报文
ICMPV6类型消息名称type133RS(Router Soliciation 路由器请求报文)type134RA(Router Advertisement 路由器公告报文)type135NS(Neighbor Solicitatio 邻居请求报文)type136NA(Neighbor Advertisement 邻居通告报文)type137Redirect重定向报文
NS和NA报文主要用于地址解析RA和RS报文主要用于无状态地址自动配置Redirect报文用于路由器重定向。
二、地址解析----NS/NA
在IPv4中当主机需要和目标主机通信时必须先通过ARP协议获得目的主机的链路层地址。在IPv6中同 样需要从IP地址解析到链路层地址的功能。邻居发现协议实现了这个功能。
ARP报文是直接封装在以太网报文中以太网协议类型为0x0806普遍观点认为ARP定位为第2.5层的协议。 NDP本身基于ICMPv6实现以太网协议类型为0x86DD即IPv6报文IPv6下一个报头字段值为58表示 ICMPv6报文由于NDP协议使用的所有报文均封装在ICMPv6报文中一般来说ND被看作第3层的协议 在三层完成地址解析。与IPv4的ARP相比IPv6地址解析技术工作在OSI参考模型的网络层与链路层协议无 关。
主要带来以下几个好处
地址解析在三层完成不同的二层介质可以采用相同的地址解析协议。可以使用三层的安全认证机制避免地址解析攻击----ARP攻击、ARP欺骗。使用组播方式发送请求报文减少了二层网络的性能压力-----二层网络会进行洪范而使用组播可以圈 定目标主机从而限定了报文传播范围节省网络带宽。
地址解析过程中使用了两种ICMPv6报文邻居请求报文NSNeighbor Solicitation和邻居通告报文NA Neighbor Advertisement。
NS报文Type字段值为135Code字段值为0在地址解析中的作用类似于IPv4中的ARP请求报文。NA报文Type字段值为136Code字段值为0在地址解析中的作用类似于IPv4中的ARP应答报文。 Host A在向Host B发送报文之前它必须要解析出Host B的链路层地址所以首先Host A会发送一个NS报文。
源IP地址为Host A的IPv6地址目的IP地址为Host B的被请求节点组播地址需要解析的目标IP为Host B的 IPv6地址这就表示Host A想要知道Host B的链路层地址。源MAC地址为节点A的MAC地址目标MAC是节点B的被请求节点组播MAC地址。同时需要指出的是在NS报文的Options字段中还携带了Host A的链路层地址。 目标的被请求组播IP地址
在IPv6组播地址中有一种特别的组播地址称为被请求节点组播地址Solicited-node Address。 被请求节点组播地址是一种具有特殊用途的地址主要用于重复地址检测和获取邻居节点的链路层地址时代替IPv4中使用的广播地址。
该地址是通过计算得出 被请求节点组播地址由前缀FF02::1:FF00::/104和单播地址的最后24位组成。对于节点或路由器的接口 上配置的每个单播和任播地址都自动启用一个对应的被请求节点组播地址。被请求节点组播地址使 用范围为链路本地。这里使用20001/64举例 最终20001的被请求组播IP地址为FF02::1:FF00::1/104。在例如如4037::01:800:200E:8C6C对应 于FF02::1:FF0E:8C6C。
组播IPv6报文的目的IP地址是组播IPv6地址而目的MAC地址则必须是组播MAC地址并且该地址必 须与组播IPv6地址对应。33-33是专门为IPv6组播预留的MAC地址前缀MAC地址的后32bit从对应的 组播IPv6地址的后32bit拷贝而来。
所以FF02::1:FF00::1/104的组播MAC地址为33-33-FF00-0001。
当Host B接收到了NS报文之后就会回应NA报文其中源地址为Host B的IPv6地址目的地址为Host A的 IPv6地址使用NS报文中的Host A的链路层地址进行单播Host B的链路层地址被放在Options字段中。 这样就完成了一个地址解析的过程。
值得注意的是因为IPV6地址这样的设定就导致可能出现IPV6网络中存在多个前缀不同但是后24位相同的 IPV6地址从而产生多个主机使用了一个组播MAC地址导致网络混乱所以在ICMPV6数据包中会携带 Target Address字段2000::2指示目标主机只有对应的主机会接收该请求其余主机会丢弃该数据包。 以上抓包采用以下环境完成 实际上这个过程大家也不用想的过于复杂只不过涉及到了一些地址的计算。
类比IPV4的PING
路由器 AR1需要构造 ICMP echo request 报文将PC1的IP地址 填入报文的目的 IP 地址字段。但在发送该 报文前 路由器 A 需要确认它已经掌握了以下 4 个信息
目的 MAC 地址源 MAC 地址源 IP 地址目的 IP 地址
在这 4 个信息中路由器 A 能轻松填上其中 3 个。
我们敲的命令是 “ping PC1” 所以路由器 A 知道报文应该填写的目的 IP 地址为 PC1的地址同时路由器 R1自身已知自己的源MAC地址和源IP地址。
IPV6的PING
IPv6 中的 Ping 和 IPv4 非常类似区别在于它使用的是 ICMPv6 echo request 报文。同样的为了让报文 能顺利发到目的地址 2001:DB8::AB:2, 路由器 A 同样需要以下 4 个信息
目的 MAC 地址源 MAC 地址源 IPv6 地址目的 IPv6 地址
和 IPv4 情形类似我们可以很轻松地得到上面 4 个信息中的 3 个。
源 MAC 地址源 IPv6 地址目的 IPv6 地址
现在我们同样只差一项了2000::2 对应的 MAC 地址。
那么现在轮到…额等等。我们不能使用 IPv4 网络中的 ARP 了。为什么呢因为 ARP 是广播而 IPv6 压 根没有广播那我们应该怎么做呢
根据前面所学我们知道了如果一个接口上配置了 2000::2/64 这样一个全球单播地址它会根据接口配置 的单播地址自己计算出一个对应的组播地址 FF02::1:FF00::2 并加入这个组播组。
那这个地址有什么作用呢
类似IPV4协议虽然R1并不知道PC1的MAC地址但它至少知道PC1一定会侦听一个 MAC 地址FF:FF-FFFF-FF-FF 这个广播地址。通过这个广播地址路由器 R1就能与PC1 搭上话询问 PC1对应的MAC 地址是多 少。事实上不止PC1会监听这个广播地址所有位于这个广播域的设备都会监听只不过只有PC1会回复。
而现在尽管在 IPv6 没有广播了但路由器 R1还是知道PC1 必然侦听的一个 MAC 地址33-33-FF-FF-00- 02—这个MAC地址是根据2000::2的组播地址FF02::1:FF00::2计算得出。
这下子路由器R1就能和 PC1 通信了它也就能获取到想要的单播地址对应的 MAC 地址了这也被称为 IPv6 的邻居发现(Neighbor Discovery)
邻居不可达性检测
通过邻居或到达邻居的通信会因各种原因而中断包括硬件故障等。如果目的地失效则恢复是不可能 的通信失败如果路径失效则恢复是可能的。 因此节点需要维护一张邻居表每个邻居都有相应的状 态状态之间可以迁移。
邻居状态有5种分别是未完成Incomplete、可达Reachable、陈旧Stale、延迟Delay、 探查Probe。 display ipv6 neighbors —查看IPV6邻居表
邻居状态迁移过程如下其中Empty表示邻居表项为空初始状态。 首先初始情况下Empty不是状态只是代表没有发送NS报文之前IPV6邻居为空当A节点发送NS报文之后自身会产生缓存消息状态变为Incomplete—表示未完成当A节点收到对方节点回复的NA报文并且信息验证无误后邻居状态由Incomplete变为Reachable 可达否则固定时间后邻居状态由Incomplete变为Stale陈旧—默认时间为30S经过30S邻居可达时间状态由Incomplete变为Stale意为未知目标是否可达 实际上stale状态是一个稳定状态就是不会自己改变因为正常情况下建立邻居后不会发送ICMP报 文也就不会发送NS所以实际上大部分的IPV6邻居都处于Stale状态。此时如果超过老化时间缺省 情况下是20分钟该表项没有被使用也进入到DELAY状态。如果在Reachable状态A收到B的非请求NA报文且报文中携带的B的链路层地址和表项中不同则邻 居状态马上变为Stale。在Stale状态若A要向B发送数据则邻居状态由Stale变为Delay并发送NS请求向邻居发送NS报文如果在指定时间内缺省情况下是5秒没有收到响应则进入PROBE状态若收 到NA应答则变为REACH状态。其间若有NA应答则邻居状态由Delay变为Reachable—默认时 间5S在Probe状态按照RA报文发布的时间间隔Retrans Timer或者主机配置值发送单播邻居请求报文 NS如果有应答则进入REACH状态。如果无应答则邻居状态变为Empty即删除表项。—时间间隔 默认3S。
重复地址检测
重复地址检测DADDuplicate Address Detect是在接口使用某个IPv6单播地址之前进行的主要是为了 探测是否有其它的节点使用了该地址。尤其是在地址自动配置的时候进行DAD检测是很必要的。 一个IPv6 单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址Tentative Address。此时该接口 不能使用这个试验地址进行单播通信但是仍然会加入两个组播组ALL-NODES组播组和试验地址所对应的 Solicited-Node组播组。
IPv6重复地址检测技术和IPv4中的免费ARP类似节点向试验地址所对应的Solicited-Node组播组发送NS报 文。NS报文中目标地址即为该试验地址。如果收到某个其他站点回应的NA报文就证明该地址已被网络上 使用节点将不能使用该试验地址通讯。 Host A的IPv6地址FC00::1为新配置地址即FC00::1为Host A的试验地址。Host A向FC00::1的SolicitedNode组播组发送一个以FC00::1为请求的目标地址的NS报文进行重复地址检测由于FC00::1并未正式指 定所以NS报文的源地址为未指定地址。当Host B收到该NS报文后有两种处理方法
如果Host B发现FC00::1是自身的一个试验地址则Host B放弃使用这个地址作为接口地址并且不会 发送NA报文。如果Host B发现FC00::1是一个已经正常使用的地址Host B会向FF02::1发送一个NA报文该消息中会 包含FC00::1。这样Host A收到这个消息后就会发现自身的试验地址是重复的。Host A上该试验地址 不生效被标识为duplicated状态。 从抓包结果来看第一个NS包请求的是本地链路地址R1路由器的0/0/0口除了自己配置的地址外还存在 一个本地链路地址这里R1上的本地链路地址为FE80::2E0:FCFF:FEF6:41EA本地链路地址对应的组播地址 为 FF02::1:FFF6:41EA这个数据包用来检测本地链路地址是否重复。也就是说实际上IPV6地址检测会检测接口配置的IPV6地址是否冲突同时也会检测本地链路地址是否会冲突。
https://support.huawei.com/enterprise/zh/doc/EDOC1100272823#ZH-CN_TOPIC_0000001467623457
路由器发现
路由器发现功能用来发现与本地链路相连的设备并获取与地址自动配置相关的前缀和其他配置参数。
在IPv6中IPv6地址可以支持无状态的自动配置即主机通过某种机制获取网络前缀信息然后主机自己生 成地址的接口标识部分。路由器发现功能是IPv6地址自动配置功能的基础主要通过以下两种报文实现
路由器通告RARouter Advertisement报文每台设备为了让二层网络上的主机和设备知道自己的 存在定时都会组播发送RA报文RA报文中会带有网络前缀信息及其他一些标志位信息。RA报文的 Type字段值为134。路由器请求RSRouter Solicitation报文很多情况下主机接入网络后希望尽快获取网络前缀进行通 信此时主机可以立刻发送RS报文网络上的设备将回应RA报文。RS报文的Type字段值为133。 地址自动配置
IPv4使用DHCP实现自动配置包括IP地址缺省网关等信息简化了网络管理。IPv6地址增长为128位且 终端节点多对于自动配置的要求更为迫切除保留了DHCPV6作为有状态自动配置外还增加了无状态自 动配置。无状态自动配置即自动生成链路本地地址主机根据RA报文的前缀信息自动配置全球单播地址 等并获得其他相关信息。 IPv6主机无状态自动配置过程
1. 根据接口标识产生链路本地地址。
接口激活IPV6服务后将根据自身的接口MAC地址生成本地链路地址。 2. 发出邻居请求进行重复地址检测。
3. 如地址冲突则停止自动配置需要手工配置。
4. 如不冲突链路本地地址生效节点具备本地链路通信能力。
5. 主机会发送RS报文或接收到设备定期发送的RA报文。
6. 根据RA报文中的前缀信息和接口标识得到IPv6地址。 同时值得注意的是上述所有报文均使用组播进行传递NS—邻居发现报文使用被请求链路组播地址 RS/RA使用FF02::1用于在本地链路范围的所有节点的请求。
配置命令
server端R1[Huawei]ipv6 —全局启动IPV6服务[Huawei-GigabitEthernet0/0/0]ipv6 enable —接口启动IPV6协议[Huawei-GigabitEthernet0/0/0]ipv6 address 2000::1 64—接口配置IPV6地址[Huawei-GigabitEthernet0/0/0]undo ipv6 nd ra halt —用来使能系统发布RA报文功能,重要配置 client端R2[Huawei]ipv6 —全局启动IPV6 [Huawei-GigabitEthernet0/0/0]ipv6 enable —接口启动IPV6服务[Huawei-GigabitEthernet0/0/0]ipv6 address auto global —接口无状态自动获取地址 默认路由器优先级和路由信息发现
当主机所在的链路中存在多个设备时主机需要根据报文的目的地址选择转发设备。在这种情况下设备通 过发布默认路由优先级和特定路由信息给主机提高主机根据不同的目的地选择合适的转发设备的能力。
在RA报文中定义了默认路由优先级和路由信息两个字段帮助主机在发送报文时选择合适的转发设备。
主机收到包含路由信息的RA报文后会更新自己的路由表。当主机向其他设备发送报文时通过查询该列表 的路由信息选择合适的路由发送报文。
主机收到包含默认设备优先级信息的RA报文后会更新自己的默认路由列表。当主机向其他设备发送报文 时如果没有路由可选则首先查询该列表然后选择本链路内优先级最高的设备发送报文如果该设备故 障主机根据优先级从高到低的顺序依次选择其他设备。 重定向
当网关设备发现报文从其它网关设备转发更好它就会发送重定向报文告知报文的发送者让报文发送者选择另一个网关设备。重定向报文也承载在ICMPv6报文中其Type字段值为137报文中会携带更好的路径下 一跳地址和需要重定向转发的报文的目的地址等信息。 Host A需要和Host B通信Host A的默认网关设备是Switch A当Host A发送报文给Host B时报文会被送到 Switch A。Switch A接收到Host A发送的报文以后会发现实际上Host A直接发送给Switch B更好它将发送 一个重定向报文给主机A其中报文中更好的路径下一跳地址为Switch BDestination Address为Host B。 Host A接收到了重定向报文之后会在默认路由表中添加一个主机路由以后发往Host B的报文就直接发送 给Switch B。
当设备收到一个报文后只有在如下情况下设备会向报文发送者发送重定向报文
报文的目的地址不是一个组播地址。报文并非通过路由转发给设备。经过路由计算后路由的下一跳出接口是接收报文的接口。设备发现报文的最佳下一跳IP地址和报文的源IP地址处于同一网段。设备检查报文的源地址发现自身的邻居表项中有用该地址作为全球单播地址或链路本地地址的邻居存 在。