MPLS②

MPLS的静态搭建(LSP)

        静态搭建需要在沿途所有的LSR上进行对应的配置,任何环节出错,都可能导致流量转发中断。并且静态LSP无法基于拓扑变化而自动收敛,当拓扑结构发生变化时,需要手工修改。因此,静态LSP仅适用于规模较小,并且拓扑稳定的网络 

入站LSR:

①定义设备的LSR-ID

        LSR-ID类似于RID,也是由32位二进制构成,按照IP地址的格式进行配置,但是只能手动配置。一般使用设备的环回接口的IP地址作为LSR-ID 

[r1]mpls  lsr-id  1.1.1.1 

②激活MPLS

        1,在全局激活MPLS

[r1]mpls  
Info: Mpls starting, please wait... OK!

        2,在接口激活MPLS --- 所有属于MPLS域中的接口都需要激活

[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]mpls 

③手工配置入站LSP

[r1]static-lsp ingress lxb destination 4.4.4.0 24 nexthop  12.0.0.2 out-label 10
0

#nexthop必须要在本地的路由表中可达目标网段的下一跳相同 

#out-label:出站标签,数据从R1发出后被压入的标签号 

中转LSR:

①定义设备的LSR-ID

[r2]mpls  lsr-id  2.2.2.2

②激活MPLS

[r2]mpls 
Info: Mpls starting, please wait... OK!
[r2]int g0/0/0	
[r2-GigabitEthernet0/0/0]mpls 
[r2-GigabitEthernet0/0/0]int g0/0/1
[r2-GigabitEthernet0/0/1]mpls

 ③设置中转的标签

[r2]static-lsp transit lxb incoming-interface GigabitEthernet 0/0/0 in-label 100
 nexthop 23.0.0.2 out-label 101 

#in-label:入站标签。数据进入时,识别的标签需要和前面的出站标签一致 

        R3同理 

[r3]mpls  lsr-id  3.3.3.3
[r3]mpls  
Info: Mpls starting, please wait... OK!
[r3-mpls]q
[r3]int g0/0/0
[r3-GigabitEthernet0/0/0]mpls 
[r3-GigabitEthernet0/0/0]int g0/0/1
[r3-GigabitEthernet0/0/1]mpls
[r3-GigabitEthernet0/0/1]q
[r3]static-lsp transit  lxb incoming-interface  GigabitEthernet 0/0/0 in-label  
101 nexthop  34.0.0.2 out-label 102

出站LSR:

①定义设备的LSR-ID

[r4]mpls  lsr-id 4.4.4.4 

②激活MPLS

[r4]mpls 
Info: Mpls starting, please wait... OK!
[r4-mpls]q
[r4]int g0/0/0
[r4-GigabitEthernet0/0/0]mpl	
[r4-GigabitEthernet0/0/0]mpls 
[r4-GigabitEthernet0/0/0]q

 ③设置出站LSR信息

[r4]static-lsp egress lxb incoming-interface  GigabitEthernet 0/0/0 in-label  10
2

配置一条目标网段的静态路由:

//R1
[r1]ip route-static 4.4.4.0 24 12.0.0.2

//R4
[r1]ip route-static 1.1.1.0 24 34.0.0.1

#配置静态路由的目的,是让本地路由表知道到达目标网段该走哪里

查看静态LSP:

[r4]display  mpls  static-lsp
TOTAL          :	1       STATIC LSP(S)
UP             :	1       STATIC LSP(S)
DOWN           :	0       STATIC LSP(S)
Name                FEC                I/O Label    I/O If                Status
lxb                 -/-                102/NULL     GE0/0/0/-             Up 

分析MPLS的数据包:

MPLS的动态搭建(LDP):

        标签分发协议(LDP):主要服务于MPLS的控制层面。LDP协议是运行在IGP协议上的,所以需要先创造路由环境(IGP是LDP的基础)。

        LDP协议主要的功能:分配标签和传递标签

分配标签:

        激活LDP后,LDP会在本设备上为FEC分配标签。并不是对所有的FEC都分配标签,只有当自己是某个FEC的出站LSR时,才主动为这个FEC分配标签 

分配方式:

        ①有序方式只有当自己是某个FEC的出站LSR时才会主动分配标签,其他设备分配标签需要先收到FEC和标签的对应关系,之后会进行检查(检查自己路由表中是否存在到达这个FEC的路由,以及 下一跳和通告者是否相同),检查通过后才去分配标签

        华为设备默认采用的是有序分配方式 

        ②独立方式:设备可以自己自主对FEC分配标签而不需要等待其他设备的通告。

传递标签: 

        出站LSR将标签和FEC的映射关系传递给中转LSR的前提条件是:出站LSR和中转LSR必须是LDP对等体关系,而建立对等体关系的前提是出站LSR和中转LSR之间必须建立LDP会话。

LDP对等体关系分为两种:

        ①本地LDP会话:直连的两个设备之间建立LDP会话

        ②远程LDP会话:并不一定是直连设备,可以通过手工指定的方式去远程建立LDP会话。

         使用TCP进行非直连建邻,实现远程LDP会话 

