基于多处理机的虚拟网卡系统及其通信方法

文档序号:6619043阅读:253来源:国知局
专利名称:基于多处理机的虚拟网卡系统及其通信方法
所属领域本发明涉及嵌入式系统领域,特别是涉及大型嵌入式设备中多处理机系统的设计。
参考

图1所示的以太网络通信方式示意图,虽然具有易扩充性、可靠性高、易实现性、较宽带宽,而且嵌入式系统开发平台普遍支持通过网络调试目标程序等优点,但是实现网络通信必须给每个处理机配置一块网卡,增加了硬件体积、系统芯片数量,进而增加了系统的硬件成本。特别是对于嵌入式系统,由于系统空间上的限制,要求尽可能地减少嵌入式系统的体积,所以不适合采用以太网通信方式。
采用总线通信方式实现,如采用PCI、VME总线通信方式,参考图2所示的采用PCI总线通信方式的示意图,将一块网卡和所有的处理机都直接连接在PCI总线上,通过网卡实现系统中多处理机之间的通信(通信带宽达到132MB/s)。这种方式可以节省芯片数量和硬件体积,减少硬件成本。但是现行的嵌入式软件开发平台是通过网络或串口调试目标程序的,由于不支持通过总线通信调试目标程序的嵌入式系统开发平台来说,增加了调试和排错的难度,影响软件开发进度。而目前的方法是为每个处理机增加一个串口作为调试的手段。但是这些串口在系统正常运行时是空闲的,造成系统资源的浪费,而且串口通信的带宽也限制了软件调试进度。

