HCIP11 MPLS的基本知识,静态LDP搭建,标签分发协议

发布于:2022-11-01 ⋅ 阅读:(469) ⋅ 点赞:(0)

MPLS --- 多协议标签交换

包交换

    --- 所谓包交换,数据组成数据包,在各个网络节点中不断传递,最终到达目标。

 (可以简单的理解为是三层转发的过程)
        其实,我们对于包交换的转发方式并不是很满意,主要是因为他的转发效率太低:
        1,完成过程需要查两张表 --- 路由表,ARP缓存表
        2,路由表的匹配原则 --- 最长匹配原则
        3,递归查找 --- 在一定情况下,设备需要递归查找出接口或者下一跳。
        4,IPV4头部是可变长头部 --- 则处理头部信息时必须依靠软件来处理。相较而言,交
        换机的二层转发可以基于硬件来实现(通过使用支持二元运算的硬件芯片。如:
        CAM),这样,即使MAC地址表中的条目数量很多,也可以在短时间内完成匹配动
        作,效率要远高于路由表的软件查找。

标签交换

               
           在二层和三层封装之间,添加一个和路由条目存在映射关系的标签,之后,维护一张
        记录对应关系和转发接口表。携带标签的数据来到设备上,将先看到标签,之后,基于
        维护的表进行转发,而不看三层的IP数据。因为标签本身短小而且定长,所以其转发效
        率应该高于包交换。
           但是标签交换需要给数据包中先打上标签,之后到达目标之前,还需要弹出标签,因
        为标签只是在传输过程中提高转发效率的手段。因为有这些动作的存在,所以,标签交
        换转发效率的提升相较于包交换并不明显。
        因为标签交换的转发效率提升并不是很明显,所以,我们在数据转发上又继续研发改进
        包交换。包交换至今,存在3次大的变更。
        1,进程交换 --- process switching --- 最早的包交换,就是每个数据包到设备上需要
        先根据IP地址查询路由表,之后,在查看ARP缓存表实现转发。
        2,快速包交换 --- Fast switching --- 基于流的包交换 --- 一次路由,多次交换 --- 一
        股数据流来到设备上,只需要针对数据流中的第一个数据包进行路由查询过程,之后,
        将数据包的特征(一般使用五元组来标识数据流)及转发方式记录在缓存中,之后,数
        据流中的其他数据包来到设备上,将直接比对缓存中的特征,比对上则直接按照转发方
        式进行转发,而不需要所有数据包都进行路由过程,可以大大的提高转发效率。
        3,思科的特快交换 --- Cisco Express Forwading --- 简称CEF,其思路就是将路由表
        和ARP缓存表中的内容进行预读取,之后都记录在CEF表中。并且该表支持硬件转发。
                虽然CEF是思科的私有技术,但是,各大厂商也根据其思路设计出了属于自己的特
                快交换技术。华为在进行数据转发时,使用的就是FIB(转发信息数据库),该表
                就是可以支持硬件处理的转发表。
MPLS --- 和包交换共同发展的一个标签交换技术。因为标签交换中的标签需要很路由信息相
关,MPLS作为多协议标签交换技术,可以识别并兼容多种三层协议(IPV4,IPV6…),其兼
容性较强。

MPLS主要应用于三大领域

1,用于解决BGP的路由黑洞问题。
2,MPLS VPN
3,MPLS TE --- 流量工程 --- 简单理解为控制流量转发的路径。

        所有路由器激活MPLS之后,将按照MPLS的规则实现标签交换,这些运行了标签交换
的设备所组成的MPLS网络,我们称为 MPLS域。
        所有运行了MPLS的路由器,都可以称为 LSR(标签交换路由器)
        因为所有匹配到同一条路由的所有数据报文,他们最终走的路由都是一样的,所以,
