1 跨域和非跨域的区别
在了解跨域和非跨域的区别前,先看下面两点:
- 多AS的特点
1、每个AS都拥有各自的IGP协议,区域之间不可能交换所有的路由信息,而是选择性的交换
2、AS之间使用eBGP协议连接
3、无论是单AS还是多AS,客户路由是不能出现在公网中的,防止和正常使用的公网IP冲突 - LDP的特点
1、不会为BGP条目分配标签
综上,出现一个问题:
ASBR之间也就是AS边界设备之间将无法使用LDP协议来进行跨跳建立邻居的路由黑洞避免,所以衍生出以下三种方案
2 标签的回顾以及深入研究
注:为了方便理解,本文讲解没有考虑标签的“次末跳弹出”机制;
2.1 标签的分类
标签类型 | 封装位置 | 标签简称 | 标签作用 | 分发标签源 | 分发的FEC |
---|---|---|---|---|---|
MP-BGP标签 | 最内层 | V | 将流量导入对应的VRF | MPeBGP邻居 / MPiBGP邻居(nhs) | 流量对应的BGP条目的前缀 |
BGP-Label标签 | 中间层 | B | 负责跨AS时流量的传递 | eBGP邻居(Label) / iBGP邻居(Label+nhs) | 流量对应的BGP条目的NH |
LDP标签 | 最外层 | T | 解决跨跳传递BGP路由导致的流量黑洞问题 | 直连下一跳 | 流量对应的BGP条目的现实NH |
2.2 常见的标签动作
标签动作 | 作用 | 常见场景 |
---|---|---|
push | 加标签 | MPLS-VPN中的入口PE处 |
pop | 弹出首层标签 | MPLS-VPN的出口PE处 |
swap | 标签交换 | MPLS-VPN的中间节点 |
untag | 弹出所有标签 | 路由下一跳的LDP邻居还没建立时将流量发往下一跳会弹出流量的所有标签 |
2.2.1 标签的push操作举例
我们直接拿MPLS VPN OptionC 来举例子
当我们准备发送流量 FROM 172.16.0.1 TO 192.168.0.1
时,会在PE1
进行标签的push
操作,在OptionC(没有RR)的场景下,通常会上三层的标签,我们将由内到外(即VBT的顺序)依次讨论标签的push规则;
V
MPLS-VPN标签,为流量对应的BGP路由前缀分配的标签,分配标签的源是对应BGP前缀的NH;
B
BGP-Label标签,为流量对应的BGP路由前缀的NH分配的标签,分配标签源是对应BGP前缀的NH;
T
LDP标签,为BGP路由迭代后最终的NH分配的标签,分配标签源最终流量的直连下一跳
2.2.2 标签的swap操作举例
还是引用MPLS VPN的Option C,比如拿ASBR1
举例,swap
操作本质上就是pop
和push
标签的结合体;
T2和B1的NH都是自己,所以pop两层标签,还剩最内层标签,由于最内层的标签的NH是PE2,而且存在中层标签的路由,所以打上从ASBR2收到的B2标签;
2.3 标签的宣告方式
1、本地先为各个FEC生成in Label,并且交换各自的in Label;
2、本地根据路由表的下一跳在多个远端接收到的相同FEC的in Label 中选择最优那个作为out Label;
3、后续作为本地设备的上游设备要访问该FEC需要先打上本地设备的in Label;本地设备要访问下游的FEC,则需要打上out Label;
2.4 LDP标签特性说明
- 特性一
LDP不为路由表中的BGP路由分发标签也就是开头有个“R”的条目 - 特性二
当本地访问的IP是BGP路由匹配的IP时,封装的LDP标签应该是:LDP邻居发来的,本地BGP路由条目经过在BGP条目中“递归查找”后得出的最优的下一跳的IP的标签【这条适用于BGP-Label标签】;(附带VRF特性说明,VRF的RIB在生成FIB时,会调用全局的RIB来进行“递归查找”等操作生成VRF的FIB)
图示说明
例子1:
PE2开启VRF 1关联的接口下连CEA-2
查看PE2表项:
- 按照LDP分发逻辑打上的标签是邻居发来的5.5.5.5对应的标签,但是显然不是;
- 而是经过递归后得出的邻居发来的8.8.8.8对应的标签;
- 所以得出结论,对于BGP条目,需要递归到有效BGP路由中最优的下一跳然后封装邻居发来的这个IP对应的标签;
例子2:
- 特性三
对于多标签情况,我们根据上一层标签的NH来作为下一层标签的network(当然,需要开启相关的协议才可以)
例子1:
随便举例,MPLS VPN C里面的标签封装,后面会详细介绍
- 特性四
对于MPLS标签和BGP-Label标签,默认都开启PHP机制(次末跳弹出机制)
3 跨域MPLS VPN解决方案
3.1 Option A
- 方案介绍
需要跨域的VPN在ASBR间通过专用的接口管理自己的VRF路由(子接口),VRF-to-VRF; - 方案优势
1、 ISP可以自己定义RT值,不需要多个ISP协商 - 方案缺陷
1、ASBR设备负担较大,需要承载所有客户路由
2、ASBR设备间链路负担较大,因为需要开子接口,一条链路多个子接口共用,带宽有限
3、对于跨越多个运营商(超过两个),配置比较麻烦
4、以上缺陷注定客户的节点数和需要传递的网络数不能太多,也就是网络规模不能过大 - 方案细节
3.2 Option B
- 方案介绍
ASBR间通过MP-EBGP发布标签VPNV4路由,也称为单跳MP-EBGP跨域方式 - 方案优势
1、较OptionA而言,ASBR中间链路负担小,因为不用划分子接口 - 方案缺陷
1、RT值需要两个ISP协商
2、ASBR需要保存VPNV4前缀信息,ASBR负担较重可能成为瓶颈
2、对于跨越多个运营商(超过两个),配置比较麻烦 - 方案细节
3.3 Option C-NRR
- 方案介绍
PE或RR之间通过Multi-hop MP-EBGP发布VPNV4路由,也称为多跳MP-EBGP跨域方式,也是现网最常使用的方式 - 方案优势
1、对于跨多ISP的情况下部署更加合理 - 方案缺陷
1、RT值需要ISP之间协商
2、跨域维护隧道难度较大,排错难度较大
3、可拓展性较弱,拓展业务流程较繁琐
4、由于VPNV4前缀分散在不同的PE中,对于VPNV4的整体管理较麻烦 - 方案细节
3.4 Option C-RR
- 方案介绍
PE或RR之间通过Multi-hop MP-EBGP发布VPNV4路由,也称为多跳MP-EBGP跨域方式,也是现网最常使用的方式 - 方案优势
1、对于跨多ISP的情况下部署更加合理
2、可拓展性更强,只需要在RR和PE见建立MP-iBGP邻居即可
3、集中管理VPNV4前缀,管理更便捷 - 方案缺陷
1、RT值需要ISP之间协商
2、跨域维护隧道难度较大,排错难度较大 - 方案细节
4 部分实现代码
(代码仅是事例和拓扑图配置无关)
- Option A
(1)每个设备配置物理接口IP以及环回接口IP
(2)搭建Underlay网络,每个蓝色区域内使用IGP协议实现AS内互通,并且都启用LDP协议
(3)配置PE和ASBR的VRF并且关联接口(其中两个ASBR之间接口用子接口关联),并且CE与PE的VRF之间建立普通eBGP邻居(环回口建立邻居)
- VRF配置事例
创建VRF并且设定RD和RT值
R1(config)#ip vrf sb
R1(config-vrf)#rd 250:520
R1(config-vrf)#route-target both 5:21
将相关接口关联进VRF
R1(config)#int f0/0
R1(config-if)#ip vrf forwarding sb- 子接口设置
R1(config)#int f0/0.1
R1(config-subif)#- eBGP环回接口建邻
R1(config)#router bgp 1
R1(config-router)#address-family ipv4 在IPV4地址族内用VRF和CE建立邻居
R1(config-router-af)#neighbor 3.3.3.3 remote-as 3
R1(config-router-af)#neighbor 3.3.3.3 update-source loopback 0
R1(config-router-af)#neighbor 3.3.3.3 ebgp-multihop 10 开启多跳(默认TTL=1)同时也取消了eBGP的直连检测
(4)PE1和ASBR1建立MP-iBGP邻居(开启Nhs),PE2和ASBR2同理
- MP-iBGP配置事例
R1(config)#router bgp 1
R1(config-router)#no bgp default ipv4-unicast 当建立MP-BGP邻居之后关闭默认建立的普通的IPV4邻居
R1(config-router)#neighbor 3.3.3.3 remote-as 1
R1(config-router)#neighbor 3.3.3.3 update-source loopback 0
R1(config-router)#neighbor 3.3.3.3 next-hop-self
R1(config-router)#address-family vpnv4 在VPNV4地址族内激活MP-BGP
R1(config-router-af)#neighbor 3.3.3.3 activate
(5)CE侧宣告内网路由
- Option B
1、每个设备配置物理接口IP以及环回接口IP
2、搭建Underlay网络,每个蓝色区域内使用IGP协议实现AS内互通,并且都启用LDP协议
3、配置PE的VRF并且关联接口(ASBR之间接口不需要配置VRF接口),并且CE与PE的VRF之间建立普通eBGP邻居(环回口建立邻居)
4、PE1和ASBR1建立MP-iBGP邻居,PE2和ASBR2同理
5、ASBR1和ASBR2之间建立MP-eBGP邻居,并且关闭RT检测(默认需要RT匹配才会导入VPNV4数据库,并且转发VPNV4前缀信息)
- 关闭RT检测功能
R1(config)#router bgp 1
R1(config-router)#no bgp default route-target filter
6、CE侧宣告内网路由
- Option C
1、每个设备配置物理接口IP以及环回接口IP
2、搭建Underlay网络,每个蓝色区域内使用IGP协议实现AS内互通,并且都启用LDP协议
3、配置PE的VRF并且关联接口(ASBR之间接口不需要配置VRF接口),并且CE与PE的VRF之间建立普通eBGP邻居(环回口建立邻居)
4、PE1与ASBR1建立普通iBGP邻居,ASBR之间建立普通eBGP邻居,PE2与ASBR2建立普通iBGP邻居,以上邻居全部使用环回接口建立,并且在iBGP邻居之间使用next-hop-self;同时,这些邻居之间在普通BGP邻居的基础上还要发送BGP标签;
5、PE1,PE2在BGP中宣告自身环回接口路由
6、PE1和PE2建立MP-eBGP邻居(开启ebgp多跳,如果邻居一直处于 Idle状态可能就是没开,一定要用环回接口建立邻居)
- 可以只建立MP-BGP邻居,而不建立普通的BGP邻居,同时开启ebgp跨跳建邻
router bgp 2
no bgp default ipv4-unicast
neighbor 2.2.2.2 remote-as 1
neighbor 2.2.2.2 update-source loop0
neighbor 2.2.2.2 ebgp-multihop 10
address family vpnv
neighbor 2.2.2.2 active
————————————————————————
注:在使用命令no bgp default ipv4-unicast
后,正常步骤是无法建立普通的ipv4 BGP邻居的
如以下方法,是无法正常建立ipv4 BGP邻居的
router bgp 2
neighbor 2.2.2.2 remote-as 1
需要额外加一条
address-family ipv4
neighbor 2.2.2.2 activate
7、CE侧宣告内网路由
5 MPLS VPN排错
5.1 查看类命令
- 查看 VPNV4标签
show ip bgp vpnv4 all labels
- 查看LDP 标签
show mpls ldp bindings
- 查看BGP标签
show ip bgp labels
- 查看VRF的CEF表
show ip vef vrf CE1
5.2 排错思路
控制层
- 私网路由是否送往对端
通过查看PE设备的VPNV4表项以及CE设备的路由表可以确定
转发层
- 设备是否支持或者开启MPLS转发功能
a、所有设备是否开启了CEF转发功能,这一功能决定了思科设备是否能够将标签压入?
b、应该开启MPLS 转发功能的接口是否开启功能,以及是否是LDP协商? - 在部分方案中是否还顺利分配了其他标签
a、如Option C的BGP-Label? - 标签的分配是否正确?
a、是否会存在由于下一跳的错误配置导致标签提前剥离的情况(这种情况会导致路由黑洞)?
最终数据是否能够通达
- 实际测试业务流量就可以知道是否能通达,一般不通就是上面两层出现问题导致的
5.3 错误案例
- 错误案例一
错误原因:Option C中的MP-eBGP邻居使用物理接口建立邻居关系,导致隧道提前中断
示范: