基于IXP2800处理器的VPLS转发设计与实现

来源:互联网 发布:知乎 zun的地位 编辑:程序博客网 时间:2024/06/05 04:08

 基于IXP2800处理器的VPLS转发设计与实现

 

摘要:

   VPLS是一种基于MPLS和以太网技术的2层VPN技术,提供给物理空间不同但同属于同一个VPN用户以太网环境。本文提出基于IXP2800网络处理器的VPLS转发实现方案,该转发方案的数据转发处理在IXP2800网络处理器上的微引擎上完成。本文详细说明了该方案的硬件环境、软件架构和主要的转发流程。

 

1、概述

VPLS(VirtualPrivate LAN Service)是一种在IP/MPLS 网络中提供虚拟专用以太网桥接域的技术。其原理是在各个PE 之间建立全网状的MPLSLSP,将二层以太网帧通过MPLS进行封装,通过MPLS 交换将用户以太网流量在各个PE 之间进行转发,从而建立一个点对多点的以太网VPN。

下图是VPLS的典型组网图。加入VPLS的接口支持广播,转发和过滤以太网帧。PE之间通过PW(Pseudo Wire)互相连接,对客户形成一个仿真LAN。每个PE不但要学习来自PW的以太网报文的MAC地址,也要学习来自它所连接CE的MAC地址。PW通常使用MPLS 隧道,也可以使用其他任何隧道,如GRE, L2TPV3, TE等。PE通常是MPLS边缘路由器,并能够建立到其他PE的隧道。


2、技术介绍

2.1 基本概念

VSI:虚拟交换机实例。PE上创建一些虚拟交换机实例在不同的PE上的虚拟交换机实例可组成L2VPN。用户端的局域网通过虚拟交换机接入VPLS。用户就可以通过广域网扩展自己的LAN。VPLS可以看做跨越公网的虚拟交换机和L3VPN一样。它在通过公网上建立的隧道进行流量互通。一般是使用VSI标签来区分VSI用户。

CE与PE之间逻辑链路叫AC。

PE与PE之间的逻辑链路叫PW(Pseudo Wire)。

 

2.2支持接口

VPLS只支持以太类型,一次接入VPLS业务的端口限于以太端口、以太子接口、ATM的1483B封装子接口、FR的1483B封装子接口,以太Trunk接口及子接口。

 

2.3 VPLS PW建立支持2种信令方式

PW隧道的建立常用有两种信令:BGP和LDP

采用LDP作信令时,通过扩展标准LDP的TLV来携带VPLS的信息,增加了128类型和129类型的FEC TLV。建立PW时的标签分配顺序采用DU(Downstream Unsolicited)模式,标签保留模式采用Liberal Label Retention。用来交换VC信令的LDP连接需要配置成Remote 方式。

采用BGP作信令时,利用BGP的多协议扩展(RFC2283)传递VPLS 成员信息。其中MP-reach和MP-unreach属性传递VPLS的标签信息,接口参数信息在扩展团体属性中传递,VPN成员关系靠RD(route distinguish)和VPN-TARGET来确定,RD和VPN-TARGET都在扩展团体属性中传递。

BGP可以实现自动发现成员可扩展性较好,而LDP要求在同一个VPLS中建立全连接的LDP会话。当有新PE加入时,所有相关PE都需要配置,导致扩展性较差。当用BGP作信令机制时,由于PW实际是点到点链路,比使用LDP进行PW的建立、维护和拆除更方便,扩展性也更好。

 

2.4 MAC地址学习

   VPLS的控制面并不需要通告和分发可达信息,而让数据面上的标准桥接功能的地址学习来提供可达性。和以太网交换机一样,在VPLS里,对收到未知单播地址、广播地址和组播地址的以太报文都采用广播方式,将收到的报文转发到其余所有端口(本地VSI下的所有端口和PW)。

   VPLS使用标准桥学习功能建立转发表,由转发平面来完成。建立MAC转发表的方式是MAC地址学习,包括对用户侧来的报文的学习和从PW来的报文的学习。从入PW上学习到的MAC地址的出接口,要设置成这个PW对应的出PW。

  在VPLS中MAC地址学习分为2种模式:受限MAC地址学习和非受限MAC地址学习。

  受限MAC地址学习是指VPLS学习MAC地址的时候,在虚拟交换实例中MAC地址空间不是统一一个空间,而是基于VLAN进行区分,这样在MAC地址查找中可以在不同的空间进行查找,提高MAC地址查找效率。

   非受限MAC地址学习是指VPLS学习MAC地址的时候,在虚拟交换实例中统一使用一个MAC地址空间,在同一个虚拟交换实例中不区分MAC地址空间。这样在查找MAC地址的时候,需要在整个MAC地址空间进行查找。

 

