MPLS隧道——带RR的跨域解决方案讲解(B、C1、C2方案)

2023-11-08 19:30

本文主要是介绍MPLS隧道——带RR的跨域解决方案讲解(B、C1、C2方案),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

为什么要携带RR

带RR的OptionB

路由发布过程

数据转发过程(同OptionB)

带RR的OptionC1(RR不转发数据)

RR1和RR2如何建立邻居

第一步 先获取到对端的IP地址

第二步 为路由手工分配标签

此时RR2去往RR1建立邻居的过程如下

RR的邻居建立成功后,路由传递过程如下

路由传递完成后数据转发流程

带RR的OptionC2(RR不转发数据)

RR1和RR2如何建立邻居关系

第一步 先获取到对端的IP地址

第二步 为路由手工分配标签

RR的邻居建立成功后,路由传递过程如下

数据转发流程

 带RR的OptionC1(RR转发数据)

RR1和RR2如何建立邻居

RR的邻居建立成功后,路由传递过程如下

路由传递完成后数据转发流程

RR场景注意事项


为什么要携带RR

使用RR可以增加网络的扩展性(注意:LDP发标签的方向就是路由传递的方向)

当有多个PE设备接入RR时,RR的设备压力就比较大,所以希望RR只做路由的传递,但是不做数据转发,这就需要在RR上配置向PE、ASBR传递路由时不更改下一跳


带RR的OptionB

邻居建立关系

PE1与RR1建立vpnv4 IBGP邻居关系

RR1与ASBR1建立vpnv4 IBGP邻居关系

ASBR1与ASBR2建立vpnv4 EBGP邻居关系

ASBR2与RR2建立vpnv4 IBGP邻居关系

RR2与PE2建立vpnv4 IBGP邻居关系

路由发布过程

CE1→PE1

CE1将路由1.1.1.1发布给PE1

PE1→RR1

PE1从实例1收到1.1.1.1,将其转为vpnv4路由,携带ex 1:2,私网标签①发给RR1

RR1→ASBR1

RR1收到vpnv4路由后,反射给ASBR1(携带ex 1:2,私网标签①)——RR1需要关闭RT值检测、并且向ASBR1发路由时不更改下一跳

ASBR1→ASBR2

ASBR1收到vpnv4路由后,存入vpnv4路由表,将私网标签①存放,然后携带ex 1:2,私网标签②发给ASBR2

ASBR2→RR2

ASBR2收到vpnv4路由后,存入vpnv4路由表,将私网标签②存放,然后携带ex 1:2,私网标签③发给RR2

RR2→PE2

RR2收到vpnv4路由后,反射给PE2(携带ex 1:2,私网标签③)——RR1需要关闭RT值检测、并且向ASBR1发路由时不更改下一跳

PE2收到

PE2收到vpnv4路由后,匹配ex RT值,存入vpnv4路由表,并剥离RD值,加入到实例FIB表项,将私网标签③存放于标签转发表,用于数据转发

数据转发过程(同OptionB)

CE2→PE2

CE2去往1.1.1.1发给PE2

PE2→P2

PE2查找实例2的FIB表项,发现去往1.1.1.1,打上私网标签③,发往5.5.5.5

查看LFIB,发现去往5.5.5.5又LDP分配的标签,打上LDP标签,发往下一跳P2

P2→ASBR2

P2收到报文,查看LFIB表,通过入标签找到5.5.5.5出标签为3标签,将LDP标签弹出发往下一跳ASBR2

ASBR2→ASBR1

ASBR2收到报文,查看LFIB表,将私网标签③替换为私网标签②,发往下一跳ASBR1

ASBR1→P1

ASBR1收到报文,查看LFIB表,将私网标签②替换为私网标签①,发现下一跳为2.2.2.2为分非直连,查找FIB发现2.2.2.2走标签,又LDP分配的标签,打上LDP标签发往下一跳P1

P1→PE1

P1收到报文,查看LFIB表,通过入标签找到2.2.2.2出标签为3标签,将LDP标签弹出发往下一跳PE1

PE1→CE1

PE1收到报文,通过私网标签①找到对应的实例FIB表,并将私网标签剥离发往对应下一跳CE1


带RR的OptionC1(RR不转发数据)

邻居关系

PE1和RR1建立vpnv4的IBGP邻居关系和IPv4 IBGP邻居关系

RR1和RR2建立Vpnv4的EBGP邻居关系

