14.IPv6专题

IPv6的地址分类

  • IPv6地址

    • image-20250304204101331

    • 前缀:标识地址属于哪个网络(网络部分)

    • 接口标识符:标识接口在网络中的具体位置(主机部分)

    • 前缀长度:确定哪一部分是前缀,哪一部分是接口标识符(子网掩码)

  • IPv6有单播地址,组播地址,任播地址,没有广播地址

    image-20250304205341889

  • 单播地址:

    • 唯一标识一个接口,只能分配给一个节点上的一个接口,发送到单播接口上的数据报文将被传送给此地址的接口

    • 根据作用范围不同

      • 链路本地地址

        • FE80::/10:用于链路本地节点之间的通信

        • ipv6中路由器为边界的一个或多个局域网段称为链路;使用其作为目的地址的数据不会被转发到其他链路上;

        • 由 MAC 地址使用 EUI-64 算法计算出接口标识符自动产生,链路本地地址的范围是 FE80~FEBF。

      • 站点本地地址

        • FECO::/10:站点本地地址,私有地址;使用其作为 目的地址的数据报文不会被转发到本站点外的其他站点

      • 全球单播地址

        • 2000::/3:全球单播地址公网地址,IANA(地址分配机构)统一分配,地址范围是 2000-3FFF

      • 特殊地址

        • ::/128:未指定地址 (不分配给任何节点,不能作为目的地址)

        • ::1/128:本地环回地址(不能分配给任何物理接口,类似127.0.0.1)

  • 组播地址:

    • 用来标识一组接口,多个接口可配置相同的组播地址,发送到组播地址的数据报文传送给此地址所标识的所有接口

    • 组播地址范围:FF00::/8,前4比特为fag位,前3比特固定为0,第4比特为1表示临时组播地址,为0表示永久组播地址,后4比特为范围位,表示组播地址的作用范围。

    • FF02::1:链路本地范围所有节点组播地址;FF02::2:链路本地范围所有路由器组播地址

    • 被请求节点(Solicited-node)地址,用于获取同一链路上邻居节点的链路层地址及实现重复地址检测;FF02:0:0:0:0:1:FFXX:XXXX;104位固定格式;

  • 任播地址:

    • 也用来标识一组接口,但是发送区别于组播地址,发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近的一个接口,用于寻找最近的下一跳;

    • 跟单播地址没有区别,从单播地址中分配的,使用单播地址格式;必须在配置时指明它是一个任播地址;即可以将一个单播地址指定为任播地址;

    • 通常应用于服务的负载均衡、任播地址设计用来在给多个主机或者节点提供相同服务时提供冗余功能和负载分担功能。

  • IPv6地址分类有哪些?

    • 单播,组播,任播

链路本地地址的作用

  • 每个开启了IPv6 的接口都会自动产生一个链路本地地址。链路本地地址仅用于同一条链路内部通讯

  • 由 FE80::/10 结合 EUI-64 的接口标识符自动形成的,也可以手工指定,手工指定的前缀要固定为FE80::/10

  • 由于一个接口下可以同时配置多个IPv6 地址,如果运行路由协议时,传出的路由可能会产生多个下一跳。路由协议基于链路本地地址完成邻居的发现和建立所以 IPv6 中的路由协议通告的路由信息的下一跳一般都是链路本地地址,这样比较统一,而且当接口的IPv6 地址变更了,由于链路本地地址不变,所以路由也无需变动,链路本地地址也可以用于IPv6 地址的无状态自动配置和 IPv6 的邻居发现协议。

  • 在 DHCPV6 的场景中,也通过链路本地地址完成 DHCPv6 地址的动态获取

  • 链路本地在存在VRRPv3的场景,需要将虚拟网关IPv6地址设置为链路本地地址,由链路本地地址充当主机网关(不是用撇嘴的ipv6地址)

EUI-64是怎么生成地址的