2.5 分层VPLS(H-VPLS)

   在实际组网中,VPLS可划分为2部分:VPLS的核心层和VPLS的接入层。构成核心层的PE设备需要增加二层交换/桥接(bridging)模块,带二层交换功能的PE被称为PE-rs(routing and switching),而仅有三层交换/路由功能的传统PE设备被称为PE-r。核心层PE-rs设备之间的互连PW称为Hub PW,PE-rs与PE-r之间的互连称为SpokePW。

   为了在全互连(FULL MESH)网络中,防止形成广播风暴,在H-VPLS中的转发规则是通过Spoke PW转发的流量可以转发到hub PW和Spoke PW,而通过hub PW转发的流量只能转发到Spoke PW。根据这个规则可以保证通过分层VPLS的流量不形成环路。

 

2.6 UPE双归属

为了提高用户接入PE(UPE)的可靠性,UPE采用连接2个SPE,两个PW中一个是主PW,一个备PW,平时只用主PW。当主PW出现故障时,使用备PW转发数据。当主PW发生故障时,在PE内需要快速老化该VSI的MAC表项,重新学习MAC地址。

由于UPE与SPE之间连接方式可以是QinQ或PW,因此UPE的检测可能采用端口状态检测,链路状态检测,LSP检测等手段,而且还需实现检测结果与PW切换动作的联动。在可靠性不高的场景,使用STP或者LDP的会话状态来作主备PW状态检测也是可行的。

 

2.7 CE双归属

为了保证CE业务的可靠性,采用2个PE接入同一个CE即CE双归属。2个PE与CE建立2个AC,一个主AC,一个备AC,平时只使用主AC,在主AC出现故障时,使用备AC转发数据。当主AC发生故障时,PE需要快速建立VSI的连接。

 

3、IXP2800介绍

  Intel IXP2800是由Intel公司研发的新一代可编程的网络处理器,它采用Intel的因特网交换架构(IXA),并在一个单一芯片上集成了能够处理复杂算法、深层包查验、流量管理以及以线速转发包的高性能并行处理功能,其存储转发架构由高性能的Intel XScale内核和16个独立的32位多线程微引擎组成。

                             

IXP2800内部包含以下主要功能模块:

(1)   通用的XScale核心处理器:700MHz的工作频率,具有传统CPU特点,负责诸如路由协议、系统管理和带可选字段的IP分组等需要较为复杂处理的任务。

(2)   微引擎(Micro Engine):微引擎具有ASIC高性能特性,每个微引擎可配置四个或八个线程。16个微引擎并行工作,支持线程问高速切换和流水线操作,具备OC--192/10G的线速转发性能。主要负责高速并行地接收、处理、转发网络数据包。

(3)   64位PCI控制器:连接主处理器和其他外围设备。

(4)   媒体和交换架构接口(Media and SwitchFabric Interface,MSF):接口上带有接收和发送缓冲器,可方便地接人网络成帧器和交换架构。

(5)   Scratched存储器:主要用于数据存取和处理器、线程之间的同步。

(6)   SRAM:SRAM采用4倍数据率的SRAM接口,加强了对缓冲区的管理并且加速了对共享数据结构的存取,用于快速存储查找表以及数据包头信息等常用的数据。

(7)   RDRAM:RDRAM采用双倍数据率的DRAM接口,主要用于大容量、高带宽的慢速数据的存储。

4、转发设计与实现

 

4.1硬件架构

单板的硬件结构

 

单板由2块IXP2800网络处理器组成。IXP2800连接FPGA与系统背板相连,通过外接的MAC和PHY与连接对外端口。2块IXP2800同时连接到共享的TCAM上,共享一些表项资源。

在每个网络处理器中需要对ME处理进行分组,每组完成不同的功能,通过合理的调整ME的数目,使得网络处理器的处理能力达到最大的处理性能。下图是我们进行分组处理的示意图。

RX接收组:通过MSF从外部以太网接收到数据包,然后将数据包交送MSF接口中的缓冲区RBUF,同时将RBUF数据内容写入到DRAM组成一个完整的报文;

二层处理组:从Scratch ring中接收到报文后,进行报文的解析、二层报文的相关处理、MPLS的报文处理;