RR1和ASBR1建立IPv4 IBGP的邻居关系

ASBR1和ASBR2建立IPv4 EBGP的邻居关系

ASBR2和RR2建立IPv4 IBGP的邻居关系

RR2和ASBR2建立IPv4 IBGP的邻居关系

RR2和PE2建立vpnv4的IBGP邻居关系和IPv4 IBGP邻居关系

BGP邻居用来传递标签和RR、PE的路由

MP-BGP邻居用来传递Vpnv4路由

RR1和RR2如何建立邻居

在C1跨域RR场景下,ASBR不仅需要为PE手动分配标签,还需要为RR手动分配标签

为PE手动分配标签是为了数据传输,为RR分配标签是为了使得RR之间建立VPNv4邻居,传递路由

第一步 先获取到对端的IP地址

RR1将自己的地址宣告进BGP中,ASBR1通过IBGP学习到RR1的地址(如果ASBR1已经从IGP学到RR1的地址,则可以直接在ASBR1上宣告RR11的地址)

然后ASBR1将RR1的地址通过EBGP邻居传递到ASBR2

ASBR2再通过IBGP传递到RR2

PE2的地址传到PE1的过程类似(当获取到对端路由后,由于邻居不可达,无法建立邻居)

第二步 为路由手工分配标签

1、ASBR1为RR1生成标签,传递给ASBR2;ASBR2为RR1生成标签再传递给RR2(不用传给PE2)--(反之相同原理)用于RR之间建立邻居

2、ASBR1为PE1生成标签传递给ASBR2;ASBR2为PE1生成标签传递给RR2;RR2将ASBR2生成的标签传递给PE2 --(反之相同原理)进行路由传递和PE之间数据传输

为什么要为RR分配标签

RR之间建立邻居需要标签,同C1不带RR场景下PE之间建立邻居的情况

RR之间的报文到达P设备后被丢弃(因此需要通过标签嵌套的形式使得P设备能够转发数据包)

为什么要为PE分配标签

当RR建立邻居后,将CE的路由传递到两端PE(RR在传递时不更改下一跳)

当CE2访问CE1时,CE2将数据包交给PE2,PE2将根据CE1的标签进行封装,下一跳为2.2.2.2,发现没有对应的标签封装了,就将此数据包(目的为CE1,有一层私网标签)发给P2

P2收到报文后,无法识别此私网标签,将报文丢弃

此时就需要在ABR1和ASBR2上手动配置标签传递给PE2(RR2收到ASBR2的配置标签后将其反射给PE2,不更改下一跳)

这样当CE2访问CE1的路由经过PE2时,将2.2.2.2封装为标签,然后再为直连下一跳封装LDP分配的标签,发给P2,这样才可以将数据包送到CE1

此时RR2去往RR1建立邻居的过程如下

如果没有为RR建立标签,RR2去往RR1的报文为(源目IP),当报文转发给P2时,由于P2没有关于8.8.8.8的路由,造成路由丢失

RR2

RR2查找FIB表,去往8.8.8.8,走标签,查看LFIB表,为8.8.8.8打上公网标签Ⅱ,发往ASBR2(去往ASBR2可以通过标签转发)

报文为 (公网标签Ⅱ  关于5.5.5.5的LDP标签),到达P2将LDP标签剥离(倒数第二跳)

ASBR2

ASBR2收到报文,查找LFIB表,将公网标签Ⅱ替换为公网标签Ⅰ,发往ASBR1

报文为(公网标签Ⅰ)

ASBR1

ASBR1收到报文后,查看LFIB表,剔除公网标签Ⅱ,查找FIB表,发现有去往8.8.8.8的路由(去往8.8.8.8通过标签转发)

报文为(8.8.8.8的LDP标签)

RR1

RR1去往RR2过程类似,此时RR1和RR2成功互访,邻居建立成功

RR的邻居建立成功后,路由传递过程如下

PE1→RR1

PE1从实例1收到1.1.1.1的路由,将其转为vpnv4路由(1.1.1.1 1:1),携带ex RT、私网标签①传递到RR1,下一跳为2.2.2.2

RR1→RR2

RR1要关闭RT值检测,收到vpnv4路由后(1.1.1.1 1:1),携带ex RT、私网标签①、下一跳为2.2.2.2传给RR2

RR2→PE2

RR2要关闭RT值检测,收到vpnv4路由后( 1.1.1.1 1:1),携带ex RT、私网标签①、下一跳为2.2.2.2传给PE2