什么是EUI-64:设备根据MAC地址自动生成接口标识符

  • 1.把接口 48 比特的 MAC 地址转换为二进制表示

  • 2.将 48 比特的 MAC 地址前后各 24 比特对半分开,然后在中间插入 16 比特的FFFE、即二进制的 1111111111111110,使整个地址变成8段

  • 3.设置 U/L位、把首个字节的第7比特取反,通常设置为 1

    • 之所以需要把第 7比特取反的主要原肉是在单播 MAC 中第7 比特的 U/L位和 EU1-64 中第7比特,U/L位的含义相反,在单播 MAC 中第7比特位为0 表示 U,而在 EU164 的第7比特位为1才表示 U。

    • MAC地址的第一个字节第7比特和第八比特的含义:

      • 第7比特标识:全局/本地

      • 第八比特标识:单播/组播

  • 4.把地址转换回十六进制,每4位十六进制数字合并为一段,就得到了4段的十六进制接口标识符

  • 5.最终形成 64比特的EUI-64 接口标识符

  • 串行接口如何形成EUI-64?(接口无MAC地址的情况)

    • 思科设备取设备第一个以太网接口的MAC 进行EUI-64 的转换和形成,会导致一个设备可能有多个接口的EUI-64 接口标识一样,但是因为链路本地地址只在本地链路有效,所以不会产生冲突。

    • 而华三设备串行接口的TEEE EUI-64格式的接口标识符由设备随机生成。

  • image-20250304210216662

ICMPv6 报文类型

img

  • RS(路由器请求):

    • Type=133;组播发送,组播地址FF02::2;只有路由器监听该地址

    • 一般用于无状态地址自动配置中 PC 向路由器发起前缀查询请求

  • RS(路由器公告):

    • Type=134;组播发送,组播地址FF02::1;

    • 一般用于无状态地址自动配置中路由器通告前缀和前缀长度;源为该接口的链路本地地址,目标为组播地址 FF02::1

    • 华三和华为设备默认抑制 RA 报文的通告,需要在路由器的接口上使用命令 undo ipv6 nd ra halt 来激活接口周期发送 RA 报文,RA 报文中包含路由器优先级接口的前缀信息、MTU、接口的 MAC 地址

      • 路由器优先级用于在存在多个网关的场景,并且没有应用 VRRPv3 的场景通过路由器优先级来设置主网关,路由器优先级有 high、low、medium,默认为 medium,同等条件下,优选路由器优先级大的设备为主网关可以通过在接口视图使用命令ipv6 nd router-preference xxx 来设置该接口的路由器优先级。(都一样就随机)

      • 如果存在 VRRPV3 的场景,则选择 Master 设备作为主网关,此时与路由器优先级无关,并且IPv6 的 VRRP 虚拟 IPv6 地址需要设置为链路本地地址

  • NS(邻居请求):

    • Type=135,

    • 一般用于解析 MAC 地址请求,建立 ND 邻居,目的地址为被请求节点组播地址,地址为FF02::1:FF00:/104 目的主机的接口标识符,该组播只有目的主机会监听和响应

  • NA报文(邻居公告):

    • Type=136

    • 般用于应答本机 MAC 地址,响应 ND 邻居建立,单播发送

  • Redirect报文:路由器重定向,Type=137

IPv6 邻居发现协议的功能,即IPV6 ND 的功能

  • IPv6的ND协议实现了IPv4中的一些协议功能,如ARP,ICMP路由器发现和ICMP重定向等,并对这些功能进行了改进;同时,ND协议还提供了其他许多非常重要的功能,如前缀发现,邻居不可达检测,重复地址检测,无状态地址自动配置等;ND称为邻居发现协议;通过ICMPv6,类型133,134,135,136和137来定义的(本质)

    image-20250305105429762

    • 地址解析:已知目的节点的网络层地址,确定链路层地址的方法。ND中的地址解析功能不仅替代了原IPv4中的 ARP 协议,同时还用邻居不可达检测(NUD)来维护邻居节点之间的可达性状态信息。

    • 邻居不可达检测:在获取到邻居节点的链路层地址后,通过发送消息来验证邻居节点是否可达。

    • 重复地址检测(DAD):根据前缀信息生成IPv6 地址或手工配置IPv6 地址后,为保证地址的唯一性,在这个地址可以使用之前IPv6地址是否已经被链路上其他节点所使用

    • 无状态地址自动配置,无状态地址自动配置指主机根据路由器发现/前缀发现所获取的信息,自动配置IPv6地址。包括路由器发现/前缀发现、接口ID 自动生成、重复地址检测等过程。通过无状态自动配置机制,链路上的节点可以自动获得IPv6 全球单播地址。

    • 路由器重定向:当主机启动时,它的路由表中可能只有一条到缺省网关的缺省路由,当在本地链路上存在一个到达目的网络的更好的路由器时,缺省网关会向源主机发送ICMPv6重定向消息,通知主机选择更好的下一跳进行后续报文的发送

