MPLS与MPLS VPN详解

多协议标签交换MPLS

数据转发时,只在网络边缘分析IP报文头,而不用在每一跳都分析IP报文头,节约了处理时间

MPLS基于标签进行转发,

LSR :进行MPL标签交换和报文转发的网络设备,区域内部的LSR称为核心LSR

MPLS域 :由LSR构成的网络区域

边缘路由器LER : 位于MPLS域边缘,连接其他网络的LSR

标签交换路径LSP : IP报文在MPLS网络经过的路径

FEC转发等价类 : 描述一组具有相似或者相同特征的数据包,以相同方式转发

LSP的入口LER称为入节点(Ingress);位于LSP中间的LSR称为中间节点(Transit);LSP的出口LER称为出节点(Egress)

运行了MPLS体系架构分为了控制平面和转发平面

查到tunnelID后查nhlfe表、查找要进行的标签动作。查看nhlfe表: display mpls nhlfe

MPLS标签长度4个字节,共分为4个字段

Label : 20bit,标签值域内

Exp : 3bit,用于扩展,现在常用作CoS(Class of Service)当设备发生阻塞,优先发送优先级高的报文

S : 1bit,栈底标识,MPLS支持多层标签,即标签嵌套,S值为1时表明是为最底层标签

TTL :8bit,和IP报文中的TTL(time to live)意义相同

标签值域,标签空间取值划分:

0-15 : 特殊标签,如标签3,称为隐式空标签,用于倒数第二跳弹出

16-1024 : 静态LSP和静态CR-LSP ,共享的标签空间(Constration-based Routed Label Switched Path)

1024及以上 : LDP,RSVP-TE,MP-BGP等动态信令协议的标签空间

建立LSP方式,静态LSP,动态LSP

静态LSP配置:前一节点出标签的值等于下一个节点入标签的值。

@确定哪条FEC(路由)创建LSP

@确定该LSP的入节点和出节点

配置LSR ID用来在网络中唯一标识一个MPLS路由器,默认没有配置,必须手工配置

mpls lsr-id 1.1.1.1

在MPLS域内的所有节点与相应的接口上开启MPLS,命令:mpls

在入节点配置:

static-lsp ingress new1 destination 1.1.1.1 nexthop 2.2.2.2 outgoing-interface g0/0/0 out-label 16

中间节点配置:

static-lsp transit new1 incoming-interface g0/0/0 in-label 16 nexthop 1.1.1.1 outgoing-interface g0/0/0 out-label 16

出节点配置:

static-lsp egrsee new1 incoming-interface g0/0/0 in-lable 16 lsrid ingress-lsid tunnel-id ****

MPLS的动态LSP是由LDP协议完成

lsp-trigger {host/all/ip-preix/none} //命令用来设置触发建立LSP的策略,仅对入节点和出节点有效。

如果触发条件为host时,该命令效果:

在ingress节点执行该命令时,触发所有32位路由建立LSP MPLS

在engress节点执行该命令时,触发本地32位路由建立LDP LSP,

egress就是本机路由始发路由器

ingress就是非主机路由始发路由

在transit节点的处理:

Transit LSR根据MPLS的标签值查看对应的ILM表,得到Tunnel ID

根据ILM表的Tunnel ID找到对应的nhlfe表项

查看nhlfe表项,得到出接口,下一跳,出标签和标签操作类型,标签操作类型为Swap则交换标签

Egress LSP的处理:

Egress根据ILB表项查询到该标签对应的操作为Pop,说明需要剥离该标签

根据当前标签头部的下一层报文头部进行下一步处理

S=1表明该标签是最后一层标签直接进行ip转发,S=0标签还有下一层标签

LDP会话建立过程:

1、设备周期性地发送LDP链路Hello报文(LDP Link Hello),实现LDP基本发现机制

使用UDP,目的地址是组播224.0.0.2,如果在某个接口接收到LDP链路Hello表明该接口存在LDP临接体

2、Hello报文中携带传输地址。双方后续将使用传输地址建立LDP会话

传输地址大的一方将作为主动方主动发起建立TCP链接

LDP协议的工作机制:

1,相邻的LDP路由器会建立邻居

接口发送LDP报文的hello报文,目的IP为 224.0.0.2 ,使用TCP的646端口,默认 5s 周期性的发送,自动建立邻居并维护邻居关系,邻居失效时间 15s

2,hello 报文中携带的传输地址,默认是LSR-ID

3,建立邻居后,传输地址大的一方向传输地址小的一方发起 TCP 646 连接

进行LDP会话的建立

注意,LDP会话是建立在传输地址之间的

