【HCIE】07.MPLS VPN单域

2023-09-19 09:05:34

MPLS VPN典型应基本组网

Intranet

VPN1和VPN1一对,VPN2和VPN2是一对

Extranet

VPN1和VPN2都能与VPN1建立连接,VPN1与VPN2之间不能建立连接

Hub&Spoke

MCE组网

多CE组网

PE是运营商设备,CE是用户侧设备,如果CE较多,那么运营商需要建很多PE和链路,投入成本较大

CE设备上开启VRF,用一根线路子接口的形式连接;现网中,CE设备由交换机充当。

从一个实例出来进入另一个实例会牵扯到放环的问题

PE-CE之间的路由选择

双归属场景会出现环路

  1. 如图,4产生了一条路由X,通过BGP传递给1和2
  2. 1设备因为某种原因先学习到了X这条路由,他会通过IGP协议传给3
  3. 3与2设备存在IGP邻居关系,会使用ospf协议将路由传递给设备2
  4. 此时设备2,可以从3去往X,也可以从4去往X,他会选择优先级高的,所以走3
  5. 由此产生了次有路径
  6. 2设备因为与1设备建立了BGP邻居关系,又把IGP引入到了BGP,2会把X通过BGP传递给设备1
  7. 此时对于1来说,X有两条路,分别是2和4,如果4设备断开需要向1撤销路由
  8. 1现在没有了4方向传来的路由,便会继续从2导入X路由,然后将X路由通过IGP传递给设备3
  9. 3又会把路由传递给2,2继续把路由传递给3
  10. 从而产生了永久的环路

如图,R4为总部,为了保证网络可靠,做了冗余链路;R4与R1,R2之间运行ISIS协议,

R2设备去往5.5.5.5路由时候走的下一跳是R4,产生了次有路径

进行Trancert,确定路由走的是次有路径

对于R1来说,去往R5的下一跳是R3,备用路由下一跳是R2,现在R3向R1的路由撤销掉了,R1仍然有一条去往X的路由,下一跳是R2;R2仍然会将路由引入到R4,R4会源源不断的把路由给R2,R2也会一直给R1,由此产生了环路。

将5.5.5.5的地址删除掉,再次Trancert

由此发现出现环路

OSPF 与ISIS本身就可以防止这种环路

对于ISIS来说,这个场景产生环路是因为从一个VRF发出去的路由,又进入了到了另一个VRF,这种场景有可能产生环路;ISIS会有一个UD位,防止环路产生,按照ISIS规定从一个VRF出来的路由UD位会置位,再进入到另一个VRF时,会检查UD位有没有置位,如果有就不接收;但是华为,思科,锐捷都没有遵守。如果使用ISIS来进行PE与CE之间互联,要用打Tag的方式。PE与CE之间尽量不用ISIS协议

对于OSPF来说,他有了天然防环手段,有一个DN位,从一个VRF出来,会DN置位,其他设备接收到路由就不会使用DN置位的LSA进行选路,DN位从一个实例出来又进入另一个实例。

Hub&spoke架构,in方向发送一个DN置位的LSA,那么out接收到后就不会使用了;可以关闭dn位携带功能(只有3类,5类和7类携带)

dn-bit-set disable summary,也就是从in方向实例发出来的时候就不带dn位了

也可以在out方向实例关闭dn位检查:dn-bit-check

OSPF为了保险起见,针对5类,7类也有VPN tag保证放环

如果VPN tag相同,那么也会放环产生,自动打的Tag

域ID

一般会用于BGP来做PE与CE之间的路由,因为OSPF应用广泛,所以可能会用到OSPF协议进行互联,OSPF有个选路原则,L1,2>L3>L5>L7。

如图,CE产生的1,2类LSA,传递到右边的CE之后,就会变为5类LSA。

