具体实施方式
代理是指分布式架构下(框式设备或者IRF),当各个设备转发能力不同时,通过将转发能力弱的设备上的业务报文重定向到转发能力强的设备上做转发,从而实现整体多业务支持,为用户提供良好的使用体验。其中,业务报文重定向可通过ACL(Access Control List,访问控制列表)实现。ACL是一或多条规则的集合,用于识别报文流。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。网络设备依照这些规则识别出特定的报文,以便根据预先设定的策略对其进行处理。
本发明实施例提出了一种VPLS报文处理方案,在分布式架构下,可以让不支持VPLS的设备能转发VPLS业务数据。
在分布式架构,如框式设备中,对于不支持VPLS业务或者VPLS业务处理能力较差的设备,需要为其指定一个支持VPLS业务的设备作为代理设备,以便代理其完成VPLS业务报文的处理。
以下为描述方便,本发明实施例进行如下定义:
被代理Client(被代理客户端):不具备处理VPLS报文能力的设备(如,不具有VPLS报文处理能力的线卡);
代理Server:具备处理VPLS报文能力,且可以代替被代理Client处理VPLS报文(如,具有VPLS报文处理能力的线卡且该线卡板被指定为代替不具有VPLS报文处理的线卡处理VPLS报文);
普通设备:具备处理VPLS报文能力,不为被代理Client处理VPLS报文(如,具有VPLS报文处理能力的线卡且该线卡板未被指定为代替不具有VPLS报文处理的线卡处理VPLS报文)。
对于目的指向被代理Client的VPLS报文,以及报文入口线卡为被代理Client的VPLS报文,需要将该报文重定向到为该被代理Client指定的代理Server上,由该代理Server代为进行VPLS业务处理,因此,需要进行以下配置:
(1)在被代理Client上配置ACL,用于将该被代理Client接收到的VPLS报文重定向到为该被代理Client设置的代理Server上;
(2)在其它支持VPLS但不作为代理Server的设备上配置不同规则的另一ACL,用于将目的指向被代理Client的报文重定向到代理Server。
如图2所示,当代理Server接收到VPLS单播报文时(步骤201),根据对应的VPLS转发表项查找出端口(步骤202),如果该出端口指向对应的被代理Client,则该代理Server对该VPLS报文进行VPLS业务处理(步骤203),并将处理后的VPLS报文通过该出端口转发给该被代理Client(步骤204);如果该出端口指向普通设备,则该代理Server将该VPLS报文通过该出端口转发给该普通设备(步骤205);如果该出端口在该代理Server上,则该代理Server对该VPLS报文进行VPLS业务处理(步骤206),并将处理后的VPLS报文通过该出端口转发出去(步骤207)。
如图3所示,当代理Server接收到VPLS多播报文时(步骤301),根据对应的组播表项查找出端口(302),如果其中有指向对应的被代理Client的出端口,则该代理Server对该VPLS进行复制和VPLS业务处理(步骤303),并将经过复制和VPLS处理得到的单播报文通过该指向对应的被代理Client的出端口转发给该被代理Client(304);如果其中有指向普通设备的出端口,则代理Server将多播报文通过指向普通设备的出端口转发给该普通设备,由该普通设备进行VPLS报文复制和VPLS业务处理以及查VPLS转发表进行转发(步骤305);如果其中有本设备的出端口,则代理Server对该VPLS进行复制和VPLS业务处理(步骤306),并将经过复制和VPLS处理得到的单播报文通过本设备的出端口转发出去(307)。
上述图2或图3所示的流程中,代理Server根据对应的转发表项查找到出端口指向对应的被代理Client时,进一步根据相应的转发表项为该VPLS报文查找该报文在该被代理Client上的出端口,然后将处理后的VPLS报文以及在被代理Client上的出端口信息通过指向该被代理Client的出端口发送给被代理Client,以使该被代理Client从该端口转发该VPLS报文。由于代理Server和被代理Client通过内部交换网络连接,因此可根据内部网络协议规定传输所述被代理Client上的出端口信息的方式。
上述图2或图3所示的流程中,VPLS业务处理可包括:解封装VPLS报文,进行TAG处理(包括添加、修改或删除服务TAG,具体进行何种处理视业务需求而定),重新封装为VPLS报文等。具体包含哪种或哪些处理操作,可由用户根据需要进行配置。
下面以一具体场景为例,对本发明实施例进行详细说明。
如图4所示,在某框式设备中有3个线卡,其中,线卡C不支持VPLS,即为被代理Client;线卡B支持VPLS,被指定为线卡C的代理Server;线卡A支持VPLS,但不作为代理Server使用。三个线卡为交换网全连通的,不用担心环路交换网会做路径限制。
线卡A上配置有ACL,该ACL用于将目的指向线卡C的VPLS报文重定向到线卡B的代理端口上。线卡C上配置有ACL,该ACL用于将从外网收到的VPLS报文重定向到线卡B的代理端口上。
每个线卡上都保存有全局转发表项,其中,线卡B上出端口指向线卡C的VPLS转发表项可被特别标识,用于表示针对目的指向线卡C的VPLS报文,在线卡B上代理线卡C进行报文处理。
对于目的指向线卡C的VPLS报文,存在以下几种情况:从线卡A发往线卡C的单播报文,从线卡B发往线卡C的单播报文,从线卡A发往线卡B和线卡C的多播报文,从线卡B发往线卡A和线卡C的多播报文;
对于从线卡C发往线卡A或线卡B的VPLS报文,存在以下几种情况:从线卡C发往线卡B的单播报文,从线卡C发往线卡A的单播报文,从线卡C发往线卡A和线卡B的多播报文。
下面针对上述各种情况,详细描述VPLS报文处理过程。
(1)从线卡A发往线卡C的已知单播报文,其从线卡A的业务口a进入并从线卡C的业务口c流出的过程为:
线卡A从业务口a接收到报文后查对应的VPLS表项,由于查找到的出端口指向线卡C,则通过其上配置的ACL将该VPLS报文重定向到线卡B的代理端口;线卡B接收到该报文后查对应的VPLS表项,由于查找到的出端口指向线卡C,因此线卡B对该VPLS单播报文进行VPLS业务处理,然后将处理后的VPLS单播报文通过查找到的出端口转发给线卡C。线卡C接收到该VPLS单播报文后,直接从相应的出端口转发。进一步的,在线卡B将VPLS单播报文转发给线卡C时,会将线卡B所查询到的该报文在线卡C上的出端口信息一起发送给线卡C,以使线卡C直接从该出端口转发报文。其出端口信息的发送方式属于设备内部实现。
线卡B代理线卡C所进行的报文处理可包括:解封装报文,根据配置的业务策略进行TAG处理,包括在报文中添加TAG、修改报文中的TAG或删除报文中的TAG。
特别的,对于无TAG接入VPN的情况,此时转发要求剥除TAG,而线卡芯片内部转发不允许不带TAG,因此此处需要将VPLS转发指向线卡C的表项(即上述所称的代理VPLS转发表项)加上保留VLAN(Virtual Local AreaNetwork,虚拟局域网),从而在转发到线卡C的报文中包含该保留VLAN对应的TAG,然后在线卡C的出端口再将该保留VLAN所对应的TAG剥除,从而实现正常的TAG变换处理。
由于需要配置保留VLAN,当使用VPLS代理功能时需要配置报文VLAN,此保留VLAN只能给VPLS占用,线卡C的接入端口均需在此保留VLAN内,且属于untag端口,从而保证从这些端口出来的报文可以将保留VLAN的TAG剥除。
进一步的,线卡B上还可对目的指向线卡C的报文进行源MAC地址学习,这样可以避免MAC地址表项老化以及实现对称转发。
通过上述流程,该单播报文实际的转发路径为:
a-->A-->B--->C--->c(在线卡B上完成VPLS业务处理)。
(2)从线卡A发往线卡B的已知单播报文,其从线卡A的业务口a进入并从线卡B的业务口b流出的过程,采用现有方式实现,具体的,线卡A查对应的VPLS转发表项,其对应的出端口为指向线卡B的出端口,线卡A从该出端口转发该VPLS报文到线卡B,由线卡B进行VPLS业务处理。
(3)从线卡A发往线卡B和线卡C的多播报文,其从线卡A的业务口a进入并分别从线卡C的业务口c和线卡B的业务口b流出的过程为:
线卡A收到VPLS多播报文后查相应的组播表项,其出端口包括指向线卡C的出端口和指向线卡B的出端口。对于发往线卡B的多播报文,其转发流程按照现有方式处理,即,线卡A将VPLS多播报文通过相应出端口转发给线卡B,由线卡B进行报文复制和VPLS业务处理,然后根据查表结果从业务口b发出。对于发往线卡C的多播报文,由于线卡C没有VPLS处理能力,因此线卡A对该多播报文进行复制,并分别对复制得到的单播报文进行VPLS业务处理,然后通过指向线卡C的出端口转发给线卡C。进一步的,在线卡A将VPLS单播报文转发给线卡C时,会将线卡A所查询到的该报文在线卡C上的出端口信息一起发送给线卡C,以使线卡C直接从该出端口转发报文。
通过以上流程,该多播报文实际的转发路径为:
a-->A-->B-->b(在线卡B上完成复制和VPLS业务处理,为非代理流程);
a-->A-->C-->c(在线卡A上完成复制和VPLS业务处理)。
(4)从线卡B发往线卡C的已知单播报文,其从线卡B的业务口b进入并从线卡C的业务口c流出的过程与前述(1)中所述的从线卡A发往线卡C的已知单播报文的处理过程类似,即,线卡B接收到VPLS单播报文后通过查表确定出端口指向线卡C,则线卡B对该报文进行VPLS业务处理,然后通过该出端口转发给线卡C,以使线卡C通过相应的出端口转发。
(5)从线卡C发往线卡A的已知单播报文,其从线卡C的业务口c进入并从线卡A的业务口a流出的过程为:
线卡C通过其上设置的ACL,将报文重定向到线卡B的代理端口;线卡B接收到该报文后,通过查询相应的VPLS转发表项,得到指向线卡A的出端口,线卡B通过该出端口将该报文转发到线卡A,由线卡A进行VPLS业务处理。
通过上述流程,该单播报文实际的转发路径为:
c-->C-->B-->A-->a(在线卡A上完成VPLS业务处理)。
(6)从线卡C发往线卡B的已知单播报文,其从线卡C的业务口c进入并从线卡B的业务口b流出的过程为:
线卡C通过其上设置的ACL,将报文重定向到线卡B的代理端口;线卡B接收到该报文后,通过查询相应的VPLS转发表项,得知出端口在本线卡上,线卡B对该报文进行VPLS业务处理,然后根据查VPLS转发表所得到出端口,通过该出端口将处理后的报文转发出去。
(7)从线卡C发往线卡A和线卡B的多播报文,其从线卡C的业务口c进入并分别从线卡A的业务口a和线卡B的业务口b流出的过程为:
线卡C通过其上设置的ACL,将报文重定向到线卡B的代理端口;线卡B通过查询相应的组播表项,得知出端口为指向线卡A和线卡B的出端口。由于线卡A具有VPLS处理功能,因此线卡B将该多播报文通过查找到的出端口转发给线卡A,由线卡A进行报文复制、VPLS业务处理以及查VPLS转发表进行转发。线卡B还对该多播报文进行复制,并对复制得到的单播报文分别进行VPLS业务处理,然后通过查询到的本线卡上的出端口转发该单播报文。
通过上述流程,该多播报文实际的转发路径为:
c-->C-->B-->b(在线卡B上完成报文复制和VPLS业务处理);
c-->C-->B-->A-->a(在线卡A上完成报文复制和VPLS业务处理)
通过以上各种场景下的VPLS报文处理流程,可以将VPLS流量有效的转发到正确的线卡,并能防止环路,还可以保证代理Server的MAC地址表的完整性。
若VPLS报文的转发处理流程涉及封装或解封装操作,则当解封装流量需要被代理时,其流量转发处理过程可根据上述相应处理流程实现。进一步的,可在线卡C上配置ACL,用于将未知VPLS报文重定向到线卡B的代理端口,从而可以对未知VPLS报文进行代理转发处理。
被代理Client接入VPLS的业务口(如图中的业务口c)可以是物理端口,也可以是聚合端口。针对是是聚合端口的情况,本发明的另一实施例中,需要及时将被代理Client聚合端口的变化情况(如增加或减少聚合成员)通知给与该被代理Client有通信连接的其它设备(如线卡A和线卡C等与其有通信连接的线卡),以便这些线卡响应该聚合端口变化事件,将本线卡指向被代理Client端口的硬件表项(即上述的代理VPLS转发表项)进行刷新,从而保证转发流程的实现。
进一步的,对于线卡C接入VPLS的业务口是聚合口的情况,线卡A或线卡B等与线卡C存在通信连接的线卡上,还要配置从聚合口c中选举物理端口的策略或算法,这样可以一方面保证多播报文转发流程中仅从一个线卡的一个出端口转发流量,进而保证多播业务的正确实现,另一方面可实现负载分担,即不同线卡的流量从线卡C的业务口c(该业务口为聚合口)中的不同成员端口转出。例如,线卡C的业务口c中包括成员端口c1和c2,在线卡A和线卡B上配置的端口选举策略和算法应保证:线卡A转出的报文从线卡C的端口c1转出,线卡B转出的报文从线卡C的端口c2转出。
在本发明的另一实施例中,当公网隧道出端口在线卡C上时,进入线卡C的VPLS报文需要由线卡B进行代理,其代理过程可如上所述。当隧道出端口变化时,VPLS本身也需要响应,即线卡B和线卡C需要响应隧道变化事件,在线卡B上将线卡C的出端口信息进行刷新。
需要说明的是,本发明实施例的上述流程以框式设备为例描述了各种情况下的VPLS报文处理过程,对于FABRIC架构,也可以根据上述流程的原理实现VPLS业务代理。
综上所述,本发明实施例实现了VPLS代理方案,可以在分布式系统多线卡情况下完整支持VPLS功能,从而降低系统成本,提供给用户比较好的操作体验。
基于相同的技术构思,本发明实施例还提供了应用于上述系统架构和流程的分布式系统设备。
参见图5,为本发明实施例提供的一种分布式系统设备的结构示意图。应用于分布式系统的设备通过内部交换网连接,该设备包括支持VPLS的设备和不支持VPLS的设备,支持VPLS的设备分别被指定为代理设备以及非代理设备,不支持VPLS的设备被指定为被代理设备;被代理设备上配置有第一报文重定向规则,用于将从外网接收到的报文重定向到为该设备配置的代理设备,非代理设备上配置有第二报文重定向规则,用于将目的指向被代理设备的报文重定向到为该设备配置的代理设备;该代理设备包括:
接收模块501,用于接收VPLS单播;
查表模块502,用于在接收模块501接收到VPLS单播时,根据对应的转发表项查找出端口;
第一处理模块503,用于当查表模块502根据VPLS单播报文查找到的出端口指向本设备所代理的被代理设备时,对所述VPLS报文进行VPLS业务处理;
发送模块505,用于将第一处理模块503处理后的VPLS单播报文通过对应的出端口转发。
进一步的,该设备还可包括第二处理模块504。相应的,接收模块501还用于接收VPLS多播报文;查表模块502还用于在接收模块501接收到VPLS多播时,根据对应的转发表项查找出端口;第二处理模块504用于当查表模块502根据VPLS多播报文查找到的出端口中有出端口指向本设备所代理的被代理设备时,对所述VPLS多播报文进行复制,得到单播报文,并对该单播报文进行VPLS业务处理;发送模块505还用于将第二吹模块504处理后的VPLS单播报文通过对应的出端口转发。
具体的,第二处理模块504还用于,如果查表模块502根据接收模块501接收到的VPLS多播报文查找到的出端口中有出端口指向非被代理设备,则通过发送模块505将所述VPLS多播报文通过该出端口转发给该非被代理设备;或者,如果查表模块502根据接收模块501接收到的VPLS多播报文查找到的出端口中有出端口在该代理设备上,则对所述VPLS多播报文进行复制和VPLS业务处理,并将经过复制和处理得到的单播报文通过发送模块505从该出端口转发出去。
进一步的,第一处理模块503或/和第二处理模块504还用于,查找VPLS报文在该被代理设备上的出端口;相应的,发送模块505还用于,在向该被代理设备转发VPLS报文时,将VPLS报文在该被代理设备上的出端口信息发送给该被代理设备,以使该被代理设备从对应的出端口转发VPLS报文。
具体的,第一处理模块503或/和第二处理模块504具体用于,剥除VPLS报文中的TAG,加上保留虚拟局域网VLAN对应的TAG。
进一步的,在被代理设备连接外网的端口为聚合端口的情况下,本设备的转发表项中指向该被代理设备的出端口,是本设备基于预设的选举算法从所述聚合端口中选择的成员端口。
进一步的,该分布式系统设备还可包括:更新模块506,用于在被代理设备连接外网的端口为公网隧道端口的情况下,当所述公网隧道端口变化时,根据该公网隧道端口的变化情况更新本设备上的转发表项中指向该被代理设备的出端口。
上述分布式系统设备可以是框式设备中的线卡,或者是IRF系统中的UNIT设备。
参见图6,为本发明实施例提供的另一种分布式系统设备的结构示意图。应用于分布式系统的设备通过内部交换网连接,该设备包括支持VPLS的设备和不支持VPLS的设备,支持VPLS的设备分别被指定为代理设备以及非代理设备,不支持VPLS的设备被指定为被代理设备;被代理设备上配置有第一报文重定向规则,用于将从外网接收到的报文重定向到为该设备配置的代理设备,非代理设备上配置有第二报文重定向规则,用于将目的指向被代理设备的报文重定向到为该设备配置的代理设备;所该被代理设备包括:
接收模块601,用于接收VPLS单播或多播报文;
重定向模块602,用于在接收模块601将从外网接收到的VPLS单播或多播报文时,将该VPLS单播报文或多播报文重定向到对应的代理设备;
发送模块603,用于根据接收模块601从内部交换网接收到的VPLS单播报文和出端口信息,从对应的出端口转发该VPLS单播报文。
具体的,发送模块603具体用于,将接收模块601从内部交换网接收到的VPLS单播报文中携带的保留VLAN对应的TAG剥除后,发送该VPLS单播报文。
上述分布式系统设备为框式设备中的线卡,或者为IRF系统中的UNIT设备。
参见图7,为本发明实施例提供的另一种分布式系统设备的结构示意图。应用于分布式系统的设备通过内部交换网连接,该设备包括支持VPLS的设备和不支持VPLS的设备,支持VPLS的设备分别被指定为代理设备以及非代理设备,不支持VPLS的设备被指定为被代理设备;被代理设备上配置有报文重定向规则,用于将从外网接收到的报文重定向到为该设备配置的代理设备,非代理设备上配置有报文重定向规则,用于将目的指向被代理设备的报文重定向到为该设备配置的代理设备;该非代理设备包括:
接收模块701,用于接收VPLS单播或多播报文;
查表模块702,用于在接收模块701接收到VPLS单播或多播报文时,根据对应的转发表项查找出端口;
重定向模块703,用于当查表模块702根据VPLS单播报文查找到的出端口指向本设备所代理的被代理设备时,将该VPLS单播报文重定向到对应的代理设备;
处理模块704,用于当查表模块702根据VPLS多播报文查找到的出端口中有出端口指向被代理设备时,则对所述VPLS多播报文进行复制和VPLS业务处理;
发送模块705,用于将处理模块704处理后的VPLS单播报文通过对应出端口转发。
进一步的,处理模块704还用于,如果查表模块702查找到的出端口中有出端口指向支持VPLS的设备(包括代理设备或其它非代理设备),则通过发送模块705从该出端口转发该VPLS多播报文给该支持VPLS的设备;或者,如果查表模块702查找到的出端口中有出端口在该非代理设备上,则对所述VPLS多播报文进行复制和VPLS业务处理,并将经过复制和VPLS处理得到的单播报文通过发送模块705从该出端口转发出去。
进一步的,处理模块704还用于,查找所述VPLS报文在被代理设备上的出端口;相应的,发送模块705还用于,在向该被代理设备转发VPLS报文时,将VPLS报文在该被代理设备上的出端口信息发送给该被代理设备,以使该被代理设备从对应的出端口转发VPLS报文。
具体的,处理模块704具体用于,剥除VPLS报文中的TAG,加上保留虚拟局域网VLAN对应的TAG。
进一步的,在被代理设备连接外网的端口为聚合端口的情况下,本设备的转发表项中指向该被代理设备的出端口,是本设备基于预设的选举算法从所述聚合端口中选择的成员端口。
上述分布式系统设备还可包括:更新模块706,用于在被代理设备连接外网的端口为公网隧道端口的情况下,当所述公网隧道端口变化时,根据该公网隧道端口的变化情况更新本设备上的转发表项中指向该被代理设备的出端口。
上述分布式系统设备为框式设备中的线卡,或者为IRF系统中的UNIT设备。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。