IPv6的邻居可达性状态机包含哪些

  • 邻居可达性状态机保存在邻居缓存表中,共有五种:

    • INCOMPLETE(未完成)状态:

      • 正在解析地址,第一次发出了NS请求,还未收到NA应答,邻居的链路层地址尚未确定

      • 当节点第一次发送NS 报文到邻节点时,会同时在邻居缓存表中创建一个到此邻节点的新表项,此时表项状态就是 INCOMPLETE。

    • REACHABLE(可达)状态:

      • 地址解析成功,收到了对方的NA应答,形成了完整的邻居关系

      • 伴随有Reachable_time定时器,超时后转化到Stale状态

    • STALE(失效)状态:

      • 表示未确定邻居是否可达。STALE 状态是一个稳定的状态。--地址解析结果未得到证实

      • 邻居记录老化时间到期,邻居状态变为STALE

      • 在Reachable状态下,收到了未经请求的该IP地址的NA应答,且MAC地址与表中不同,状态会变为Stale

    • DELAY(延迟)状态:

      • 表示未确定邻居是否可达。

      • DELAY 状态也不是一个稳定的状态,而是一个延时等待状态。DELAY 状态下,节点需要收到“可达性证实信息"后,才能进入 REACHABLE 状态。

      • 在Stale状态下,有数据要发往对方时,会向对方发出NS请求,同时状态变为Delay

    • PROBE(探测)状态:

      • 同样表示未确定邻居是否可达。节点会向处于 PROBE状态的邻居持续发送 NS 报文,直到接收到“可达性证实信息"后,才能进入可达状态。

    • 可达性证实的消息来源:

      • 来自上层连接协议的暗示:邻节点之间有TCP连接,且收到了对端节点发出的确认消息则表明邻节点之间可达

      • 来自不可达探测回应:节点发送NS报文后,收到邻节点响应NA报文,认为邻节点可达

IPv6 ND邻居建立过程

image-20250305110755839

img

  • 发起邻居请求(NS)

    • 当节点 A 想要与同一链路上的节点 B 建立邻居关系并进行通信时,A 首先需要知道 B 的链路层地址。A 会在其邻居表中为 B 创建一个缓存条目,并将 B 的邻居状态设置为 “Incomplete(未完成)”。

    • 然后A 构造并发送一个NS报文。NS 报文的目的地址为被请求节点组播地址(FF02::1:FF00:/104 加上 B 的接口标识符),源地址为 A 自己的链路本地地址。报文中包含目标节点 B 的 IPv6 地址,用于请求 B 的链路层地址。

  • 接收邻居请求并回应(B 节点操作)

    • 节点 B 接收到 A 发送的 NS 报文后,B 会在自己的邻居表中为 A 创建一个缓存条目,并将 A 的邻居状态设置为 “Stale”。

    • B 会构造并发送一个NA报文作为对 A 的 NS 报文的回应。NA 报文的目的地址为 A 的链路本地地址(单播),源地址为 B 自己的链路本地地址。报文中包含 B 的链路层地址信息,以及其他可能的标志位等信息,用于告知 A 自己的链路层地址。

    • 发送完 NA 报文后,B 将 A 的邻居状态设置为 “Delay”,在这个状态下,B 等待来自 A 的 “可达性证实信息”,以确认 A 确实能够与自己通信。

  • 处理邻居通告(A 节点操作)

    • 节点 A 收到 B 发送的 NA 报文后,A 会检查报文中的信息。如果一切正常,A 将 B 的邻居状态从 “Incomplete” 变为 “Reachable”,表示 A 现在可以与 B 进行正常通信,并记录 B 的链路层地址。此时 A 可以发送 Echo request 等报文开始通信。

    • 如果 A 没有在规定时间内收到 B 的 NA 报文,A 的邻居表中 B 的邻居状态会在固定时间后从 “Incomplete” 变为 “Empty(空)”,A 会删除该邻居表项。

  • 可达性确认及后续状态变化(B 节点操作)

    • 在 “Delay” 状态下,由于节点之间没有 TCP 连接,B 如果没有收到 “可达性证实信息”(例如 A 发送的正常数据报文等),经过一段时间后,B 会将 A 的邻居状态从 “Delay” 变为 “Probe”。

    • 在 “Probe” 状态下,B 会每隔一定时间间隔发送单播的 NS 报文给 A,以探测 A 是否仍然可达。如果 B 在发送固定次数的 NS 报文后收到了 A 的 NA 应答,B 将 A 的邻居状态变为 “Reachable”;如果没有收到应答,B 会将 A 的邻居状态变为 “Empty” 并删除该邻居表项。

  • 可达状态的维护与超时

    • 无论是 A 还是 B,在邻居状态为 “Reachable” 时,如果长时间不再发送报文(即经过邻居可达时间,Reachable_time),对方的邻居状态会进入 “Stale” 状态,表示不确定对方是否仍然可达。

    • 在 “Stale” 状态下,如果节点要向处于 “Stale” 状态的邻居发送数据,则将邻居状态由 “Stale” 变为 “Delay”,并发送 NS 请求。如果在 “Delay” 状态期间收到对方的 NA 应答,则邻居状态变为 “Reachable”;如果经过固定时间后没有收到应答,邻居状态变为 “Probe”,然后按照 “Probe” 状态的处理方式继续进行。

