背景技术
在通信设备设计领域,由于受限于现有IC技术,采用所有操作都集中在一个板卡上执行的集中式架构系统,很难实现10Gbps以上高速的数据信息转发或交换;所以采用多个板卡并行处理的分布式架构系统愈来愈普及。典型的分布式架构系统中,一般由主控板、交换板和各种业务板卡组成;主控板可以是单主控板或者是主从备份的双主控板,交换板也可以是一个交换板或者是主从备份的双交换板,且交换板和主控板可融合为一板。主控板用于完成系统控制和上层协议处理,各业务板卡用于完成相应的用户业务数据的处理,交换板用于完成板卡间的数据交换,如将当前完成相关操作的业务板板卡数据发送到需要执行后续操作的其它业务板卡。
一般来说,一个数据包从进入通信设备到从该通信设备输出,通信设备对该数据包所执行操作的典型顺序依次为:包头解析、地址学习、流标识、入口ACL、入口NAT、交换表查询、路由表查询、QoS控制、出接口表查询、出口ACL、出口NAT、包头修改等动作。在分布式架构系统中,通常把交换表查询和路由表查询之前的操作放在一张板卡处理(称之为输入方向的处理),后续的QoS控制、出口表查询、包头修改等操作再交由另外的板卡处理(称之为输出方向的处理)。以上板卡之间在并行处理数据包时,一般通过高速的交换板进行数据交换,这种系统内的板卡间通信通常也称为数据交换。交换板一般由一至多片交换芯片完成,如图1所示为各板卡与交换板的交换芯片互联的结构示意图。实现板卡间数据交换的常用方式是采用专用的交换芯片;但由于专用交换芯片的部分专用特性,和交换容量相同的普通以太网交换芯片比较而言,专用交换芯片的销售数量比较小,从而其销售价格要比一般的普通以太网交换芯片要贵很多。
在中国专利申请CN1825804A(申请日2006年8月30日,申请号为200610067084.6,申请名称为实现分布式系统板间通信的系统和方法)中,公开了一种采用普通以太网交换芯片进行板间数据交换的方案,该方案中,源板卡为数据包加一个18字节的标准以太网帧头部封装得到以太网帧,用于交换板执行交换操作,即交换板上的以太网交换芯片通过识别以太网帧头部的目的MAC地址字段,把该数据包发送到执行后续操作的目的板卡上。由于在分布式系统中,源板卡除了把接收的数据包发送给目的板卡外,还需要把本板卡的处理结果通知给目的板卡,从而目的板卡可以接替本板卡执行后续的操作。所以,在该方案中,源板卡除了需要增加一个标准以太网帧头部外,还需要增加额外字段用于携带源板卡需要发送给目的板卡除业务数据外的额外信息,如在源业务板上已完成操作的结果信息(如流标识、通道号、各种查表结果等)。
因此,在现有采用普通以太网交换芯片进行板间数据交换的方案中,板卡间进行数据交换时,在标准以太网帧头部字段外必须增加额外字段来携带当前板卡的处理信息,从而导致交换以太数据帧头部过大,交换效率不高,实用性差。
发明内容
本发明解决现有技术中采用普通以太网交换芯片进行数据交换效率不高的问题,提供一种在分布式系统中,采用普通以太网交换芯片实现高效数据交换的方法。
本发明提供一种分布式系统中板卡间数据交换的方法,包括如下步骤:
a、系统初始化,配置系统中板卡间通信的所有组合,并为每个组合分配一个虚拟局域网号,生成虚拟局域网对应关系表;
b、将以上虚拟局域网对应关系表写入到交换板的以太网交换芯片中,且各板卡中分别保存本板卡相关的虚拟局域网对应关系表,最后配置各虚拟局域网;
c、板卡间进行数据交换时,发送数据的源板卡为数据包添加以太网帧头部封装得到以太网帧,发送封装后的以太网帧到交换板;
d、交换板的以太网交换芯片接收到所述以太网帧后,由于根据目的MAC地址查找MAC地址表失败,将所述以太网帧在虚拟局域网内广播。
具体的,板卡间通信的所有组合是指板卡与以太网交换芯片相连接的端口的所有组合。
具体的,所述步骤c添加的以太网帧头部中,源MAC地址和或目MAC地址字段和或类型字段中为自定义信息。
具体的,所述步骤c添加的以太网帧头部中,虚拟局域网标签域中虚拟局域网号从和查找目的匹配的虚拟局域网对应关系表项中得到。
具体的,所述添加的以太网帧头部中,虚拟局域网标签域中的优先级字段根据源板卡对待发送数据包处理QoS策略中的优先级映射得到。
进一步的,当系统可支持的最大板卡数为n时,交换机芯片需要分配和配置的虚拟局域网数为2n-C0 n-C1 N。
进一步的,所述步骤c中自定义的信息为当前板卡对数据包的操作结果信息。
进一步的,所述步骤c中自定义的信息为需要发送给目的板卡的交换目的信息。
优选的,所述以太网交换芯片关闭自动学习功能。
优选的,所述板卡为业务板卡。
本发明的有益效果是,利用普通以太网交换芯片进行板卡间数据交换用,无需附加专门的交换信息字段,利用标准以太头中的现有字段就可以携带交换信息,极大地提高交换效率,降低成本。
具体实施方式
下面结合附图对本发明作进一步的详细说明。
如图2所示,本发明实现分布式系统中板卡间数据交换的方法,包括:
步骤201,系统进行初始化,根据系统中所支持的板卡数量以及板卡间进行通信的组合,生成虚拟局域网(VLAN)对应关系表写入到交换板的以太网交换芯片中。同时,每张参与板卡间通信的板卡也将保存与本板卡相关的VLAN对应关系表。系统还要配置各虚拟局域网。
如图2所示为本发明的系统初始化流程图。交换板内的以太网交换芯片上的每个端口分别与系统中板卡相连。板卡之间的数据交换实际上就表现为交换板内以太网交换芯片上的相应端口之间的交换。根据板卡间进行通信的可能性,即进行单播、组播或者多播通信的可能性,把各板卡之对应以太网交换交换芯片的各对应端口进行组合,当系统中有n个板卡时,则板卡间通信的组合数为2n-C0 n-C1 N;为以上每个组合分配一个虚拟局域网号即VLAN号,最后将以上生成的VLAN对应关系表写入交换板中的以太网交换芯片中。同时,每张参与板间通信的板卡也将保存与本板卡相关的这种VLAN对应关系表。
步骤202,当某板卡欲向其它板卡发送数据包,查找对应的VLAN关系表。本步骤中,源板卡首先确定数据交换的通信方式是单播还是组播。如果采用单播的方式进行通信,则通过目的板卡号在保存的VLAN对应关系表中查找对应的VLAN号;如果是采用组播的方式进行通信,则根据组播路由表中对应组播成员所在的板卡号,或者根据组播路由表和VLAN关系表中建立的对应组播号,在保存的VLAN对于关系表中查找对应的VLAN号。
步骤203,源板卡在用户数据包上封装一个18字节的以太网帧头部,在以太网帧头部中各字段信息设置完成后,发送该封装后的以太网帧到交换板。
根据IEEE802.1Q,待交换数据的标准以太网帧格式见表1,其中以太网帧头部的长度为18字节,包括:6字节的源MAC地址字段,6字节的目的MAC地址字段,4字节的虚拟局域网标签域(VLAN TAG)字段,2字节的类型字段。
表1
目的MAC(6字节) |
源MAC(6字节) |
VLAN TAG(4字节) |
类型(2字节) |
通信消息负荷 |
帧校验(4字节) |
以太网帧头部中4字节的VLAN TAG字段的标准组成字段见表2。将步骤202中从与目的板卡匹配的虚拟局域网对应关系表中得到的VLAN号填入VLAN ID字段,根据根据源板卡对该数据包的处理(流分类、QoS策略等)得到3位的交换板处理优先级号填入Priority字段。
表2
TPID(16位) |
Priority(3位) |
CFI(1位) |
VLANID(12位) |
本实施例中,只需增加一个以太网帧头部,不再需要增加除以太网帧头部外的额外字段就可以携带交换板需要的交换目的信息和目的板卡需要的源板卡工作结果信息。本发明利用以太网帧头部字段,把需携带的交换目的信息和源板卡操作结果存入以上标准以太网帧头部中的源MAC地址、目MAC地址和类型等字段,即将这些字段根据实际需求由用户重新定义。注意在使用自动检测源MAC地址的合法性的以太网交换芯片时,需要注意避免将MAC字段定义为广播和组播地址。源板卡一般需要携带的交互目的信息如:本板卡的流量通告信息以及控制目的板卡对该数据包执行何种操作的信息。源板卡处理该数据包的操作结果信息如:流标识、QoS标识、源目板卡号(组播时仅有源卡号)、源目通道号、ACL表结果、NAT表结果、路由表结果、流控信息等。源板卡正确填写以太网帧头部中的VLAN ID字段和需要交换板进行优先级队列处理的Priority(优先级)号。本发明中,VLAN TAG字段由交换板的以太网交换芯片识别和处理,交换板仅需要根据以太网帧头部中的VLAN ID和优先级信息(共4字节)就能够正确完成具有优先级功能的交换动作。
步骤204,交换板接收到该板间交换的以太网帧后,由于以太网交换芯片查找MAC地址失败,将以太网帧在VLAN内进行广播。
本步骤中,交换板上的以太网交换芯片接收到该板间交换的以太网帧后,从帧头部中取出VLAN ID、优先级号、源目MAC地址等信息,然后以太网交换芯片根据目的MAC地址查找芯片内的MAC地址表,由于MAC地址已由用户自定义为需要携带的其它信息,所以查找结果总是失败;而且为了避免自定义的目的MAC地址与系统中某个MAC地址冲突,建议以太网交换芯片关闭自动学习功能,此时该MAC地址表为空,所以查找结果肯定是失败;查找失败后以太网交换芯片自动在该VLAN内广播该数据。本发明利用交换芯片的一个查找失败后将该帧在VLAN内广播的功能特性,来达到正确发送该帧到目的地的目的。由于本发明已经预先分配了VLAN,在单播情况下,只有连接目的板卡的交换芯片端口和连接源板卡的交换芯片端口属于同一VLAN中,在组播和广播情况下,只有相同的组播组成员属于同一VLAN中,于是当该以太网帧在VLAN中广播时,处于同一VLAN中的目的板卡就能够接收,所以不管是一对一的单播还是一对多的多播数据,都能保证目的板卡正确的接收到交换数据。
步骤205,目的板卡接收到交换板发送来的交换以太网帧后,从以太网帧头部中的源MAC地址、目的MAC地址和类型字段中携带的自定义的信息,获得源板卡已处理的结果,在此结果基础上,继续进行本板的处理,替换链路头、QoS队列处理、更新相关控制表,通过正确的出端口发送该更新了头部信息后的数据包。
实施例
以4个板卡的系统为例:板卡间单播和组播通信的组合数为24-C0 4-C1 4=16-1-4=11个,可生成的VLAN对应关系表如下:
VLAN1={板卡1对应端口号、板卡2对应端口号},
VLAN2={板卡1对应端口号、板卡3对应端口号},
VLAN3={板卡1对应端口号、板卡4对应端口号},
VLAN4={板卡2对应端口号,板卡3对应端口号},
VLAN5={板卡2对应端口号,板卡4对应端口号},
VLAN6={板卡3对应端口号,板卡4对应端口号}。
VLAN7={板卡1对应端口号、板卡2对应端口号、板卡3对应端口号}
VLAN8={板卡1对应端口号、板卡2对应端口号、板卡4对应端口号}
VLAN9={板卡1对应端口号、板卡3对应端口号、板卡4对应端口号}
VLAN10={板卡2对应端口号、板卡3对应端口号、板卡4对应端口号}
VLAN11={板卡1对应端口号、板卡2对应端口号、板卡3对应端口号、板卡4对应端口号}
将以上VLAN对应关系表写入到交换板的以太网交换芯片中,而且所有相关板卡在保存和本板卡相关的VLAN对应关系表,如板卡1需要保存VLAN1-VLAN3、VLAN7-VLAN9、VLAN11等对应关系表项;系统进行VLAN配置。
当板卡1作为源板卡需要发送数据到板卡2(作为目的板卡)进行点对点的单播通信时,板卡1从所保存的VLAN对应关系表中查找到VLAN号是VLAN1,于是板卡1在待发送数据包的头上添加一个包括VLAN ID是VLAN1的以太网帧头部,将本板卡的操作结果得到的数据流的优先级(可能是16位,共65535级)转换成为交换板优先级(3位,共7级),并在其它字段源MAC地址和或目MAC地址和或类型等字段填写相关信息如源板卡号、通道号、流标识、查表结果等,然后把它发送到交换板。交换板通过目的MAC地址查找失败后,向VLAN中广播的方式,把该帧发送到目的板卡。该VLAN1中只由两个成员,板卡1和板卡2,由于该包来自板卡1,所以就只向板卡2转发了。目的板卡2接收到该以太网帧,在板卡1处理结果的基础上执行后续操作。
对于1对多的组播通信情况也与单播操作类似。如板卡1向板卡2和板卡3发送数据,则板卡1从所纪录的VLAN对应关系表中查找匹配的VLAN号,此时应为VLAN7。源板卡板卡1在数据包的头上添加一个包括VLAN-ID是VLAN7的以太网帧头部,转换(映射)从处理结果得到的流的优先级(可能是16位,共65535级)成为交换板优先级(3位,共7级),并在其它字段(如源MAC、目MAC、类型等字段)填写相关信息如源板卡号、通道号、流标识、查表结果等,然后把它发送到交换板。交换板通过目的MAC地址查找失败后,向VLAN中广播的方式,把该帧发送到目的板卡。由于VLAN7中有三个成员,板卡1、板卡2和板卡3,由于该包来自板卡1,所以就把该帧向板卡2和板卡3转发了。从而目的板卡板卡2和板卡3都能接收到该数据帧并执行后续操作。
本发明为有效利用以太网帧头部字段,可把需携带的源目板卡号、通道号、QoS等信息存入标准以太网帧头部中的MAC字段中,同时利用交换机的VLAN特性,预先为板卡间可能的通信组合分配vlan号,在数据交换时,交换机芯片利用MAC地址查找失败后将在VLAN内广播的特性完成正确的交换。这样,交换板仅用4个字节就能够完成数据交换,而且还具有优先级功能,无需附加专门的交换信息字段,利用标准以太头中的现有字段就可以携带这些交换信息,减小了开销,极大地提高交换效率。