




已阅读5页,还剩104页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1多协议标记交换赵广2目录1MPLS技术基础411MPLS转发4111基本概念4112标记、标记栈与标记栈编码712标记分发协议9113标记分发协议概述9114LDP111221LDP发现121222LDP会话建立和维护141223标记分发和管理1713案例分析23115配置实现25116标记转发观察27117LDP协议观察2914小结3415复习题342BGP/MPLSVPN3621VPN概述3622BGP/MPLSVPN框架结构3923BGP/MPLSVPN基本原理41231多协议BGP扩展41232BGP/MPLSVPN控制信息建立过程4324BGP/MPLSVPN常见应用48241INTERNET接入48242跨ASVPN提供49243多层次VPN提供5025案例分析53251配置实现54252转发控制信息分析64253常见应用需求7026小结7027复习题713MPLSL2VPN7231MPLSL2VPN概述7232LDP方式MPLSL2VPN7333BGP方式MPLSL2VPN791前言在一个IP报文从源被送到目的的过程中,由于IP的无连接特性,每一个沿途的路由器都必须独立的为这个报文确定下一跳。抽象的,确定下一跳包含两个工作第一个工作是分析这个报文的头部,根据其目的地址或者还有其他信息如DSCP值,确定这个报文属于对于这个路由器而言的某个转发等价类FECFORWARDINGEQUIVALENCECLASS。转发等价类是指在某个路由器看来应该采取同样转发行为(至少包含下一跳)的所有报文的全体。第二个工作就是根据这个FEC确定下一跳等转发行为。MPLSMULTILABELSWITCHING被发明的初始动机就是为了改进这个过程中第一步的效率。MPLS在一个报文进入网络时即决定其所属FEC,并为这个包打上一个“标记”决定其所属的FEC。这样,中间转发的路由器无需再去分析特定报文的包头信息,只需要读这个标记就知道它所属FEC,进而也就决定了这个包转发方式了。在MPLS出现之前,有许多类似的技术,MPLS是IETF统一这些技术的结果。有关MPLS这个名词出现的过程,您可以在中找到对这一有趣历史的一些描述。MPLS对于转发效率的改进事实上就是所谓用交换的技术实现三层数据包的转发,上个世纪最后几年出现的被称为三层交换或是快速路由的技术更加简洁地达到了同样的目的。但是MPLS目前仍然存在并且事实上已经成为核心网络路由器必不可少的一个基本组件。其根本原因是在MPLS基础上可以简洁地实现如下几个对于运营商网络致关重要的应用,典型的如基于有连接的QOS保障、VPN、流量工程。我们会在相应的章节仔细研究这些主题。但是现在你就可以理解使得这些应用可能的最主要的原因是MPLS转发标记是在数据传输之前就建立好的,换句话说,也就是有连接的,这就决定了它和ATM技术一样可以具备很好的QOS特性。MPLS的转发决定仅仅决定于输入报文中的标记,这样中间路由器就可以对报文网络层信息一无所知的情况下进行报文转发,这是在公网上传输私网数据的VPN技术所必须的。决定MPLS转发的标记的分配可以不仅仅决定于网络地址前缀,这就为流量工程应用建立了一个很好的平台。历史上曾经存在的关于MPLS价值的争论现在业已风平浪静。对于运营商网络和大型企业网而言,MPLS已经被广泛认为属于具有战略意义的基础设施。尽管MPLS的某些应用仍然未能全面部署,但是目前已经成熟的应用如L3VPN已经开始让运营商从MPLS技术上获得回报。目前已有的经验显示,在全球范围内大规模部署MPLS对于网络研究、设计、建设和维护人员都会是一个挑战。本书的主要目的是希望能够帮助这些从业人员从容面对这个挑战。具体的,本书力求达到的目标为清晰解释和MPLS相关的主要协议。介绍MPLS的主流设备实现方法及用户接口。描述具体网络设计过程。本书力求做到自包含,不过假设您对于IP网络应该有一个基本的了解,已经懂得关于路由器的基本常识。如果您阅读过华为网络认证中级教材路由和交换部分,阅读本书肯定不会有技术障碍。总体上,本书包含如下几个部分2MPLS技术概述这部分会介绍力图回答两个问题一个普通报文进入MPLS网络以后和从MPLS网络出来以前,沿途的路由器是如何依据预先建立起来的控制信息对这个报文进行处理的这些“预先建立起来的控制信息”是如何建立起来的如果您对于IP地址、路由等概念有基本的了解即可以顺利阅读本章。本章是以后任意一章的基础。L3VPN这一章的主要内容是介绍如何在一个ISP如何利用其MPLS骨干网络为她的客户提供网络层意义上的VPN服务。这里将会讨论ISP网络和客户网络中处于不同角色的设备如何建立控制信息以及如何利用这些控制信息来进行转发数据流。这里也会讨论一个具体的网络案例。这一章的内容除了需要具备本书第一章的基础以外,还需要您熟悉BGP路由协议和OSPF路由协议的基本操作和华为路由器上的配置方法。MPLSL2VPN这章将介绍一个ISP如何利用她的MPLS骨干网络为她客户提供数据链路层意义上的VPN服务,就像传统的ATM或FRAMERELAY网络一样。这里将会讨论2种不同的实现方法MARTINI方法和KOMPELLA方法。如果有第一章和BGP的基础,MPLSL2VPN内容的学习肯定不会存在障碍。当然,如果您有2层传统VPN的经验,也许阅读起来会轻松一点。MPLS流量工程MPLS体系结构支持依据预先指定的中间节点建立转发路径,这个特性使得流量工程成为可能。在这里将介绍控制流量工程各种应用在MPLS框架下的实现和具体的案例分析。考虑到流量工程应用目前还没有得到广泛应用,所以这一章内容除了需要第一章的基础以外我把它做成了自完备的。MPLSQOS传统的IP网络很难为客户提供和ATM一样健壮的QOS。其根本原因是因为ATM是有连接的。而MPLS体系结构恰好为IP建立了一个坚实的有连接的基础设施,所以部署了MPLS的IP网络可以很好的实现QOS。这一章将会讨论差分模型的QOS是如何在MPLS网络中如何实现的。这一章除了需要第一章的基础而外,还需要部分MPLS流量工程一章所描述的一些信令协议的基础。MPLS组播在MPLS框架结构下,关于组播有两个问题。一是如何在MPLS网络上支持组播IP报文的转发。二是如何在MPLSVPN中支持VPN内的组播。第二个问题已经有了比较系统的解决方案,第一个问题则由于其固有的复杂性在理论上还处于研究阶段。所以,这一章将给出第二个问题的全面解决方案,同时也会给出第一个问题难的原因。第一章依然是本章的基础,同时需要您了解组播路由协议的基本原理。3MPLS网络管理目前部署MPLS网络的网络都是大规模的运营商网络或企业网络,特别是为客户提供VPN服务的大型运营商网络,网络的管理特别需要加以重视。这里详细地介绍了MPLS网络管理的框架以及华为的一个MPLSVPN管理软件。这一章需要以前各章的基础,同时需要您知道网络管理的基本概念。由于本书的作者并不是作家,所以语言有点干瘪,但是MPLS本身是充满魅力的,所以阅读本书也许就像用青瓷大花瓷碗喝法国葡萄酒,也许很有情趣。赵广2003/4/152010年的补充说明这份材料原本是20022003年期间计划编写的面向技术人员的培训材料,由于许多原因最终未曾完成或定稿。现在看来,对于初学者还有一定作用,因此删除未完成的目录,加一个说明,就以这个不定稿作为定稿了)其实在2008年左右,有朋友向我询问是否有MPLS方面的教材,辛亏我的同学、同事与兄弟蒋茂勇还保存着这个电子稿,因此我可以向他们吹嘘这是世界上最好的MPLS教材。昨天,有朋友再次问MPLS材料,我竟然又将这个电子稿丢了。再次辛亏我我的同学、同事与兄弟蒋茂勇还保存着这个电子稿,看来我又可以再吹一次牛皮了。不过,为了不再麻烦老蒋,免得他认为我是一个麻烦的人,我决定吸取教训,利用运计算技术,将本书放在网络上)赵广2010/7/14为了从百度百科上下载电子文档,我就厚着脸皮将这篇陈年文章上载上去,恳请大家不要嘲讽我都是为了混口饭吃,对吧由衷期望有一天我能再有兴趣与计划写完这个东西。赵广2010/11/0141MPLS技术基础部署了MPLS的网络最终都以提供具备某些特性的报文转发为其服务形式。对于各种基于MPLS的应用而言,具体的LSRLABELSWITCHINGROUTER标记转发路由器及具备标记转发特性的路由器在实施报文转发时所采用的核心转发技术事实上是一致的。具体到一个网络层报文而言,当它第一次进入MPLS网络时,首先处理它的那个LSR必须根据它的网络层头部信息决定对于它的转发动作,这个转发动作包括给它打上MPLS标记和从某个接口转发出去;对于网络内部LSR而言,只需要以输入报文中的标记信息为索引查找某个预先建立起来的转发信息表得出转发动作,进而根据这个转发动作进行转发;当然,MPLS网络中最后一个处理这个报文的LSR对这个报文的转发决定就可能包含去掉标记这样的动作。本章第一节将具体描述这个转发过程。本章的其余部分将集中精力描述上面所说的各种转发信息表是怎么建立起来的,即所谓标记分发的过程。标记分发的过程就是报文的下游告知上游当上游转发报文时应该打上什么标记的过程。由于涉及到不同设备间的互通,这就需要一个协议来协调这个过程。目前已有不少协议可以实现这个功能,我们将用LDPLABELDISTRIBUTIONPROTOCOL来讲述标记分发的基本原理,其他几种协议我们将在以后的章节里逐步的描述他们。11MPLS转发111基本概念为了清晰起见,我们使用如下图所示实验网络来描述MPLS的转发过程呒1“呒2“N卌“卌“卌“422422422422422222222潬灯慢正22潬灯慢正22图表115在这个网络中,由LSRA、LSRB、LSRC组成的网络N运行MPLS为路由器RT1和RT2所连接的网络提供转发服务。请注意进行MPLS转发的路由器被称为LSR(LABELSWITCHINGROUTER标记转发路由器)。我们用这RT1和RT2的两个LOOPBACK地址模拟接受N转发服务的网络。于是转发服务就可以用N对RT1或RT2到对方LOOPBACK接口的PING报文的转发来说明了。事实上,N提供的服务很明确使得RT1可以PING通10011,而且RT2可以PING通10001。如果LSRA、LSRB和LSRC上没有运行MPLS,通过动态路由协议N同样可以为RT1和RT2提供转发服务。只要在上图所示网络中每一台路由器上的每一个接口上都运行OSPF协议,这样10000/24和10010/24这两个网段的路由就会被每一台路由器所知晓,这样对于每一台路由器而言,都可以依据两个信息实施转发了输入报文的包头信息(至少是目的IP地址)和路由器上通过OSPF学习到的路由信息。具体来看,当一个从RT1上发出的目的地址为10011的一个报文我们称其为P到达N中某个路由器时,他所做的主要工作就是确定这个报文的下一跳路由器、发送接口等转发信息,然后根据这些转发信息把P转发出去。一个路由器用两个步骤完成确定对于P的转发信息的工作其一就是根据输入P的头部信息(至少是目的IP地址10011)为索引用最长匹配算法在三层路由表中查找一个匹配(10010/24)。事实上,无论目的地址是10011还是10012或1001X,这个查找工作的结果都是10010/24,我们在这里称这些包属于同一个转发等价类FECFORWARDINGEQUIVALENCECLASS,这个转发等价类就用10010/24标识。第二个工作就是以这个FEC10010/24为索引查找下一跳等转发信息,比如对于LSRB,结果就是下一跳路由器就应该是202012,下一跳接口为E1。MPLS不在转发的每一跳上独立的将报文P分配给某一个FEC,而是在P到达LSRA时即第一次到达MPLS网络时就会被打上一个标记L1,L1就是LSRA和LSRB事先协商好的用于标识10010/24这个FEC的。当LSRB收到P时,标记L1指示它应该将这个报文打上它和LSRC协商好的用于标识10010/24这个FEC的标记L2,并且从接口E1上发出去。当这个报文到达LSRC时,标记L2指示LSRC去掉标记L2并根据其目的IP地址查找到其转发接口E0并将其转发出去。从这个描述可以看出,MPLS网络事实上在转发之前已经就某个FEC如何转发达成了一致并局部地使用标记标识,无须在每一跳再根据报文目的IP地址来确定其所属的FEC。而且这些局部的标记事实上也在转发之前预先指定了一个FEC中的所有报文在MPLS网络的转发路径,我们称这个转发路径为LSP(LABELSWITCHEDPATH标记交换路径)。从LSP的角度我们可以把一个报文(或一个FEC)在MPLS网络中所经过的所有LSR分成3种,入口LSR(LSRINGRESS)、出口LSR(LSREGRESS)和内部LSR,有时我们也将LSRINGRESS和LSREGRESS统称为LER(EDGELSR)。在我们的实验网络中,对于报文P而言,它的LSP是,LSRA是入口LSR,LSRC是出口LSR。下面我们来考察一下不同节点的转发处理过程。对于入口LSRLSRA而言,为了可以正确标记转发报文P,它首先要维护一个功能上类似于传统路由表中下一跳以及发送接口叫做NHLFE(NEXTHOPLABELFORWARDINGENTRY)的数据结构。NHLFE包含如下信息报文转发的下一跳、发送接口、对于报文中标记的操作以及任何其他可能对转发有用的信息。对于LSRA而言,为了可以正确的转发报文P,它就必须包含这样的NHLFE下一跳为202021、发送接口为E1、应该给报文打上标记L1。显然,仅仅有NHLFE是不够的,为了对不同转发等价类不同的NHLFE,在入口LSR上还必须维护一个FEC到NHLFE的映射(FECTONHLFEMAPFTN),这个映射的结构是很清楚的,比如说对于报文P,LSRA上就必须包含如下的FTN6NHLFEFEC下一跳发送接口标记操作其他10010/24LSRBE1加上标记L1图表12LSRA上的FTN映射这样LSRA对于报文P的转发流程就很清楚了当LSRA收到P后,根据其包头中目的IP地址10011按照最长匹配原则查找FTN映射的结果就是给P打上一个L1的标记,并且从E1接口发送出去。那么这张表格是怎么产生的呢MPLS怎么知道这个10010/24应该从E0接口发送出去的呢根本上,这张表格是LSRA和LSRB基于3层路由协议所得到的可达性信息利用标记分发协议所达成的共识。具体的过程我们将在本章的第二节仔细讨论这个过程。在LSRB上,为了转发报文P,同样必须有一个表达其转发行为的NHLFE下一跳为202012、发送接口为E1、标记操作为去掉原有的标记并且打上新的标记L2。和LSRA不同的是LSRB无须再检查P的网络层头部得到其目的地址并据此作为得到这个NHLFE的索引,它直接利用P头部的标记L1作为这个索引就可以了,因为它已经和LSRA就FEC10010和L1的绑定达成了一致。对于LSRB而言,我们称L1为P的入标记,而L2为P的出标记。当然,因为LSR对于同一个FEC内所有报文的转发行为是一致的,所以我们也可以说L1是FEC10010/24的入标记,L2是FEC10010/24的出标记。所以,LSR对于输入的带标记的报文是通过一个叫做入标记映射(ILMINCOMINGLABELMAP)的过程来得到NHLFE的。具体的,LSRB上就应该包含如下的ILMNHLFE入标记下一跳发送接口标记操作其他L1LSRCE1去掉原来的标记,加上标记L2图表13LSRB上的ILMP上的标记L1被置换为L2的过程被称为标记交换(LABELSWAPPING),在一个MPLS网络内部,标记交换就是报文转发的主要操作。对于出口LSRLSRC,它当然也是依据P的输入标记而不是网络层包头识别报文,但是由于它是出口LSR,它并没有就如何标记转发P和下游路由器达成一致,所以它只能依据P的网络层头部中的目的IP地址10011来转发P。所以,此时的ILM为7NHLFE入标记下一跳发送接口标记操作其他L2LSRC去掉标记图表14LSRC上的ILM所以,LSRC对于P的处理过程为先根据输入报文P携带的标记L2查找ILM,得出的NHLFE指示它去掉标记并将其“转发”给自己,然后再根据网络层头部中的目的IP地址10011根据网络层路由表将其转发给RT2。由上面的分析可以看出对于LSRC来讲,由倒数第二跳LSRLSRB发给给它的P中所携带的标记L2事实上对于LSRC的转发没有任何帮助。如果LSRB在发送P时将L2删除,对于LSRC转发P没有任何负面影响,因为LSRC对于P的有效转发决定只依赖于网络层头部的目的IP地址。而且在倒数第二跳删除掉出标记还可以让出口只做一次查找工作,甚至出口LSR可以完全不支持MPLS。当然,是否进行倒数第二跳,首先必须决定于倒数第二跳是否具备删除标记的能力(有些设备,比如说一些由ATM交换机直接升级而成的具备MPLS功能的设备,就只具备标记交换的能力而不具备删除标记的能力),其次出口LSR和倒数第二跳LSR也必须就此达成一致。必须注意,我们这里对于LSR的划分(入口、出口以及内部LSR)是对于某一个FEC或者对于某个具体的报文的LSP而言的,同一个LSR完全可能同时是这三个角色。下面我们仔细介绍一下被我们在这里抽象化的标记L1、L2是如何和IP报文一起传输的。112标记、标记栈与标记栈编码标记在MPLS体系结构中处于核心地位。在标记的指示下,LSR以交换的方式让数据转发工作尽量只发生在网络层以下,从而提高了数据转发效率。所以MPLS能够在多大程度上简洁的提供通常在网络层完成的工作事实上决定了MPLS的生命力。原因很明显如果在数据交换过程中,为了实现一些基本的功能,数据包还必须被传递到网络层去处理,那么MPLS的转发效率优势将不复存在。这一点事实上决定了除了标记以外,其他应该被编码进数据包中的数据。网络层有两个工作是至关重要的一个是为了控制报文传输范围的TTL递减工作,实际上IP报文中TTL这个域应用的广泛程度是惊人的许多应用(例如RIP路由协议)利用它来防止环路、许多应用(例如组播)利用它来限制报文传输范围、广泛的被使用于网络测试(TRACERT),甚至一些黑客程序利用报文初始TTL来确定操作系统。结论很清楚当一个带标记的报文在传输时,它必须同时编码一个TTL域。另一个是报文分类工作。在IP报文中,DSCP(DIFFERENTIATEDSERVICESCODINGPOINT)域被专门用于报文分类工作,报文分类工作是实现QOS的基本组件。QOS的重要作用对于大型网络的重要性是不言而喻的。所以,当一个带标记的报文在传输时,MPLS设计者最8终认为需要一个域来标识报文的类别是值得的。为了安全、互连私有网络、互连不同协议或是显式指定某个数据包的路由方法,在网络层领域,隧道技术被广泛应用。从本质上来讲,各种(L2TP、GRE、IPSECTUNNEL模式等)隧道都是用一个公开的或是可行的网络层头部封装一个内部的数据包,完成这个内部的包在特定网络上的传输,这样做的主要原因可能是内部数据包不愿或是不能够在这个网络上传输。为了支持类似的应用需求,MPLS也支持标记的层次结构,即一个数据包可能包含多个标记。这多个标记被组织成一个先进后出的栈结构,所以这些标记被称为标记栈。相应的,最先入栈的标记被称为栈底标记,最新入栈的标记被称为栈顶标记。但是,标记的栈式结构对于LSR的转发部件是透明的,所有的转发决定必须而且只能基于栈顶标记。一个数据包中包含的MPLS标记的主要作用在于指示接受到这个数据包的LSR如何转发这个数据包。但是必须注意的是,MPLS并没有被设计成网络层的替代协议,MPLS要做的只是利用网络层提供的和其他控制部件所提供的控制信息,实现高效的并且灵活的转发同样的MPLS也不会代替链路层的工作。所以标记栈在数据报的封装位置应该是链路层之后,网络层之前。MPLS标记的在数据转发中所起的作用和ATM的VPI/VCI或是帧中继的DLCI是类似的。所以,就可以使用这些链路层数据封装中的这些域来封装MPLS标记。但是,不是所有的链路层都提供这种交换的机制,比如说PPP或是以太网,所以必须定义一个独立于网络层和链路层封装的MPLS头部。我们现在描述一种被称为通用标记封装方法的封装方法,这种方法可以用于任何链路层。它定义了一个独立于链路层的被称为MPLS薄层的MPLS封装,可以封装多个标记,每个标记包括20位的MPLS标记、3位的实验域(EXP)、1位栈顶标记和8位TTL域。具体结构如下图所示012370C偍卌“C“塅“呔“图表15这里标记域中所承载的就是我们在111里一直讨论的L1、L2这些用于指示转发行为的标记。标记的数值范围为0220,0、1、2、3这四个标记有特殊含义,415保留。标记值为0的标记叫做IPV4显式空标记,这个标记只能出现在栈底,这个标记对应的转发动作只能是删除标记栈并且这个数据包将会被送给IPV4模块处理并转发。标记值为2的标记叫做IPV6显式空标记,其语法和语义和IPV4显式空标记是类似的。标记值为3的标记叫做隐式空标记。当一个LSR要给一个数据包换上一个新的标记时,如果被换上的标记是这个标记,那么LSR就不会执行标记交换操作,相反的,LSR会在数据包中的标记栈上执行一个POP操作。所以这个标记值不会出现在报文封装中,只会用在标记分发协议中。标记值为1的标记叫做路由器提醒(ROUTERALERT)标记,其作用类似于IP的路由器提醒选项(ROUTERALERTOPTION),用于提醒沿途的LSR在转发这个数据包之前应该仔细检查这个数据包,可以用在诸如RSVPPATH消息等消息报文需要沿途路由器而不仅仅是目的主机处理的应用中。EXP域(实验域)原先设计目的是用于实验目的,目前主要用于报文分类。起着和IP9报文中DSCP类似的作用,可以用于编码不同的PHB(PERHOPBEHAVIOR逐跳行为)。S比特叫做栈底标识(BOTTOMOFSTACK)的作用是指示当前这个标记是否是栈底标记。TTL域编码8位TTL值,其基本作用是防止环路和限制报文传输范围。通常对于TTL的处理过程是在MPLS网络入口路由器上,当接收到一个IP报文后,首先将其IPTTL减1,当它被发送之前,IPTTL应该被拷贝到MPLS顶层标记中;在中间LSR上当它收到一个带标记的报文时,首先将报文顶层标记中的TTL减1,然后做标记交换操作并发送出去,这里的交换只交换标记栈结构顶层标记封装中的20比特标记值;在出口LSR上,当它收到一个带标记报文以后,首先会对MPLSTTL做减1操作,然后做标记弹出操作,然后将MPLSTTL拷贝到报文的IPTTL域,并将其送给网络层发出。请注意,我们这里的假设是一层标记栈,对于多层标记栈的操作是类似的,我们把这个问题留到习题里去。对于在ATM、帧中继网络上标记的封装一般原则是顶层(或最上两层)标记封装在链路层的VPI/VCI或DLCI域中,而标记栈的其余标记则用我们上面描述的通用标记封装方法封装。我们这里讨论的是标记随数据报文一起发送时的封装形式,在下一部分要讨论的标记分发协议的报文中,标记封装自然只包含20位标记值。12标记分发协议113标记分发协议概述呒“呒2“卌“卌“卌“422224224222242222422潬灯慢正122潬灯慢正22偍卌22图表16我们在前面讨论了一个LSR如何依据输入报文的顶层标记(或网络层地址)以及ILM(或FTN)来确定对于一个报文的转发行为(即得到NHLFE),本节以及下一节将以上图为例讨论ILM、FTN和NHLFE这些控制信息是如何形成的。我们将把讨论限制于一个特定的FEC所有目的地址属于网络10010/24的数据包。对于这个FEC,我们下面描述一种可能的各LSR上标记转发信息生成过程。101、当LSRB上路由协议收敛以后,即它发现FEC10010/24以后,它就向上游LSR发布一个FCELABEL映射(以后我们将简称标记映射),其语义是“当你发给我的报文顶层标记是17时,我将对其采取FEC10010/24的转发行为”。当然,这里的上游LSR只会是LSRA,而不会包含LSRC,因为LSRB从路由协议知道FEC10010/24的下一跳路由器是LSRC,因而LSRC不应该将属于FEC10010/24的数据包转发给LSRB。2、当LSRA从E1口收到这个映射以后,它就可以建立自己的FTN映射表了NHLFEFEC下一跳发送接口标记操作其他10010/24LSRBE1加上标记17图表17LSRA上的FTN映射3、同样的LSRC也会给LSRB发送这样的标记映射,由于标记3具备倒数第二跳弹出的特殊含义,所以对LSRB而言,这个映射的语义是对于属于10010/24这个FEC要经过LSRC转发的数据包,应该对原有标记栈执行POP操作(而不是将原有标记栈顶层标记交换为3)。由于LSRB曾经发布过关于10010/24标记映射信息,因而现在LSRB就可以把这些信息组合起来形成一张ILM表了NHLFE入标记下一跳发送接口出标记其他17LSRCE13图表18LSRB上的ILM4、当然,对于LSRC而言,由于使用了倒数第二跳弹出技术,所以也就无需为10010/24这个FEC形成标记转发表了。注意,由于考虑了倒数第二跳弹出,所以这里的几个表格和111中的表格并不完全一样。从以上过程可以看出,标记转发控制信息形成的关键就是在标记转发的上下游LSR之间标记映射信息的传递本质上就是下游LSR将特定标记和特定FEC的映射通知给上游LSR,这个标记映射传递过程被称为标记分发。当然,正如前面所述,这里描述的标记分发方式只是两种可能的方式之一,上面描述的这种方式被称为下游自主(DUDOWNSTREAMUNSOLICITED)方式,其含义是指下游自主决定是否给上游分发标记映射,而无需上游显式请求。另外一种方式叫做下游按需分配(DODDOWNSTREAMONDEMAND)方式,这种方式下游只有在上游显式提出对于某个FEC11的标记请求才会向上游分发和这个FEC相关的标记映射。从全局观点来看,对于特定的FEC,各独立对于这个FEC的在他们之间链路上和某个标记的映射最终形成了一条LSP。如在图表16中,对于10010/24这个FEC,最终形成了这样一条LSP。在我们上面所说明的过程所描述的LSP控制方法也是两种可选方法之一独立LSP控制方法。所谓,独立的LSP控制方式是指一个LSR在向上游分发和特定FEC相关的标记映射之前,无需确保自己已经获得下游关于这个FEC的标记映射。我们可以看到图表16中的LSRB正是这样做的当它分发标记映射给LSRA时,它还没有从LSRC得到关于10010/24的标记映射。另外一种LSP控制方式被称为有序方式,这种方式下,一个LSR在向上游分发和特定FEC相关的标记映射之前,必须确保自己已经获得下游关于这个FEC的标记映射(除非这个LSR本身就是对于这个FEC的出口路由器)。对于特定FEC的LSP,MPLS标记转发的路由可以使用路由协议形成的逐跳路由,也可以不使用即使用某种显式路由机制。对于前者我们称这条LSP是逐跳路由的LSP,后者则被称为显式路由的LSP。截至目前为止,我们讨论的都是前者,后者在流量工程中有很重要的应用。独立的LSP控制方式和有序的LSP控制方法各有不同的应用场合,前者多用于控制逐跳路由的LSP,后者多用于控制显式路由的LSP。经管这两种LSP控制方式可以和任意的标记分发方式配合工作,但是下游自主的标记分发方式常和前者配合工作,以达到和路由协议同时快速收敛的目的;相应的,下游按需的标记分发方式常和有序的LSP控制方式配合使用,可以方便的实施显式路由。具体在相邻LSR之间进行标记分发工作的是标记分发协议,目前可以用于标记分发协议的有LDP(LABELDISTRIBUTIONPROTOCOL)、CRLDP(CONSTRAINTBASEDLDP)、RSVPTE(EXTENSIONSTORESOURCERESERVATIONPROTOCOL)、BGP等。下一节将介绍LDP协议,在以后的章节中将会介绍其他的协议。114LDP正如前一节所述,LDP(LABELDISTRIBUTIONPROTOCOL)是一种用于在一对标记转发上下游LSR之间分发FECLABEL映射信息的协议。这对标记转发上下游路由器互相被称为标记分发对等体。尽管图表16中所示网络中,标记分发对等体之间都是直接相连的,但是这并不意味着标记分发对等体必须直接相连,我们会在下一章介绍这个方面的应用。LDP以消息的形式在对等体之间分发、维护标记映射信息,为了保证标记分发的可靠性,LDP使用TCP的传输服务。总体上,所有LDP消息可以分为四类1、发现消息用于发现网络中的LDP相邻体2、会话消息用于建立、维护和中止LDP对等体之间的会话3、分发消息用于创建、改变以及删除和FEC相关的标记映射4、通知消息用于提供建议或错误通知信息利用这些消息,LDP大致工作过程如下图所示12效汬O2效汬222DDD图表19从这张图可以看到,两个LDP对等体首先发现对方,然后和对方建立TCP连接,在连接上,建立会话,最终在会话上传输标记请求和标记映射消息。我们将在随后的章节中仔细讨论这些过程。1221LDP发现从邻居发现的角度看,必须有一个标识不同LSR的一个ID,否则无法区分不同的邻居。LDP使用一个叫做LSRID的四字节数标识不同的LSR。由于,同一个LSR上可能存在完全的标记空间(例如ATM交换机每个接口的VCI是出于不同空间中的),所以从标记分发的角度应该区分同一LSR上不同标记空间,LDP使用一个字节的无符号整数来标识标记空间。LDP使用由LSRID和标记空间标识组成的被称为LDP标识符的字节无符号整数标识作为一个独立的标记分发对等体。LDP有两种发现邻居机制一是基本发现机制,一是扩展发现机制。基本发现机制用于发现通过物理链路直接相连的LSR,LSR利用承载在目的地址为组播地址224002(网段上所有路由器)UDP报文上的HELLO消息向网段内所有路由器声明自己的存在,当然这个UDP报文的目的端口号是用于指示其中包含LDP协议的646。而扩展发现机制用于发现非直接相连(手工配置的)LDP邻居,LSR利用承载在目的地址为手工配置的特定LSR地址的UDP报文上的HELLO消息向这个配置的邻居声明自己的存在,这个UDP报文的目的端口号也是646。HELLO消息并不是直接承载在UDP报文上,而是封装在如图表110的LDPPDU头部之后,一个LDPPDU可以包含多个不同LDP消息。图表11013其中VERSION字段表示LDP协议版本号,目前为1。PDULENGTH表示整个PDU的长度,不包括PDULENGTH和VERSION域的长度。LDPIDENTIFIER是指6个字节的LDP标识符。尽管这两种机制处理方式并不一样,但是都利用基本一样的HELLO消息,下图列出了HELLO消息的格式图表111HELLO消息的第一个比特通常叫做U比特,用于指示在消息接受者不能识别这个消息的类型(随后的15比特域)情形下的处理方法为零则向发送者发送一个错误通知消息,为1则安静的忽略这个消息。随后的15位域用于指示消息的类型,这里的0X0100就是指HELLO消息。MESSAGELENGTH用于指示从MESSAGEID域开始(包括MESSAGEID域)的HELLO消息的长度。MESSAGEID域用于给HELLO消息编号,以便于在其他消息(例如错误通知消息)中指示和这个消息相关的信息。COMMONHELLOPARAMETERSTLV中包含所有HELLO消息中必须包含的TLV,这里的TLV是指形如的对象数据结构,事实上HELLO消息本身就是一个TLV,只不过它的VALUE中又是一些TLV罢了。OPTIONALPARAMETERS域中则包含一些可选的TLV。LDPHELLO消息中COMMONHELLOPARAMETERSTLV结构如下图表112其中第1位叫做U比特,用于指示包含这个TLV的消息接收者如果不能识别这个TLV时的处理方式U0则要向消息的发起者发送一个错误通知消息,同时丢弃包含这个TLV的整个消息;U1则安静的忽略这个TLV,继续其他TLV的处理。第2位叫做F比特,这个比特只在U1时才有用。如果F0,未知的TLV不会随包14含它的消息被转发;如果F1,未知的TLV则会随着包含它的消息一起被转发。随后14位域是用于指示这个TLV的类型的,这里的0X0400表示COMMONHELLOPARAMETERSTLV。LENGTH域用于指示从HOLDTIME开始(包括HOLDTIME域)的TLV其余部分的长度,实际上就是指这个TLVVALUE部分的长度。HOLDTIME指示HELLO消息的接收者应该保持消息发送者HELLO纪录的时长,交互HELLO消息的双方会选取双方HELLO消息所指示的两个值中的较小者使用。T1指示该HELLO消息是目标HELLO(TARGETEDHELLO),用于扩展邻居发现机制;T0则表明该HELLO消息是链路HELLO消息,用于基本邻居发现机制。R1请求消息接收者向消息发送者回应目标HELLO,R0则不请求。其余14比特保留未用。LDPHELLO消息中OPTIONALPARAMETERS可能包含如下可选参数IPV4传输地址、IPV6传输地址和配置序列号三种可能,我们会在以后的章节中介绍这些选项的功能。作为一个总结,我们给出利用HELLO消息来进行邻居发现的大致处理过程1、对于基本发现机制LSR构造一个HELLO消息,在其中填上相应的参数,特别重要的是HOLDTIME,T、R比特都置为0,然后将这个HELLO消息放在一个LDPPDU中,LDPPDU中填入LSRID和标记空间标识组成的LDP标识符,然后将这个PDU封装在目的地址为224002,目的端口为646的UDP数据包中发送出去。这个HELLO消息被它的直接链路邻居收到后,它就被它的邻居发现了。2、对于扩展发现机制假定LSRA和LSRB并非直接相连,他们互相配置为对方的LDP邻居。LSRA的动作为构造一个HELLO消息,在其中填上相应的消息,如HOLDTIME等,特别的这里的T1、R1,然后将这个HELLO消息放在一个LDPPDU中,LDPPDU中填入LSRID和标记空间标识组成的LDP标识符,然后将这个PDU封装在目的地址为LSRB的地址,目的端口为646的UDP数据包中发送出去。LSRB收到这个数据包以后就发现了LSRA,同时LSRB也会给LSRA回应HELLO报文。可以用三元组表示LSRA上的标记空间A和LSRB上的标记空间B在链路L(是否物理链路都可能)之上的一个HELLO邻接体关系。从这里也可以看出,同一对LDP标识符之间可能存在多个邻接体关系。HELLO报文不仅仅用于建立HELLO邻接体,而且还用于维护HELLO邻接体。HELLO邻接体中的任何一方都用周期性的HELLO报文证明自己的存在。显然,HELLO报文的发送间隔应该小于HOLDTIME,一般为HOLDTIME的1/3。当一对LDPLSR互相发现了对方的存在以后,就可以建立两者之间用于标记分发的会话了。1222LDP会话建立和维护为了保证LDP会话的可靠性,LDP会话使用TCP的传输服务,所以建立LDP会话的第一个步骤就是在一对HELLO对等体之间建立TCP连接。当一个LSRLSRA发现了一个新的邻接关系之后,它就会检查是否已经有一个TCP连接在为标记空间对服务,如果没有那就准备建立一个,并在此基础上建立会话,并标识此会话为HELLO邻接体。如15果已经存在一个TCP连接为此标记空间对服务,就标识基于此TCP连接的会话为邻接关系服务(当然,当一个会话所服务的邻接关系数目为0时,此会话必须被终止)。显然,会话是没有考虑前面那个三元组的最后一元即链路的,这样显然可以节省资源。建立一个TCP连接的第一个步骤是确定传输连接双方所使用的IP地址。本端IP地址决定于是否在HELLO消息选项中向对端通报传输地址选项(IPV4或IPV6),如果曾经通报过,那么就使用通报的那个地址作为传输地址,否则,就使用发送HELLO消息的源IP地址作为本端传输地址。相应的,对端传输地址的确定也是类似的如果对端曾经在HELLO消息选项中包含了一个传输地址,那么就使用这个地址作为对端传输地址,否则就使用对端发过来的HELLO消息的源地址作为对端传输地址。确定了双方传输地址以后,协议规定传输地址大的那一方在随后的会话建立过程中为主动方,另一方为被动方。主动方会主动发起TCP连接建立过程(即先发出SYN标记置位的TCP报文),被动方则被动等待连接请求的到来,三次握手以后,TCP连接就建立起来了1。TCP连接建立以后,双方就开始会话初始化过程。会话初始化过程的主要目的是协商LDP协议版本号、标记分发方式、定时器参数、标记范围等参数。具体的会话初始化过程是由主动方首先向被动方发初始化消息开始的。初始化消息(INITIALIZATIONMESSAGE)格式如下图表113其中,U比特、TYPE、MESSAGELENGTH以及MESSAGEID有和HELLO消息一样的语义。INITIALIZATION消息中的COMMONSESSIONPARAMETERSTLV格式如下1关于TCP连接建立的过程可以参考HCNE培训教材或者RFC792。16图表114COMMONSESSIONPARAMETERSTLV中的U比特、F比特、TYPE以及LENGTH字段具有和HELLO消息中的COMMONHELLOPARAMETERSTLV中相同的含义。PROTOCOLVERSION用于指示本端LDP版本号,这里描述的LDP协议版本为1。KEEPALIVETIME字段则用于指示消息发送者建议的KEEPALIVETIME,KEEPALIVETIME是从TCP连接上在从成功接收到一个PDU到接收到下一个LDPPDU最长秒数。当然,每收到一个PDUKEEPALIVE定时器就会被重置。KEEPALIVE定时器超时以后,会话必须被终止。A比特用于指示发送方的标记分发方式A0表示DU(下游自主)方式,A1表示DOD(下游按需)方式,双方必须就标记分发方式达成一致。D比特用于指示是否使能基于路径向量(PATHVECTOR)的环路检测功能。我们将在下一节讨论环路检测。如果使能基于路径向量的环路检测,PVLIM(PATHVECTORLIMIT)域用于指示路径向量的最大长度。MAXPDULENGTH用于指示消息发送者建议的最大PDU长度,双方最后使用的最大PDU长度必须是双方所建议之较小者。RECEIVERLDPIDENTIFIER用于指示发送者计划与之建立LDP会话的接收方标记空间。接收方可以利用发送者的LDPIDENTIFIER和这个接收者LDPIDENTIFIER和它的一个HELLO邻接关系相匹配。如果找不到任何的匹配,则接收方会发出错误通知消息,并终止会话。LDPINITIALIZATION消息中的可选参数目前包括ATMSESSIONPARAMETERS和FRAMERELAYSESSIONPARAMETERS,这些选项用于在ATM或帧中继接口上和这两个协议相关的一些参数,如接口标记范围、接口的MPLS能力等。总体上,LDP会话初始化过程为当被动方收到主动方发出的会话初始化消息以后,如果它觉得对方建议的参数可以接受,它就用一个INITIALIZATION消息向对方表达自己的关于这些参数的建议,否则就发出错误通知并终止连接。主动方收到一个INITIALIZATION消息以后,检查对方参数是否可与接受,如果可以,那么就给被动方回应一个KEEPALIVE消息(KEEPALIVE消息格式见下图),否则就发错误通知消息给对端并终止连接。17图表115任何一方收到来自对端的KEEPALIVE消息以后,它就会认为LDP会话已经处于操作(OPERATIONAL)状态了。KEEPALIVE消息非常简单,只有一个通用的消息头,目前未定义任何选项。当会话上没有其他消息要传输时,就传输KEEPALIVE消息以向对方证实自己的存在。作为一个总结,下面给出了一个LDP会话初始化过程的一个示意图。奓N2奓虋22湉楴污穩瑡潩2湉楴污穩瑡潩22敋灥楬敶敋灥楬敶2灯牥瑡潩慮22灯牥瑡潩慮22DD图表116由以上过程可以知道,无论是TCP连接建立的发起还是会话初始化的发起都是由主动方负责的,而被动方只是消极等待。所以如果由于双方参数不兼容而终止连接,主动方必须不断重复尝试建立连接。为了避免网络带宽的无谓浪费,主动方两次尝试之间的时间间隔是按指数规律增长的。这样有可能出现这样的问题一段时间以后,被动方已经更改了配置,但是被动方不得不等待主动方下一次连接建立尝试,这可能会等很长时间。为了解决这个问题,被动方就可以在HELLO消息选项中声明新的配置序列号(见上一节)。这样主动方就可以知道被动方已经改变了配置,它就可以无需等待地立即发起连接建立过程。会话初始化过程以后,就可以在会话上利用LDPPDU进行标记分发的操作了。1223标记分发和管理LDP的核心任务就是标记分发。标记分发就是指一个LSR告知它的标记分发对等体关于特定FEC和标记的映射关系,这样当它的对等体向它转发属于这个FEC的数据包时,只需打上相应的标记就可以了。正如前面章节中所描述的那样,标记分发有DU(下游自主)和DOD(下游按需)两18种不同的方式,从全局上看,LSP有两种不同的控制方式有序的和独立的。对于逐跳路由应用而言,一般采用独立的LSP控制方式,标记分发方式一般选用DU方式。为了说明LDP标记分发的基本思想,我们以独立的LSP控制方式、DU方式的标记分发方式为例描述LDP标记分发的操作过程,其他组合是类似的。在这样的前提下,只要LDP发现了一个新的FEC,它就可以分配一个标记给这个FEC并且将它用LDPLABELMAPPING消息将这个标记和FEC的映射从业已建立起来的LDP会话上分发给它的所有LDP对等体(显然,必须将这个下一跳的下一跳路由器排除在外)。我们这里讨论的LABELMAPPING消息格式如下图表117LABELMAPPINGLABELMAPPING消息头部的U、F、TYPE、LENGTH以及MESSAGEID含义和以前我们讨论的消息类似。LABELTLV和FECTLV用于标识消息发送者发布的标记、FEC映射。FEC的定义就是转发等价类,这个宽广的定义正是MPLS可以提供多种灵活服务的原因之一。但是,为了便于理解,在这里我们只考虑传统意义上的FEC网络层目的地址(事实上,在绝大多数的应用中,FEC至少部分包含网络层目的地址)。下图是LDP定义的用于表示FEC的TLV,FECTLV用于标记分发所使用的相关消息
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年语文考试实践性试题及答案解析
- 2025年药师考试未来发展趋势探讨试题及答案
- 主管护师考试案例分析技巧试题及答案
- 探讨中国文化的试题及答案汇编
- 执业药师考试中的理论与实操问题试题及答案
- 中国文化概论考试准备指南
- 执业护士考试案例分享与专业思维的培养试题及答案
- 2025年主管护师考试丰富资源试题及答案
- 中国老年围术期麻醉管理指导意见课件
- 制药公用系统工程 空气净化课件
- 地图学第1章-绪论
- 浙江省肿瘤医院医疗废物暂存间环保设施提升改造项目报告表
- 《加拉帕戈斯群岛》课件
- 2024人教版新教材初中物理八年级下册内容解读课件(深度)
- 工程经济学(青岛理工大学)知到智慧树章节测试课后答案2024年秋青岛理工大学
- (高清版)DB2201∕T 43-2023 肉犊牛饲养技术规范
- 2025年医院消化内科年度工作计划
- 2025年华能长兴分公司招聘笔试参考题库含答案解析
- 医院感染管理制度培训
- 2024年高考政治学科高考万能答题模板(高分版)
- 水资源应急调度模型-洞察分析
评论
0/150
提交评论