4,发送初始化消息进行参数协商,协商成功后发送 keeplive 报文,会话建立成功

5,LDP的邻居通过hello报文维护,LDP会话通过keeplive报文维护

本地LDP会话通过组播hello报文建立的邻居会话

远端LDP会话通过单播hello报文建立起来的LDP会话

华为创建LSP默认策略:

直连lo口主机路由为egress创建LSP

非直连主机路由做为ingress和transit创建LSP

MPLS两个流派

基于帧的MPLS(分组网络,IP网络)DU方式

基于信源的MPLS(电路交换,ATM) DOD方式

  • 标签发布方式

  • 标签分配控制方式:

indepedent(独立标签分配控制方式) :本地LSR可以自主地分配一个标签绑定到某个IP分组,并通告给上游路由器,无需等待下游地标签

Ordered(有序标签分配控制方式) :只有当该LSR已经具有此IP分组的下一跳的标签,或者该LSR就是该IP分组的出节点时,该LSR才可以向上游发送此IP分组的标签

华为默认采用两种方式发布标签,始发节点采用Ordered,上游节点采用indepedent

  • 标签的保持方式:

当有多个LDP邻居给我同一LSR的出口标签时,

Liberal(自由标签保持方式/默认):对于从邻居LSR收来的标签,无论邻居LSR是不是自己的下一跳都保留

Conservaive(保守标签保持方式):对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留

查看MPLS邻居会话消息:display mpls ldp session verbose

PHP倒数第二跳标签弹出操作:

最后一条路由器会为一条LSP生成一个入标签是3的发给上游节点

上游节点对进入的报文查找LFIB表,发现分配的标签是隐式空标签3,于是执行弹出标签操作,最后一跳路由器执行IP转发

GRE隧道配置:

MPLS VPN

虚拟专用网络,在公共网络上实现私有网络通信

VPN 在技术上需要通告隧道解决,隧道的本质是对私有报文重新封装,利用封装后的包头执行转发

LSP 看起来是提高报文的转发效率,但本质上也是一种隧道技术

淡出的MPLS技术,目前已经失去价值,因为现在的硬件都是并行查表,利用芯片,效率极高

MPLS目前更多的是隧道能力,支持MPLS VPN,VPLS,MPLS-TE等业务

PE : 运营商边缘设备,负责用于,私网路由的接入

CE : 用户边缘设备

1,PE如果接入多个私有网络,而私有内网路由冲突,导致PE无法正确处理

PE本地私网路由冲突

site独享PE,通告不同的PE解决PE上私网路由冲突的问题

site共享PE,在PE上创建虚拟的路由表和CE进行私网路由的学习。每张虚拟路由表运行独立的路由协议和独立的地址空间,相互隔离避免路由冲突

虚拟的路由表绑定一组接口,运行独立的路由协议,称为VPN-instance

PE需要维护公网路由信息,也要维护不同VPN-instance路由信息

将VPN实例中的路由引入到入到BGP协议时,BGP如何解决路由区分的问题?

  • 为这些路由添加RD,并和IPv4前缀组合起来,形成VPNv4格式的路由
  • RD 路由区分符号,每个VPN-instance只有配置一个RD,在同一台PE上不同的VPN实例配置不同的RD
  • RD作用:区分不同VPN-instance中相同的私网路由
  • PE收到VPNv4路由,根据RD可以判断VPNv4路由是否来自同一个VPN-instance
  • RD的长度8字节

BGP默认建立的是IPv4单播地址族、但不适应vpn场景,BGP激活vpn IPv4地址族邻居:ipv4-family vpnv4

RD如何规划:1、所有的vpn-instance配置全网唯一的RD

2、同一个vpn的不同vpn-instance配置相同的RD,不同vpn的不同vpn-instance不能配置相同的RD

MPLS VPN中的VPN指的是可以实现互通的site组成的私有隧道

当PE收到vpnv4路由,如何将vpnv4路由引入到本地的vpnv4实例:

  • 通过RT(route-traget)属性解决vpnv4路由传递问题,RT为扩展的BGP团体属性
  • Export rt 属性:vpnv4路由发送时添加该属性
  • import rt 属性:表达该vpn-instance 对哪些vpnv4路由感兴趣
  • 如果export rt 和 import rt 只要有一个相同则可以引入到该vpn-instance中

RT属性有两种格式type字段为0x0002或者0x0102时表示RT

私网报文如果直接发送到公网肯定不通,如何解决?

  • 使用LSP来解决,即隧道技术,将私网报文迭代到该私网路由的下一跳地址的LSP中进行转发