IPv6地址无状态自动配置过程

image-20250305110822278

(最好不要说冲突检测的过程)

ND协议在节点间交互RS和RA报文实现

  • 1.生成链路本地地址:

    • 主机首先会根据自身接口标识符,按照特定规则自动产生链路本地地址。链路本地地址用于在本地链路范围内进行通信。

  • 2.重复地址检测:

    • 主机发出邻居请求报文,在本地链路范围内进行重复地址检测。

    • 如果在重复地址检测过程中发现地址冲突,主机将停止自动配置过程,需要通过手工配置的方式来设置合适的地址。

    • 若重复地址检测结果显示地址不冲突,那么生成的链路本地地址将生效,此时节点也就具备了本地链路通信的能力

  • 3.PC发出路由器请求报文/主机接收到路由器定期发送的 RA报文

    • PCA会以自己的本地链路地址作为源地址,发送 RS (路由请求)报文。主动向路由器请求获取前缀信息;这个 RS 报文会被发送到所有路由器的组播地址 FF02::2。

    • 或者主机接收到路由器定期发送的 RA报文

  • 4.路由器回复路由器通告报文:

    • 当路由器 RTA 接收到PCA 发送的 RS 报文后,会进行响应。

    • 路由器 RTA 会用它自身的链路本地地址作为源地址,发送 RA 报文。这个 RA 报文会被发送到所在节点的组播地址 FF02::1。

    • 在 RA 报文中,携带了路由器自身的前缀和前缀长度等地址配置信息,以便让请求的主机获取到这些关键信息。

  • 5.主机生成全球唯一单播地址:

    • 主机根据接收到的 RA 报文中的前缀信息,以及通过 EUI-64 规范生成的接口标识符,经过计算组合得到 IPv6 全球单播地址。

    • 同时,在这个过程中,主机 A 还会配置其他相关的网络参数,以确保网络连接的正常运行。

  • 成功实现 IPv6 地址无状态自动配置的条件

    • 路由器要开启IPv6 功能(华三设备默认开启,思科和华为默认关闭)

    • 路由器的接口地址前缀的掩码只能为/64

    • 路由器的接口要能周期发送 RA 报文,需要通过命令手工激活周期发送 RA报文

      • undo ipv6 nd ra halt

IPv6 如何完成 MAC 地址的解析