建立LDP对等体: 

        LDP在进行本地LDP会话建立时,是不需要手工指定(LPD ID为本地的最大环回地址)。本地LDP会话会周期性的发送组播hello包进行发现邻居。因为Hello包是组播发送,所以传输层只能使用UDP协议进行封装。(使用的是TCP/UDP的646号端口)

        ①先在LSR上激活LDP协议,LSR的接口将开始周期发送hello包来发现LDP对等体。

        Hello包采用UDP的646号端口进行通讯。源/目标端口号都是646Hello包中将携带自己的LDP ID和传输地址等。

        传输地址:默认使用的是配置的LSR-ID。这个传输地址在后续将作为TCP会话建立的通讯地址,所以,在配置LSR-ID时,一定要保证该地址可用,且IGP要保证彼此 地址间可达。

        LDP ID:要求所有激活LDP协议的设备都需要具有一个 LDP ID。由48位二进制构成,一般构成方式LSR-ID:X (前32位为LSR ID,后16位位标签空间)

        ②双方收到彼此发送的Hello包之后,此时获取到对方的传输地址。然后基于对方的传输地址,去建立TCP会话。而为了避免重复建立TCP会话,LDP会选择传输地址大的一方作为主动方,主动发起TCP会话连接请求。LDP在建立TCP会话连接之前,也会像BGP一样,去检查传输地址的可达性,如果可达,则建立连接,如果不可达, 则不建立连接。

        此时要注意,主动方的源端口为随机端口,但是目标端口为646!!!

 

        ③在完成TCP会话建立之后,传输地址更大的一方将优先发送初始化报文初始化报文将携带本地的LDP相关的参数,对端收到后,将对这些参数进行检查,如果认可,则将发送自己的初始话报文,并发送一个keeplive报文,代表确认收到的参数。对端收到初始化报文后,如果认可其中的参数,则也将反馈一个keeplive报文作为确认。双方都收到对端的 keeplive报文后,则将代表LDP会话建立完成。

  

LDP的上游与下游(标签传递方式): 

        搭建一条指向192.168.4.0/24网段的LDP,则数据层流量将从R1指向R4, 则R1称为R2的上游,R2称为R1的下游。而标签传递是控制层流量,则其传递方向是从下游传递给上游(即R4传给R3)

标签传递的方式:

        ①DU模式(下游自主模式):下游设备主动发送标签,华为设备默认使用DU模式

        ②DoD模式(下游按需模式):下游设备只有在收到上游设备发送的请求报文之后,才会发送标签。 只有上游设备会去收集下游设备的标签。(如图,此时R3作为R2的下游,在收到R2的标签请求后会发送给R2,但是R4作为R3的下游,在R3发送标签信息时,将不会记录该标签) 

PHP优化: 

        从1.1.1.1去往4.4.4.4的标签信息(静态是的取值范围为16-1023),此时R1去往4.4.4.4需要查询本地的FLB(到达路由表)和LFLB(带标签的转发表)表格,而R2与R3则只需要查询本地的LFIB表,而R4也需要查询本地LFIB和FIB表(先通过LFIB表剥离标签,FIB查询到达4.4.4.4网段信息)

        而此时为了优化出入站的查表时间,引入PHP优化(次末跳弹出机制),即在入站时,内嵌标签信息,进而不用查询FIB表,并在次末出站的LSR上将标签置位为NULL(相当于在R4时直接查询FIB表)

次末跳弹出机制:需要利用特殊标签号3(隐式空标签)

        作用:如果一个LSR看到一个数据的出站标签为3时,则将直接把该标签弹出。华为设备默认开启PHP优化 机制

LDP配置:

[r1]mpls  lsr-id  192.168.1.1
    #声明LSR-ID

[r1]mpls  
Info: Mpls starting, please wait... OK!
[r1-mpls]q
[r1]mpls  ldp 
[r1-mpls-ldp]q
    #开启MPLS和MPLS LDP

[r1]interface g0/0/0
[r1-GigabitEthernet0/0/0]mpls  
[r1-GigabitEthernet0/0/0]mpls  ldp 
    #接口上开启MPLS和MPLS LDP

此时去R1上查看LDP信息

[r1]display mpls ldp peer
    #查看LDP对等体

[r1]display mpls ldp session
    #查看LDP会话建立情况

[r1]display mpls ldp lsp
    #查看LDP搭建的LSP信息(LIB)

[r1]display mpls lsp
    #查看所有LSP信息(LFIB)


<r1>display  mpls  ldp  peer 
 
 LDP Peer Information in Public network
 A '*' before a peer means the peer is being deleted.
 ------------------------------------------------------------------------------
 PeerID                 TransportAddress   DiscoverySource
 ------------------------------------------------------------------------------
 192.168.2.1:0          192.168.2.1        GigabitEthernet0/0/0
 ------------------------------------------------------------------------------
 TOTAL: 1 Peer(s) Found.


