5. 三层交换、SVI 与跨 VLAN 路由
概念: 交换口(switchport)只做二层;路由口(routed port)有自己的 IP、不属任何 VLAN;SVI 是 VLAN 的三层接口——Cisco interface Vlan10,华为 Vlanif10,H3C Vlan-interface10。
为什么需要: 两个 VLAN 的广播域不相通。要互访,得有人做网关:早期用路由器子接口(单臂路由 / ROAS),现在用汇聚/核心上的 SVI,或把接入口本身改成路由口。
Cisco 三层交换机要先 ip routing,SVI 才会真正转发。华为/H3C 三层机默认就转。SVI up 的条件:该 VLAN 里至少有一个二层口 up(或有 trunk 允许该 VLAN)——空 VLAN 的 SVI 会协议 down,HSRP/OSPF 跟着没。
示例 · SVI 网关(左)与路由口(右思路相同)
Cisco IOS
华为 VRP
H3C Comware
! 示例:汇聚上的 SVI。单臂在路由器上用 Gi0/0.10
ip routing
interface Vlan10
ip address 10.10.10.2 255.255.255.0
no shutdown
interface Vlan20
ip address 10.10.20.2 255.255.255.0
interface GigabitEthernet1/0/1
no switchport
ip address 10.0.0.1 255.255.255.252
! 单臂(路由器):
! interface Gi0/0.10
! encapsulation dot1Q 10
! ip address 10.10.10.1 255.255.255.0
# 示例:Vlanif = SVI;undo portswitch = 路由口
interface Vlanif10
ip address 10.10.10.2 255.255.255.0
interface Vlanif20
ip address 10.10.20.2 255.255.255.0
interface GigabitEthernet0/0/1
undo portswitch
ip address 10.0.0.1 255.255.255.252
# 示例:Vlan-interface;port link-mode route
interface Vlan-interface10
ip address 10.10.10.2 255.255.255.0
interface Vlan-interface20
ip address 10.10.20.2 255.255.255.0
interface GigabitEthernet1/0/1
port link-mode route
ip address 10.0.0.1 255.255.255.252
设计权衡: 单臂把所有跨 VLAN 流量挤过一条链路,还把路由器变成 STP 拓扑的一部分(子接口侧)。SVI 把网关放进交换机 ASIC,但 VLAN 仍然跨盒时,FHRP + STP 根必须对齐(见 §8)。路由接入把 L3 边界下沉,换来的是每台接入都要跑 IGP、地址规划更碎、故障域更小。
6. 静态路由、默认路由、浮动静态
概念: 管理员写下「去某前缀,下一跳 / 出接口」。默认路由是前缀 0.0.0.0/0。浮动静态把同一前缀再写一条、故意给更差的管理距离,主路消失才装进 RIB。
为什么需要: 末梢、 stub、拨号备份、以及「IGP 死了也要有一条逃生默认」。动态协议覆盖不了的特例也用静态钉死。
转发顺序 · 先前缀后距离
查表永远是最长前缀匹配 ,不是「OSPF 一定赢 RIP」。 10.1.1.0/24 的 OSPF(AD 110)打不赢 10.1.1.0/26 的 RIP(AD 120)。只有前缀长度相同 才比管理距离;AD 再相同才比度量。华为/H3C 把 AD 叫做 preference,默认值与 Cisco 不同 。
读这张表时记住:Cisco 上 eBGP(20)完胜 OSPF(110);华为上 OSPF(10)完胜静态(60),eBGP 与 iBGP 默认都是 255,要靠策略而不是距离压过 IGP。浮动静态在 Cisco 常写成 AD 200+;在华为要写成 preference 80 这类比主路差、比「没有」好 的值——主路若是 OSPF(10),浮动静态用 80 即可,写成 200 也行。
示例 · 默认 + 浮动备份
Cisco IOS
华为 VRP
H3C Comware
! 示例:主默认走 192.0.2.1;备份 AD 200
ip route 0.0.0.0 0.0.0.0 192.0.2.1
ip route 0.0.0.0 0.0.0.0 198.51.100.1 200
ip route 10.2.0.0 255.255.255.0 10.1.1.2
! 出接口型静态在以太网上下一跳务必写 IP,
! 只写出接口会把下一跳当直连去 ARP
# 示例:preference 越大越差。主 60,备 80
ip route-static 0.0.0.0 0.0.0.0 192.0.2.1
ip route-static 0.0.0.0 0.0.0.0 198.51.100.1 preference 80
ip route-static 10.2.0.0 255.255.255.0 10.1.1.2
# 示例:与华为同族
ip route-static 0.0.0.0 0 192.0.2.1
ip route-static 0.0.0.0 0 198.51.100.1 preference 80
ip route-static 10.2.0.0 24 10.1.1.2
验证
Cisco show ip route / show ip route 8.8.8.8:看前缀长度、AD/度量、候选条。
华为/H3C display ip routing-table / display ip routing-table 8.8.8.8。
浮动条在主路活着时不应出现在 RIB (只在配置里)。主下一跳变不可达后才应装入。
7. 动态路由:RIP / EIGRP / OSPF / BGP
概念: IGP 在一个 AS 内算可达,EGP(今天只剩 BGP)在 AS 之间谈策略。选哪一个看直径、收敛、策略需求和多厂商程度,不是看「谁更新」。
OSPF:邻接、LSA、区域
状态机:Down → Init → 2-Way → ExStart → Exchange → Loading → Full。Hello 里看见自己的 Router-ID 进入 2-Way;DR/BDR 在 2-Way 选举。之后只有与 DR/BDR(或 P2P 对端)形成 Full,DROTHER 彼此停在 2-Way 是正常的。
Hello/Dead 默认:广播与 P2P 为 10 / 40 s ;NBMA 与 P2MP 为 30 / 120 s 。必须一致的参数:Hello、Dead、区域号、区域类型(stub 标志)、认证、网段掩码(某些类型)、单播/组播能力。MTU 不一致通常卡在 EXSTART / EXCHANGE ——DBD 里的 Interface MTU 对不上,对端直接丢。
DR/BDR:接口优先级高者胜,同则 Router-ID 大者胜;不抢占 。优先级 0 永不参选。以太网默认广播类型会选 DR;点到点串口/P2P 以太网不选,邻接是 Full 且没有 Type 2 LSA。
LSRefresh 1800 s ,MaxAge 3600 s 。区域内 SPF 只吃 Type 1/2;Type 3/4/5/7 当叶子挂到树上,不参与 Dijkstra 拓扑。
区域类型(Cisco 名,华为/H3C 用 stub / stub no-summary / nssa / nssa no-summary):
骨干 Area 0: 所有区域必须连它。分区或间接相连用虚链路(unicast,穿越非 stub 区域,对端写对方 RID)。
Stub: 无 Type 5(也就不再需要 Type 4)。ABR 自动 注入 Type 3 默认。
Totally stubby(Cisco no-summary): 再去掉普通 Type 3,只留一条默认。末梢区域首选。
NSSA: 允许本区域 ASBR 用 Type 7 注入外部,但不接受外来 Type 5。不会自动给默认 ,要 default-information-originate。
Totally NSSA(nssa no-summary): NSSA + 去掉 Type 3;Cisco 这时会自动注入默认。
这是笔试陷阱:area 1 nssa 与 area 1 stub 对「默认路由从哪来」的行为不一样。
参考带宽默认 100 Mbps ,于是 ≥100M 的口 cost 都是 1,千兆和万兆分不出来。园区应把 auto-cost reference-bandwidth 改到 10000(10 Gbps)或 100000,全域一致 。
示例 · OSPF 单进程,Area 0 + 末梢 totally stub
Cisco IOS
华为 VRP
H3C Comware
! 示例:接口方式更不容易把网段写错
router ospf 1
router-id 1.1.1.1
auto-cost reference-bandwidth 10000
area 1 stub no-summary
passive-interface default
no passive-interface GigabitEthernet1/0/1
interface GigabitEthernet1/0/1
ip ospf 1 area 0
ip ospf network point-to-point
ip ospf bfd
interface Vlan10
ip ospf 1 area 1
! 虚链路(仅当 Area 2 不直连 Area 0)
! area 2 virtual-link 2.2.2.2
# 示例:区域写成点分或 0 均可;接口用 ospf enable
ospf 1 router-id 1.1.1.1
bandwidth-reference 10000
silent-interface Vlanif10 # 进程级;接口写法以版本为准
area 0.0.0.0
area 0.0.0.1
stub no-summary
quit
quit
interface GigabitEthernet0/0/1
ospf enable 1 area 0.0.0.0
ospf network-type p2p
ospf bfd enable # 以版本为准
interface Vlanif10
ospf enable 1 area 0.0.0.1
# 示例
ospf 1 router-id 1.1.1.1
bandwidth-reference 10000
silent-interface Vlan-interface10
area 0.0.0.1
stub no-summary
quit
quit
interface GigabitEthernet1/0/1
ospf 1 area 0.0.0.0
ospf network-type p2p
interface Vlan-interface10
ospf 1 area 0.0.0.1
EIGRP:DUAL、FD / RD
RFC 7868 信息性 把报文和 DUAL 公开了,实现生态仍几乎是 Cisco。Hello 高速口 5 s / Hold 15 s ,T1 及更慢 60 / 180 s 。复合度量默认 K1=1, K2=0, K3=1, K4=0, K5=0,即 256×(最小带宽项 + 时延累加项)。K 值不一致不能建邻。
FD (Feasible Distance)是本机经当前 successor 到目的地的总度量;RD / AD (Reported / Advertised Distance)是邻居通告的距离。可行条件:RD < 当前 successor 的 FD 。满足的邻居叫可行后继(FS),可以无查询切换。没有 FS 就进 Active,向邻居发 Query;3 分钟(历史默认 Active 计时器)收不齐回复会 SIA(Stuck-in-Active),邻接被拆。
查询风暴是 EIGRP 在没有汇总边界时的老伤:叶子丢一条前缀,Query 能灌满整域。汇总边界(接口 ip summary-address eigrp)把查询挡住,这是划「区域」的替代品。
BGP:11 步决策、iBGP 与属性
会话先建 TCP 179,再 OPEN 交换 ASN、Hold、Router-ID、能力。Keepalive 默认是 Hold 的 1/3:Cisco Hold 180 s 、Keepalive 60 s (RFC 建议 Hold 90 s)。报文:OPEN / UPDATE / NOTIFICATION / KEEPALIVE,加上 RFC 2918 的 Route-Refresh。
iBGP 水平分割:从 iBGP 学来的路不再送给其他 iBGP。于是要全互联(n(n−1)/2)、路由反射器 (Originator-ID + Cluster-List 防环)或联盟 (子 AS,AS_CONFED_SEQUENCE;子 AS 之间看起来像 eBGP,但 LOCAL_PREF 等内部属性保留)。
eBGP 默认 TTL=1;多跳要 ebgp-multihop 或更干净的 GTSM / TTL security (RFC 5082):neighbor x ttl-security hops 1 要求入包 TTL 为 255。下一跳:eBGP 改成自己,iBGP 默认不改——边缘必须 next-hop-self,否则内核下一跳是对方 AS 的地址,IGP 够不着。
Cisco IOS 最佳路径(教材称 11 步;文档现插入 multipath 与 cluster-list,共 13):
最高 Weight (Cisco 私有,仅本机;本地起源默认 32768,学来默认 0)
最高 LOCAL_PREF (默认 100,AS 内传)
本机起源(network / aggregate / 重分发,NEXT_HOP=0.0.0.0)优于邻居学来
最短 AS_PATH (联盟子 AS 默认不计入长度)
最低 Origin:IGP i < EGP e < Incomplete ?
最低 MED (默认只在同一邻接 AS 之间比;缺省当 0,即更好。 missing-as-worst 反过来)
eBGP 优于 iBGP(联盟 eBGP 算 eBGP)
到 NEXT_HOP 的 IGP 度量最低
若配了 maximum-paths,可装多条,不必决出单胜
两条都是 eBGP 时选更老的(减抖动)
最低 BGP Router-ID
最短 Cluster-List(RR 场景)
最低邻居地址
Community 是策略标签,不是度量。well-known 常见:internet、no-export、no-advertise、no-export-subconfed;部分实现还有 no-peer(以设备版本为准)。选路请显式用 LOCAL_PREF / Weight,不要幻想 Community 自己会比大小。
BFD、GR、NSR
Hello 40 s 对核心太慢。BFD(RFC 5880)独立探测,常见 50 ms × 乘数 3 = 150 ms 检测,再把 OSPF/BGP/静态「绑」上去。GR(OSPF RFC 3623,BGP RFC 4724)让邻居当 helper,转发平面继续,控制平面重启后重同步;NSR 把状态检查点做到备控,邻居无感,只有中高端有。GR 期间若转发平面其实已经不转,helper 仍以为没事——这是 GR 的设计代价。
设计权衡: 多厂商园区用 OSPF,不要在边界上幻想 EIGRP。EIGRP 的 FS 切换快,但没有区域只有汇总;OSPF 有区域和 LSA 类型,换来的是 ABR 设计和虚链路这类坑。Internet 边缘必须 BGP,IGP 只用来到达 NEXT_HOP。汇总放在区域/域边界:汇总错位要么黑洞(缺 discard / Null0),要么 Query/LSA 漏出去。
疑难:OSPF 邻居卡在 EXSTART
现象 → show ip ospf neighbor 长期 EXSTART 或 EXCHANGE,对端一样。
定位: 先对同一链路看 MTU(Cisco show interface 的 MTU 与 IP MTU;华为 display interface)。再抓 OSPF DBD:Interface MTU 字段是否一致。排除之后才查单播 ACL 是否挡住了非 Hello 的 OSPF(Hello 走组播 224.0.0.5,DBD/LSR/LSU 在某些类型走单播)。
根因: 一侧 1500、一侧 9000,或隧道/子接口 MTU 没对齐。临时 Cisco ip ospf mtu-ignore;华为部分平台默认不 检查,ospf mtu-enable 才打开——以版本为准。治本是改 MTU,不是 ignore。
疑难:非对称路由打穿状态防火墙
现象 → 去程通、回程「偶发」断;或只通 ping 不通 TCP。防火墙日志是 out-of-state / 无会话。
定位: 在两端主机和两台网关同时看 show ip cef / display fib 与连接的入/出接口。HSRP 活在 A、STP 根在 B 时,接入把帧送给 B,B 再送到 A 的 VIP——已经绕路;若防火墙只挂在 A 的上行,回程从 B 出去就没会话。
根因: ECMP、FHRP 与 STP 不对齐、或两条默认路由不对称。修法是让同一 VLAN 的「STP 根 = FHRP 活 = 防火墙主」,或改防火墙为非对称/集群共享会话,而不是再加一条静态「修一处坏一处」。
8. 网关冗余 FHRP
概念: 两台三层设备共享一个虚拟 IP(主机的默认网关)和一组虚拟 MAC。主机只 ARP 到 VIP,不必知道后面谁在转。
为什么需要: 传统接入是 L2,网关在汇聚。汇聚死一台不能让整层 VLAN 断网。路由接入下沉之后,FHRP 从接入消失,改由 IGP 收敛。
选举:优先级高者活;HSRP 同优先级比接口 IP 大者。HSRP 默认不抢占,主修好了不会自动回来——要显式 preempt,并加 delay 等 STP 转发完成。VRRP 默认抢占,主一恢复就夺权,更容易和 STP 打架。
跟踪上行:Cisco standby track / vrrp … track 减优先级;华为 vrrp vrid 1 track interface … reduced 30。减幅必须大于主备优先级差,否则上行断了仍不切换。
示例 · 同一 VIP,Cisco 用 HSRP,华为/H3C 用 VRRP
Cisco IOS · HSRP
华为 VRP · VRRP
H3C Comware · VRRP
! 示例:本机做 VLAN 10 活网关,且应同时是 STP 根
interface Vlan10
ip address 10.10.10.2 255.255.255.0
standby version 2
standby 10 ip 10.10.10.1
standby 10 priority 110
standby 10 preempt delay minimum 30
standby 10 timers 1 3
standby 10 authentication md5 key-string CAMPUS
standby 10 track 1 decrement 20
! 同盒子上的 VRRP(IOS 有的平台):vrrp 10 ip 10.10.10.1
# 示例:华为没有 HSRP,只用 VRRP
interface Vlanif10
ip address 10.10.10.2 255.255.255.0
vrrp vrid 10 virtual-ip 10.10.10.1
vrrp vrid 10 priority 110
vrrp vrid 10 preempt-mode timer delay 30
vrrp vrid 10 timer advertise 1
vrrp vrid 10 track interface GigabitEthernet0/0/1 reduced 30
vrrp vrid 10 authentication-mode md5 CAMPUS # 以版本为准
# 示例:H3C Comware VRRP(与华为 VRP 分开;抢占延时以设备版本为准)
interface Vlan-interface10
ip address 10.10.10.2 255.255.255.0
vrrp vrid 10 virtual-ip 10.10.10.1
vrrp vrid 10 priority 110
vrrp vrid 10 preempt-mode timer delay 30
vrrp vrid 10 timer advertise 1
vrrp vrid 10 track interface GigabitEthernet1/0/1 reduced 30
验证
Cisco show standby brief / show vrrp brief:Active/Standby、VIP、抢占、跟踪是否已经减分。
华为/H3C display vrrp:Master/Backup、优先级、虚拟 MAC 是否为 0000-5e00-01XX。
主机 ARP 到的网关 MAC 必须是虚拟 MAC,不是某台上的物理 MAC。若看到物理 MAC,VIP 没在工作,主机静态写错或代理 ARP 在捣乱。
设计权衡 · 对齐: 活网关必须是该 VLAN 的 STP 根。否则接入把帧送到根(B),B 再二层送到活网关(A),多一跳还可能绕防火墙。做法:同一台盒子上「STP priority 4096 + FHRP priority 110 + uplink track」。双活用 GLBP 或每 VLAN 左右分担(奇数 VLAN 根在 A,偶数在 B),不要指望单组 HSRP 自己摊流量。混厂商汇聚不要上 HSRP,统一 VRRP。