一种VPWS报文穿越三层IP网络的方法及装置与流程

文档序号:14424626阅读:444来源:国知局

本发明涉及计算机网络数据通信技术领域,具体涉及一种vpws报文穿越三层ip网络的装置及方法。



背景技术:

vpws(virtualprivatewireservice),指建设在mpls网络的基础设施之上,在两个路由器的一对端口之间提供高速的二层透传,可将本端pe设备的原始的以太网报文透明传送到远端pe设备,是一种二层的vpn协议。

gre(genericroutingencapsulation)即通用路由封装协议,是vpn第三层隧道协议,即在协议层之间采用了一种被称之为tunnel(隧道)的技术,是对某些网络层协议(如ip、ipx、mpls等)的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议(如ip)中传输。定义gre头中protocoltype为0x8847时,后面的封装报文为mpls类型报文。

通常情况下,vpws包承载在lsp(labelswitchingpath)上面,在运营商网络上是通过mpls标签交换进行报文传送。随着网络技术的发展,有的运营商要求vpws包能够穿越三层ip网络,从ip公网透传出去。对于这种需求,一般都是采用vpws包封装在gre中,从ip公网中传输。对于这种pw(pseudo-wire伪线)overgre的数据包处理,目前业界主流的交换芯片例如broadcom或marvel,都只能对用户包做一次pw标签封装或ip封装,不能对用户包做pw标签封装后再次做ip封装,同样的,交换芯片也不能完成对pwovergre这种数据包做剥掉ip头后再次剥掉pw标签的动作;对于这种pwovergre的数据包处理,如果用cpu软转发来处理,虽然代码灵活,但是转发能力太差,端口无法线速。

因此有必要提供一种vpws报文穿越三层ip网络的方法及设备,并且要能保证转发性能,端口实现线速转发。



技术实现要素:

本发明提出的一种vpws报文穿越三层ip网络的装置,通过cpu作为控制面核心给转发面写vpws和gre相关各种转发表项,交换芯片和fpga作为转发面互相配合处理vpws报文穿越ip网络,可以实现vpwsovergre的线速转发,保证了设备端口的转发性能。

为实现上述目的,本发明采用了以下技术方案:

一种vpws报文穿越三层ip网络的方法,包括:

由控制面和转发面组成,多核cpu作为控制面的核心,运行路由协议、ldp协议、gre协议、arp协议多种控制面协议,及生成转发面处理数据包时需要的各种表项包括路由表、mpls标签表、gre会话表、arp表;转发面由交换芯片和fpga实现,交换芯片和fpga互相配合处理vpws数据包,交换芯片负责接收数据包,做相应处理后把数据包发送给fpga,fpga对数据包处理后再次发送给交换芯片,交换芯片对数据包做最后处理,发送出去;

具体包括以下步骤:

当用户数据包进入vpws网络pe的uni入口时,

步骤1,交换芯片做第一处理,在包外面依次封装上pw标签、特殊vlan、特殊源mac和特殊目的mac,把包发送给fpga;

步骤2,fpga收到包后做第二处理,剥掉特殊vlan、特殊源mac和特殊目的mac,在pw标签外面依次封装上gre头、源mac和目的mac,把包发送给交换芯片;

步骤3,交换芯片做第三处理,根据gre头中目的ip地址,查路由表找到交换芯片出口nni,把包从nni出口发送出本设备。

当公网数据包到达vpws网络pe的nni入口时,

步骤4,交换芯片做第四处理,查路由表发现是本地路由且ip协议为gre后,把原始包发送给fpga;

步骤5,fpga收到包后做第五处理,判断ip头中为gre协议,且gre头中为mpls协议,fpga剥掉gre头,把包发送给交换芯片;

步骤6,交换芯片做第六处理,根据包中pw标签查找mpls标签转发表,获取uni出口,剥掉包的目的mac、源mac和pw标签,把用户载荷从uni口发送出去。

一种vpws报文穿越三层ip网络的装置,所述装置包括:

业务协议模块,用于运行路由协议、ldp协议、gre协议、arp协议;业务协议模块运行路由协议,实现远端pe设备与本地pe设备之间的路由打通;业务协议模块在两个pe设备上运行gre协议,在两个pe设备上面形成gre隧道;业务协议模块在两个pe设备的gre隧道接口上运行ldp协议,互相分配pw标签给对方;业务协议模块还需要在每个pe设备上运行arp协议,使pe设备与直连的p设备之间学习到对方mac地址;业务协议模块对这些协议数据处理后,将处理后的业务转发信息发消息给转发表管理模块;

转发表管理模块,用于接收所述业务转发信息,将这些业务转发信息整合转换为交换芯片处理模块和fpga处理模块需要的格式,写入到交换芯片处理模块和fpga处理模块;

交换芯片处理模块,用于对pe设备的uni和nni入口的数据包处理后,把数据包发送给fpga处理模块,以及从fpga处理模块收到数据包处理后,从pe设备的nni口和uni口发送出去。交换芯片处理模块处理数据包需要查找的各种业务转发表由转发表管理模块写入;

fpga处理模块,用于接收交换芯片处理模块发送过来的数据包并对数据包做进一步处理,然后再发送给交换芯片处理模块。fpga处理模块处理数据包需要查找的各种业务转发表由转发表管理模块写入;

如前所述,当用户数据包进入vpws网络pe的uni入口时,

步骤1中,交换芯片处理模块做第一处理,在包外面依次封装上pw标签、特殊vlan、特殊源mac和特殊目的mac,把包发送给fpga处理模块。转发表管理模块需要给交换芯片uni入口打上vpws属性标志,并把本vpws实例对应的vpn转发表和虚拟arp表写入交换芯片处理模块。交换芯片处理模块查到uni入口为vpws属性,会继续查vpn转发表,在用户数据包前面封装上pw标签;继续查arp表,在包的pw标签外面封装上特殊vlan、特殊源mac和特殊目的mac,把包发送给fpga处理模块。所述特殊vlan,其值等于gre会话号,用于步骤2中fpga处理模块对数据包做第二处理。因为本发明支持多vpws实例、多gre会话,因此步骤2中fpga处理模块需要知道本vpws实例的数据包承载在哪个gre会话中,本发明用数据包中vlan来携带gre会话号。特殊源mac为0x5a5a5aa5a5a5,特殊目的mac为0xa5a5a55a5a5a,用于告知步骤2中fpga处理模块从交换芯片处理模块收到这种特殊mac的包,需要做封装gre头的处理。

步骤2中,fpga处理模块收到包后做第二处理,剥掉包的特殊vlan、特殊源mac和特殊目的mac,在pw标签外面依次封装上gre头、源mac和目的mac,把包发送给交换芯片处理模块。fpga处理模块如果从交换芯片处理模块收到数据包的源mac为0x5a5a5aa5a5a5,目的mac为0xa5a5a55a5a5a,会剥掉数据包的目的mac、源mac和vlan,并用vlanid(即gre会话号)查找gre会话表。gre会话表由转发表管理模块写入,表内容包括目的ip、源ip、源mac、目的mac。其中目的ip、源ip为本gre会话的目的ip、源ip,源mac随便填个合法单播固定值,目的mac填本pe设备mac。fpga处理模块在数据包的pw标签外面依次封装上gre头、源mac和目的mac,把包发送给交换芯片处理模块。

步骤3中,交换芯片处理模块做第三处理,根据gre头中目的ip地址,查路由表找到交换芯片出口nni,把包从nni出口发送出本设备。转发表管理模块需要写路由表和arp表到交换芯片处理模块。交换芯片处理模块查路由表获取交换芯片出口nni,然后查arp表获取直连本pe设备的下一跳设备mac地址。交换芯片处理模块剥离数据包的目的mac和源mac,封装arp表中的源mac和目的mac,然后把数据包从交换芯片出口发送出去。

当公网数据包到达vpws网络pe的nni入口时,