<r1>display  mpls  ldp  session 

 LDP Session(s) in Public Network
 Codes: LAM(Label Advertisement Mode), SsnAge Unit(DDDD:HH:MM)
 A '*' before a session means the session is being deleted.
 ------------------------------------------------------------------------------
 PeerID             Status      LAM  SsnRole  SsnAge      KASent/Rcv
 ------------------------------------------------------------------------------
 192.168.2.1:0      Operational DU   Passive  0000:00:40  162/162
 ------------------------------------------------------------------------------
 TOTAL: 1 session(s) Found.

查看LDP的LSP信息 

查看所有LSP信息

        因为华为设备的LDP默认只给32位主机路由分配标签,主要是为了防止路由条目过多时导致LSP数量太大,造成设备负担。

[r4-mpls]lsp-trigger all 
    #执行该命令后,会给路由表中所有的路由条目分配标签

MPLS解决路由黑洞问题:

        此时打开R1的FIB表,发现在数据转发时,没有标签的数据会去根据IP报文匹配FIB表,如果FIB表中的tunnelID为非0值,则代表需要走标签交换,而如果为0,则需要走包交换

 而在我们之前在BGP中讲到的,防BGP的路由黑洞主要使用的是MPLS技术。

        此时如图,R2-R3-R4之间运行的是IGP协议,而我们之前为了解决路由黑洞则是使用IBGP之间互相建邻的方式,而通过MPLR技术,我们可以使用标签交换技术,使得R2和R4在IBGP对等体进行标签交换。AS1的路由信息通过EBGP对等体发送到R2,然后再通过标签交换技术发送给R4(AS3的信息同理)。

但是这中间存在一个问题,就是AS1的路由信息通过R2发送给R5,但是R2上没有到达R5的标签,所以需要通过R2与R4的标签交换管道,由R2标签转发给R5。

        此时在R2的FIB表上查看,有到达R5的路由信息,但是到达R5的tunnelID为0,需要进行将R2-R5递归到R2-R4上

[r2]route recursive-lookup tunnel
    #在递归查找时,如果有隧道则递归到隧道中

此时就可以做到R2与R4路由黑洞的解决

MPLS VPN:

        MPLS VPN不只是单一VPN技术,是一种由多种技术结合的综合解决方案

         存在两个公司A和B,而A和B分别有自己的分站点1和2,而客户A和B的分站点的私网网段都为192.168.1.0/24,发往各自的分站2的192.168.2.0/24。

        其中PE为服务提供商边界设备 ,CE为客户边界设备

        此时存在的问题:①PE无法去区分VPN发送方来自哪个客户,②在PE发送给分站点后无法正确的发送到对应的分站点,③无法建立客户各个站点间的信息稳定安全传输

VRF技术:        

        为了保证不同客户的CE设备传递的路由信息可以隔离开,需要使用VRF技术(虚拟路由转发,VPN instance )创建多个VRF相当于创建多个虚拟设备,每台设备拥有独立的路由表,FIB表,动态路由协议及接口等

RD与RT:

RD(路由区分码,64位二进制构成的数值)

        RD构成AS:NN(AS号:自定义数值)将64位的RD值放在32位的IP路由前缀前面,形成96位的路由前缀,形成VPNV4路由条目。

        此时需要运行的BGP协议为MP-BGP(BGP V4的拓展版,支持多种地址族,包括IPV4,VPNV4, IPV6…. )

RT (路由目标值,也称为VPN Target ,32位二进制构成)

         一个VPN V4路由中可以携带一个或多个RT值。通过BGP的社团属性来携带。

RT分为两种:出站RT和入站RT

        出站RT:PE1为不同的VRF空间定义的发出路由时社团属性中携带RT值

        入站RT:PE2为不同VRF空间定义的比对值

        只有当PE1的出站RT和PE2的入站RT相同时,才会建立和发送数据

两层标签:

        在控制层面可达后,为保证数据层面的正常传递,我们在通过MPLS域时需要打双层标签。外层标签被称为公网标签,内层标签被称为私网标签。

        公网标签:由LDP协议分配,目的是为了让数据可以通过MPLS域

        私网标签:由MP-BGP协议分配,目的是为了区分不同的VRF空间,通过BGP的社团属性携带

ML-VPN的运行过程:

        ①由于存在私网地址相同的问题,我们先使用VRF技术,将不同客户传递的信息区分开来

        ②在信息通过VRF处理后压入PE设备后,需要使用RD来区分这个信息的来源(源地址信息,96位二进制,AS:XX:IP地址),RD值在到达对端的PE站点后会被剥离

        ③而由于RD值在到达对端PE后会被剥离,所以需要使用PE来确认是否为同一个客户的不同站点信息传输,需要使用RT标签PE1入站点和PE2出站点进行数值比对(RD和RT标签是控制层面上的,协议上可达,但不一定数据可达

        ④此时在控制层面上已经做到数据可达,但是在数据层面上无法做到数据可达,此时需要在数据上加入双层标签(一层用来通过公网的MPLS,一层用来区分不同的VRF空间)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值