1MPLS/MBGP/VPN江湖恩仇录华为公司数据通信技术支持部2教师简介李劲松152333帮派•MPLS•VPN•MBGP•MPLS/MBGP/VPN4MPLS物种起源•IP的危机在90年代中期,当时路由器技术的发展远远滞后于网络的发展速度与规模,主要表现在转发效率低下、无法提供QOS保证。原因是:当时路由查找算法使用最长匹配原则,必须使用软件查找;而IP的本质就是“只关心过程,不注重结果”的“尽力而为”。当时江湖上流行一种论调:过于简单的IP技术无法承载网络的未来,基于IP技术的因特网必将在几年之后崩溃。•ATM的野心此时ATM跳了出来,欲收编所有帮派,一统武林。不幸的是:信奉维美主义的ATM走向了另一个极端,过于复杂的心法与招式导致没有任何厂商能够完全修练成功,而且无法与IP很好的融合。在与IP的大决战中最终落败,ATM只能寄人篱下,沦落到作为IP链路层的地步。5MPLS物种起源ATM技术虽然没有成功,但其中的几点心法口诀,却属创新:•屏弃了繁琐的路由查找,改为简单快速的标签交换•将具有全局意义的路由表改为只有本地意义的标签表这些都可以大大提高一台路由器的转发功力。MPLS的创始人“lable大师”充分吸取了ATM的精华,但也同时认识到IP为江湖第一大帮派,无法取而代之。遂主动与之修好,甘当IP的承载层,但为了与一般的链路层小帮有所区别,将自己定位在第2.5层的位置。“lable大师”本属于八面玲珑之人,为了不得罪其他帮派,宣称本帮是“multiprotocol”,来者不拒,也可以承载其他帮派的报文。在经过一年多的招兵买马、上下打点之后,于1997年的武林大会上,正式宣布本帮成立,并命名为MPLS(MultiProtocolLableSwitch)6MPLS包头结构通常,MPLS包头有32Bit,其中有:20Bit用作标签(Label)3个Bit的EXP,协议中没有明确,通常用作COS1个Bit的S,用于标识是否是栈底,表明MPLS的标签可以嵌套。8个Bit的TTLMPLS头部2层头部IP头部数据标签SCoSTTL20023243232比特MPLS头2层头部IP头部数据MPLS头理论上,标记栈可以无限嵌套,从而提供无限的业务支持能力。这是MPLS技术最大的魅力所在。7MPLS术语标签(Label)是一个比较短的,定长的,通常只具有局部意义的标识,这些标签通常位于数据链路层的数据链路层封装头和三层数据包之间,标签通过绑定过程同FEC相映射。FEC:ForwardingEquivalenceClass,FEC(转发等价类),是在转发过程中以等价的方式处理的一组数据分组,MPLS创始人在秘笈本来规定:可以通过地址、隧道、COS等来标识创建FEC,只可惜后辈弟子大多资质愚钝,不能理解其中的精妙之处,所以我们现在看到的MPLS中只是一条路由对应一个FEC。通常在一台设备上,对一个FEC分配相同的标签。LSP:标签交换通道。一个FEC的数据流,在不同的节点被赋予确定的标签,数据转发按照这些标签进行。数据流所走的路径就是LSP。LSR:LabelSwitchingRouter,LSR是MPLS的网络的核心交换机,它提供标签交换和标签分发功能。LER:LabelSwitchingEdgeRouter,在MPLS的网络边缘,进入到MPLS网络的流量由LER分为不同的FEC,并为这些FEC请求相应的标签。它提供流量分类和标签的映射、标签的移除功能。8MPLS北斗七星阵法图MPLS边缘路由器(LER)标记交换路径(LSP)MPLS核心交换机(LSR)IngressEgress该阵法分为内外两层,外层由功力较低的入门弟子担纲(LER),在IP报文冲阵时负责接收IP报文,查找标签转发表,给IP报文打标签操作(PUSH)在IP报文出阵时对标签报文进行弹出操作(POP),按IP路由进行转发。内层由功力高强的弟子组成(至少是个堂主),负责对标签报文进行快速的标签交换操作(SWAP)947.147.247.3IP47.1.1.1DestOut47.1147.2247.33123DestOut47.1147.2247.3312123IP47.1.1.1IP47.1.1.1IP47.1.1.1IP的hop-by-hop逐跳转发IP的逐跳转发,在经过的每一跳处,必须进行路由表的最长匹配查找(可能多次),速度缓慢。DESTOUT接口47.1.0.0147.0.0.0147.1.1.0110LabelSwitchedPath(LSP)IntfInLabelInDestIntfOut34047.11IntfInLabelInDestIntfOutLabelOut35047.114047.147.247.3123121233IntfInDestIntfOutLabelOut347.1150IP47.1.1.1IP47.1.1.1MPLS的标签转发,通过事先分配好的标签,为报文建立了一条标签转发通道(LSP),在通道经过的每一台设备处,只需要进行快速的标签交换即可(一次查找)。11LabelSwitchedPath(LSP)FEC的精妙之处:不同目的地址的IP报文,在ingress处被划分为相同FEC,具有相同的标签,这样在LSR处,只需根据标签做快速的交换即可。而对于传统的IP路由,在每一跳处实际上都是一次重新划分FEC的过程。如果一台路由器对于ip路由和标签交换同样使用了cache功能,由于对于路由来说,在cache中只能记录主机路由,条目将十分有限,而标签对应的是FEC,可能是网段,可以做到很少的条目匹配大量的报文。FEC的致命缺陷:由于一条FEC来说,沿途所有的设备都必须具有相同的路由(前缀和掩码必须完全相同)才可以建成一条LSP。换句话说,使用MPLS转发的所有设备上,对于要使用标签转发的路由,都不能做路由聚合的操作。12上下打点当一个链路层协议收到一个MPLS报文后,她是如何判断这是一个MPLS报文,应该送给MPLS处理,而不是象普通的IP报文那样,直接送给IP层处理?回答:还记得MPLS的创始人“Lable大师”曾用了一年的时间来“上下打点”吗?当时主要的工作就是取得各个链路层帮派的通行证。例如:在以太网中:使用值是0x8847(单播)和0x8848(组播)来表示承载的是MPLS报文(0800是IP报文)在PPP中:增加了一种新的NCP:MPLSCP,使用0x8281来标识13LDP有了标签,转发是很简单的事,但是如何生成标签,却是MPLS中最难修练的部分。在MPLS秘笈中,这部分被称为LDP(LabelDistributionProtocol),是一个动态的生成标签的协议。其实LDP与IP帮派中的动态路由协议(如OSPF)十分相像,都具备如下的几大要素:•报文(或者叫消息)•邻居的自动发现和维护机制•一套算法,用来根据搜集到的信息计算最终结果。只不过前者计算的结果是标签,后者是路由罢了。14LDP消息在LDP协议中,存在4种LDP消息:•发现(Discovery)消息用于通告和维护网络中LSR的存在。•会话(Session)消息用于建立,维护和结束LDP对等实体之间的会话连接。•通告(Advertisement)消息用于创建、改变和删除特定FEC-标签绑定。•通知(Notification)消息用于提供消息通告和差错通知。15邻居发现:通过互发hello报文(UDP/prot:646/IP:224.0.0.2)建立TCP连接:由地址大的一方主动发起。(TCP/port:646)会话初始化:由Master发出初始化消息,并携带协商参数。由slave检查参数能否接受,如果能则发送初始化消息,并携带协商参数。并随后发送keepalive消息。master检查参数能否接受,如果能则发送keepalive消息。相互收到keepalive消息,会话建立。期间收到任何差错消息,均关闭会话,断开TCP连接MMMMMLDP会话的建立和维护16LDP邻居状态机NONEXISTENTINITIALIZEDOPENRECOPENSENTOPERATIONAL接收到Init以外消息或超时会话连接建立发送Init消息(主动方)收到可接受的Init消息;发送Init消息发送KeepAlive消息(被动方)接收到Shutdown消息或超时;发送Shutdown消息其他LDP消息接收到KeepAlive消息接收到KeepAlive以外消息或超时;发送接收到可接收的Init消息;发送KeepAlive消息接收到Init以外消息或超时;LDP会话建立的状态迁移图17标签的分配和管理标记分发方式DOD(DownstreamOnDemand)下游按需标记分发DU(DownstreamUnsolicited)下游自主标记分发标记控制方式:有序方式(Odered)标记控制独立方式(Independent)标记控制标签保留方式保守方式自由方式上游与下游:在一条LSP上,沿数据包传送的方向,相邻的LSR分别叫上游LSR(upstreamLSR)和下游LSR(downstreamLSR)。下游是路由的始发者。18LDP标签分配方式(DU)下游主动向上游发出标记映射消息。主动发送的前提是:•发现自己有接口路由,并且接口已经UP;•收到下游到某个路由的标签。标签分配方式中同样存在水平分割,即:对我已经选中的出口标签,就不再为下一跳分配出标签。标签是设备随机生成的,16以下为系统保留。还有一种DOD方式(由上游向下游请求),由于多年无人修练,基本上已经失传了。IntfInLabelInDestIntfOut34047.11IntfInLabelInDestIntfOutLabelOut35047.114047.147.3131133IntfInDestIntfOutLabelOut347.1150Mapping:4019LDP标签保留方式自由方式(Liberalretentionmode)保留来自邻居的所有发送来的标签优点:当IP路由收敛、下一跳改变时减少了lsp收敛时间缺点:需要更多的内存和标签空间。保守方式(Conservativeretentionmode)只保留来自下一跳邻居的标签,丢弃所有非下一跳邻居发来的标签。优点:节省内存和标签空间。缺点:当IP路由收敛、下一跳改变时lsp收敛慢比较流行的是自由方式。20LDP标签控制方式有序方式(Odered)标记控制:除非LSR是路由的始发节点,否则LSR必须等收到下一跳的标记映射才能向上游发出标记映射。独立方式(Independent)标记控制:LSR可以向上游发出标记映射,而不必等待来自LSR下一跳的标记映射消息比较流行的是有序方式。21标签转发表心法口诀标签转发表中的IN和OUT,是相对于标签转发而言,不是相对于标签分配的IN和OUT:心法口诀:入标签是我分给别人的,出标签是别人分给我的。我分配的标签是给别人用的,我不会添加到报文中。INinterfaceINlablePrefix/MASKOUTinterface(nexthop)OUTlableSerial05010.1.1.0/24Eth0(3.3.3.3)80Serial15110.1.1.0/24Eth0(3.3.3.3)80Serial16270.1.2.0/24Eth0(3.3.3.3)52Serial15220.1.2.0/24Eth1(4.4.4.4)52Serial27730.1.2.0/24Serial3(5.5.5.5)3(pop)对于一台设备的标签转发表来说:•所有的入标签()•对于相同的路由(下一跳也相同),出标签()•对于不同的路由(但下一跳相同),出标签()•对于不同的路由(下一跳也不同),出标签()•对于同一条路由,入标签和出标签()A一定不同B一定相同C可能相同22倒数第二跳弹出(PHP)话说MPLS传到了第二代,由PHP接任掌门。PHP天资聪颖且富有创新精神。他经过对MPLS北斗七星阵法的深入研究,发现本帮的这门绝学虽然暗合天数、精妙无比,但并非没有