第三章:IP RAN基础协议栈
各位好,欢迎来到第三章。这一章我们聊聊IP RAN的“地基”——基础协议栈。说白了,OSPF、IS-IS、BGP、MPLS这四样东西,就是咱们搭建IP RAN网络的四根柱子。你想想看,没有它们,数据包在网里就像没头苍蝇一样乱撞。
我个人习惯把这一章叫做“热身运动”。因为后面所有的路由配置、调优实战,都建立在这些协议之上。咱们一个一个来,不急。
3.1 OSPF协议基础
OSPF,开放最短路径优先。这名字起得挺直白——它就是要找出一条最短的路。我在项目中遇到过不少刚入行的兄弟,觉得OSPF太简单,不就是配个area、配个network嘛。嗯,这里要注意,OSPF的坑往往藏在细节里。
OSPF的核心机制:
- 链路状态数据库(LSDB):每个路由器都维护一份完整的网络拓扑图。这跟RIP那种“听邻居说”的方式完全不同。
- SPF算法:基于Dijkstra算法,计算最短路径树。说白了,就是拿着一张地图找最近的路。
- 区域划分:骨干区域(Area 0)必须连续。我曾经见过一个网络,Area 0被割裂成两段,结果全网路由乱套,排查了整整一个下午。
避坑指南:我曾经在现网中遇到OSPF邻居反复震荡,查了半天发现是接口的MTU不匹配。OSPF在建立邻接关系时会检查MTU,两边不一致就会卡在ExStart状态。所以,配OSPF前,先检查接口MTU。
OSPF配置示例:
router ospf 100
router-id 1.1.1.1
network 10.0.0.0 0.0.0.255 area 0
network 192.168.1.0 0.0.0.255 area 1
这里有个小技巧:router-id最好手动指定,别让设备自动选。为什么?因为自动选出来的可能是Loopback接口的IP,万一哪天你改了Loopback地址,OSPF进程重启,全网都要抖一下。
3.2 IS-IS协议基础
IS-IS,中间系统到中间系统。这名字听着就比OSPF硬核。其实它俩很像,都是链路状态协议,都用SPF算法。但IS-IS在运营商网络里用得更多,尤其是IP RAN场景。
我个人觉得,IS-IS最大的优势是扩展性强。它用TLV(类型-长度-值)结构来承载信息,想加什么新功能,直接定义一个新的TLV就行。OSPF呢?得重新定义一种LSA类型,麻烦得很。
IS-IS的关键概念:
- NET地址:网络实体标题,相当于OSPF的Router ID。格式是“区域ID.系统ID.选择符”。系统ID必须全网唯一。
- Level-1和Level-2:Level-1相当于OSPF的非骨干区域,Level-2相当于骨干区域。Level-1路由器只知道本区域的路由,去其他区域得找Level-1-2路由器。
- 网络类型:IS-IS只支持广播和点到点。没有NBMA这种麻烦东西。
个人经验:我建议在IP RAN的接入层用IS-IS Level-1,汇聚层和核心层用Level-2。这样路由表小,收敛快。别把所有设备都配成Level-1-2,那跟OSPF的Area 0满天飞没啥区别。
IS-IS配置示例:
router isis
net 49.0001.0000.0000.0001.00
is-type level-2-only
metric-style wide
注意那个metric-style wide。老版本的IS-IS用窄度量,最大只有63。你想想看,现在动辄万兆链路,63哪够用?所以一定要配宽度量。
3.3 BGP协议基础
BGP,边界网关协议。这玩意儿跟OSPF、IS-IS完全不是一个路子。OSPF和IS-IS是IGP,跑在一个AS内部。BGP是EGP,跑在AS之间。说白了,IGP负责“怎么走最快”,BGP负责“怎么走最合理”。
我在项目中遇到过最头疼的问题,就是BGP路由黑洞。明明路由表里有这条路由,但数据包就是过不去。后来发现是IBGP全互联没做好,中间路由器没有BGP路由,直接把包丢了。
BGP的核心特性:
- 路径矢量协议:BGP不关心链路状态,它只关心路径属性。比如AS_PATH、NEXT_HOP、LOCAL_PREF这些。
- 策略驱动:BGP的强大之处在于策略控制。你可以通过Route-Policy、Filter-List等手段,精细控制路由的发布和接收。
- IBGP和EBGP:IBGP需要全互联(或者用RR),EBGP则直接建立邻居。
警告:BGP的Next-Hop属性是个大坑。IBGP邻居之间,默认不会改变Next-Hop。如果你没有配置next-hop-self,IBGP邻居可能会把下一跳指向一个不可达的地址。我曾经因为这个原因,排查了整整两天。
BGP配置示例:
router bgp 65000
bgp router-id 2.2.2.2
neighbor 10.0.0.1 remote-as 65001
neighbor 10.0.0.1 route-map SET-MED out
address-family ipv4
network 192.168.0.0 mask 255.255.255.0
3.4 MPLS基础
MPLS,多协议标签交换。这名字听起来高大上,其实原理很简单——在数据包前面加个标签,路由器根据标签转发,不用查路由表。你想想看,查路由表要匹配最长前缀,多慢啊。MPLS直接看标签,快得多。
我个人觉得,MPLS最大的价值不是速度,而是它支持流量工程和VPN。没有MPLS,你很难在IP网络上实现端到端的QoS保障和VPN隔离。
MPLS的关键组件:
- LDP:标签分发协议。负责在LSR之间分发标签,建立LSP。
- LSR:标签交换路由器。入站LSR压入标签,中间LSR交换标签,出站LSR弹出标签。
- FEC:转发等价类。说白了,就是一组具有相同转发行为的数据流。
避坑指南:我曾经在现网中遇到MPLS转发异常,检查发现是LDP邻居没有建立成功。原因是IGP路由不通。记住,LDP依赖于IGP,IGP不通,LDP就别想建立。所以,排查MPLS问题,先查IGP。
MPLS配置示例:
mpls lsr-id 3.3.3.3
mpls label protocol ldp
interface GigabitEthernet0/0/0
mpls
mpls ldp
这里有个细节:mpls lsr-id最好用Loopback接口的IP,而且这个IP必须通过IGP可达。否则LDP邻居起不来。
3.5 协议栈的协同工作
好了,四个协议都讲完了。但实际组网中,它们不是各自为战的。我给大家捋一捋它们怎么配合:
- IGP(OSPF或IS-IS):负责设备之间的底层路由可达性。说白了,就是让所有设备都能互相ping通。
- MPLS:在IGP的基础上,建立标签交换路径。LDP依赖IGP来分发标签。
- BGP:在MPLS网络之上,承载客户路由。比如MPLS VPN场景,BGP负责传递VPNv4路由。
你想想看,这个层次是不是很清晰?IGP是地基,MPLS是框架,BGP是装修。地基不稳,框架就歪;框架不正,装修就白搭。
个人建议:在IP RAN网络中,我习惯用IS-IS作为IGP,因为它的扩展性和收敛速度都比OSPF好。BGP用RR(路由反射器)来减少IBGP全互联的复杂度。MPLS则开启LDP,配合BGP实现L3VPN。
好了,这一章的内容就到这里。下一章我们开始动手配置,真正进入实战环节。到时候我会带着大家一步步搭建一个完整的IP RAN网络,把今天讲的这些协议都用起来。
记住,理论是基础,但真正的功夫在手上。多敲命令,多抓包分析,你才能真正理解这些协议是怎么工作的。