发明内容
本发明克服了现有技术的上述不足,提供了一种基于多处理机的虚拟网卡系统,实现只用一块网卡进行模拟分别被不同处理机使用,节省了系统硬件的设计空间和成本。
还提供了一种基于多处理机的虚拟网卡系统的通信方法,增加软件开发和调试的方便性,加快了软件开发的进度。
本发明提供的一种基于多处理机的虚拟网卡系统,包括一个主处理机,用于对网卡进行初始化和维护其它处理机的网络配置信息;将网卡接收到的数据包通过处理机之间的通信装置分发到目的处理机,将各处理机通过处理机之间的通信装置送来的数据包发送到网卡上;多个其它处理机,用于将上层应用部分接收到的数据转换成数据包转发到主处理机,将从主处理机接收到的数据包转换成数据发送到上层应用部分;网卡,用于将主处理机发送来的数据包转发到外部,将接收到的数据包转发到主处理机;处理机之间的通信装置,用于主处理机与其它处理机之间的通信。
所述的主处理机包括网络协议栈,用于实现网络协议,将上层应用部分接收到的数据按照网络协议转换成数据包,将接收到的数据包转换成数据传送给上层应用部分;通信驱动模块,用于将网络协议栈和其它处理机送来的数据包转发到网卡驱动模块,将网卡驱动模块接收到的数据包按照数据包的目的地址转发到网络协议栈或其它处理机;网卡驱动模块,用于接收网卡发来的数据包和转发通信驱动模块发送的数据包到网卡。
所述的其它处理机包括网络协议栈,用于实现网络协议,将上层应用部分接收到的数据按照网络协议转换成数据包,将接收到的数据包转换成数据传送给上层应用部分;通信驱动模块,用于将网络协议栈送来的数据包转发到主处理机,将主处理机发送来的数据包转发到网络协议栈。
所述的处理机之间的通信装置是PCI总线。
所述的处理机之间的通信装置还可以是VME总线。
本发明提出的一种基于多处理机的虚拟网卡通信方法,包括以下步骤一、系统设置1)主处理机启动并初始化网卡,将网络配置信息通知主处理机的通信驱动模块,将网卡设置成接受任何数据包模式;2)其它处理机启动,将网络配置信息通过本处理机的通信驱动模块和处理机之间的通信装置发送到主处理机的通信驱动模块;3)主处理机的通信驱动模块维护所有处理机的网络配置信息;二、接收外部数据包1)网卡将接收到的外部数据包转发到主处理机的通信驱动模块;2)主处理机的通信驱动模块根据数据包的目的地址转发c数据包;三、向外部发送数据包1)主处理机的网络协议栈将上层应用部分的数据转换成数据包转发到主处理机的通信驱动模块;
2)其它处理机的网络协议栈将上层应用部分的数据转换成数据包通过本处理机的通信驱动模块和处理机之间的通信装置发送到主处理机的通信驱动模块;3)主处理机的通信驱动模块将接收到的数据包通过网卡驱动模块和网卡向外部转发数据包。
所述步骤二中主处理机的通信驱动模块转发数据包如果数据包的目的地址是广播地址,则将数据包通过处理机之间的通信装置转发到其它处理机的通信驱动模块中,并经由所有处理机的通信驱动模块将数据包转发到所有处理机的网络协议栈中进行处理;如果数据包的目的地址不是广播地址,则根据数据包的MAC地址将数据包转发到目的处理机。
由于本发明采用一块网卡完成多块网卡的虚拟工作,使得系统不需要为每个处理器都配置一个独立网卡,减少了系统中硬件芯片的数量,节省成本。
由于本发明的虚拟系统对外部调试而言,可以认为是每个处理器在独立使用一块网卡,增加了软件调试的方便性,加快开发进度。
图2是现有技术采用PCI总线通信方式实现的网卡系统示意图。
图3是本发明的基于多处理机的虚拟网卡系统示意图。
图4是本发明的虚拟网卡系统中的处理机结构示意图。
如图2所示的PCI总线通信方式的多处理机系统,虽然只使用一个网卡,但这个网卡的功能只是用于多个处理机之间的通信,在系统调试时还需要给每一个处理机配置一个额外的串口进行调试。这些串口只在调试的时候使用,所以仍然是不可取的。
而本发明提出的一种虚拟网卡的多处理机系统,如图3所示,网卡31直接与主处理机32相连,主处理机32与其它处理机33之间通过处理机之间的通信装置34进行数据包的交互。
下面具体介绍各处理机内部的结构,如图4所示,主处理机中包括网络协议栈321、通信驱动模块322、网卡驱动模块323各一;其它处理机中包括网络协议栈331与通信驱动模块332各一。主处理机的网络协议栈321和其它处理机的网络协议栈331向上连接到与各处理机相连的上层应用部分,向下与各处理机的通信驱动模块(通信驱动模块322合通信驱动模块332)相连。主处理机的通信驱动模块322和其它处理机的通信驱动模块332都连接到处理机之间的通信装置34上。主处理机的通信驱动模块322还通过网卡驱动模块323连接到网卡31上。
以下再介绍本发明提出的一种基于多处理机的虚拟网卡通信方法的具体实现过程。
网卡驱动模块323主要是完成网卡31的初始化,收发数据包。各处理机的通信驱动模块(通信驱动模块322和通信驱动模块332)通过处理机之间硬件通信装置34收发数据包和配置信息,每个处理机拥有自己的mac地址。
实现本发明的具体步骤如下 在各处理机的网络协议栈(网络协议栈321和网络协议栈331)下面实现处理机的通信驱动模块(通信驱动模块322和通信驱动模块332),网络协议栈通过处理机的驱动模块收发数据包; 主处理机32初始化网卡驱动模块323时,将主处理机配置(包括mac)通告给通信驱动模块322,将网卡31设置成接受任何数据包的模式(promiscous); 其它处理机33初始化时将本处理机配置(包括mac)通告给通信驱动模块332,然后通信驱动模块332通过处理机间通信装置34通告给主处理机的通信驱动模块322; 主处理机通信驱动模块322维护所有处理机的网络配置信息; 网卡31接收到mac数据包,交给主处理机的通信驱动模块322分发; 主处理机的通信驱动模块322根据数据包的目的mac地址决定(1)广播地址,分发到所有的处理机通信驱动模块(通信驱动模块322和通信驱动模块332),由其交给网络协议栈(网络协议栈321和网络协议栈331)处理;(2)主播地址,查询mac表分发到相应的处理机;(3)其它地址,查询mac表分发到相应的处理机; 网络协议栈(网络协议栈321和网络协议栈331)发送的数据包都传送给主处理机的通信驱动模块322; 主处理机的通信驱动模块322交给网卡驱动模块323发送。
权利要求
1.一种基于多处理机的虚拟网卡系统,其特征在于,包括一个主处理机(32),用于对网卡(31)进行初始化和维护其它处理机(33)的网络配置信息;将网卡(31)接收到的数据包通过处理机之间的通信装置(34)分发到目的处理机,将各处理机通过处理机之间的通信装置(34)送来的数据包发送到网卡(31)上;多个其它处理机(33),用于将上层应用部分接收到的数据转换成数据包转发到主处理机(32),将从主处理机(32)接收到的数据包转换成数据发送到上层应用部分;网卡(31),用于将主处理机(32)发送来的数据包转发到外部,将接收到的数据包转发到主处理机(32);处理机之间的通信装置(34),用于主处理机(32)与其它处理机(33)之间的通信。
2.如权利要求1所述的一种基于多处理机的虚拟网卡系统,其特征在于,所述的主处理机(32)包括网络协议栈(321),用于实现网络协议,将上层应用部分接收到的数据按照网络协议转换成数据包,将接收到的数据包转换成数据传送给上层应用部分;通信驱动模块(322),用于将网络协议栈(321)和其它处理机(33)送来的数据包转发到网卡驱动模块(323),将网卡驱动模块(323)接收到的数据包按照数据包的目的地址转发到网络协议栈(321)或其它处理机(33);网卡驱动模块(323),用于接收网卡(31)发来的数据包和转发通信驱动模块(322)发送的数据包到网卡(31)。
3.如权利要求1所述的一种基于多处理机的虚拟网卡系统,其特征在于,所述的其它处理机(33)包括网络协议栈(331),用于实现网络协议,将上层应用部分接收到的数据按照网络协议转换成数据包,将接收到的数据包转换成数据传送给上层应用部分;通信驱动模块(332),用于将网络协议栈(331)送来的数据包转发到主处理机(32),将主处理机(32)发送来的数据包转发到网络协议栈(331)。
4.如权利要求1所述的一种基于多处理机的虚拟网卡系统,其特征在于,所述的处理机之间的通信装置(34)是PCI总线。
5.如权利要求1所述的一种基于多处理机的虚拟网卡系统,其特征在于,所述的处理机之间的通信装置(34)是VME总线。
6.一种基于多处理机的虚拟网卡通信方法,其特征在于,包括下列步骤一、系统设置1)主处理机(32)启动并初始化网卡(31),将网络配置信息通知主处理机的通信驱动模块(322),将网卡(31)设置成接受任何数据包模式;2)其它处理机(33)启动,将网络配置信息通过本处理机的通信驱动模块(332)和处理机之间的通信装置(34)发送到主处理机的通信驱动模块(322);3)主处理机的通信驱动模块(322)维护所有处理机的网络配置信息;二、接收外部数据包1)网卡(31)将接收到的外部数据包转发到主处理机的通信驱动模块(322);2)主处理机的通信驱动模块(322)根据数据包的目的地址转发数据包;三、向外部发送数据包1)主处理机的网络协议栈(321)将上层应用部分的数据转换成数据包转发到主处理机的通信驱动模块(322);2)其它处理机的网络协议栈(331)将上层应用部分的数据转换成数据包通过本处理机的通信驱动模块(332)和处理机之间的通信装置(34)发送到主处理机的通信驱动模块(322);3)主处理机的通信驱动模块(322)将接收到的数据包通过网卡驱动模块(323)和网卡(31)向外部转发数据包。
7.如权利要求6所述的一种基于多处理机的虚拟网卡通信方法,其特征在于,所述步骤二中主处理机的通信驱动模块(322)转发数据包如果数据包的目的地址是广播地址,则将数据包通过处理机之间的通信装置(34)转发到其它处理机的通信驱动模块(332)中,并经由所有处理机的通信驱动模块(322和332)将数据包转发到所有处理机的网络协议栈(321和331)中进行处理;如果数据包的目的地址不是广播地址,则根据数据包的MAC地址将数据包转发到目的处理机。
全文摘要
本发明公开了一种基于多处理机的虚拟网卡系统及其通信方法,通过一个网卡、主处理机、处理机之间的通信装置以及多个其它处理机构建成整个虚拟网卡系统;外部数据包通过网卡、网卡驱动模块、主处理机的通信驱动模块,并按照数据包的目的地址分发到目的处理机;各处理机的网络协议栈将上层应用部分的数据转换成数据包通过通信驱动模块、处理机之间的通信装置、主处理机的通信驱动模块、网卡驱动模块以及网卡向外部发送。本发明广泛适用于嵌入式通讯设备中多处理机系统的设计,使用本发明能够降低系统硬件的成本、节约系统空间,并能方便地通过网卡完成系统调试,以提高系统的开发速度。
文档编号G06F15/16GK1435773SQ0211076
公开日2003年8月13日 申请日期2002年1月29日 优先权日2002年1月29日
发明者童小九, 吴晨, 李强, 李斌 申请人:深圳市中兴通讯股份有限公司上海第二研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1