超级骨干区域,就是两台PE之间的MPLS域,两边都跑了OSPF,中间就是超级骨干区域,这样就去看每个区域的domain ID,默认domain ID是相同的,如果两个区域经过超骨干传递路由,LSA 的域ID会提取出来放在BGP中携带,对面就会通过domain ID就会判断,如果是1,2,3类那么就会变为3类,如果是5,7类那么就还是5,7类,如果domain ID不同,那么传过来的路由就是5,7类。

如图,10.2.2.2是以3类的形式传递过来的,而192.168.2.0会认为是运营商的地址,那么就不会享有提升LSA的权限。

R1:dis bgp vpnv4 all routing-table 10.2.2.2 version

默认情况下,domain ID是0

修改domain ID

在PE上面的OSPF进程里面修改

R3:OSPF 1,domain-id 2

在PE上将OSPF引入BGP时,PE将根据本地的配置为BGP路由增加域ID属性,域ID作为BGP扩展团体属性传播。

在PE将BGP路由引入OSPF时,若BGP路由携带的Domain ID与本地相同,则认为两个站点属于同一个OSPF路由域。若不相同,则认为不再同一个路由域。

sham-link

如图,4与5之间建立了MPLS VPN,链路带宽为100M,为了保证链路冗余性,公司又拉了一条专线,因为专线较贵,所以只给了专线2M的链路,让他只做备份即可,正常时流量走MPLS VPN,如果MPLS VPN断开之后再把流量切到专线上面,但是现在因为MPLS VPN最优的LSA是3类,而专线的LSA是1,2类,所以默认流量会直接在下面走,如何解决?

可以看到现在走的是低速链路,这样要继续把3类再次提升到1,2类,使用sham-link(欺骗链路)

利用公网上面,打通一个隧道,把1,2类传过来,在PE上面重新开一个Loopback口

不能使用OSPF宣告这个新开的loopback地址,要用BGP传递这个地址因为通过实例发布OSPF后,隧道建通后就会跑1类2类。

两边PE有了新的地址,如果放到了OSPF中,对方3类学习到的,路由是一定有的,就会打通隧道,1,2类就会过去了,把3类干掉,那么隧道两边的地址就回暂时消失了,1,2,类又被撤销了,3类又会浮出,又会建隧道,会重复做这个事情,造成路由震荡。

配置隧道之后,还需要修改开销值,让他走上面。

PE与CE之间使用BGP

如图,左边和中间的AS号分别是公网200和100,右边的AS号是私网的200。此时路由从左边往右传递时,会因为AS号相同,触发放环原则,把公网的200干掉

AS号替换

AS 65001传递到最右边时,中间的AS号会把65001替换成123再传递。

忽略AS检查

AS号允许重复多少次,可以根据左边的邻居加一条命令,忽略AS号重复出现几次

如果忽略了AS检查,那么就可能会出现环路,因为把检测环路的功能取消掉了

SoO属性,如果SoO值相同,那么也不接收,类似于加了个Tag。

为什么没有第四种方案?

如图,CE之间采用BGP,PE之间采用IGP;路由从CE1传给PE1,此时会带着AS号650001,然后P会把路由变为OSPF传给HUB-CE,此时路由没有AS号,所以PE1会有可能收到这条路由,而且没有AS好,那么PE1会认为这条路由在右边走更优。

更多推荐

【springMVC】高级部分

拦截器1拦截器(Interceptor)是一种动态拦截方法调用的机制#作用:1.在指定的方法调用前后执行预先设定后的的代码2.阻止原始方法的执行#核心原理:AOP思想#拦截器链:多个拦截器按照一定的顺序,对原始被调用功能进行增强2拦截器使用步骤1实现HandlerInterceptor接口/***三个方法的运行顺序为p

UI自动化测试用例管理平台搭建

用到的工具:python3+django2+mysql+RabbitMQ+celery+seleniumpython3和selenium这个网上很多教程,我不在这一一说明;平台功能介绍:项目管理:用于管理项目。每个项目可以设置多个环境,例如开发环境,测试环境,预发布环境,生产环境等。页面管理:主要用来方便对元素进行管理

