目录
OptionC中,ASBR不维护或发布Vpnv4路由,PE之间直接交换Vpnv4路由
OptionC1
两个AS之间的PE设备直接运行Vpnv4的邻居关系,中间设备不需要Vpnv4路由
不过配置相对复杂,维护一条端到端的PE连接管理代价较大
邻居关系
PE1和PE2建立MP-EBGP邻居关系
PE1-ASBR1建立IBGP邻居关系
ASBR1-ASBR2建立EBGP邻居关系
ASBR2-PE2建立IBGP邻居关系
PE1和PE2如何建立邻居关系
假设PE1和PE2通过环回口建立邻居关系
第一步 先获取到对端的IP地址
PE1将自己的地址宣告进BGP中,ASBR1通过IBGP学习到PE1的地址;然后ASBR1将PE1的地址通过EBGP邻居传递到ASBR2(如果ASBR1已经从IGP学到PE1的地址,则可以直接在ASBR1上宣告PE1的地址);ASBR2再通过IBGP传递到PE2
PE2的地址传到PE1的过程类似
第二步 为路由手工分配标签
为什么要手工分配标签
第一:使得PE之间建立邻居关系
如果不为PE分配手工标签,则PE2去往PE1的报文就为IP报文,目的为2.2.2.2
当报文发送到P2时,P2没有去往2.2.2.2的路由,造成路由丢弃,PE1和PE2邻居建立失败
此时虽然获取到了对端的路由,可是无法建立邻居
第二:传递CE之间的报文
当PE1和PE2邻居建立成功后,CE2去访问CE1时,将数据包丢给PE2
PE2发现去往CE1的下一跳为2.2.2.2(PE1),则打上PE1分配的私网标签发往2.2.2.2
PE2查找2.2.2.2的路由,发现LDP也没有为2.2.2.2分配标签,则直接带上私网标签发给P2
此时P2的标签转发表没有关于此私网标签的LSP,造成数据包丢失
LDP为什么不给2.2.2.2分配标签
因为LDP只为IGP和32位主机路由分配标签,不会为BGP分配标签(C2的解决方法就是通过LDP为BGP分配标签来解决,C1是通过手工配置标签来解决)
怎样配置手工分配标签(以PE1的地址传到PE2的地址为例,PE2地址传到PE1的配置一样)
- 2.2.2.2在AS100内通过LDP自动分配标签
- 2.2.2.2在AS200区域通过手动配置分配标签
- 2.2.2.2在ASBR之间传输也是通过手动配置分配标签
在ASBR1和ASBR2上配置策略,手动为2.2.2.2这条路由打上标签并传给PE2
华为设备配置
ASBR1的配置如下(向ASBR2发送时打上标签)
为匹配ACL2000的路由分配标签,也可以不配置匹配策略)
route-policy name1 permit node 10
if-match acl 2000
apply mpls-label
ASBR1的BGP视图下,在向对等体10.0.45.5传递路由时配置标签
peer 10.0.45.5 route-policy name1 export
ASBR1的BGP视图下,使能与对等体10.0.45.5交互标签的能力
peer 10.0.45.5 label-route-capabilityi
ASBR2的配置如下(将ASBR2的标签在发送时替换为新的标签)
先配置策略(为有标签的路由重新分配标签)
route-policy name2 permit node 10
if-match mpls-label
apply mpls-label
ASBR2的BGP视图下,在向对等体7.7.7.7传递路由时替换标签
peer 7.7.7.7 route-policy name2 export
ASBR1的BGP视图下,使能与对等体7.7.7.7交互标签的能力
peer 7.7.7.7 label-route-capability
此时PE2去往2.2.2.2的路由过程
PE去往2.2.2.2
去往2.2.2.2,打上ASBR2分配的标签(暂且称此标签为公网标签2),下一跳为5.5.5.5
去往5.5.5.5,打上LDP分分配的标签(称为LDP标签),发往P2
此时封装了两层标签公网标签2(ASBR2分配)、LDP标签(P2分配)
P2去往2.2.2.2
根据LFIB表项,剥离外层LDP标签,(次末跳LDP标签弹出,不再封装LDP标签),下一跳发往ASBR2
此时只有一个公网标签2(ASBR2分配的)
ASBR2去往2.2.2.2
根据LFIB表项,剥离外层公网标签2,替换为ASBR1分配的标签(公网标签1)发往ASBR1
此时只有一个公网标签1(ASBR1分配的)
ASBR1去往2.2.2.2
根据LFIB表项,剥离外层公网标签1
发现自身有LDP分配的2.2.2.2的标签,则打上LDP标签(P1分配的),发往P1
此时只有一个LDP标签(P1分配的)
P1去往2.2.2.2
根据LFIB表项,剥离外层LDP标签,(次末跳LDP标签弹出,不再封装LDP标签),下一跳发往PE1
此时无标签
PE1收到PE2发来的2.2.2.2的路由(PE1去往PE2的过程类似,就这样建立起Vpnv4邻居)
路由发布过程
CE1将IPv4路由传递给PE1
CE1将私网路由1.1.1.1 传递给PE1
PE1从实例1收到CE1传递过来的路由后
将1.1.1.1路由加入到实例1的IPv4路由表(1.1.1.1 下一跳为CE1)
PE1将实例路由表中的路由引入到BGP Vpnv4中(1.1.1.1 1:1 下一跳0.0.0.0)
然后将此Vpnv4路由通告给MP-BGP邻居PE2,携带ex RT值 200:1和MP-BGP产生的私网标签①,下一跳为2.2.2.2
PE2收到PE1传递过来的Vpnv4路由后
匹配vpnv4路由携带的ex RT值,将其放入BGP vpnv4路由表中(1.1.1.1 1:1,下一跳2.2.2.2)
然后将vpnv4剥离RD值,加入到自身对应实例2的IPv4路由表中(1.1.1.1,N-Hop2.2.2.2)
并将此路由携带的私网标签①存放在标签转发表项中,用于数据转发
数据转发过程
CE2发往PE2
CE2 访问1.1.1.1产生ICMP包给PE2
PE2发往P2
PE2此时通过实例2的FIB表查到去往1.1.1.1的下一跳2.2.2.2和对应私网标签①
此时检查去往2.2.2.2,Tunnel为非0,查看LFIB表,打上公网标签2
此时检查去往2.2.2.2的下一跳为5.5.5.5,Tunnel为非0,查看LFIB表,打上LDP标签
检查去往5.5.5.5下一跳为P2
此时报文为(1.1.1.1 私网标签① 公网标签2 LDP标签)
P2发往ASBR2
P2收到后查看LFIB表,弹出标签给ASBR2(次末跳弹出,不封装LDP)
此时报文为(1.1.1.1 私网标签① 公网标签2 )
ASBR2发往ASBR1
ASBR2收到后查看LFIB表,将公网标签2替换为交换公网标签1发给ASBR1
此时报文为(1.1.1.1 私网标签① 公网标签1 )
ASBR1发往P1
ASBR1收到后查看LFIB表,发现公网标签1对应路由为2.2.2.2
而此时ASBR1也从LDP分配到关于2.2.2.2的标签,下一跳为P1
所以此时将公网标签1剥离,替换为LDP标签,发往P1
此时报文为(1.1.1.1 私网标签① LDP标签 )
P1发往PE1
P1收到后查看LFIB表,弹出标签给ASBR2(次末跳弹出,不封装LDP)
此时报文为(1.1.1.1 私网标签① )
PE1发往CE1
PE1查找LFIB表,发现私网标签②是自己产生的,于是通过私网标签①找到对应的实例1,并剥离掉私网标签①
查找实例1的FIB表项,发现去往1.1.1.1的下一跳为CE1
此时报文为(1.1.1.1)
注意C1的解决方案P设备是没有去对端PE的标签
OptionC2
OptionC2与C1的方案基本一致,不过PE和ASBR之间不需要建立IBGP,直接在ASBR上将路由引入到IGP中
数据转发时,三层标签变为二层标签
PE1和PE2如何建立邻居关系
第一步 先获取到对端的IP地址
此时将2.2.2.2的路由在ASBR1通过EBGP传递到ASBR2
然后在ASBR2中将BGP引入到IGP中,此时PE2就学到2.2.2.2的路由
第二步 为路由手工分配标签
此时PE之间的邻居关系已经建立,并且CE之间也已经获取到对端的路由
但是CE之间无法通信
为什么要手工分配标签
PE之间建立邻居关系不需要标签,直接通过IP层面就可以建立
PE2去往PE1的报文就为IP报文,目的为2.2.2.2
当报文发送到P2时,P2有去往2.2.2.2的路由,邻居建立成功
C2方案配置标签是为了传递CE之间的报文
当PE1和PE2邻居建立成功后,CE2去访问CE1时,将数据包丢给PE2
PE2发现去往CE1的下一跳为2.2.2.2(PE1),则打上PE1分配的私网标签发往2.2.2.2
PE2查找2.2.2.2的路由,发现LDP也没有为2.2.2.2分配标签,则直接带上私网标签发给P2
此时P2的标签转发表没有关于此私网标签的LSP,造成数据包丢失
怎样配置手工分配标签(以PE1的地址传到PE2的地址为例,PE2地址传到PE1的配置一样)
- 2.2.2.2在AS100区域会由LDP自动分配
- 在AS200区域通过配置实现由LDP自动分配标签
- 此时只需在ASBR1上手动针对ASBR2为2.2.2.2分配标签(2.2.2.2在ASBR之间传输也是通过手动配置分配标签)
即:
C1方案ASBR与本端PE之间产生关于对端PE的LSP是通过手动产生的
C2方案ASBR与本端PE之间产生关于对端PE的LSP是通过LDP产生的
华为设备配置
ASBR1的配置如下(向ASBR2发送时打上标签)
先配置策略(为匹配ACL2000的路由分配标签,也可以不配置匹配策略)
route-policy name1 permit node 10
if-match acl 2000
apply mpls-label
ASBR1的BGP视图下,在向对等体10.0.45.5传递路由时配置标签
peer 10.0.45.5 route-policy name1 export
ASBR1的BGP视图下,使能与对等体10.0.45.5交互标签的能力
peer 10.0.45.5 label-route-capability
ASBR2的配置如下(为ASBR2发送过来的标签BGP路由建立LSP)
ASBR2的MPLS视图下,为带标签的公网BGP路由建立LDP LSP
lsp-trigger bgp-label-route
路由发布过程
同OptionC1
数据转发过程
CE2发往PE2
CE2 访问1.1.1.1产生ICMP包给PE2
PE2发往P2
PE2此时通过实例2的FIB表查到去往1.1.1.1的下一跳2.2.2.2和对应私网标签①
此时检查去往2.2.2.2,Tunnel为非0,查看LFIB表,打上LDP标签,发往P2
此时报文为(1.1.1.1 私网标签① LDP标签)
P2发往ASBR2
P2收到后查看LFIB表,将标签转换
此时报文为(1.1.1.1 私网标签① LDP标签)
ASBR2发往ASBR1
ASBR2收到后查看LFIB表,将LDP标签替换为交换公网标签1发给ASBR1
此时报文为(1.1.1.1 私网标签① 公网标签①)
ASBR1发往P1
ASBR1收到后查看LFIB表,发现公网标签1对应路由为2.2.2.2
而此时ASBR1也从LDP分配到关于2.2.2.2的标签,下一跳为P1
所以此时将公网标签1剥离,替换为LDP标签,发往P1
此时报文为(1.1.1.1 私网标签① LDP标签 )
P1发往PE1
P1收到后查看LFIB表,弹出标签给ASBR2(次末跳弹出,不封装LDP)
此时报文为(1.1.1.1 私网标签① )
PE1发往CE1
PE1查找LFIB表,发现私网标签②是自己产生的,于是通过私网标签①找到对应的实例1,并剥离掉私网标签①
查找实例1的FIB表项,发现去往1.1.1.1的下一跳为CE1
此时报文为(1.1.1.1)
注意C2方案P设备有去对端PE的标签
Option C1和C2的优缺点
MPLS C1
优点:ASBR不需要维护和分发Vpnv4路由
缺点:对于每个业务都要手动配置两边的标签,配置复杂
MPLS C2
优点:ASBR不需要维护和分发Vpnv4路由
缺点:对于每个业务通过LDP动态分配标签,不过域内的设备都可以学到此标签