image-20250305110852747

  • 假设存在主机 A,其 IPv6 地址为 2021::1234:5678/64,想要访问主机 B,主机 B 的 IPv6 地址是 2021::8765:4321/64

  • 主机 A 发送邻居请求(NS)报文:

    • 源IPv6地址/目的IPv6地址/源MAC地址/目的MAC地址

    • 目的ipv6地址:是B节点的组播地址FF02::1:FF65:4321被请求节点组播地址是根据目标单播地址的后 24 位生成的。好处是,主机想要解析某个 IPv6 地址的链路层地址时,可以向这个组播地址发送请求,而不必向所有节点广播

    • 目标 MAC 地址:目标 MAC 地址是被请求节点映射出来的组播 IPv6 MAC 地址 33:33:FF:65:43:21。IPv6 规定,组播 IPv6 地址到 MAC 地址的映射有特定规则,对于被请求节点组播地址,其对应的 MAC 地址前 2 个字节固定为 33:33,后面是 IPv6 地址的后 32 位转换而来。

    • NS 报文内容:NS 报文中包含了本地要解析的 Target Address(这里就是主机 B 的 IPv6 地址 2021::8765:4321)。这个 Target Address 告诉接收方,主机 A 想要解析哪个 IPv6 地址对应的链路层地址。

  • 主机 B 处理邻居请求(NS)报文:

    • 判断是否接收 NS 报文:

      • 主机 B 收到组播的 NS 报文后,会根据接口的 Joined group address(es)(即接口加入的组播组地址列表)来判断是否接收并处理该 NS 报文。

      • 如果该 NS 报文的目标组播 IPv6 地址(FF02::1:FF65:4321)与本地接口加入的某个组播组地址一致,那么主机 B 就会接收这个 NS 报文;

      • 如果不一致,主机 B 就不会进一步处理该 NS 报文

    • 判断是否回应 NA 报文:

      • 当主机 B 接收了 NS 报文后,会再根据 NS 报文中的 Target Address(主机 B 的 IPv6 地址 2021::8765:4321)来判断是否要进行回应。

      • 如果 Target Address 与接收 NS 报文的主机 B 的 IPv6 地址一致,说明主机 A 要解析的就是主机 B 的链路层地址,那么主机 B 就会以单播方式回应邻居通告(NA)报文;

      • 如果 Target Address 与接收 NS 报文的 IPv6 地址不一致,主机 B 也不会进行回应

IPv6过度技术有哪些

  • 双栈技术:

    • 网络中所有节点同时运行IPv4 和 IPv6,主机通过 DNS 解析的结果来判断是通过IPv4还是IPv6来访问目标网络

    • 优点是实现简单,互通性好,且允许应用逐渐从IPv4过度

    • 缺点是成本大,部署周期比较长,不能解决IPv4地址紧缺的问题

  • 隧道技术:

    • 通过在IPv6报文外封装IPv4头部,使用IPv6报文可以穿越IPv4网络,是目前IPv6过度技术最常用的方案

    • GRE隧道,内层用IPv6封装承载用户IPv6数据,外层加上一个GRE头部,然后GRE隧道套上一个公网的IPv4头部;封装格式ipv4:gre:ipv6:data通过ipv4网络结合GRE来承载IPv6数据,需要手工指定隧道的源和目标,也称为手工隧道

      image-20250305110930193

    • 6to4隧道,使用固定的6to4地址格式,隧道自动完成封装,使用简单,使用前固定前缀2002::/16,需要手动将IPv4地址转换成十六进制,嵌入到IPv6的路由下一跳中,6to4隧道也属于自动隧道技术,即只指定隧道的源,没有指定隧道的目标。

      image-20250305110958557

    • 6to4 中继:普通 IPv6 网络需要与 6to4 网络通过 IPv4 网络互通,这可以通过 6to4 中继路由器方式实现。所谓 6to4 中继,就是通过 6to4 隧道转发的IPv6 报文的目的地址不是 6to4 地址,但转发的下一跳是 6to4 地址,该下一跳为路由器我们称为6to4中继;隧道的ipv4目的地址依然从下一跳6to4地址获得

      image-20250305111026960

    • ISATAP 隧道:建文在主机和路由器之间的隧道,需要在主机端发起连接请求,适用于单机穿越IPv4 访问 IPv6 网络,可以使用任意前缀,结合固定的0000:5EFE可以自动将IPv4地址进行转换成IPv6前缀信息;ISATP也是属于自动隧道技术

    • ISATAP 地址接口标识格式

      image-20250305111040519

    • ISATAP 应用场景

      image-20250305111103167

    • 6PE隧道,利用现有的IPv4 MPLS网络进行的隧道传输,需要结合BGP为BGP条目分配公网标签来实现站点间IPv6业务可达,数据在传输过程中只有一个标签

      image-20250305111145351

    • 6VPE 隧道,利用现有的 IPv4 网络,架设 IPv6 的 MPLS VPN,采用多层标签来实现不同 IPv6 站点的业务可达。

      image-20250305111207288

    • NAT-PT使用地址和协议转换技术对IPv4和 IPv6 协议进行互相转换。与 NAT原理类似,也分为静态NAT-PT动态 NAT-PT,NATPT-PT.

6to4隧道地址的计算方式

  • 地址格式为 2002.ABCD:EFGH 子网号::/64

  • ARCDEFGH 的计算方式

    • 把本网络出口的IPv4地址转换为十六进制表示

    • 每段填充至少2位十六进制数字,不足2位的在前面加0

    • 每段填充至2位十六进制数字,不足2位的在前面加0

    • 每两段合并一段,就得出了 ABCD:EFGH 两段十六进制的地址子网号是用于在本网络内部给不同网段分配 6to4 地址