三层处理组:从二层处理后的报文,进行三层IP转发、QOS、ACL的处理;

TX发送组:将DRAM中的报文,写入到MSF的TBUF,将报文发送。

 

4.2 软件架构

 

    由于在IXP2800是使用汇编程序实现为了满足软件的结构清晰、我们统一进行转发架构设计。该转发架构实现层次化、模块化。

底层操作接口:调用厂商提供的寄存器读写接口,进行芯片的操作处理模块;

以太接口解析:进行从以太接口接收的报文的解析,包括解析源MAC、目的MAC、报文类型及其报文的合法性检查;

二层转发:根据报文的目的MAC地址查找转发表项,获取报文转发出接口,及其报文的出接口封装;

以太报文封装:经过转发处理完成的报文,在以太封装模块进行链路层报文的封装,封装报文的源MAC地址、目的MAC地址和以太类型;

MPLS解析:对以太类型为0x8847和0x8848的报文进行处理,解析报文的标签,验证标签的合法性;

MPLS转发:根据MPLS模块获取的报文标签,根据报文的标签进行报文的转发处理,查找报文的出接口及其封装处理;

MPLS封装:根据报文的出接口,获取报文的标签信息,进行报文的标签封装处理;

IP报文解析:解析报文的IP头信息,检查IP头的合法性,完成IP报文

IP报文转发:根据IP头中的目的IP地址进行报文的转发处理;

IP报文封装:根据报文的转发信息,进行报文的IP封装或者IP封装的修改,再次进行IP头的处理;

QOS模块:对报文进行ACL处理,根据用户配置的相关规则进行报文的动作处理;

上送报文:对于本机报文,送上到控制CPU进行处理;

 

4.3 VPLS关键转发流程实现

 

   在CPU中虽然ME被分为不同的组,但是对于VPLS转发缺在二层组完成,VPLS流程分为上行处理和下行处理;

 

对于ME的每个线程进行相同的处理,每个线程即可以进行入隧道处理,也可以进行出隧道处理。

具体的处理流程:

入隧道处理:

1、     通过端口接收到的报文,进行以太报文解析,进行报文合法性检查;判断目的MAC地址是否本机MAC,不是本机的MAC地址,进行二层报文的bridge转发处理,主要完成MAC表项的查找;

2、     根据MAC标示是否进入VPLS隧道,查找出接口隧道标签,进行隧道标签的封装,最后封装以太报文的二层头,进行报文的出接口处理。

 

出隧道处理:

1、     通过端口接收到的报文,进行以太报文解析,进行报文合法性检查;判断目的MAC地址是否本机MAC,同时以太报文的类型是0x8847,进入MPLS处理;

2、      进行标签报文的解析,检查标签的合法性;

3、     查找标签表,判断是否弹出标签,如果不是弹出标签进行相应的转发处理;否则判断是否底层标签,如果不是是底层标签,弹出标签继续解析下一层标签处理;

4、     如果是底层标签,判断表项类型是否VPLS隧道,如果不是VPLS隧道,进行其他VPN隧道处理;如果是VPLS隧道,将报文的标签去除后,将报文发送到以太链路称继续处理;

5、     以太链路将报文作为一个普通的以太报文进行转发,查找到相应的出接口进行报文的出接口封装处理;

 

5、结束语

VPLS扩展了运营商的接入方案,对多处分布办公的企业的接入提供了一种高效的接入方式。本文提出了基于IXP2800网络处理器的VPLS的转发体系结构和软硬件架构,并且对VPLS的转发实现进行了详细的介绍。通过测试,这种实现具有非常高的转发效率。

 

 

参考文献:

【1】Intel(R)IXP2800 networkprooessorproduct brief[R].[S.1.】:Intel Corporation,2002.

【2】Intel(R)IXP2800 network processordatasheet[R].[S.1.】:Intel Corporation,2002.

【3】COMER D E.网络处理器与网络系统设计[M].张建忠,陶志华,等译.北京:机械工业出版社,2004.

【4】RFC4026,Virtual PrivateNetwork(VPN) Terminology.March 2005.

【5】LasserreM, Kompella V. Virtual private LAN services over MPLS draft-ietfl2vpn-vpls-ldp-03.txt.Nov.2004.

【6】Y.Serbest,Ray Qiu,VenuHemige and Rob Nath.Supporting IP Multicast over VPLSdraft-serbest-l2vpn-vpls-mcast-01.txt.Oct.2004.

 

原创粉丝点击