目录MPLS的前世今生MPLS的一些概念MPLSVPNMPLSOAMMPLSTE/FRRMPLS-TPMPLS概念MPLS,全称是MultipleProtocolLabelSwitch,翻译成中文及多协议标签交换直接从字面意思来理解MPLS,即MPLS是通过一个叫label的东西来做交换转发的,这个label里面可以承载多种协议payload,所以可以理解成一个适应于多个协议的统一的转发平面MPLS的发展历史–IP和ATM的限制90年代初,随着Internet的快速普及,IP技术由于简单,成本低,迅速得到推广。然而,由于当时硬件技术的限制,采用最长匹配算法、逐跳转发方式的路由器日益成为限制网络转发性能的一大瓶颈,快速路由器技术成为当时研究的一个热点。而与此同时,ATM技术因为采用定长标签,并且只需维护比路由表小得多的标签表,可以提供比IP路由方式高得多的转发性能。ATM组织也梦想一统江湖,然而,由于ATM的完美主义倾向,由此导致的复杂的控制信令和高昂的部署成本让人望而却步。MPLS的发展历史–MPLS想法的出现这在当时也导致了广泛的争论,到底ATM和IP,谁将成为下一代网络技术的基础。很自然的,开始有人尝试把ATM和IP技术的优势结合起来,在保持IP技术简洁性的前提下,提供类似于ATM技术的高性能。很多厂商都进行了类似研究,其结果是各个厂商提出了各自的标签交换解决方案。MPLS的发展历史–先行者1996年春,美国加州一个名为IPSilon的小公司推出了一项具有震撼意义的技术,称为IPSwitching。IPSwiching技术通过在ATM交换机上提供一个额外的IP路由引擎,较好地把ATM的高速转发能力和IP的简洁易部署特点结合起来,这是最早的先行者。IPSwitching技术的推出使得Ipsilon公司由一个默默无闻的小公司,一举成为IP通信界的明星,并刺激业界巨头,如CISCO(提出TagSwitching)、IBM(提出ARIS)纷纷推出更易于扩展和升级的三层交换解决方案,由此引发了路由交换技术的一次革命,并导致了MPLS技术的诞生。MPLS的发展历史–MPLS诞生在上面提到的三种标签交换技术之外,还有其他各种类似技术,如3COMFASTIP、CascadeNavigator等,均能提供支持IP的二层交换功能。当时的情形是,各厂商纷纷提出自己的标签交换技术,如果没有一个标准化工作组,将会出现更多的互不兼容的标签交换技术,从而使市场变得更为混乱。为了协调各方利益,形成一个统一的标准,1996年底,IETF成立了一个工作组,对集成路由和交换技术的标签解决方案进行标准化。到1997年初,这个工作组形成了IETF认可的章程,工作组的第一次会议在1997年4月召开。经过多次商讨,最终MPLS(MultiprotocolLabelSwitching)这个术语被确定下来,作为独立于各个厂家私有标准的一系列标准的名称。MPLS的发展历史–MPLS的尴尬虽然硬件技术的发展,IP路由转发已经由原来需要软件干预的“一次路由,多次交换”发展到纯粹的硬件转发,虽然硬件的实现技术仍然比MPLS转发要复杂,但是已经完全可以做到线速转发,IP技术的这一弊端已经不复存在。同时ATM技术已经逐渐退出舞台,各个运营商都已经不再投入,所以所谓的统一IP和ATM也已经不再是个强有力的MPLS存活的理由。在这个情况下,MPLS何去何从?MPLS的发展历史–MPLS重获新生随着数据网络的爆发式增长,IP设备功能越来越强大,成本越来越低,数据需求越来越大。运营商的很多企业用户的VPN业务,都是租用的私有专线,都是基于FrameRelay,ATM等技术,成本昂贵,且业务可扩展性差,不能满足新的数据需求。在这种情况下,有没有新的技术可以在IP网络里面很好的支持VPN业务自然成了人们关心的一个话题。这个时候大家发现,由于MPLS支持多重labelstack,天生就适合做tunnel,也就是天生就适合承载VPN业务。所以MPLS迎来了第二春。再到后来,城域承载网络在数据业务的驱动下,都开始向IP/Ethernet迈进,即考虑用价格低廉,业务灵活的IP/Ethernet设备取代成本相对高,数据业务不灵活的SDH/Sonet设备,于是PacketTransportNetwork的概念被引入,在PTN网络的边缘,要考虑多种接入方式,包括Ethernet,IP,ATM,SDH/Sonet,FrameRelay等。如何把这些技术都统一到PTN里面,一个选择就是MPLS。AgendaMPLS的前世今生MPLS的一些概念MPLSVPNMPLSOAMMPLSTE/FRRMPLS-TP最重要的概念–FECFEC–ForwardingEquivalenceClasses,即转发等价类透过FEC这一概念,可以看到MPLSlabel的本质,即MPLSlabel到底是代表了什么东西。IP/MPLS网络,Label=routeentryL2VPN网络,Label=ServiceorCustomerATM/MPLS网络,Label=VPI/VCIFrameRelay/MPLS网络,Label=DLCI其它概念NHLFENextHopLabelForwardingEntryFTNFEC-To-NHLFEILMIncomingLabelMappingLSPLabelSwitchedPathLSRLabelSwitchRouterLEREdgeLSR,includingingressLERandegressLERLabelandLabelStack在一个报文里面,可以包含一个LabelStack,一个LabelStack由一个或者多个LabelStackentries组成,一个LabelStackEntry格式如下:LabelStack放在L2header后面(如果有vlantag,放在vlantag后面),用EtherType0x8847(ucast)和0x8848(mcast)来标识,所以又被称为2.5层协议用一个IP/MPLS例子来说明各个概念(1)0Summaryroutefor171.68/1601171.68.10/24Next-HopInLabAddressPrefixOutI/FOutLabInI/F7171.68/162pop0...............Next-HopInLabAddressPrefixOutI/FOutLabInI/F-171.68/16140...............路由是由路由协议发布的,label是由每个LSR赋给直连的上游路由器的Uselabel“implicit-null”forFEC171.68/16Summaryroutefor171.68/16Uselabel4forFEC171.68/16EgressPE需要做IProutelookup来找到具体的下一跳171.68.44/24AddressPrefixandmask171.68.10/24Next-Hop171.68.9.1InterfaceSerial1171.68.44/24171.68.12.1Serial2171.68/16...NullUselabel7forFEC171.68/16Next-HopInLabAddressPrefixOutI/FOutLabInI/F4171.68/16170...............CEPE1P1P2PE20021在这个例子中,171.68/16就是FECPE1里面创建label4,oif1等下一跳的信息就是NHLFEentryPE1里面创建的171.68/16跟NHLFE的对应关系就是FTNentryP1里面创建的label4,P2里面创建的label7的转发表就是ILMentryPE1-P1的Label4,P1-P2的Label7所形成的这样一条转发路径就是一条LSP,LSP是单向的,后来有新的标准专门定义了Co-routedLSP,是双向LSP在PE1-PE2的LSP上,PE1是ingressLER,PE2是egressLER,P1和P2是transitLSR用一个IP/MPLS例子来说明各个概念(2)LDP协议FTN,ILM可以是在LSR上管理员手动配置的,也可以是通过动态协议来创建的。动态地对每一个FEC发布Label的协议有好几个,最主要的就是LDP(LabelDistributeProtocol),顾名思义,这个协议就是专门为分发标签而诞生的。其它的协议,如BGP,RSVP,都是在已经存在的协议基础上做了扩展,专门为特定目的的标签发布而设计的,非通用。RelatedStandardRFC3031–MPLSArchitectureRFC3032–MPLSLabelShimRFC3270–MPLSSupportDiffServRFC3443–MPLSTTLProcessRFC5036–LDPAgendaMPLS的前世今生MPLS的一些概念MPLSVPNMPLSOAMMPLSTE/FRRMPLS-TPMPLS是天然的Tunnel所谓VPN,就是在原始的数据外面加了一个新的header,然后在网络上用这个新header的信息来进行传输,这个新header所建立起来的转发通道就称之为Tunnel.MPLSpacket,本质上就是在原始报文前面加装一个LabelStack,然后靠这个LabelStack中的label来转发报文,而且labelstack可以包含多个label,即可以在label前面任意再增加label,所以说不需要对MPLS技术做任何扩展,它是天然的Tunnel.MPLSL2VPNandL3VPN所谓的MPLSL2VPN,是在原始的ethernet报文前面,加上一个MPLSlabelstack,再加上一个新的L2header,即MPLS的payload是ethernet报文。所谓的MPLSL3VPN,是把原始报文的ethernetheader去掉,只保留L3header及其payload,然后在前面加上一个MPLSlabelstack,再加上一个新的L2header,即MPLS的payload是IP报文。目前的主流应用是L2VPN。注意:以上的理解都是基于ethernet/IP报文来说的。PWE3IETF有一个workgroup,叫PWE3(PseudowireEmulationEdgetoEdge),它们定义了一个概念叫PW(Pesudowire),中文叫伪线。所有跟MPLSVPN相关的技术,都是基于PW展开来的。PWE3这个workgroup主要定义如何对使用PW模拟的各种service进行封装,传输,控制,管理及安全PWE3制定的这些标准本身不构成任何应用,应用相关的标准由别的group制定,比如L2VPN相关的就是由l2vpnworkgroup制定。PWE3封装格式TheoriginalcustomerframeTheframeafterlocalPEThepacketafterremotePEMacDaMacSaTagPayloadMacDaMacSaTagPayloadTunnelLabelVClabelMacDaMacSaTagMacDaMacSaTagPayloadMPLSL2VPN概念MPLSL2VPN包括VPWS和VPLS.VPWS,即VirtualPrivateWireService,是用PW来提供点对点服务的,即E-Lineservice,它不需要Mac学习和Mac转发。VPLS,即VirtualPrivateLanService,是用PW来提供多点对多点服务的,即E-Lanservice,跟普通的Lan类似,它要求Mac学习和基于Mac+VSI(VirtualServiceInstance)的转发。MPLSL2VPN实现PW,又可以称之为VC(virtualCircuit),可以静态配置,也可以动态创建,动态的创建的协议包括LDP和扩展的BGP,其中LDP是主流。PW可以