6to4 隧道的工作原理

  • IP6 报文到达 IPv4 出口路由器,匹配到 IPv6 路由把报文发往 Tunnel 口

  • Tunnel口根据报文的源目6to4地址中的第二段和第三段还原出源目IPv4地址,然后再IPv6头部前封装 IPv4 头部,源目 |P 就是还原出来的 IPv4地址

  • 报文在 IPv4 网络中传输到对端的IPv4 出自路由器,解除掉IPv4 头部后,还原成 IPV6 报文,再查询 IPv6路由表后转发至相应的主机

IPv6 路由头部字段:

在 IPv6 网络中,路由头部有着特殊的作用,它实现的效果类似于 IPv4 可选字段中的松散路由和严格路由,主要用于指示数据包在网络中的转发路径,从而让发送方能够对数据报文的传输路径进行控制。

  1. 路由头部字段的构成与含义

    • 路由头部字段(Routing Header)包含了多种重要信息。其中有一个 8 位的路由类型标识符,用于标识不同类型的路由头部。目前存在两种类型,分别是已被弃用的 RH0(其路由类型标识符为 0)和常用的 RH2(其路由类型标识符为 2)。

    • 还有一个 8 位的剩余部分字段,这个字段非常关键,它表示在数据包到达目的地之前,还需要经过的中间节点数量,也就是还有多少段路由需要处理。此外,路由头部还包含保留位以及若干个 IP 地址。

  2. 路由头部在转发过程中的处理机制

    • 在 IPv6 网络中,路由头部在数据包转发过程中,中间节点不会对其进行处理,一直到数据包到达目的地址时才会进行相应操作。当到达目的地址后,剩余部分字段就会被用来确定下一跳地址。具体来说,会从地址向量中取出下一跳地址,并将这个地址与 IPv6 头部中的目的 IP 地址进行交换。随着数据包不断转发,剩余部分字段的数值会越来越小,因为每经过一个节点,需要经过的剩余节点数就会减少,同时头部中的地址列表会实时反映转发数据报所经过的节点地址。

  3. 举例说明:

    image-20250305111321007

  • S为发送方,R1,R2,R3,R4为4台路由器D为目的地址网络连接如图:

    image-20250305111358874

    • 假设源节点 S 要发送报文到目的节点 D,并且要求报文必须依次经过中间节点 R2、R3、R4 后才能到达 D。在这种情况下,S 发送的报文的目的 IP 会被设置为 R2(因为第一步要先到达 R2),而路由头部的剩余部分字段会包含 R3、R4 和目标地址 D,这里一共有 3 个地址,也就意味着剩下还需要经过的节点有 R3、R4 和 D。

    • 当数据报文到达节点 R1 时,由于路由头部字段中没有 R1 的相关信息,所以 R1 不会对该报文做任何与路由头部相关的处理,而是直接将报文发送至 R2。

    • R2 收到报文后,发现自己是当前报文的目的地址,于是它会进行一个操作:把路由头部中剩余部分的第一个 IP 地址(也就是 R3)和 IPv6 头部的目的 IP(此时是 R2)做调换。经过调换后,该数据报文的目的 IP 变为了 R3,而路由头部中的 IP 地址变成了 R2、R4、D,然后 R2 把报文发送至 R3。

    • 同理,当 R3 收到数据报文后,发现自己是当前的目的地址,因为 R3 能感知到自己是指定路径中的第二跳(根据剩余部分字段中地址的顺序和剩余部分字段的值来判断),所以它会把头部中剩余部分的第二个 IP 地址(也就是 R4)和目的 IP(此时是 R3)做调换。这样一来,该数据报文的目的 IP 变为了 R4,而路由头部中的 IP 地址变成了 R2、R3、D,然后 R3 把报文发送至 R4。

    • R4 收到报文后,会继续按照同样的方法,将剩余部分的第三个 IP(也就是 D)与目的 IP 进行变换,然后将报文转发至 D。至此,数据报文成功地按照预先要求的路径到达了目的地

  • SR-MPLS转发特点:边转发边弹标签

  • SRv6转发特点:边转发边更改目标IPv6地址

