具体实施方式
现在,将参照附图更充分地描述本发明的实施例。
图1示出根据本发明的包括多个功能子板的无线接入控制器的构造。
图1示出的包括多个功能子板的无线接入控制器包括:多个功能子板Slot0至Slotn,所述多个功能子板Slot0至Slotn分别包括多个板间互联接口Ve0至Ven,用于在所述多个功能子板之间传输数据分组;转发芯片,与所述多个板间互联接口Ve0至Ven连接,用于将来自特定板间互联接口的数据分组转发至指定板间互联接口。
在图2A中示出根据本发明的包括多个功能子板的无线接入控制器的两个功能子板的构造。图2B中示出根据本发明的包括多个功能子板的无线接入控制器的三个功能子板的预定虚拟接口的设置的示意图。
参照图2A,功能子板Slot0包括:实际接口0-1、0-2、0-3和0-4,与实际端口或物理通道对应;板间互联接口Ve0,通过转发芯片在Slot0和Slot1之间传送数据分组;网卡驱动110,用于注册多个实际接口以及板间互联接口;网络协议栈130。
功能子板Slot0还包括驱动模块120。驱动模块120注册多个虚拟接口1-1、1-2、1-3、1-4,所述多个虚拟接口1-1、1-2、1-3、1-4分别对应于Slot1的实际接口1-1、1-2、1-3、1-4,也就是说,虚拟接口1-1、1-2、1-3、1-4的IP地址和MAC地址分别与Slot1的实际接口1-1、1-2、1-3、1-4的IP地址和MAC地址相同。驱动模块可以通过虚拟接口注册的发包函数对数据分组添加预定封装报头,所述预定封装报头包括用于指示转发接口的信息和关于动作类型的信息。下面将详细描述所述封装报头的格式。
驱动模块通过虚拟接口注册的发包函数对数据分组添加的预定封装报头的格式如下表1示出。
表1
Dslot_MAC |
Sslot_MAC |
Pkt_type_id |
Action_type |
D_N. |
S_No. |
Dslot |
Sslot |
其中,Dslot_MAC表示目标单板(即,目标功能子板)的板间互联接口的MAC地址。Sslot_MAC表示发送单板的板间互联接口的MAC地址。
Pkt_type_id表示跨板数据分组的标识,网卡驱动根据这一项判断由实际端口接收到的数据分组是否为跨板数据。Action_type表示动作类型,当跨板数据分组到达到目标单板后,驱动模块根据这一项确定是直接由实际接口以数据发送方式往外转发,还是续按照正常的收取流程向上送达系统的网络协议栈。
在此描述的实际接口和虚拟接口在系统中的本质是一样的,实际接口和虚拟接口分别是网卡驱动和驱动模块向系统注册出来的接口,其基本属性相同。实际接口和虚拟接口的主要区别在于:实际接口是由网卡驱动向系统注册的,实际接口本身有对应的实际端口或者实际物理通道。在网卡驱动注册接口的时候,向系统提供接口的发包方式、修改接口属性的一些方式,都是跟操作网卡硬件有关的。收包是由网卡驱动特定的收包方式从硬件收取的。
而虚拟接口是由驱动模块向系统注册的,虚拟接口本身没有对应的实际端口或者物理通道。在驱动模块向系统注册接口的时候,向系统提供接口的发包方式跟上述实际接口的发包函数不同,注册的发包函数只对数据分组增加预定封装报头,再将封装后的数据分组交给实际接口发送出去。
驱动模块120还可确定数据分组是ARP回复报文或IPv6邻居公告报文还是除ARP回复报文或IPv6邻居公告报文以外的数据分组。例如,在实际接口接收到数据分组之后,并且在数据分组进入网络协议栈的入口前,驱动模块120可将数据分组钩送到本模块进行确定。
当驱动模块120确定接收到的数据分组是除ARP回复报文或IPv6邻居公告报文以外的数据分组时,如果网络协议栈130通过对所述数据分组进行路由处理后确定所述数据分组的转发接口是本功能子板的特定实际接口,则所述数据分组通过所述特定实际接口被转发出去;如果网络协议栈130通过对所述数据分组进行路由处理后确定所述数据分组的转发接口是本功能子板的特定虚拟接口,则驱动模块120通过所述特定虚拟接口注册的发包函数对所述数据分组添加预定封装报头来封装数据分组,所述预定封装报头包括用于指示转发接口的信息和关于动作类型的信息,并且通过本功能子板Slot0的板间互联接口Ve0将封装的数据分组发送给与所述特定虚拟接口对应的实际接口所在的其它功能子板。
当驱动模块120确定接收到的数据分组是ARP回复报文或IPv6邻居公告报文时,驱动模块120可对所述数据分组进行复制,其中,复制的次数等于其它功能子板的数量,并通过至少一个预定虚拟接口中的每个预定虚拟接口注册的发包函数分别对所述数据分组添加预定封装报头来封装所述特殊数据分组,所述至少一个预定虚拟接口中的每个预定虚拟接口分别与其它功能子板的每个功能子板的实际接口之一对应,所述预定封装报头包括用于指示所述复制的数据分组各自的转发接口的信息和关于动作类型的信息。之后,将复制的数据分组通过本功能子板的板间互联接口分别发送到与所述至少一个预定虚拟接口中的每个预定虚拟接口对应的实际接口所在的其它功能子板中的每个功能子板,将原始的数据分组续按照正常的收取流程向上送达本功能子板的网络协议栈。可由用户设置所述至少一个预定虚拟接口,或由系统自动设置所述至少一个预定虚拟接口。
例如,如图2B所示,功能子板Slot0上存在四个实际接口0-1、0-2、0-3和0-4,如果除Slot0以外还存在两个其它的功能子板Slot1和Slot2,且Slot1上存在四个实际接口1-1、1-2、1-3和1-4,Slot2上存在四个实际接口2-1、2-2、2-3和2-4,则Slot0的驱动模块注册分别与Slot1和Slot2的实际接口对应的虚拟接口1-1、1-2、1-3、1-4、2-1、2-2、2-3和2-4,类似地,Slot1的驱动模块注册虚拟接口0-1、0-2、0-3、0-4、2-1、2-2、2-3和2-4,Slot2的驱动模块注册虚拟接口0-1、0-2、0-3、0-4、1-1、1-2、1-3和1-4。功能子板Slot0的预定虚拟接口可以分别对应于Slot1上的一个实际接口(例如实际接口1-1)和Slot2上的一个实际接口(例如实际接口2-1),即,Slot0的预定虚拟接口可以是虚拟接口1-1和2-1。当Slot0的实际接口(例如实际接口0-1)接收到的数据分组是ARP回复报文或IPv6邻居公告报文时,驱动模块120将所述数据分组复制两次,通过虚拟接口1-1和虚拟接口2-1注册的发包函数对所述数据分组分别添加相应的预定封装报头来封装所述数据分组,所述预定封装报头的格式如上表1所示。随后,驱动模块120将封装后的复制数据分组通过本功能子板的板间互联接口分别发送到分别与虚拟接口1-1和虚拟接口2-1对应的实际接口1-1和实际接口2-1所在的其它功能子板,即,功能子板Slot1和Slot2,并且驱动模块120将原始的数据分组续按照正常的收取流程向上送达本功能子板的网络协议栈。
返回参照图2A,此外,驱动模块120还可对从本功能子板Slot0的板间互联接口Ve0接收到的数据分组中包括的预定封装报头进行解析,所述预定封装包括用于指示转发接口的信息和关于动作类型的信息,从而驱动模块120获得用于指示转发接口的信息和关于动作类型的信息。驱动模块120通过删除所述预定封装报头来解封所述数据分组。当所述关于动作类型的信息指示直接由实际接口以数据发送方式向外转发数据分组时,驱动模块120通过解析所述用于指示转发接口的信息确定的转发接口以数据发送方式向外转发解封的数据分组。当所述关于动作类型的信息指示将数据分组续按照正常的收取流程向上送达网络协议栈时,驱动模块通过解析所述用于指示转发接口的信息确定的转发接口将解封的数据分组续按照正常的收取流程向上送达网络协议栈进行学习。
这里,在通过虚拟接口将数据分组续按照正常的收取流程向上送达网络协议栈进行学习的情况下,不是通过虚拟接口注册的发包函数对数据分组进行发送,而是在软件层面替换数据分组的数据结构中的收包接口信息,然后通过函数的方式,送到网络协议栈函数中进行学习。另一方面,在通过虚拟接口将数据分组发送到其它接口的情况下,通过虚拟接口注册的发包函数对数据进行封装。
功能子板Slot0还包括:上层接口管理程序140,用于将多个虚拟接口分别与各自的实际接口对应,并对驱动模块120中的表项进行维护,该表项将在下文详细地描述。
类似地,将参照功能子板Slot0来描述功能子板Slot1。功能子板Slot1包括:实际接口1-1、1-2、1-3和1-4,与实际端口或物理通道对应;板间互联接口Ve1,通过转发芯片在Slot0和Slot1之间传送数据分组;网卡驱动210,用于注册多个实际接口以及板间互联接口;网络协议栈230。
功能子板Slot1还包括:驱动模块220,注册多个虚拟接口0-1、0-2、0-3、0-4,所述多个虚拟接口0-1、0-2、0-3、0-4分别对应于Slot0的实际接口0-1、0-2、0-3、0-4,也就是说,虚拟接口0-1、0-2、0-3、0-4的IP地址和MAC地址分别与Slot0的实际接口0-1、0-2、0-3、0-4的IP地址和MAC地址相同。由于除相应的实际接口和虚拟接口以外,功能子板Slot1的驱动模块220的构造和功能与功能子板Slot0的驱动模块120相同,因此为了简明这里将省略对驱动模块220的详细描述。功能子板Slot1还包括:上层接口管理程序240,用于将多个虚拟接口分别与各自的实际接口对应,并对驱动模块220中的表项进行维护,该表项将在下文详细地描述。
在上述表1中描述的D_No.、S_No.、Dslot、Sslot四项是根据驱动模块中的一个表项来确定的。这个表项存在于驱动模块中,可以通过上层接口管理程序进程维护。下面的表2参照图2A所示的两块功能子板示出表项的具体设置。
表2
每块功能子板上都要维护一个上述的表项。
在表2示出的表项中,对于每个功能子板的虚拟接口和本板的实际接口,都有唯一的slot和No.号与之对应。例如,在Slot1上的实际接口1-1对应的表项是Slot:1、No.:20,那么在Slot0上的虚拟接口1-1的表项也必须是Slot:1、No.:20。
虽然图2A示出两个功能子板的配置,但是本领域技术人员可以将本发明构思应用于多个功能子板的情况。
图3示出根据本发明的在两个功能子板之间对数据分组进行跨板路由转发的一个实施例。
参照图3,驱动模块120已经通过Slot0的上层接口管理程序140注册了虚拟接口1-1、1-2、1-3和1-4。虚拟接口1-1、1-2、1-3和1-4分别与Slot1的实际接口1-1、1-2、1-3和1-4对应。驱动模块220已经通过Slot1的上层接口管理程序240注册了虚拟接口0-1、0-2、0-3和0-4。虚拟接口0-1、0-2、0-3和0-4分别与Slot0的实际接口0-1、0-2、0-3和0-4对应。
在步骤301,Slot0的实际接口0-1从外部接收需要从Slot1的实际接口1-1转发出去的跨板数据分组。
在步骤302,数据分组通过实际接口0-1发往网卡驱动110,并且在网络协议栈130的入口,驱动模块120将数据分组钩送到本模块进行判断,确定所述数据分组是除ARP回复报文或IPv6邻居公告报文以外的数据分组。
当驱动模块120确定所述数据分组是除ARP回复报文或IPv6邻居公告报文以外的数据分组之后,在步骤303,所述数据分组被发送到Slot0的网络协议栈130,Slot0的网络协议栈130通过对所述数据分组进行路由处理来确定转发接口,之后数据分组被发送到与确定的转发接口对应的虚拟接口1-1。也就是说,由于Slot0的虚拟接口1-1的IP地址和MAC地址与Slot1的实际接口1-1相同,因此在Slot0的虚拟接口1-1上参与路由转发的实际效果与Slot1的实际接口1-1一致,从而所述数据分组根据网络协议栈130的路由规则被发送到虚拟接口1-1。
之后,在步骤304,驱动模块120通过虚拟接口1-1注数对数据分组添加预定封装报头来封装该数据分组,并将封装的数据分组发送到板间互联接口Ve0。该预定封装报头的格式如上表1所示,其中,Dslot_MAC为板间互联接口Ve1的MAC地址,action_type为“到达目标板后由实际接口发出动作”,Dslot和D_No.为虚拟接口1-1的表项值:1和20。
在步骤305,根据所述预定封装报头中的Ve1的MAC地址,数据分组通过转发芯片(未示出)被发往板间互联接口Ve1。
在步骤306,数据分组通过板间互联接口Ve1被发送到网卡驱动210,网卡驱动210通过判断标志位Pkt_type_id确定数据分组是从板间互联接口接收到的数据分组。
在步骤307,所述数据分组被送入驱动模块220,驱动模块220对所述数据分组中包括的预定封装报头进行解析。驱动模块220首先判断action_type为“到达目标板后由实际接口发出动作”,然后解析出Dslot和D_No.为1和20,对应着本板上的实际接口1-1,通过将预定封装报头删除来解封数据分组。
在步骤308,驱动模块220将解封后的原始数据分组通过实际接口1-1发送出Slot1板。
需要说明的是,上述步骤的执行不限于在本示例中示出的顺序,还可以在不脱离本发明构思的范围的情况下按照其他顺序执行上述步骤。此外,虽然在图3的实施例中仅示出在两个功能子板之间进行数据分组的路由转发处理,但是该实施例可应用于多个功能子板之间的数据分组路由转发。
图4示出根据本发明的在两个功能子板之间对数据分组进行跨板处理的一个实施例。
参照图4,驱动模块120已经通过Slot0的上层接口管理程序140注册了虚拟接口1-1、1-2、1-3和1-4。虚拟接口1-1、1-2、1-3和1-4分别与Slot1的实际接口1-1、1-2、1-3和1-4对应。驱动模块220已经通过Slot1的上层接口管理程序240注册了虚拟接口0-1、0-2、0-3和0-4。虚拟接口0-1、0-2、0-3和0-4分别与Slot0的实际接口0-1、0-2、0-3和0-4对应。
当数据分组需要跨板送达另一个功能子板的网络协议栈进行处理(例如,针对ARP回复报文的学习、针对IPv6邻居公告报文的学习等)时,需要将所述数据分组跨板送达其它功能子板的系统网络协议栈。
在步骤401,Slot0的实际接口0-1接收到需要转发到Slot1的网络协议栈230进行处理的数据分组,例如,ARP回复报文。
在步骤402,数据分组通过实际接口0-1被发往网卡驱动110,并且在网络协议栈130的入口,驱动模块120将数据分组钩送到本模块进行判断,确定所述数据分组是ARP回复报文。
在步骤403,当驱动模块120确定所述数据分组是ARP回复报文之后,对所述数据分组进行复制。由于本示例中仅示出两个功能子板的情况,因此对所述数据分组复制一次。然而,如上所述,在存在多个其它功能子板的情况下,可以对所述数据分组进行多次复制,复制的次数等于多个其它功能子板的数量。
在步骤404,驱动模块将复制的数据分组通过预定虚拟接口(例如,虚拟接口1-1)发送注册的发包函数进行封装,并将封装的数据分组发送到板间互联接口Ve0。该预定封装报头的格式如上表1所示,其中,Dslot_MAC为板间互联接口Ve1的MAC地址,action_type为“到达目标板后由对应接口将数据分组送上协议栈”,Sslot和S_No.为接口0-1的表项值:0和10。这里,可以由用户设置预定虚拟接口,也可由系统自动设置预定虚拟接口。如上所述,在存在多个其它功能子板的情况下,可以设置多个预定虚拟接口,所述多个预定虚拟接口中每个预定虚拟接口与所述多个其它功能子板中的每个功能子板的实际接口之一对应。
在步骤405,根据所述预定封装报头中的Ve1的MAC地址,数据分组通过转发芯片(未示出)被发往板间互联接口Ve1。
在步骤406,原始的数据分组通过网卡驱动续按照正常的收取流程向上送达本功能子板的网络协议栈。
在步骤407,数据分组通过板间互联接口Ve1被发往网卡驱动210。网卡驱动210通过判断标志位Pkt_type_id确定数据分组是通过板间互联接口接收的数据分组。
在步骤408,所述数据分组被送入驱动模块220,驱动模块220对所述数据分组中包括的预定封装报头进行解析。驱动模块220首先判断action_type为“到达目标板后由对应接口将数据分组送上协议栈”,然后解析出Sslot和S_No.为0和10,对应着本板上的虚拟接口0-1,通过将预定封装报头删除来解封数据分组。
之后,在步骤409,驱动模块220将数据分组中的接口信息替换为虚拟接口0-1的信息并通过虚拟接口0-1续按照正常的收取流程向上送达网络协议栈。
需要说明的是,上述步骤的执行不限于在本示例中示出的顺序,还可以在不脱离本发明构思的范围的情况下按照其他顺序执行上述步骤。此外,虽然在图4的实施例中仅示出在两个功能子板之间的数据分组的跨板处理,但是该实施例可应用于多个功能子板之间的数据分组的跨板处理。
图5示出根据本发明的包括多个功能子板的无线接入控制器的远程接口代理方法的一个实施例的流程图。
参照图5,在步骤501,针对所述多个功能子板的每个功能子板注册多个虚拟接口,所述多个虚拟接口分别与其它每个功能子板的每个实际接口一一对应。
在步骤502,多个功能子板中的第一功能子板通过实际接口接收到数据分组。
在步骤503,确定接收到的数据分组是否是ARP回复报文或IPv6邻居公告报文。如果接收到的数据分组是ARP回复报文或IPv6邻居公告报文,则进行到步骤504,如果不是,则进行到步骤507。
在步骤504,对所述数据分组复制与其它功能子板的数量相同的次数,并通过至少一个预定虚拟接口中的每个预定虚拟接口注册的发包函数分别对所述复制的数据分组中的每个数据分组添加相应的预定封装报头,其中,所述至少一个预定虚拟接口中的每个预定虚拟接口与所述其它功能子板中的每个功能子板上的实际接口之一对应,并且所述预定封装报头包括用于指示所述复制的数据分组各自的转发接口的信息和指示续按照正常的收取流程向上送达网络协议栈的动作的信息,其具体格式如上表1所示。
在步骤505,将所述复制的数据分组通过第一功能子板的板间互联接口分别发送到与所述至少一个预定虚拟接口对应的至少一个实际接口所在的其它功能子板中的每个功能子板。
在步骤506,将原始的数据分组续按照正常的收取流程向上送达第一功能子板的网络协议栈。
在步骤507,将数据分组续按照正常的收取流程向上送达第一功能子板的网络协议栈。
在步骤508,通过对数据分组进行路由处理确定数据分组的转发接口。
在步骤509,确定转发接口是否是第一功能子板的实际接口?如果转发接口是第一功能子板的实际接口,则进行到步骤510,如果不是,则进行到步骤511。
在步骤510,通过本板上的与转发接口对应的实际接口注册的发包函数操作硬件将数据分组发送出去。
在步骤511,通过与转发接口对应的虚拟接口注册的发包函数根据所述虚拟接口的信息添加预定封装报头,预定封装报头包括用于指示转发接口的信息和关于动作类型的信息,其具体格式如上表1所示。
在步骤512,将添加了预定封装报头的数据分组发送到与所述虚拟接口对应的实际接口所在的目标功能子板。
图6示出根据本发明的包括多个功能子板的无线接入控制器的远程接口代理方法的另一实施例的流程图。
参照图6,在步骤601,针对所述多个功能子板的每个功能子板注册多个虚拟接口,所述多个虚拟接口分别与其它每个功能子板的每个实际接口一一对应。
在步骤602,多个功能子板的第一功能子板的板间互联接口接收到包括预定封装报头的数据分组,预定封装报头包括用于指示转发接口的信息和关于动作类型的信息,其具体格式如上表1所示。
在步骤603,对预定封装报头进行解析,确定预定封装报头中包括的关于动作类型的信息是否指示续按照正常的收取流程向上送达网络协议栈。如果关于动作类型的信息指示续按照正常的收取流程向上送达网络协议栈,则进行到步骤604,如果不是,则进行到步骤606。
在步骤604,根据预定封装报头中包括的用于指示转发接口的信息确定将转发数据分组的转发接口。
在步骤605,通过删除预定封装解封数据分组,并将解封的数据分组通过确定的转发接口续按照正常的收取流程向上送达网络协议栈。
在步骤606,根据预定封装报头中包括的用于指示转发接口的信息确定将转发数据分组的转发接口。
在步骤607,通过删除预定封装解封数据分组,并将解封的数据分组通过确定的转发接口以数据发送方式向外转发。
根据本发明的包括多个功能子板的无线接入控制器及其远程接口代理方法,对于多个功能子板上的网络协议栈,由于每个功能子板上的多个虚拟接口具有与对应的各个实际接口相同的MAC地址和IP地址,所以在路由规则上保持一致,从而实现多个网络协议栈的连接,并实现接口对外表现的统一路由。因此,根据本发明的包括多个功能子板的无线接入控制器及其远程接口代理方法可提高包括多个功能子板的无线接入控制器跨板转发数据分组的效率,全局接口路由,并且不需要过多的网络设置。
尽管已经参照其示例性实施例具体显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离权利要求所限定的本发明的精神和范围的情况下,可以对其进行形式和细节上的各种改变。