我们只需要给他们分配同一个标签即可。在MPLS中,我们把这些具有相同特征的数据
报文称为 FEC --- 等价转发类 。一个FEC只需要分配一个标签即可。
        标签分配后,设备需要将路由信息和标签的映射关系记录在一张表中 --- LIB(标签信
息表) ,之后,结合FIB表,生成 LFIB(标签转发表) --- 这张表中记录的时标签编号,
和对应出接口和下一跳信息。
MPLS和包交换一样,其过程也可以分为控制层面和数据层面

        包交换

                控制层面 --- 路由协议的数据流方向,目的时为了获取未知网段的路由信息,生成
                路由表。
                数据层面 --- 设备基于已经完善的路由表(FIB表),来转发具体的数据信息,其
                方向和控制层面相反

        MPLS

                 控制层面 --- 基于FEC分配标签,并获取其他LSR对同一个FEC分配的标签,记录
                生成LIB表,之后再结合FIB表生成LFIB表。(这个过程可以通过手工静态实现,也
                可以通过动态协议来实现 --- LDP协议:标签分发协议)
                数据层面 --- 设备基于LFIB表,根据标签进行转发。
        入站LSR --- ingress --- MPLS域的一个边界,之前数据包中不存在标签,数据来到设备
        上之后,需要压入标签,完成压入动作的设备,我们称为入站LSR。
        中转LSR --- transit --- 在标签交换过程中完成标签置换动作的LSR
        出站LSR --- egress --- 弹出标签,之后基于三层IP头部进行包交换的LSR设备。
                        我们标签交换数据流量走过的路径 --- R1 - R2 - R3 - R4,这条路径我们称为
        LSP --- 标签交换路径。 特别注意,LSP是分方向的,如果想要实现1.0网段和2.0网段的
        互通,除了要有R1-R2-R3-R4这条LSP外,还需要构建一条R4-R3-R2-R1的LSP。

Label --- 标签号 --- 前20位(0 - 2的20次方 --- 这个标签的取值范围可以理解为标签空间。
每台设备的标签空间都是独立的。),是标签转发的主要标识依据。
        0 - 15 --- 特殊标签值 --- 不能直接分配,每一个都存在特殊含义。
        16 - 1023 ---- 一般用于静态LSP的搭建
        1024 - 2的20次方 --- LDP等一些动态协议分配标签的取值范围
EXP --- 主要做策略用,占3位 --- 可以理解为是优先级,数值越大,优先级越高,越高则可以
优先转发数据。
S --- 栈底位 --- 仅占1位 --- 标签不止可以打一个,可以打两个或多个。这些标签头部的有序
集合我们称为标签栈。 --- 如果存在多个标签,且该标签是最后一个标签,则栈底位置1,不
是则置0。如果只有一个标签,则栈底位置1。
TTL --- 生存时间 --- 和三层IP头部中的TTL值作用一样,每经过一台设备转发需要减1,因为
在标签交换过程中,不看IP头部,所以,TTL的计数作用就放在标签中了。在进入MPLS域
时,由入站LSR将IP头部中的TTL值复制压入到标签中,之后,离开MPLS域时,再弹出标签
时,将标签中的TTL值再复制回IP头部。

静态LSP搭建

        1,创建路由条件 --- 静态搭建LSP不需要所有设备都具备路由信息,因为所有路径都需
        要人工手工说明。只有边界设备(入站LSR和出站LSR)需要具备路由,因为他们将成为
        核查条件。
                [r1]ip route-static 4.4.4.0 24 12.0.0.2
        2,配置MPLS
                1,配置LSR-ID
                        MPLS要求每台LSR设备都拥有唯一的身份标识,我们使用LSRID来标识,这
                        个参数由32位二进制构成,按照IP地址格式配置,但是,只能手工配置,不
                        能自动生成。(注意:一般情况下,我们习惯使用设备的环回接口的IP地址
                        作为LSR - ID)
                        [r1]mpls lsr-id 1.1.1.1
                2,激活MPLS
                        全局激活
                                [r1]mpls
                                Info: Mpls starting, please wait... OK!
                                [r1-mpls]
        
                        接口激活 --- 所有参与MPLS转发的接口都需要激活
                                [r1-GigabitEthernet0/0/0]mpls
        3,搭建静态LSP
                入站LSR
                [r1]static-lsp ingress 1to4 destination 4.4.4.0 24 nexthop 12.0.0.2 out-label 16
                destination 4.4.4.0 24 nexthop 12.0.0.2 --- 这个需要和本地路由表中的内容对应上,
                否则静态LSP将搭建失败
                out-label --- 出站标签 --- 即R1将这个数据包转发后压入的标签,R2收到数据包
                后,需要根据这个标签判断到底是到达那个网段的数据包。
                
                中转LSR
                [r2]static-lsp transit 1to4 incoming-interface GigabitEthernet 0/0/0 in-label 16 nexthop
                23.0.0.2 out-label 17
                incoming-interface --- 数据进入的接口
                in-label --- 入站标签 --- 这个标签必须和R1上配置的出站标签相同
                出站LSR
                [r4]static-lsp egress 1to4 incoming-interface GigabitEthernet 0/0/0 in-label 18
                4.4.4.0/24 12.0.0.2 GSU t[902] GE0/0/0 0x1 --- 注意,在入站LSR上,需
                要根据FIB表中标识判断其需要走标签交换,标识就是tunnel ID为非0值。
                [r1]display mpls static-lsp --- 查看静态LSP