步骤4中,交换芯片处理模块做第四处理,查路由表发现是本地路由且ip协议为gre后,把原始包发送给fpga处理模块;转发表管理模块需要写路由表到交换芯片处理模块,并在初始化时写一条acl规则给交换芯片处理模块:匹配路由表为本地路由且ip协议号等于47(gre)的数据包上送给fpga处理模块。

步骤5中,fpga处理模块收到包后做第五处理,判断ip头中为gre协议(ip协议号47),且gre头中协议类型为mpls协议(0x8847),fpga剥掉gre头,把包发送给交换芯片模块;

步骤6中,交换芯片处理模块做第六处理,根据包中pw标签查找mpls标签转发表,获取uni出口,剥掉包的目的mac、源mac和pw标签,把用户载荷从uni口发送出去。转发表管理模块需要写mpls标签转发表到交换芯片处理模块,指定交换芯片出口。

由上述技术方案可知,本发明把多核cpu作为控制面的核心,生成转发面需要的各种表项。转发面由交换芯片和fpga实现,交换芯片和fpga转发依据的表项都由多核cpu写入。当用户数据包进入vpws网络pe的uni入口时,交换芯片做第一处理,在包外面依次封装上pw标签、特殊vlan、特殊源mac和特殊目的mac,把包发送给fpga;fpga收到包后做第二处理,剥掉特殊vlan、特殊源mac和特殊目的mac,在pw标签外面依次封装上gre头、源mac和目的mac,把包发送给交换芯片;交换芯片做第三处理,根据gre头中目的ip地址,查路由表找到交换芯片出口nni,把包从nni出口发送出本设备。当公网数据包到达vpws网络pe的nni入口时,交换芯片做第四处理,查路由表发现是本地路由且ip协议为gre后,把原始包发送给fpga;fpga收到包后做第五处理,判断ip头中为gre协议,且gre头中为mpls协议,fpga剥掉gre头,把包发送给交换芯片;交换芯片做第六处理,根据包中pw标签查找mpls标签转发表,获取uni出口,剥掉包的目的mac、源mac和pw标签,把用户载荷从uni口发送出去。本发明通过cpu作为控制面核心给转发面写vpws和gre相关各种转发表项,交换芯片和fpga作为转发面互相配合处理vpws报文穿越ip网络,可以实现vpwsovergre的线速转发,保证了设备端口的转发性能。

附图说明

图1为本发明的vpws报文穿越三层ip网络的方法步骤流程图;

图2为本发明的硬件连接结构图;

图3为本发明的设备的结构框图;

图4为本发明的交换芯片处理模块第一处理流程图;

图5为本发明的fpga处理模块第二处理流程图;

图6为本发明的交换芯片处理模块第三处理流程图;

图7为本发明的交换芯片处理模块第四处理流程图;

图8为本发明的fpga处理模块第五处理流程图;

图9为本发明的交换芯片处理模块第六处理流程图。

具体实施方式

下面结合附图对本发明做进一步说明:

如图1所示,本实施例所述的vpws报文穿越三层ip网络的方法,包括:

当用户数据包进入vpws网络pe的uni入口时:

步骤s101、交换芯片做第一处理,在包外面依次封装上pw标签、特殊vlan、特殊源mac和特殊目的mac,把包发送给fpga;

步骤s102、fpga收到包后做第二处理,剥掉特殊vlan、特殊源mac和特殊目的mac,在pw标签外面依次封装上gre头、源mac和目的mac,把包发送给交换芯片;

步骤s103、交换芯片做第三处理,根据gre头中目的ip地址,查路由表找到交换芯片出口nni,把包从nni出口发送出本设备。

当公网数据包到达vpws网络pe的nni入口时:

步骤s104、交换芯片做第四处理,查路由表发现是本地路由且ip协议为gre后,把原始包发送给fpga;

步骤s105、fpga收到包后做第五处理,判断ip头中为gre协议,且gre头中为mpls协议,fpga剥掉gre头,把包发送给交换芯片;

步骤s106、交换芯片做第六处理,根据包中pw标签查找mpls标签转发表,获取uni出口,剥掉包的目的mac、源mac和pw标签,把用户载荷从uni口发送出去。