PE2收到

PE2收到vpnv4路由后,匹配ex RT值,存入vpnv4路由表,并剥离RD值,加入到实例FIB表项,将私网标签①存放于标签转发表,用于数据转发

路由传递完成后数据转发流程

如果RR不转发数据,则需要在RR上配置不更改下一跳(对于Vpnv4邻居)

并且需要在RR上开启LDP,负责无法生成LSP,邻居建立失败

此数据转发流程同普通C1场景

CE2发往PE2

CE2 访问1.1.1.1产生ICMP包给PE2

PE2发往P2

PE2查找实例2的FIB表项,发现去往1.1.1.1,打上私网标签①,发往2.2.2.2

查看LFIB,发现去往2.2.2.2又ASBR2分配的公网②标签,打上公网②标签,发往5.5.5.5

查看LFIB,发现去往5.5.5.5又LDP分配的标签,打上LDP标签,发往P2

P2发往ASBR2

P2收到报文,查看LFIB表,通过入标签找到5.5.5.5出标签为3标签,将LDP标签弹出发往下一跳ASBR2

ASBR2发往ASBR1

ASBR2收到报文,查看LFIB表,将公网标签②替换为公网标签①,发往下一跳ASBR1

ASBR1发往P1

ASBR1收到后查看LFIB表,发现公网标签①对应路由为2.2.2.2

而此时ASBR1也从LDP分配到关于2.2.2.2的标签,下一跳为P1

所以此时将公网标签①剥离,替换为LDP标签,发往P1

P1发往PE1

P2收到报文,查看LFIB表,通过入标签找到2.2.2.2出标签为3标签,将LDP标签弹出发往下一跳ASBR2

PE1发往CE1

PE1查找LFIB表,发现私网标签①是自己产生的,于是通过私网标签①找到对应的实例1,并剥离掉私网标签①

查找实例1的FIB表项,发现去往1.1.1.1的下一跳为CE1


带RR的OptionC2(RR不转发数据)

邻居关系

PE1和RR1建立vpnv4的IBGP邻居关系邻居关系

RR1和RR2建立Vpnv4的EBGP邻居关系

ASBR1和ASBR2建立IPv4 EBGP的邻居关系

RR2和PE2建立vpnv4的IBGP邻居关系

BGP邻居用来传递标签和RR、PE的路由

MP-BGP邻居用来传递Vpnv4路由

RR1和RR2如何建立邻居关系

第一步 先获取到对端的IP地址

此时将8.8.8.8的路由在ASBR1通过EBGP传递到ASBR2

然后在ASBR2中将BGP引入到IGP中,此时RR2就学到8.8.8.8的路由

第二步 为路由手工分配标签

此时不需要为RR分配标签RR之间的邻居就可以建立成功

此时RR之间建立邻居不需要分配标签,将RR路由引入到AS区域内就可以直接建立邻居关系因为此时每个AS区域都有了RR的路由-通过IGP学到,就不需要标签转发了,通过IP层面RR邻居就可以建立成功;同C2不带RR的场景下PE之间建立邻居

所以此时只需要为PE分配标签来完成数据转发

  • PE的标签在AS100区域会由LDP自动分配
  • 然后在ASBR1上手动针对ASBR2为PE1分配标签(目的是为了让ASBR2可以通过标签去往PE1)
  • 然后再ASBR2上通过LDP为PE1分配标签,使得PE2有PE1的标签(反之一样)

即:C2与C1手工分配标签的不同(以PE2获取PE1、RR2获取RR1的标签、ASBR获取PE的标签为例子)

C1:ASBR1和ASBR2需要为PE1和RR1分配标签 ,并且ASBR2为PE1和RR1分配标签是BGP分配的,ASBR去往PE的标签在对端ASBR上手工配置

C2:ASBR1和ASBR2只需要为PE1分配标签,并且ASBR2为PE1分配标签是LDP分配的(在ASBR2上配置LDP为BGP路由分配标签),ASBR去往PE的标签在对端ASBR上手工配置

RR的邻居建立成功后,路由传递过程如下

PE1→RR1

PE1从实例1收到1.1.1.1的路由,将其转为vpnv4路由(1.1.1.1 1:1),携带ex RT、私网标签①传递到RR1,下一跳为2.2.2.2

RR1→RR2

RR1要关闭RT值检测,收到vpnv4路由后(1.1.1.1 1:1),携带ex RT、私网标签①、下一跳为2.2.2.2传给RR2

