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更平滑。
双栈网络工程的核心挑战
双栈不是“把两个协议栈打开”那么简单,工程上至少有五个高频难点。
第一,路由表与下一跳的独立性。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与防火墙策略。
典型应用场景
场景一:企业园区双栈改造。核心与汇聚层设备启用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动态路由是一套独立的控制面,双栈是一套需要协同的数据面。两者都理解清楚,才能在真实网络中把IPv6跑稳。