IPv6 的 MTU与IPv4 相比有什么区别?

  • 分片机制

    • 在 IPv4 中,报文如果过大,必须要分片进行发送,所以在每个节点发送报文之前,设备都会根据发送接口的最大传输单元MTU(Maximum Transmission Unit)来对报文进行分片,所以对于IPv4来说可能需要在发送数据过程中,在中间的节点进行多次的分片,严重影响数据的转发效率。

    • 在 IPv6 中,为了减少中间转发设备的处理压力,中间转发设备不对IPv6 报文进行分片,报文的分片将在源节点进行。当中间转发设备的接口收到一个报文后,如果发现报文长度比转发接口的MTU值大,则会将其丢弃;同时将转发接口的 MTU 值通过 ICMRv6 报文的 Pecket Too Big 消息发给源端主机,源端主机以该值重新发送IPv6 报文。这样带来了额外流量开销、而 IPv6 通过 PMTU 机制可以确保只在发送数据的源端进行分片,在目标设备进行重组,可以极大的提高数据的装发效率

  • PMTU机制

    • 源节点在发送数据时,首先假设路径最大传输单元(PMTU)就是其出接口的 MTU 值,并基于这个假设发出一个试探性的报文。

    • 在报文转发的路径上,如果存在某个转发设备的接口 MTU 值小于源节点当前假设的 MTU 值,那么这个转发设备就会向源节点发送 Packet Too Big 报文。这个报文中会携带该转发设备接口自身的 MTU 值。

    • 源节点收到 Packet Too Big 报文后,会将自己对 PMTU 的假设值更新为新收到的 MTU 值,然后根据这个新的 MTU 值重新对报文进行处理并再次发送。

    • 重复上述过程,源节点不断根据收到的 Packet Too Big 报文中的 MTU 值调整自己对 PMTU 的假设,并重新发送报文。如此反复,直到报文成功到达目的地。当报文到达目的地后,源节点就能够确定到达该目的地的实际 PMTU 值了。通过这种方式,源节点可以动态地适应网络路径上不同的 MTU 限制,避免了在中间节点进行分片的情况,提高了数据传输的效率。

    image-20250305111420052

IPv6 的逐跳选项扩展头部

  • 在 IPV6 中,某些功能需要沿途的所有路由器都支持,该功能就要通过逐跳选项的扩展头部来完成

  • 目前 IPV6只定义了一个逐跳选项:巨型净荷选项,意思是对大型数据包的封装支持,如果希重实现从源到目的能够顺利的传输一个巨型报文,就会通过巨型净荷的逐跳选项,来描述该巨型净荷的长度。

  • 只有沿途每个路由器都能够处理该逐跳选项时,路由器才能使用巨型净荷选项来发送大型 IP 包。因此,该选项在逐跳扩展头中使用,要求沿途的每个路由器都必须检查此信息

  • 如果沿途的路电器不能识别该逐跳选项时,可以采取下面四中处理方式:

    • 忽略此选项

    • 完成对扩展头部2其余部分的处理

    • 丢弃整个包

    • 丢弃包,并向源发送一个ICMPv6 报文来通告错误

ospfv3 的 router-id 可以自动生成吗

(H3C通常需要手工设置)

  • 如果当前设备存在活跃的IPv4 地址,则 OSPFv3 会自动生成 router-id。

  • 如果当前设备未存在获取的 IPv4 地址,则需要手工设置 OSPFv3 的 router-id

常见的 IPv6 扩展报头有哪些

  • 逐跳选项报头:

    • 该选项主要用于为在传送路径上的每跳转发指定发送参数,传送路径上的每台中间节点都要读取并处理该字段,主要用于巨型载荐、设备提示和用于资源预留。

  • 目的选项报头:

    • 目的选项报头携带了一些只有目的节点才会处理的信息。目前目的选项报文头主要应用于移动 IPv6。

  • 路由报头:

    • 路由报头和 IPv4的 Loose Source and Record Route 选项类似,该报头能够被 IPv6 源节点用来强制数据包经过特定的设备。

  • 分段报头:

    • 同IPv4一样,IPV6 报文发送也受到 MTU 的限制。当报文长度超过MTU时就需要将报文分段发送,而在IPv6单,分段发送使用的是分段报头。

  • 认证报头:

    • 该报头由 IPSec 使用,提供认证、数据完整性以及重放保护。它还对IPv6 基本报头中的一些字段进行保护

  • 封装安全净载报头:

    • 该报头由IPSec使用,提供认证、数据完整性以及重放保护和 IPv6 数据报的保密,类似于认证报头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值