当PE收到私网报文时,如何判断这个私网报文属于哪个vpn-instance?

  • 本端为发布的vpnv4路由通过MP-BGP分配唯一的私网标签
  • 私网标签:PE根据私网标签判断该报文应该用哪个vpn-instance进行转发
  • 公网标签:将私网报文迭代到该LSP隧道中,进行公网转发,LDP负责分配

将ipv4私网路由变vpnv4路由:

bgp视图下: ipv4-family vpn-instance xxx ,在BGP路由表中创建vpnv4实例xxx的路由表

然后将私网路由 import 到vpn实例路由表

查看vpnv4路由表 : dis bgp vpnv4 all routing-table

当OSPF的路由引入到vpnv4路由表时会有ospf的扩展团体属性,携带了三个参数:OSPF domain id、OSPF RT、OSPF router id

如果是PE直连路由引入到vpnv4表变成bgp路由时不会有这三个参数

  1. OSPF RT(OSPF路由类型的团体属性) 标识这条路由引入到mpls vpn之前是属于ospf哪个区域的(实际就是PE的ospf所在的区域)

OSPF RT <0.0.0.0 : 1 : 0> 0.0.0.0标识从哪个区域算出该路由,1:表示PE从哪类LSA算出该路由的,

最后一个字段是option选项:描述对于外部路由才有意义,对于5、7类LSA路由才有意义0,

如果该值为0表示该路由外部路由开销类型为1。

如果该值为1则该路由外部路由开销类型是2

2. OSPF route id:描述PE自己在进程下的route id

3. OSPF domain id:华为设备上默认是0.0.0.0、如果是思科设备默认情况下该值是PE的ospf的进程号,例:如果进程号是1,该值为0.0.0.1

当对端PE收到该路由并引入到本地OSPF路由表后会进行判断,如果ospf domain id相同则认为我们在同一个AS内

RT中的信息1类和三类LSA会变成本地3类LSA计算,5类传过来还是5类,

对端PE的直连路由传过来因为连domain id都没有则当成外部5类路由。advroute都会变成该PE的Route id

当路由从IGP引入到vpnv4表中后会将metric+1,

后门问题:

两个站点间有一条带宽小的备份线路,建立OSPF邻居的话传递过来如果是1类LSA会盖住由MP-BGP学来的3类LSA

shamlink 伪连接:在两个站点之间建立可以建立OSPF邻居,这样就直接以1、2类LSA计算路由,防止后门问题

在两台PE上在创建出一个环回口,将环回口口绑定到vpn实例,通过MPBGP宣告出去

然后在OSPF视图下 sham-link (本端地址)(对端环回口地址)

PE上建立sham link后,PE依然使用VPNv4来计算路由,不适应shame link传递的LSA进行OSPF路由计算,因为通过shamlink计算出的OSPF路由在PE上没有私网标签

PE通过shamlink计算出的路由比通过后门链路计算出的路由开销小,就优先使用shamlink的路径并使用BGP路由进表

在一端的站点会收到sham-link传来的1类的LSA,以及相同的3类LSA由MP-BGP特性得来

apply-label per-instance 为一个实例的私网路由都分配一个相同的标签

双PE场景下的路由防环机制有两种:

1,PE传递的路由传给igp的ospf,5,7类lsa会生成dn位置

2,生成route tag防环路

vpnv4的路由引入到igp中时,如果是ospf的五类lsa则会自动为路由生成一个route tag

前两个字节默认是0xD000 后面的是自己的as号,如果as是1,则route tag是 0XD0000001,这是16进制,转成十进制就是route tag

双PE场景下,vpnv4的路由传递为igp路由会携带该route tag,如果对端PE接收到携带了同样的tag的路由则不会进行学习

这是dn比特位后的第二个防环机制

MPE:当stie间需要内部业务进行vpn隔离得话就需要在CE上就创建出vpn实例

PE与CE对接就需要同时承载多个vpn实例,可以在PE上创建出子接口实现

MPLS VPN跨域的三种方案:

optionA:在PE-ASBR和对端之间建立VPN实例,把vpnv4路由转换为ipv4私网路由传递给对端PE-ASBR

optionB:

PE-ASBR之间直接建立MP-BGP的邻居关系,ASBR需要接收域内和域外传过来的所有跨域VPN-IPv4路由,再把VPN-IPv4路由发布出去

ASBR需要配置undo policy vpn-target,ASBR相连链路之间需要开启MPLS链路功能,但不需要开启LDP

VPNv4跨域,每个域都有自己私网标签的划分。从其他域过来的VPNv4必须要使用本地域的私网标签,才能保证私网标签的唯一性。

VPNv4从IBGP邻居得到传给EBGP邻居时,下一跳会自动改变。

