导图社区 MPLS技术(HCIP-Datacom)
华为认证HCIP之MPLS技术知识总结,包括MPLS原理与配置、MPLS LDP原理与配置、MPLS VPN原理与配置等。
编辑于2022-08-01 07:00:54MPLS技术
MPLS原理与配置
基础
概述
MPLS(Multi-Protocol Label Switching,多协议标签交换)
发展
传统IP转发
传统IP是逐跳转发,知道全网路由,IP头部不定长,面向无连接,不可靠传输 硬件性能瓶颈导致转发效率低,所以开始采用标签旨在提高路由器转发速度
传统IP转发每一个数据包都需要查找整张路由表 根据标签查找到对应的标签就可以转发
标签转发
处于2.5层,无需解封装到3层就能知道报文的转发路径,通过在数据链路层和网络层之间增加额外的MPLS头部,支持任意的链路层协议,基于MPLS头部实现数据快速转发
随着设备性能的不断提升,MPLS在转发速率上的优势减弱,但是支持标签嵌套和设备内部转控分离的特点,现多用于VPN、流量工程和QoS
多协议支持IP、IPv6、IPX、CLNP
术语
MPLS域(MPLS Domain)
连续运行MPLS的网络设备构成
LSR(Label Switching Router,标签交换路由器)
支持MPLS的路由器、交换机等网络设备
分类
位置不同
LER(Label Edge Router)
位于MPLS域边缘、连接其它网络的LSR
核心LSR(Core LSR)
区域内部的LSR
标签处理方式
入站LSR(Ingress设备):压入标签(PUSH)
中转LSR(Transit设备):交换标签(SWAP)
出站LSR(Egress设备):弹出标签(POP)
FEC(Forwarding Equivalence Class,转发等价类)
指一组具有相同转发特征的报文,类似IP中的路由
例如:源或目的IP、掩码(源目端口、VPN、DSCP)匹配同一条IP路由的报文被认为属于同一个FEC
LSP(Label Switched Path,标签交换路径)
到达同一目的地址的报文在MPLS网络中经过的路径,可以看成是LSR的有序集合
同一个FEC的报文通常采用相同的LSP穿越MPLS域,所以对同一个FEC,LSR总是用相同的标签转发。
LSP是单向的,与数据流的方向一致,所以实现数据的互通需要建立双向的LSP
建立方式
静态
手工分配标签
动态
使用标签分发协议 ,也叫信令协议(常用LDP) MPLS的控制协议(也可称为信令协议),负责FEC的分类、标签的分发以及LSP的建立和维护等一系列操作
优缺点类似静态和动态路由协议,且动态优于静态
标签
标签是一个短而定长的、只具有本地意义的标识符
一个MPLS报文可包含多个标签
标签嵌套主要用于MPLS VPN、TE FRR
标签报文结构
Lable
标签:20 Bit
携带标签值
EXP
流分类:3 Bit
主要用于QoS扩展
S
栈低位:1 Bit
标识是否是最后一层标签
0
后面还有标签
1
最后一层标签
TTL
8 Bit
与IP报文头部中的TTL意义一样:防环,避免标签报文被无限转发,还有实现traceroute的功能
处理模式
Uniform模式(默认)
IP报文经过MPLS网络时,在入节点,IP TTL减1映射到MPLS TTL字段,此后报文在MPLS网络中按照标准的TTL处理方式处理。在出节点将MPLS TTL减1后映射到IP TTL字段
Pipe模式
IP分组经过MPLS网络时,无论经过多少跳,IP TTL只在入节点和出节点分别减1,整个MPLS网络被当作了一跳,好像Ingress与Egress是直连的,MPLS标签中TTL是一个随机值,Traceroute的结果不能反映报文实际经过的跳数。此时可以起到隐藏网络拓扑的目的
标签嵌套只有外层的标签TTL减
在MPLS域中IP头部中的TTL都不变
配置
[HUAWEI] undo ttl propagate
修改为Pipe
reset mpls ldp生效
标签栈(Label Stack)
MPLS标签头部的有序集合
标签顺序
栈顶靠近二层帧头(S位为0),栈低靠近IP头部(S位为1)
标签空间(0~2^20-1)
0~15
特殊标签
0
IPv4显式空标签
倒数第二跳压入0号标签,最后一条执行标签弹出
3
IPv4隐式空标签
倒数第二跳弹出标签,直接执行IP的转发
作用:提高egress设备的转发速率
16~1023
共享标签空间
用于静态LSP、静态CR-LSP
1024~2^20-1
动态独立连续的分配标签空间
LDP、RSVP-TE、MP-BGP
转发流程
概述
转发本质
将数据归到对应的FEC并按照提前建立好的LSP进行转发
体系结构
控制平面
负责产生和维护路由信息以及标签信息
组成
IP路由协议
路由信息表RIB(Routing Information Base):由IP路由协议(IP Routing Protocol)生成,用于选择路由。
标签分发协议LDP(Label Distribution Protocol):负责标签的分配、标签转发信息表的建立、标签交换路径的建立、拆除等工作。
标签信息表LIB(Label Information Base):由标签分发协议生成,用于管理标签信息。
转发平面
负责普通IP报文的转发以及带MPLS标签报文的转发
组成
转发信息表FIB(Forwarding Information Base):从RIB提取必要的路由信息生成,负责普通IP报文的转发。
标签转发信息表LFIB(Label Forwarding Information Base):简称标签转发表,由标签分发协议在LSR上建立LFIB,负责带MPLS标签报文的转发。
FTN(FEC-to-NHLFE)
入标签映射ILM(Incoming Label Map)
下一跳标签转发表项NHLFE(Next Hop Label Forwarding Entry)
LSP建立条件
当网络层协议为IP协议时,FEC所对应的路由必须存在于LSR的IP路由表中,否则该FEC的标签转发表项不生效
携带正确的标签,上游LSR的出标签必须等于下游LSR的入标签
入标签是自己分发的,出标签是邻居分发的
MPLS转发
概念
FTN(FEC-to-NHLFE)
ingress设备
Tunnel ID、FEC到NHLFE的映射信息,查看FIB表中Tunnel ID值不为0x0的表项,能够获得FTN的详细信息
入标签映射ILM(Incoming Label Map)
transit/egress设备
Tunnel ID、入标签、入接口、标签操作类型等信息
下一跳标签转发表项NHLFE(Next Hop Label Forwarding Entry)
transit/egress设备
Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息
FIB、ILM和NHLFE表项是通过Tunnel ID关联 Tunnel-ID只在本地有效
过程
Ingress
进入MPLS域: 首先查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0,是则进入正常的IP转发,不是则根据FIB表的Tunnel ID找到对应的NHLFE表项,得到出接口、下一跳、出标签和标签操作类型,标签操作类型为Push,则压入标签,同时处理TTL,封装好转发给下一跳
是否进行MPLS的转发
FIB表中的Tunnel ID值
以太网头部中的Type字段为0x8847 PPP头部中的Protocol字段为0x8281
Transit
MPLS域中转发: 解封装二层,根据MPLS的标签值查看对应的ILM表,得到Tunnel ID,再根据ILM表的Tunnel ID找到对应的NHLFE表项,查看NHLFE表项,得到出接口、下一跳、出标签和标签操作类型,根据出标签值的不同再进行处理,如果是标签值>=16,标签操作类型为Swap,则交换标签,如果标签值是特殊标签,按照其特殊方式处理
Egress·
离开MPLS域: 如果收到的是IP报文,则进行IP的转发。如果收到的是MPLS的报文,通过查询ILM表获取标签的操作类型,S=1弹出标签,进行IP转发,S=0进行下一层标签的转发
MPLS的ICMP报文分析
命令
ping lsp ip 2.2.2.2 32
可以验证MPLS域标签的连续性
tracert lsp ip 2.2.2.2 32
分析
基于UDP发送,Echo Request的UDP端口号为3503
目的FEC地址携带在MPLS Echo Request报文中
MPLS Echo Request报文通过MPLS转发给目的端,而MPLS Echo Reply报文则通过IP转发给源端
为了防止LSP断路时Echo Request进行IP转发,从而保证LSP的连通性测试,将Echo Request消息的IP头中目的地址设置为127.0.0.1,IP头中的TTL值为1
ingress设备封装IP层目的IP为127.0.0.1,TTL=1的报文给transit设备,transit设备只拆到MPLS层进行转发,不看IP层,egress设备收到后才拆到IP层根据可选项中携带的内容发现是发给自己的报文
站点无法跟踪MPLS域中某些节点的路径
原因
默认TTL超时后,响应报文沿本地IP路由转发,但是MPLS域中P设备或者ASBR没有私网的路由,所以没有办法回复TTL超时报文
解决方法
取消MPLS TTL超时后将标签弹出,修改TTL = 255,这样就可以根据标签继续将超时报文发送到对端的PE设备,此时,PE设备根据VRF再查找私网路由返回
[Huawei-mpls] undo ttl expiration pop
前提
uniform模式
静态LSP配置
1、配置IGP路由
2、配置MPLS
配置LSR-ID
[Huawei] mpls lsr-id
唯一标识一个LSR
开启MPLS后不能修改LSR-ID
开启MPLS
全局开启MPLS
[Huawei] mpls
必须先配置LSR-ID
接口开启MPLS
[Huawei-GigabitEthernet0/0/0] mpls
必须先全局使能MPLS
3、配置标签
ingress
static-lsp ingress LSP名 destination 目的网段和掩码 nexthop 下一跳 outgoing-interface 出接口 out-label 出标签
出标签范围(16~最后)
transit
static-lsp transit LSP名 incoming-interface 入接口 in-label入标签 nexthop 下一跳 outgoing-interface 出接口 out-label出标签
入标签范围(16~1023)、出标签范围(16~最后)
出接口为以太网类型,必须配置nexthop
egress
static-lsp egress LSP名 incoming-interface入接口 in-label 入标签
入标签范围(16~1023)
4、验证配置
查看开启MPLS的接口
display mpls interface
查看静态LSP信息
display mpls static-lsp
查看LFIB
display mpls lsp
查看ILM、NHLFE
[Huawei]diagnose
[Huawei-diagnose]display mpls ilm
[Huawei-diagnose]display mpls nhlfe
查看中间经过的标签
tracert -v 2.2.2.2
根据Tunnel ID查看隧道信息
display tunnel-info tunnel-id
MPLS LDP原理与配置
LDP基本概念
工作过程
1、LSR之间建立LDP会话。
2、LSR之间基于LDP会话动态交换标签与FEC的映射信息,并根据标签信息建立LSP。
LDP邻接体
交互Hello消息建立邻接体关系
本地
组播(224.0.0.2)发送Hello
远端
单播发送Hello
LDP对等体
邻接体交互LDP消息,形成LDP会话
LDP会话
本地LDP会话(Local LDP Session):建立会话的两个LSR之间是直连的;
远程LDP会话(Remote LDP Session):建立会话的两个LSR之间可以是直连的,也可以是非直连的。
LSR ID
32Bit
唯一标识一个LSR
LDP ID
表示形式(48Bit)
LSR ID(32bit):标签空间标识符(16bit)
标签空间标识两种形态
值为0:表示基于设备(或基于平台)的标签空间;
华为基于平台
值非0:表示基于接口的标签空间。
LDP工作原理
LDP消息
发现消息:用来宣告和维护网络中一个LSR的存在;用于通告和维护网络中LSR的存在,如Hello报文。
会话消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization报文、KeepAlive报文。
通告消息:用来生成、改变和删除FEC的标签映射;
通知消息:用来宣告告警和错误信息。
报文
LDP头部
Version
PDU Length
LDP ID
LDP消息
U位
0
返回不识别的消息给生成者
1
忽略不识别的消息类型
工作过程
5个状态机(LDP会话建立过程)
发现阶段
Non-Existent
初始状态,双方发送HELLO消息,选举主动方
周期性地发送LDP链路Hello报文(5s一次,15s老化)
Hello报文中的T置位区分本地还是远端消息
Hello报文中携带传输地址,双方后续将使用传输地址建立TCP连接和LDP会话
默认传输地址
公网
LSR-ID
私网
接口主IP地址
修改传输地址:接口视图mpls ldp transport-address
TCP建立阶段
传输地址较大的一方作为主动方,主动发起建立TCP连接。
LSR必须拥有到达邻居的传输地址的路由,否则建立会话失败
LDP会话建立阶段
Initialized
主动方将主动发送Initialization消息,转向OpenSent 状态,等待回应的Initialization消息
被动方收到主动方发送Initialization消息后,如果参数接受,则发送Initialization(我的参数)和KeepAlive(确认对方参数)转向OpenRec状态
协商参数
标签分配方式
A置位标识DU还是DoD
LDP协议版本
……
OpenSent
主动方等待被动方回复Initialization消息和KeepAlive消息,如果收到的Initialization消息中的参数可以接受则转向OpenRec状态,并且发送Keeplive确认
OpenRec
双方都是发出KeepAlive后的状态,在等待对方回应KeepAlive,只要收到KeepAlive消息就转向Operational状态
Operational
LDP 会话成功建立的标志,可以发送和接收所有其它的LDP消息
周期性发送Keeplive报文维护邻居关系(15s一次,45s老化)
任何一个状态出错或者超时,都会返回Non-Existent状态 查看LDP状态切换:debug mpls ldp session
LDP LSP建立过程
会话建立后,LDP通过发送标签请求和标签映射消息,在LDP对等体之间通告FEC和标签的绑定关系,从而建立LSP
标签的发布与管理
标签发布方式
下游自主方式(Downstream Unsolicited,DU)
下游LSR主动向上游LSR通告标签
下游按需方式(Downstream on Demand,DoD
下游LSR收到上游的标签请求消息才通告标签(节省标签资源)
接口:mpls ldp advertisement 针对egress节点
标签分配控制方式
独立方式(Independent)
本地LSR可以自主地分配一个标签绑定到某个FEC,并通告给上游LSR,而无需等待下游的标签(分配标签快,可能标签断裂)
有序方式(Ordered)
只有当该LSR已经具有此FEC下一跳的标签映射消息、或者该LSR就是此FEC的出节点时,该LSR才可以向上游发送此FEC的标签映射(分配标签慢)
[Huawei-mpls-ldp] label distribution control-mode independent 针对transit/ingress节点
标签保持方式
自由方式(Liberal)
对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留(备份作用)
保守方式(Conservative)
对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留(节约标签空间)
区分
标签分配:LSR从本地标签空间中取出一个标签与FEC绑定。
标签分发:LSR将标签与FEC的绑定关系通知给上游LSR。
4种组合方式
DU + Ordered + Liberal
默认自主、有序、自由
DU + Independent + Liberal
DoD + Ordered + Conservative
DoD + Independent + Conservative
保守必须按需
上游与下游
MPLS根据数据的转发方向确定上、下游关系。标签报文从上游LSR发出,被下游LSR接收并处理,即下游设备给上游设备分发标签,标签分发的方向和数据转发的方向相反
PHP特性
PHP(Penultimate Hop Popping,次末跳弹出)egress节点在为本地路由分配标签的时候,会分配一个隐式空标签—3给倒数第二跳设备
只有直连路由才会分发3号标签
倒数第二跳,发现出标签值为3,于是将标签头部弹出,将IP报文转发给最后一跳,而最后一跳则仅需执行一次查询操作(查询FIB表)即可获得相应的转发信息,egress设备转发效率得到了提升
0号标签
原因
应用于QoS场景,标签被弹出后,其中的优先级也会一并丢失
原理
倒数第二跳转发标签报文时,若出标签封装为0,则不会将标签头部弹出,标签头部中的QoS信息得以保存。最后一跳在收到带0标签的报文的时候,直接弹出标签,不用去查找ILM表项
配置(MPLS视图)
label advertise explicit-null
默认3号标签
label advertise implicit-null
0号标签
label advertise non-null
分配正常的标签(>16)
修改后重启reset mpls ldp
LDP可靠性
LDP与IGP联动
场景
存在主备LSP的MPLS组网中,当主链路故障后恢复时,由于IGP路由比LDP收敛速度快,IGP会先于LDP切换回主链路,因此造成部分LSP流量丢失
配置
正切(切换到备用链路)
通过LDP FRR实现
回切(切换恢复正常的主链路)
配置LDP与IGP联动
[Huawei-GigabitEthernet0/0/0]isis/ospf ldp-sync
设置定时器hold-down、hold-max-cost和delay的值
[Huawei-GigabitEthernet0/0/0]ospf timer ldp-sync
LDP FRR
LDP基本配置
会话配置
IGP路由
配置LSR-ID
分类
本地
全局和接口
mpls mpls ldp
远端
[Huawei] mpls ldp remote-peer name [Huawei-mpls-ldp-remote-PeerName] remote-ip x.x.x.x
验证配置
查看LDP邻居状态
dis mpls ldp peer
包括邻居的传输地址、LDP-ID
display mpls ldp adjacency
查看LDP会话状态
display mpls ldp session
会话状态
Operational表示LDP会话建立成功
SsnRole
Active表示自己是建立LDP会话的主动方
Passive表示自己是建立LDP会话的被动方
LAM
标签发布模式
查看LDP配置的全局信息
dis mpls ldp
标签的控制和保持方式
查看LIB表
dis mpls ldp lsp
查看LDP创建的LSP信息
*
标识标签断裂,不能使用
一条LSP会有(1 +X)条FEC
一条入标签为NULL的FEC给本地始发的报文使用
其它的LSP给邻居正常转发的标签报文使用
默认LDP只为32位的主机路由分配标签
[Huawei-mpls] lsp-trigger { all | host | bgp-label-route | ip-prefix ip-prefix-name | none }
查看LFIB表
dis mpls lsp
查看全局LSP信息(静态 + LDP)
display mpls lsp verbose
MPLS VPN原理与配置
概述
分类
MPLS L2 VPN
VPLS
MPLS L3 VPN
BGP/MPLS IP VPN简称MPLS VPN
网络架构
CE
用户网络边缘设备:CE“感知”不到VPN的存在,也不需要支持MPLS
站点(实例)
MPLS VPN的用户:由CE和其它用户设备构成
一个站点可以属于多个VPN
PE
运营商边缘路由器:在MPLS网络中,对VPN的所有处理都发生在PE上,对PE性能要求较高
P
运营商骨干路由器:P设备只需要具备基本MPLS转发能力,不维护VPN相关信息
技术架构
MP-BGP:负责在不同PE之间传递站点内的路由信息。
LDP:负责PE与PE之间的隧道建立
VRF:负责PE的VPN用户管理。
静态路由、IGP、BGP:负责PE与CE之间的路由信息交换。
MPLS VPN优势
对VPN客户
“感知”不到VPN的存在
部署在运营商专网,有一定安全保障
对于运营商
有面向连接的控制平面,便于管理维护
支持地址空间重叠、支持重叠VPN、组网方式灵活、可扩展性好
支持MPLS TE
相比GRE或者IPSec
GRE和IPSec建立在CE TO CE之间,CE之间必须有公网IP,属于P2P的VPN技术,增加站点时配置繁多
MPLS VPN建立在PE TO PE 之间,CE还用私网IP,属于P2MP的VPN技术,增加站点只需要修改RT值控制访问
组网方案
Intranet(不同企业)
同一企业之间可以互访,不同企业间不能互访
Extranet(同企业)
分部只能和总部通信,分部之间不能通信
Hub & Spoke(同企业)
分部之间的通信需要被总部控制管理
Hub的PE和CE之间如果使用BGP路由,需要修改同一AS-Path允许出现的次数
路由信息交互
发布过程
本地CE到入口PE
IPv4路由
入口PE到出口PE
VPNv4路由
Update报文中携带MP_REACH_NLRI属性(包含VPNv4路由(IPv4 + RD)下一跳和私网标签)
出口PE到远端CE
IPv4路由
3个核心问题
同一PE设备上地址空间重叠(本地路由冲突)
VRF实现物理逻辑隔离
不使用VRF每个站点必须独享PE
1、PE间通过建立IBGP单播邻居传递IPv4路由
PE上引入BGP路由是注意:import-route bgp permit-ibgp
2、手动在PE上将非标签路由迭代进BGP的下一跳的IGP路由的LSP隧道,否则P设备会出现路由黑洞
[Huawei]route recursive-lookup tunnel
收到不同PE设备之间传递的路由(远端路由冲突)
RD(Route Distinguisher,路由标识符)
区分每一个VPN实例(VPN实例信息只是本地概念)
同一个公司的可以相同,建议每一个站点全网唯一
MP-BGP
传递VPNv4路由
远端PE设备收到VPNv4路由后正确导入实例
32位BGP扩展团体属性-Export RT
PE间传递路由的关键
VRF
RD
作用
区分使用相同地址空间的IPv4前缀
大小
RD长8字节
RD地址格式
X.X.X.X:number<0-65535> number<0-65535> : number<0-4294967295> number<0-65535> . number<0-65535> : number<0-65535> number<65536-4294967295> : number<0-65535> but not support 0:0 and 0.0:0
VPN-IPv4地址
RD + IPv4地址前缀 = VPNv4地址
VPNv4 12字节(96位)
RT
作用
控制VPN路由信息的发布与接收
大小和格式
和RD相同
分类
Export Target(ERT)
Import Target(IRT)
发布
作为BGP的扩展团体属性随路由发布
MP-BGP
作用
解决PE之间传递VPNv4路由
BGP优点
TCP可靠性
跨设备直接交换路由
PE之间
BGP拓展性强
通过地址族(Open报文中的AFI、SAFI)支持了VPNv4路由
增量更新,节省带宽
MP-BGP增加的属性
14号 MP_REACH_NLRI:Multiprotocol Reachable NLRI,多协议可达NLRI。用于发布可达路由及下一跳信息。
地址族信息域
AFI
SAFI
下一跳信息域
公认必尊属性中的下一跳属性
网络可达性信息(NLRI)域
长度
120
标签
Lable、EXP、S
前缀
RD
IPv4
96
15号 MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI,多协议不可达NLRI。用于撤销不可达路由。
AFI
SAFI
撤销的路由
PE上的表项
全局RIB
公网IGP
实例RIB
用户VPN路由
VPNv4的RIB
传递私网路由
MPLS实现路由互通
私网标签分配
PE通过MP-BGP发布私网路由给骨干网的其他相关的PE前,需要为私网路由(VPNv4)分配MPLS标签(私网标签)
分配方式
基于路由的MPLS标签分配:为VPN路由表的每一条路由分配一个标签,当路由数量比较多时,PE设备入标签映射表ILM维护的表项增多,对设备容量的要求高
基于VPN实例的MPLS标签分配:为整个VPN实例分配一个标签,该VPN实例里的所有路由都共享一个标签,节约了标签
查看命令
dis bgp vpnv4 all routing-table x.x.x.x
私网路由交叉
VPNv4路由被丢弃的情况
下一跳是否可达
对于RR发送过来的VPNv4路由,如果收到的路由中cluster_list是否包含自己的cluster_id
是否通过BGP的路由策略过滤
分类
远端来的
没有丢弃的VPNv4路由携带的export VPN-Target与本地VPN实例的Import VPN-Target进行匹配的过程
本地交叉
来自本地CE的属于不同VPN的路由(接入同一个PE的不同VPN站点)
公网隧道迭代
为了将私网流量通过公网传递到远端PE,需要有一条公网隧道承载这个私网流量。因此私网路由交叉完成后,需要根据目的IPv4前缀进行路由迭代,查找合适的隧道(本地交叉的路由除外);只有隧道迭代成功,该路由才被放入对应的VPN实例路由表。将路由迭代到相应的隧道的过程叫做隧道迭代。
隧道迭代成功后,保留该隧道的标识符(Tunnel ID)。Tunnel ID用于唯一标识一条隧道。VPN报文转发时根据Tunnel ID查找对应的隧道,然后从隧道上发送出去。
需要保证公网的路由可达,才能分配标签,当有路由汇总(OSPF)时,可能产生标签断裂的情况,造成建立隧道失败,即使在汇总设备重新配置null 0的精确路由,但是会增多查找FIB表的次数
OSPF的汇总路由不会在汇总的设备上出现,但是BGP会有
私网路由的选择规则
不进行负载分担
从CE收到的路由和交叉而来的路由,则优选从CE收到的路由
本地交叉路由和远端PE交叉成功后的路由,则优选本地交叉路由
CE直接来的 > 本地交叉 > 远端交叉来的
负载分担
优先选择本地CE收到的路由,即使多条交叉路由的情况下,也只选择从本地CE收到的路由
只在从本地CE收到的路由之间分担或只在交叉路由之间分担,不会在本地CE收到的路由和交叉路由之间分担
本地路由 > 交叉路由
负载分担的AS_PATH属性必须完全相同
BGP/MPLS IP VPN的路由发布(控制平面)
MPLS路由传递
PE和P设备之间运行LDP,交换公网标签,建立PE之间的LSP隧道(公网隧道)。
入口PE在通过MP-BGP传递VPNv4路由时,会携带私网标签,用于区分不同VPN的数据。
出口PE在接收到VPNv4路由后,需要执行私网路由交叉和隧道迭代来选择路由。
关键信息
通过VRF和RD隔离不同用户的私网路由信息并构建唯一的VPNv4路由
通过RT值控制VPNv4路由的发布和接收
通过MP-BGP传递VPNv4路由前缀、标签以及RT等信息
通过MPLS LDP构建公网标签转发路径
过程
①
①本地CE到入口PE的路由信息交换 CE与直接相连的PE建立邻居或对等体关系后,把本站点的IPv4路由(IGP或者EBGP)发布给PE。 ②入口PE到出口PE的路由信息交换 PE从CE学到VPN路由信息后,存放到VPN实例中。同时,将IPv4路由引入到MP-BGP(除PE-CE之间运行是BGP),为这些标准IPv4路由增加RD,形成VPN-IPv4路由。 入口PE通过MP-BGP的Update报文把VPN-IPv4路由发布给出口PE。Update报文中携带Export VPN Target属性及MP-BGP分发的MPLS私网标签。 出口PE收到VPN-IPv4路由后,在下一跳可达的前提下进行路由交叉、隧道迭代和路由优选,出口PE根据RT将路由导入特定的VRF,同时将VPNv4路由的RD剥除,将IPv4路由通告给相应的客户的CE设备,保留私网标签和公网标签对应的Tunnel ID供后续报文转发使用 ③出口PE到远端CE的路由信息交换
②
CE通过IGP/BGP传递路由给PE
入PE收到实例私网路由
加载实例的IP路由表中
BGP学习到后自动生成VPNv4路由
打上RD值
分发私网标签
标签和VPN IPv4路由信息加入MP-IBGP的Update消息中的NLRI字段中
打上Export RT值
Export-RT属性加入MP-BGP Update消息的扩展团体属性字段中
发送给VPNv4邻居
出PE收到VPNv4路由
检查RT,跟本地Import RT值中存在才会接收
放入BGP VPNv4路由表
生成实例路由
剥离RD值
保留私网标签
检查是否有去往下一跳的公网标签
下一跳的标签一定是32位
保留公网标签对应的Tunnel ID
把实例路由发送到CE设备
BGP/MPLS IP VPN的报文转发(数据平面)
标签控制转发
内层标签(私网标签)
PE根据内层标签确定数据所属的实例
导入BGP实例的时候MP-BGP分发标签
私网标签在从对端PE到达CE时使用,指示报文应被送到哪个Site
外层标签(公网标签)
P根据外层标签转发数据到PE(避免P设备路由黑洞)
LDP分配标签
公网标签在骨干网内部进行交换,指示从PE到对端PE的一条LSP
过程
①
PE从绑定的VPN实例中接收到CE的VPN报文后 ①根据实例FIB表查找路由条目和Tunnel ID值 ②打上私网标签后,根据Tunnel ID查找公网隧道 ③将报文从公网发送出去时打上公网标签,中间设备根据外层标签转发 ④到达Egress PE后去掉外层标签,根据内层标签发送IP报文到目的CE(PHP直接看内层标签)
②
CE转发IP包到PE设备
入PE设备收到IP包
根据RD值查找对应的实例FIB表
找到私网标签
找到公网标签对应的Tunnel ID
先封装私网标签
根据Tunnel ID找到公网标签并封装
最后封装二层并转发
P设备根据公网标签把数据转发至出PE或者出PE前一跳
出PE收到数据后
弹出公网标签或者收到只有内层标签的报文
根据私网标签查找LFIB,找到数据包对应的实例
因为处于栈低,剥离内层标签,查找实例FIB,转发到对应的CE设备
配置
骨干网
1、公网IGP
2、MPLS LDP
建立公网LSP隧道
3、MP-BGP
传递VPNv4路由
VPN用户接入
1、创建VPN实例并配置参数(RT、RD)
2、接口加入VPN实例
3、配置PE实例与CE之间交互路由
IGP
启用进程时关联实例
EBGP
BGP实例中建立邻居
4、实例路由和VPNv4路由引入(BGP除外)
BGP实例中引入实例IGP
实例IGP中引入BGP
双向引入
节约标签空间
默认情况下,VPN实例地址族为每一条去往对端PE的路由分配一个标签。
[Huawei-vpn-instance-3]apply-label per-instance
配置当前VPN实例地址族下所有发往对端PE的路由都使用同一个标签值(为每一个VRF分配一个标签)
PE-RR-PE建立VPNv4路由(RR旁挂)
减小RR的性能压力
只需要传递路由即可
RR上无实例(无RT)
[RR-bgp-af-vpnv4]undo policy vpn-target
取消检查RT
验证配置
查看公网隧道建立情况
display mpls lsp
查看MP-BGP邻居状态
display bgp vpnv4 all peer
查看VPNv4路由
display bgp vpnv4 all routing-table / display bgp vpnv4 vpn-instance aa routing-table
查看标签路由信息
display bgp routing-table label
查看经过的标签
tracert -v
注意点:如果PE和CE之间的运行的是静态或者EBGP,在CE上要指定源测试
MPLS VPN部署与应用
MPLS VPN应用与组网概述
应用场景
企业互连应用:可通过MPLS VPN将分布在各地的分支机构和合作伙伴的IP网络连接在一起;
虚拟业务网络:可在同一物理网络上运行多种业务,如VoIP、IPTV等,为每个业务建立一个VPN,实现业务隔离。
优点
可以实现“一点接入,全网连通”,支持异种介质的互连
可以实现“弹性带宽”,采用流量监管技术,在保证用户基本带宽的同时,对突发流量尽力而为,同时基本带宽也可以“软扩容”
在资源隔离或隧道绑定的MPLS VPN技术保证下,充分保证每个VPN的专有带宽
组网类型
单域VPN
三种基本组网
Intranet
Extranet
Hub&Spoke
Spoke站点之间不直接交互路由信息。Spoke站点需要把路由发布给Hub站点,再通过Hub站点发布给其他Spoke站点。
Spoke-PE需要设置Export Target为“Spoke”,Import Target为“Hub”
Hub-PE上需要使用两个接口或子接口(创建两个VPN实例),一个用于接收Spoke-PE发来的路由,其VPN实例的Import Target为“Spoke”;另一个用于向Spoke-PE发布路由,其VPN实例的Export Target为“Hub”
MCE组网
Multi-VPN-Instance CE(多实例CE)
作用
减少用户的设备开支和维护成本
跨域组网
跨域VPN-OptionA(Inter-Provider Backbones Option A)方式:需要跨域的VPN在ASBR(AS Boundary Router)间通过专用的接口管理自己的VPN路由,也称为VRF-to-VRF;
跨域VPN-OptionB(Inter-Provider Backbones Option B)方式:ASBR间通过MP-EBGP发布标签VPN-IPv4路由,也称为EBGP redistribution of labeled VPN-IPv4 routes;
跨域VPN-OptionC(Inter-Provider Backbones Option C)方式:PE间通过Multi-hop MP-EBGP发布标签VPN-IPv4路由,也称为Multihop EBGP redistribution of labeled VPN-IPv4 routes。
不同实例的路由相互引入组网
公网与私网的路由相互引入功能
VPN-Target不匹配的私网间的路由相互引入功能
MPLS VPN典型应用场景与部署
Intranet场景
PE-CE之间交换路由信息
OSPF
静态
EBGP
IS-IS
特殊场景下的BGP配置
AS号替换
场景
当不同站点使用了相同的私网AS号时需要通信时,由于AS号重复,就会丢弃收到的路由
解决方法
1、PE上配置传递路由到CE时替换起始AS号为PE所在的AS号
2、CE上配置允许本地AS号重复的次数
配置
[PE1-bgp] ipv4-family vpn-instance vpn1 [PE1-bgp-vpn1] peer x.x.x.x substitute-as
[HUAWEI-bgp] peer x.x.x.x allow-as-loop 2
SoO
场景
当站点中的多台CE设备建立IBGP的邻居关系,并且都连接到了运营商的PE设备上,一台CE发送的路由到达PE后,会再发送到站点内其它的CE设备,由于开启了AS号替换功能,所以接收并且计算,然后传递给IBGP邻居,最后在传到起始PE,这样就可能引起站点内的环路
解决方法
PE上配置指向CE的SoO,当从PE发送路由时携带对应的SoO属性,通告给其它邻居时检查携带的SoO属性是否和配置的SoO属性相同,相同则不通告
配置
[PE1-bgp] ipv4-family vpn-instance vpn1 [PE1-bgp-vpn1] peer x.x.x.x soo 200:1 [PE1-bgp-vpn1] peer x.x.x.x soo 200:1
MCE场景
概述
Multi-VPN-Instance CE(多实例CE):CE上配置VRF隔离用户业务,减少用户投入,此时MCE设备上必须破环
破环方式
PE和CE间区域0
MCE不检查 dn-bit-check disable summary/ase/nssa
PE不设置 dn-bit-set disable summary/ase/nssa
vpn-instance-capability simple
PE和CE间普通区域
vpn-instance-capability simple
修改Domain ID不一致
生成5类LSA
Hub&Spoke场景
Hub&Spoke组网方案
方式一:Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用EBGP
方式二:Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用IGP
方式三:Hub-CE与Hub-PE使用EBGP,Spoke-PE与Spoke-CE使用IGP
方式四:无法通过Hub-CE与Hub-PE使用IGP,Spoke-PE与Spoke-CE使用EBGP来部署Hub&Spoke组网的MPLS VPN
优点
总部可以监控分部之间的流量信息
缺点
分部之间访问延时高,总部的设备性能消耗高
配置
1、公网IP/IGP/LDP
2、Spoke-PE和Hub-CE建立VPNv4邻居
3、创建VPN实例规划RT值
确保所有Spoke-PE的导出在Hub-PE的导入列表中,Hub-PE的导出都能被Spoke-PE导入,Spoke-PE之间不能相互导入或者控制VPNv4路由的传递
Hub-CE上的in实例只需要配置IRT,out实例只需要配置ERT
4、PE与CE间路由交互
方式一:EBGP
Hub-PE上的BGP的out实例中必须配置指向Hub-CE的允许本地AS号重复
方式二:OSPF
Hub-CE上需要将in实例接收到的路由引入到out实例中
Hub-PE上要在in实例对应的OSPF进程中引入BGP,在BGP的out实例中引入out实例对应的OSPF进程
方式三:
没有方式四的原因
因为远端Hub-PE通过OSPF生成的VPNv4路由不携带AS-Path属性,所以在Spoke-PE上比通过EBGP邻居学到的路由优,因此Spoke-PE要撤销Hub-CE上的路由,进而OSPF也撤销,所以空AS-Path属性的路由消失,EBGP邻居的路由变为最优,再发送到远端Hub-CE生成空AS-Path属性路由,如此反复,导致路由震荡
不同VPN路由引入场景
PE上将私网路由引入本地的公网路由表
[Huawei] ip import-rib vpn-instance vpn-instance-name protocol { static | isis process-id | ospf process-id } [ valid-route ] [ route-policy route-policy-name | route-filter route-filter-name ]
PE上将公网路由引入本地的私网路由表
[Huawei-vpn-instance-VPNA-af-ipv4] import-rib public protocol { direct | vlink-direct-route | { static | isis process-id | ospf process-id } [ valid-route ] } [ route-policy route-policy-name ]
OSPF VPN拓展
区域设计
PE和CE之间的路由都是用OSPF,PE与CE之间的OSPF区域可以是非骨干区域,也可以是骨干区域(区域0),但是若如果站点是多区域设计,PE和CE之间必须是区域0
PE永远是ABR(只要有VRF的接口宣告进OSPF,该设备就是ABR/ASBR),MPLS VPN骨干网被看作是Super Area0,使用OSPF时需要遵循OSPF区域的设计原则(OSPF水平分割)
OSPF与BGP互操作
16号扩展团体属性
Export RT
Domain ID
域标识符:标识不同的OSPF域
配置
[Huawei-ospf-1]domain-id
默认NULL,填充0.0.0.0
发布规则
比较本地和远端域标识符是否相等
相同
1/2/3类LSA传递后都是3类LSA
5/7类LS传递后保持不变
不同
1/2/3/5类LSA传递后都是5类LSA
只有7类LS传递后保持不变
Route Type
Area ID
LSA Type
Cost Type(5LSA)
Router ID
dis bg vpnv4 all routing-table x.x.x.x Ext-Community : OSPF DOMAIN ID <0.0.0.0 : 0>, OSPF RT <0.0.0.0 : 1 : 0>, OSPF ROUTER ID <6.6.6.6 : 0>
直连路由不携带扩展团体属性
OSPF防环
Type3/5/7路由防环:DN位 Type5/7路由防环:VPN Route Tag
CE双归属环路
静态
RIP
IS-IS
解决方法
修改BGP属性优选对端PE传递的VPNv4路由
手动打Tag避免再次被引入回去
修改RT使双归属的PE之间不能相互导入VPNv4路由
BGP
PE一般都优选运营商侧的路由,因为PE和CE之间属于不同的AS,所以优选CE一定会增加as-path的长度,如果两个PE属于同一AS直接不接收
OSPF
场景
分析(关闭防环检查)
如果PE1先从OSPF中引入BGP路由,那么PE2一定会优选从CE1学习到的IGP路由,因为自己产生的优于邻居学到的,此时PE2上OSPF引入的BGP路由是不会生效的,对于PE2会形成次优路径,对于CE是没有负载的效果,只有备份的作用。
PE1可以学到通过CE2直接传递的VPNv4路由和PE2通过IGP生成的VPNv4路由并由RR反射过来,默认会优选CE2的VPNv4路由,因为PE2传递的路由多继承IGP的Cost值,所以MED值较大。如果修改了PE2传递的路由属性并被优选,PE1上的路由可能会震荡,就会形成环路的风险,如果远端路由消失,还可能存在虚假环路
解决方法
DN位
在实例中引入的路由DN位都会置位,实例中收到DN置位的路由接收不计算,非实例中收到正常计算
如果多归属的PE连接到不同的AS,就需要手动设置Tag
[HUAWEI-ospf-100] route-tag 100
Tag
从OSPF实例中引入的BGP路由,会将Tag变为0xd000 + 2字节AS号(16进制),实例中收到相同Tag的路由接收不计算
OSPF引入外部路由Tag情况
1)公网OSPF或者配置了vpn-instance-capability simple的私网OSPF生成的5、7类LSA的Tag值为1。
2)私网OSPF生成的5、7类LSA的tag值计算方法
1、 如果配置了route-tag X,则LSA的tag值为X。
2、 如果没有配置route-tag X,且路由器上没有配置BGP,则LSA的tag值默认为0.
3、 如果没有配置route-tag X和route-tag disable,但配置了BGP,则LSA的tag值为0xd000|BGP AS NUM当LSA的tag值与本地OSPF的Route-tag相同时,则不计算这个LSA
配置
控制在路由计算时是否忽略DN位检查
dn-bit-check disable summary/ase/nssa
控制在引入BGP路由时DN位是否置位
dn-bit-set disable summary/ase/nssa
默认都开启
禁止使用VPN的路由标记检测环路
[HUAWEI-ospf-100] route-tag disable
禁止环路检测,直接计算路由(DN和Tag都关闭)
vpn-instance-capability simple
影响
CE失去ASBR能力,如果没有区域0,还将失去ABR的能力
OSPF不能引入IBGP路由
OSPF引入BGP的MED值不会+1
非MCE场景不推荐使用
OSPF伪连接-Sham link
作用
提供链路冗余、数据安全性考虑
场景
建立Sham link的两端OSPF必须在同一区域(只有同一个区域才能建立邻居),多区域设计时,后门链路必须区域0
问题
默认优选后门链路(OSPF域内路由优于域间路由)
解决方法
Sham Link
PE之间建立OSPF伪连接(Sham link),使经过MPLS VPN骨干网的路由类型不改变
Sham link使OSPF认为两端的PE设备是直连的,Sham link的OSPF链路类型是P-2-P
计算时是通过1类LSA计算而不是OSPF中引入的BGP传递的3/5类LSA,所以OSPF中可以不需要引入BGP,但是BGP中必须引入OSPF
通过后门链路传递的1类LSA肯定走后门链路
Sham link配置三步骤
一、创建单独的32位loopback绑定各自的vpn实例(地址可以不同网段)
二、将loopback发布到各自的bgp的vpn实例中(只能在VPNv4路由中建)
三、ospf中建立sham-link
[Huawei-ospf-1-area-0.0.0.0]sham-link 源地址 目的地址 cost 100
Sham link默认Cost为1
同时支持认证
四、修改开销控制选路(两端的Cost值都要修改,否则可能来回路径不一致)
五、查看配置
display ospf sham-link