如图2所示,多核cpu作为控制面的核心,承载着整个控制面软件系统的运行,并生成转发面需要的各种表项,转发面由交换芯片和fpga实现,交换芯片和fpga转发依据的表项都由多核cpu写入。对于vpws报文穿越三层ip网络组网环境中的pe设备,无论是私网用户报文进入ip公网,还是ip公网报文转发到私网,报文都要先进入交换芯片,交换芯片初步处理后发送给fpga,fpga处理后再发送给交换芯片,最后交换芯片处理后把报文发送出去。

依据本发明实施例的另一个方面,提供了一种vpws报文穿越三层ip网络的设备,如图3所示,其中,图中细箭头表示转发表信息,粗箭头表示转发流量,所述设备包括:

业务协议模块,用于运行路由协议、ldp协议、gre协议、arp协议等,要实现远端pe设备与本地pe设备之间的路由打通,在两个pe设备的gre隧道接口上运行ldp协议,互相分配pw标签给对方。每个pe设备还需要与直连下一跳的p设备之间学习到对方mac。业务协议模块对这些协议数据处理后,将处理后的业务转发信息发消息给转发表管理模块;

转发表管理模块,用于接收所述业务转发信息,将这些业务转发信息整合转换为交换芯片处理模块和fpga处理模块需要的格式,写入到交换芯片处理模块和fpga处理模块;

交换芯片处理模块,用于对pe设备的uni和nni入口的数据包处理后,把数据包发送给fpga处理模块,以及从fpga处理模块收到数据包处理后,从pe设备的nni口和uni口发送出去。交换芯片处理模块处理数据包需要查找的各种业务转发表由转发表管理模块写入;

fpga处理模块,用于接收交换芯片处理模块发送过来的数据包并对数据包做进一步处理,然后再发送给交换芯片处理模块。fpga处理模块处理数据包需要查找的各种业务转发表由转发表管理模块写入;

为进一步了解本发明实施例提供的数据包在设备中转发的步骤流程,下面将详细说明。

在步骤s101中,交换芯片处理模块做第一处理,在包外面依次封装上pw标签、特殊vlan、特殊源mac和特殊目的mac,把包发送给fpga处理模块。转发表管理模块需要给交换芯片uni入口打上vpws属性标志,并把本vpws实例对应的vpn转发表和虚拟arp表写入交换芯片处理模块。交换芯片处理模块查到uni入口为vpws属性,会继续查vpn转发表,在用户数据包前面封装上pw标签;继续查arp表,在包的pw标签外面封装上特殊vlan、特殊源mac和特殊目的mac,把包发送给fpga处理模块。所述特殊vlan,其值等于gre会话号,用于步骤s102中fpga处理模块对数据包做第二处理。因为本发明支持多vpws实例、多gre会话,因此步骤s102中fpga处理模块需要知道本vpws实例的数据包承载在哪个gre会话中,本发明用数据包中vlan来携带gre会话号。特殊源mac为0x5a5a5aa5a5a5,特殊目的mac为0xa5a5a55a5a5a,用于告知步骤s102中fpga处理模块从交换芯片处理模块收到这种特殊mac的包,需要做封装gre头的处理。交换芯片处理模块做第一处理流程如图4所示:

步骤s401、数据包进入pe设备的uni接口;

步骤s402、查找端口属性表,判断端口是否配置vpws属性;

步骤s403、如果不是,流程结束。如果是,查找vpn转发表,获取pw标签和目的出口;

步骤s404、在数据包前面封装pw标签;

步骤s405、查找虚拟arp表,获取特殊vlan、特殊源mac和特殊目的mac;

步骤s406、在数据包的pw标签外面依次封装特殊vlan、特殊源mac和特殊目的mac,把包发送给fpga处理模块。