通讯网关软件009——利用CommGate X2MQTT实现MQTT访问ODBC数据源

本文介绍利用CommGateX2MQTT实现MQTT访问ODBC数据源。CommGateX2MQTT是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。【案例】如下图所示,实现上位机通过MQTT来获取ODBC数据源的数据。【解决方案】设置网关机,与ODBC数据源

2023数A题——WLAN网络信道接入机制建模

A题——WLAN网络信道接入机制建模思路:该题主要考察的WLAN下退避机制建模仿真。资料获取问题1:假设AP发送包的载荷长度为1500Bytes(1Bytes=8bits),PHY头时长为13.6μs,MAC头为30Bytes,MAC头和有效载荷采用物理层速率455.8Mbps发送。AP之间的RSSI为-70dBm。大

git和github的入门操作

之前因为工作中用的都是SVN版本控制工具,没接触过git和github,现在开始深入自学Django框架技术后,看到官网推荐使用git,然后这两天网上查阅了很多文章教程,学到入门操作需要学习的点,太多的知识点要后面慢慢深入学习了。看到一个网上教程说的一段话:“如果你是一枚Coder,但是你不知道Github,那么我觉的

深入探讨Java面试中内存泄漏:如何识别、预防和解决

引言在编写和维护Java应用程序时,内存泄漏是一个重要的问题,可能导致性能下降和不稳定性。本文将介绍内存泄漏的概念,为什么它在Java应用程序中如此重要,并明确本文的目标,即识别、预防和解决内存泄漏问题。内存泄漏的概念内存泄漏是指应用程序中分配的内存(通常是堆内存)在不再需要时未能正确释放。这些未释放的内存块会积累,最

springboot+canal+mysql+redis缓存双写一致性

canal官网地址:https://github.com/alibaba/canal/wiki/QuickStart基本上按照官网的步骤来就行准备首先服务器上要安装好jdk,因为canal运行需要jdk,同时把canal对应的端口在服务中开放,否则连接不上对于自建MySQL,需要先开启Binlog写入功能,配置binl

【面试刷题】——堆栈窗口

“堆栈窗口”(StackWindow)通常不是一个特定的编程术语,但可以用来描述在编程和计算机科学领域中一些相关的概念。这些概念涉及到堆栈(stack)和窗口(window)等术语的组合。以下是一些可能涉及到的相关概念:堆栈窗口管理(StackWindowManagement):这是一种用于管理用户界面(UI)中不同窗

【Vue】模块基本语法「上篇」

【Vue】模块基本语法「上篇」一、插值1.1文本1.2v-html1.3数据双向绑定(v-model)二、指令2.1v-if|v-else|v-else-if2.2v-show2.3v-for2.4动态参数三、过滤器3.1局部过滤器3.2全局过滤器四、计算属性&监听属性4.1计算属性4.2监听属性五、案例实操5.1购物

嵌入式MCU都有什么高级用法?

嵌入式MCU都有什么高级用法?您举的几个例子,确实是MCU外设的一些高端玩法。只是不知道您是否想过,既然这些机制是被人设计出来的,那它就是种标准用法。从微控制器的发展历程来看,许多硬件机制都是有了实际需求后才添加进来,比如接收不定长数据,最初没有超时中断的情况下只能软件实现,极大的浪费最近很多小伙伴找我,说想要一些嵌入

Vue的进阶使用--模板语法应用

目录前言一.Vue的基础语法1.插值1.1文本插值1.2HTML插值1.3属性插值1.4Vue演示三元条件运算2指令2.1if&&else指令(v-if/v-else-if/v-else)2.2v-for指令2.3v-on指令(动态参数)2.4知识点补充之v-if与v-show的区别3.过滤器3.1局部过滤器3.2全局

热文推荐