LDP协议 --- 标签分发协议

        LDP协议主要需要完成的任务:1,分配标签;2,传递标签
        因为LDP协议需要完成以上两个任务,所以,我们需要先保证MPLS域中运行IGP协议来获
        取路由信息。 --- IGP协议是LDP协议的基础。
        1,LDP激活后需要先在本设备上为FEC分配标签。 --- 如果该设备是这个FEC的出站
        LSR时,LDP才会 主动 为这个FEC分配标签。例如,R4是4.0网段的出站LSR,则R4会主
        动为4.0网段分配一个标签。但是R1,R2,R3均不是出站LSR,则都不会主动分配标
        签。但是,构建LSP时也都需要有4.0网段的标签。所以,当R4将自己的标签信息传递到
        R3时,R3收到后,将进行 检查环节 --- 看本地路由表中是否存在到达4.0网段的路由信
        息,且路由表中的下一跳是否和通告者相同,如果检查成功,则R3也会为4.0网段分配
        一个标签,依次类推。 ---- 这种标签分配方式我们称为 有序模式 。 --- 华为设备默认选
        择的是有序模式
        除了有序模式以外,还存在一种标签分配方式 --- 独立模式 。独立模式就是设备可以自
        主的分配标签而不需要等待其他设备的通告。
         2,传递标签
                 传递标签的前提条件是设备之间必须先是LDP对等体关系才行,而对等体关系建立
                的前提条件是需要先建立LDP会话
LDP会话存在两种类型 --- 1,本地会话 --- 直连设备之间建立的LDP会话
                                          2,远程会话 --- 并不一定是直连设备,可以通过手工指
                                           定的方式去创建远程的LDP会话。(LDP会话可以实现非直
                                           连建邻。)
LDP会话在建立本地会话时,不需要指定邻居关系,也可以建立。 --- 因为LDP协议会先
以组播(224.0.0.2 --- 所有路由器都会监听的本地链路组播地址)的形式发送hello包发
现邻居关系。 --- hello包将使用UDP协议进行封装,源目端口均为646号端口。

本地LDP会话建立的过程:

1,在激活了LDP之后,LSR的接口首先会周期性的发送Hello(默认5S为周期,保活
时间默认为3倍周期,15S)包来发现LDP对等体关系。

hello包在发现邻居的过程中,会携带一些参数,主要有两个参数,一个时传输地址,一
个是LDP ID
传输地址:
        这个传输地址是后续需要进行TCP会话建立使用的地址。这个传输地址默认使用配
        置的 LSR-ID ,所以,我们配置设备LSR-ID时要求必须使用环回接口的IP地址,并且
        保证该地址可达,因为后面需要使用这个地址建立TCP会话。
LDP ID:
        如果设备激活了LDP协议,则需要具有一个LDP ID。 ---- 由48位二进制构成。 ---
        32:16 --- 前面32位二进制使用的就是LSR-ID。后16位一般写0。

2,双方交互完hello包之后,则获取到对方的传输地址,之后将基于这个传输地址,建
立TCP会话。
        在建立TCP会话之前,也需要进入 检查环节 --- 检查传输地址的可达性。
        因为双方都收到了对方的传输地址,则都将发起TCP会话的建立,这样将造成资源
        浪费,因为一方发起则建立的时一个双向的通道。所以,LDP在发起TCP会话之前,
        会先比较传输地址,谁的传输地址大,谁就是主动方,则可以主动发起TCP会话请
        求

3,完成TCP会话建立之后,将开始建立LDP会话。传输地址大的一方,优先发送初始化
的报文,里面将包含需要协商建立LDP会话的参数。对端收到后,如果认可,可以将自
己的初始化报文发送,并且同时发送一个Keeplive报文,进行确认。如果双方都确认完
成,则LDP会话建立完成。

LDP协议也会周期性的发送keeplive来保活会话。 ---- 周期时间为15S,失效判断时间为
3倍周期时间,默认45S。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到