1. IPv6动态路由与双栈网络工程导论

IPv6不再是“未来协议”,而是现网中与IPv4长期共存的第二套网络层。真正把IPv6用起来,难点往往不在地址格式,而在路由如何动态收敛与双栈如何协同转发。本课程围绕这两条主线展开:先建立IPv6动态路由的协议全景,再进入双栈网络工程的设计、部署与排障。

课程目标:从“会配地址”到“会跑路由”

学完本课程,你应当能够完成四类任务。第一,读懂并规划IPv6地址与路由表:理解128位地址、前缀长度、链路本地地址(fe80::/10)、全球单播地址(2000::/3)以及组播地址在路由协议中的作用。第二,选择并配置合适的动态路由协议:RIPng、OSPFv3、IS-IS for IPv6、BGP4+(MP-BGP)各自适合什么规模与拓扑。第三,设计双栈网络:在同一台设备、同一条链路上同时承载IPv4与IPv6,明确双栈、隧道、翻译三种共存策略的边界。第四,具备排障能力:能通过邻居表、链路状态数据库、路由表与抓包判断“为什么这条IPv6路由没起来”。

需要强调的是,IPv6动态路由不是把IPv4配置“翻译”一遍。协议报文、下一跳表达、链路本地地址的使用方式都发生了变化。例如OSPFv3不再在报文中携带IP前缀作为“地址”,而是用链路本地地址建立邻居、用独立的LSA承载前缀;BGP4+通过MP_REACH_NLRI属性携带IPv6前缀与下一跳。这些差异决定了配置与排障的观察点完全不同。

IPv6动态路由协议概览

按作用范围,IPv6动态路由可分为内部网关协议(IGP)与外部网关协议(EGP)。IGP负责域内可达性,常见有RIPng、OSPFv3、IS-IS;EGP负责域间策略与路径选择,即BGP4+。按算法,又可分为距离矢量(RIPng)、链路状态(OSPFv3、IS-IS)与路径矢量(BGP4+)。

协议类型/算法典型规模IPv6关键特征
RIPng距离矢量,UDP 521小型、教学以跳数为度量,最大15跳,配置简单
OSPFv3链路状态中大型企业基于链路本地地址建邻,LSA独立承载前缀
IS-IS链路状态大型/运营商通过TLV扩展支持IPv6,与IPv4共用拓扑
BGP4+路径矢量,TCP 179域间/大型域内MP-BGP承载IPv6 NLRI与下一跳

选择逻辑可以概括为:小型网络或实验环境用RIPng快速验证;企业园区与数据中心内部用OSPFv3或IS-IS;跨自治系统、多出口选路用BGP4+。若网络已运行IS-IS承载IPv4,扩展IPv6通常比新引入OSPFv3更平滑。

IPv6动态路由选型与双栈共存关系 IGP(域内可达性) RIPng · 距离矢量 · 小型 OSPFv3 · 链路状态 · 企业 IS-IS · 链路状态 · 大型 EGP(域间策略) BGP4+ · 路径矢量 MP-BGP · IPv6 NLRI TCP 179 · 策略选路 双栈转发核心 IPv4路由表 + IPv6路由表 同设备 / 同链路 / 独立协议栈 下一跳与邻居分别维护 三种共存策略的适用边界 双栈 Dual Stack 两端均支持v4/v6 原生转发,无封装开销 首选方案 隧道 Tunnel v6孤岛穿越v4骨干 6in4 / GRE / VXLAN 过渡期常用 翻译 Translation NAT64 / DNS64 v6访问v4资源 有状态转换,慎用

双栈网络工程的核心挑战

双栈不是“把两个协议栈打开”那么简单,工程上至少有五个高频难点。

第一,路由表与下一跳的独立性。IPv4和IPv6各自维护路由表、邻居表和下一跳。同一条物理链路,IPv4下一跳是192.0.2.2,IPv6下一跳可能是fe80::1(链路本地地址)。配置OSPFv3时,邻居关系建立在链路本地地址上,而不是全球单播地址。若只检查IPv4邻居,会误判IPv6邻居已建立。