在步骤s102中,fpga处理模块收到包后做第二处理,剥掉包的特殊vlan、特殊源mac和特殊目的mac,在pw标签外面依次封装上gre头、源mac和目的mac,把包发送给交换芯片处理模块。fpga处理模块如果从交换芯片处理模块收到数据包的源mac为0x5a5a5aa5a5a5,目的mac为0xa5a5a55a5a5a,会剥掉数据包的目的mac、源mac和vlan,并用vlanid(即gre会话号)查找gre会话表。gre会话表由转发表管理模块写入,表内容包括目的ip、源ip、源mac、目的mac。其中目的ip、源ip为本gre会话的目的ip、源ip,源mac随便填个合法单播固定值,目的mac填本pe设备mac。fpga处理模块在数据包的pw标签外面依次封装上gre头、源mac和目的mac,把包发送给交换芯片处理模块。fpga处理模块做第二处理流程如图5所示:

步骤s501、从交换芯片处理模块收到数据包;

步骤s502、判断数据包的目的mac是否等于0xa5a5a55a5a5a;

步骤s503、如果不是,流程结束。如果是,判断数据包的源mac是否等于0x5a5a5aa5a5a5;

步骤s504、如果不是,流程结束。如果是,剥掉数据包的vlan、源mac和目的mac;

步骤s505、用vlanid查找gre会话表,获取目的ip、源ip、源mac、目的mac;

步骤s506、在数据包的pw标签外面依次封装gre头、源mac和目的mac,把包发送给交换芯片处理模块。

在步骤s103中,交换芯片处理模块做第三处理,根据gre头中目的ip地址,查路由表找到交换芯片出口nni,把包从nni出口发送出本设备。转发表管理模块需要写路由表和arp表到交换芯片处理模块。交换芯片处理模块查路由表获取交换芯片出口nni,然后查arp表获取直连本pe设备的下一跳设备mac地址。交换芯片处理模块剥离数据包的目的mac和源mac,封装arp表中的源mac和目的mac,然后把数据包从交换芯片出口发送出去。交换芯片处理模块做第三处理流程如图6所示:

步骤s601、从fpga处理模块收到数据包;

步骤s602、根据gre头中目的ip地址,查路由表找到交换芯片出口;

步骤s603、查arp表获取源mac和目的mac;

步骤s604、剥离原始数据包的目的mac和源mac,封装arp表中的源mac和目的mac,然后把数据包从交换芯片出口发送出去。

在步骤s104中,交换芯片处理模块做第四处理,查路由表发现是本地路由且ip协议为gre后,把原始包发送给fpga处理模块;转发表管理模块需要写路由表到交换芯片处理模块,并在初始化时写一条acl规则给交换芯片处理模块:匹配路由表为本地路由且ip协议号等于47(gre)的数据包上送给fpga处理。交换芯片处理模块做第四处理流程如图7所示:

步骤s701、数据包进入pe设备的nni接口;

步骤s702、判断数据包是否为ip包且ip协议号是gre;

步骤s703、如果不是,流程结束。如果是,用目的ip查找路由表;

步骤s704、判断路由表是否为本地路由;

步骤s705、如果不是,流程结束。如果是,把原始包发送给fpga处理模块。

在步骤s105中,fpga处理模块收到包后做第五处理,判断ip头中为gre协议(ip协议号47),且gre头中协议类型为mpls协议(0x8847),fpga处理模块剥掉gre头,把包发送给交换芯片处理模块;fpga处理模块做第五处理流程如图8所示:

步骤s801、从交换芯片处理模块收到数据包;

步骤s802、判断数据包ip协议号是否为gre且gre协议类型为mpls协议;

步骤s803、如果不是,流程结束。如果是,剥掉数据包的gre头,把包发送给交换芯片处理模块。

在步骤s106中,交换芯片处理模块做第六处理,根据包中pw标签查找mpls标签转发表,获取uni出口,剥掉包的目的mac、源mac和pw标签,把用户载荷从uni口发送出去。转发表管理模块需要写mpls标签转发表到交换芯片处理模块,指定交换芯片出口。交换芯片处理模块做第六处理流程如图9所示:

步骤s901、从fpga处理模块收到数据包;

步骤s902、根据包中pw标签查找mpls标签转发表,获取uni出口;

步骤s903、剥掉包的目的mac、源mac和pw标签,把用户载荷从uni口发送出去。

以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1