VPNv4从EBGP邻居得到传给IBGP邻居时,下一跳也会自动改变。

VPNv4只要下一跳改变时,会生成新的私网标签。

原理

ASBR之间建立VPNv4邻居,直接传输VPNv4路由,所以ASBR无需建立VPN实例。由于直接传递VPNv4路由,所以两端PE设置的RT要匹配。ASBR之间也会产生一条VPN lSP。

配置思路

1. AS域内IGP做通。

2. 配置LDP协议,创建公网LSP。

3. 在ASBR之间建立VPNv4-EBGP邻居关系。

4. 在PE与ASBR之间建立VPNv4-IBGP邻居关系。

优点

1. OptionB方案不受ASBR之间互连链路数目的限制。

2. 不需要创建子接口和VPN实例。

3. 新增实例,ASBR之间配置无需任何改动。

缺点

VPN的路由信息是通过AS之间的ASBR来保存和扩散的,当VPN路由较多时,ASBR负担重,容易成为故障点。因此在MP-EBGP方案中,需要维护VPN路由信息的ASBR一般不再负责公网IP转发。

路由传递过程:

1、PE将IPv4 VPN实例路由引到BGP中,成为IPv4 VPN实例BGP路由。PE根据VPN实例所设置的RD,生成VPNv4路由,下一跳改为PE自己,并为VPNv4路由生成私网标签。

2、PE将VPNv4路由传递给VPNv4-IBGP邻居-本端ASBR,本端ASBR由于在VPNv4地址足下关闭了过滤策略,所以直接接收。

3、本端ASBR将VPNv4路由传递给VPNv4-EBGP邻居-对端ASBR,下一跳改为本端ASBR自己,并为VPNv4路由生成新的私网标签,一同传递给对端ASBR。

4、对端ASBR由于在VPNv4地址族下关闭了过滤策略,所以直接接收。

5、对端ASBR将VPNv4路由传递给VPNv4-IBGP邻居-对端PE,下一跳改为对端ASBR自己,并为VPNv4路由生成新的私网标签,一同传递给对端PE。

6、对端PE判断VPNv4路由的RT值与自身的VPN实例设置的RT匹配,于是接收VPNv4路由并转化成IPv4 VPN实例BGP路由。

7、对端PE将IPv4 VPN实例BGP路由引入至对应的IGP协议进程中,下一跳改为对端PE自己。

数据转发过程:

1、PE收到来自CE的私网IP报文,目标地址为对端CE私网地址,查找对应的VPN实例转发表,查到下一跳为本端ASBR,并为TUNNELID为非0。然后查找标签转发表,打上由本端ASBR产生的VPNv4私网标签。

2、由于PE到本端ASBR不是本地链路可达,于是再查找转发表。查到去往本端ASBR的路由下一跳为本端P设备,并且TUNNELID为非0。然后查找标签转发表,打上由本端P设备产生的LDP公网标签。

3、PE到本端P设备为本地链路可达,PE将公网标签报文从出标签对应的出接口发出。

4、本端P设备收到公网标签报文后,查找标签转发表,发现出标签为3,是个隐式出标签,于是剥离公网标签。并将私网标签报文从隐式出标签所对应的出接口发出。

5、本端ASBR收到私网标签报文后,查找标签转发表,将私网标签替换成由对端ASBR产生的VPNv4私网标签,并将私网标签报文从私网出标签所对应的出接口发出。

6、对端ASBR收到私网标签报文后,查找标签转发表,将私网标签替换成由对端PE产生的VPNv4私网标签。

7、由于对端ASBR到对端PE不是本地链路可达,于是再查转发表。查到去往对端PE的路由下一跳为对端P设备,并且TUNNELID为非0.然后查找标签转发表,打上由对端P设备产生的LDP公网标签。

8、对端ASBR到对端P设备为本地链路可达,对端ASBR将公网标签报文从公网标签对应的出接口发出。

9、对端P设备收到公网标签报文后,查找标签转发表,发现出标签为3,是个隐式出标签,于是剥离公网标签。并将私网标签报文从隐式出标签对应的出接口发出。

10、对端PE收到私网标签报文后,查找标签转发表,发现出标签为NULL,于是剥离私网标签,并查询私网标签所对应的VPN实例转发表,将IP报文转发至对端私网中。

optionC:PE与PE之间直接BGP邻居,传递VPNv4路由,

RR场景下需要配置RR向对端RR传递vpnv4路由时的下一跳保持不变 peer 1.1.1.1 next-hop-inbariable

使用LDP来分配标签:

将bgp路由引入进入igp,然后在mpls视图下为bgp的标签路产生LDP的标签:lsp-trigger bgp-label-route

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路明非z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值