RR2→PE2

RR2要关闭RT值检测,收到vpnv4路由后( 1.1.1.1 1:1),携带ex RT、私网标签①、下一跳为2.2.2.2传给PE2

PE2收到

PE2收到vpnv4路由后,匹配ex RT值,存入vpnv4路由表,并剥离RD值,加入到实例FIB表项,将私网标签①存放于标签转发表,用于数据转发

数据转发流程

需要在RR的接口上开启LDP,这样才可以接收到ASBR通过LDP为RR、PE产生的路由

CE2发往PE2

CE2 访问1.1.1.1产生ICMP包给PE2

PE2发往P2

PE2查找实例2的FIB表项,发现去往1.1.1.1,打上私网标签①,发往2.2.2.2

查看LFIB,发现去往2.2.2.2又LDP分配的标签,打上LDP标签,发往P2

P2发往ASBR2

P2收到报文,查看LFIB表,通过入标签找到5.5.5.5出标签为3标签,将LDP标签弹出发往下一跳ASBR2

ASBR2发往ASBR1

ASBR2收到报文,查看LFIB表,将LDP标签替换为公网标签①,发往下一跳ASBR1

ASBR1发往P1

ASBR1收到后查看LFIB表,发现公网标签①对应路由为2.2.2.2

而此时ASBR1也从LDP分配到关于2.2.2.2的标签,下一跳为P1

所以此时将公网标签①剥离,替换为LDP标签,发往P1

P1发往PE1

P2收到报文,查看LFIB表,通过入标签找到2.2.2.2出标签为3标签,将LDP标签弹出发往下一跳ASBR2

PE1发往CE1

PE1查找LFIB表,发现私网标签②是自己产生的,于是通过私网标签①找到对应的实例1,并剥离掉私网标签①

查找实例1的FIB表项,发现去往1.1.1.1的下一跳为CE1


 带RR的OptionC1(RR转发数据)

邻居关系与C1 RR不转发数据场景一致

RR1和RR2如何建立邻居

1、先获取对端路由

2、ASBR只需要为RR手动分配标签,使得RR之间建立VPNv4邻居,传递路由

由于路由的下一跳不是PE,所以不需要为PE手动分配标签;

而路由的下一跳为RR,RR可以在AS区域内通过LDP动态生成标签;

RR的邻居建立成功后,路由传递过程如下

PE1→RR1

PE1从实例1收到1.1.1.1的路由,将其转为vpnv4路由(1.1.1.1 1:1),携带ex RT、私网标签①传递到RR1,下一跳为2.2.2.2

RR1→RR2

RR1要关闭RT值检测,收到vpnv4路由后(1.1.1.1 1:1),将私网标签①收进LSP转发表,重新生成私网标签②,携带ex RT、私网标签②、下一跳为8.8.8.8传给RR2

RR2→PE2

RR2要关闭RT值检测,收到vpnv4路由后( 1.1.1.1 1:1),将私网标签②收进LSP转发表,重新生成私网标签③,携带ex RT、私网标签①、下一跳为9.9.9.9传给PE2

PE2收到

PE2收到vpnv4路由后,匹配ex RT值,存入vpnv4路由表,并剥离RD值,加入到实例FIB表项,将私网标签③存放于标签转发表,用于数据转发

路由传递完成后数据转发流程

如果需要转发数据经过RR,则只需要RR在传递路由时更改下一跳,并在RR的接口上开启LDP(此时在ASBR分配标签时只需要为RR分配标签,不需要为PE手工分配标签;PE通过LDP生成的标签将数据传给RR)


RR场景注意事项

RR是否需要Undo RT值检测

RR是否配置了下一跳不改变

RR是否开启了标签使能功能(C1场景,需要接收关于对端RR路由的手工标签)

RR的邻居是否建立(C1场景,RR之间的地址是否可达)

 华为MPLS跨域B方案带RR实验配置_静下心来敲木鱼的博客-CSDN博客


 华为MPLS跨域C1方式RR场景(数据不经过RR)实验配置_静下心来敲木鱼的博客-CSDN博客

 华为MPLS跨域C2方式RR场景(数据不经过RR)实验配置-CSDN博客

 华为MPLS跨域C1方式RR场景(数据经过RR)实验配置-CSDN博客

这篇关于MPLS隧道——带RR的跨域解决方案讲解(B、C1、C2方案)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/371994

相关文章

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4