第二,协议使能与接口状态。接口上必须显式开启IPv6(如ipv6 enable或配置地址),否则不会生成链路本地地址,OSPFv3、IS-IS、BGP4+都无法建邻。很多“IPv6路由不通”的根因就是接口未启用IPv6转发。

第三,MTU与分片。IPv6要求链路MTU不小于1280字节,且中间路由器不再分片,由源端做路径MTU发现。隧道封装会额外消耗20~60字节,若MTU未调整,会出现“小包通、大包断”的典型现象。

第四,双栈选路与DNS。终端同时拥有A记录和AAAA记录时,操作系统通常优先IPv6(RFC 6724)。若IPv6路径实际不可达,会出现连接超时而非快速回退。因此双栈部署必须保证IPv6路径真实可用,或通过DNS策略控制发布节奏。

第五,安全策略与ACL。IPv4 ACL不会自动覆盖IPv6。ICMPv6承担邻居发现、路径MTU发现等关键功能,若被整体阻断,邻居无法建立、大包无法通过。双栈环境需要为IPv6单独设计ACL与防火墙策略。

常见误区:认为“IPv4通了IPv6自然通”。实际上IPv6邻居发现依赖ICMPv6的NS/NA报文,若安全策略阻断ICMPv6,即使路由协议配置正确,数据面也无法转发。

典型应用场景

场景一:企业园区双栈改造。核心与汇聚层设备启用OSPFv3,接入层通过DHCPv6或SLAAC下发地址。IPv4继续运行OSPFv2,两套协议独立收敛。观察点是:show ipv6 route ospf是否出现预期前缀,show ipv6 ospf neighbor是否达到FULL状态。

场景二:数据中心BGP4+承载。Spine-Leaf架构中,Leaf与Spine之间用BGP4+交换IPv6前缀,通过MP_REACH_NLRI携带下一跳。观察点是show bgp ipv6 unicast summary的邻居状态与show bgp ipv6 unicast的前缀条目。

场景三:IPv6孤岛穿越IPv4骨干。两个IPv6站点之间通过GRE隧道互联,隧道两端配置IPv6地址,隧道内运行OSPFv3。此时隧道接口的MTU需下调(如1400),并确保底层IPv4路由可达。

场景四:NAT64实现IPv6访问IPv4。纯IPv6终端通过NAT64网关访问IPv4服务器,配合DNS64合成AAAA记录。观察点是NAT64会话表与DNS64合成结果是否匹配。

一个可执行的教学示例

假设两台路由器R1、R2通过GigabitEthernet0/0直连,计划用OSPFv3建立邻居并交换2001:db8:1::/64与2001:db8:2::/64。示例参数如下(属于教学假设,非实测结果):

R1:
interface GigabitEthernet0/0
 ipv6 address 2001:db8:12::1/64
 ipv6 ospf 1 area 0
!
router ospf 1
 router-id 1.1.1.1
!
R2:
interface GigabitEthernet0/0
 ipv6 address 2001:db8:12::2/64
 ipv6 ospf 1 area 0
!
router ospf 1
 router-id 2.2.2.2

配置完成后,先确认接口已生成链路本地地址:show ipv6 interface brief应显示fe80::开头的地址。再检查邻居:show ipv6 ospf neighbor应看到R2的Router ID且状态为FULL。最后检查路由:show ipv6 route ospf应出现对端网段。若邻居停留在INIT或EXSTART,优先检查链路本地地址是否可达、MTU是否一致、ICMPv6是否被阻断。

排障顺序建议:接口IPv6是否启用 → 链路本地地址是否生成 → 邻居状态是否FULL → 路由表是否出现前缀 → 数据面是否可ping通。逐层推进,避免跳步。

本课程后续将按“协议原理—配置实现—双栈设计—排障复盘”的节奏展开。你现在需要建立的认知是:IPv6动态路由是一套独立的控制面,双栈是一套需要协同的数据面。两者都理解清楚,才能在真实网络中把IPv6跑稳。