CN105812225A - 与接口无关的虚拟以太网通信部件及其实现通信的方法 - Google Patents
与接口无关的虚拟以太网通信部件及其实现通信的方法 Download PDFInfo
- Publication number
- CN105812225A CN105812225A CN201610288955.0A CN201610288955A CN105812225A CN 105812225 A CN105812225 A CN 105812225A CN 201610288955 A CN201610288955 A CN 201610288955A CN 105812225 A CN105812225 A CN 105812225A
- Authority
- CN
- China
- Prior art keywords
- virtual ethernet
- interface
- data
- physical interface
- device driver
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种与接口无关的虚拟以太网通信部件及其实现通信的方法,涉及通信技术领域。该通信部件包括用于提供物理通道进行数据收发的物理接口、物理接口驱动模块和虚拟以太网设备驱动模块。其中,物理接口驱动模块,用于控制物理接口按照物理接口总线协议进行数据收发;虚拟以太网设备驱动模块,用于在Linux内核中注册为虚拟以太网设备;收发数据时,利用虚拟以太网设备虚拟出的以太网接口实现与上层网络协议栈、物理接口驱动模块的数据交互。本发明将虚拟的以太网接口作为中间桥梁连接上层网络协议栈与物理接口,使得上层可利用Linux内核自带的网络协议栈进行通信,无需单独设计通信协议,降低了开发难度且开发代码的可复用性高。
Description
技术领域
本发明涉及通信技术领域,具体来讲是一种与接口无关的虚拟以太网通信部件及其实现通信的方法。
背景技术
随着通信技术的逐步发展,网络设备的处理能力和数据传输能力越来越高,各种通信接口层出不穷,例如:I2C(Inter-IntegratedCircuit,微控制器与外设连接接口)、SPI(SerialPeripheralInterface,串行外设接口)、UART(UniversalAsynchronousReceiver/Transmitter,通用异步收发传输器接口)、Ethernet(以太网接口),PCIe(PCIExpress接口)等。
实现设备间通信时,由于各个通信接口的配置不尽相同,使得开发人员需要针对这些通信接口开发出相应的应用代码;同时,为了保证通信数据传输的可靠性和稳定性,需要自行设计相应的通信协议。这样,不但使得开发难度大、周期时间长、可维护性差,而且,当设备需要升级单盘或者升级通信接口时,以往的代码也无法复用,又需要重新开发代码,费时费力。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种与接口无关的虚拟以太网通信部件及其实现通信的方法,能在Linux内核下虚拟以太网接口,虚拟的以太网接口作为中间桥梁连接上层网络协议栈与物理接口,从而使得上层可利用Linux内核自带的网络协议栈进行通信,无需单独设计通信协议,不但降低了开发难度、缩短了开发周期,而且代码开发的可靠性、可维护性及可复用性高。
为达到以上目的,本发明采取的技术方案是:提供一种与接口无关的虚拟以太网通信部件,包括顺次相连的物理接口、物理接口驱动模块和虚拟以太网设备驱动模块;所述物理接口用于:提供物理通道进行数据收发;所述物理接口驱动模块用于:在Linux内核中控制所述物理接口按照标准定义的物理接口总线协议进行数据收发;所述虚拟以太网设备驱动模块用于:在Linux内核中注册为虚拟以太网设备;收发数据时,利用虚拟以太网设备虚拟出的以太网接口实现与上层网络协议栈、物理接口驱动模块的数据交互。
在上述技术方案的基础上,所述虚拟以太网设备驱动模块进行数据交互的过程包括:将网络协议栈传来的数据通过虚拟的以太网接口转发给物理接口驱动模块,或者将物理接口驱动模块传来的数据通过虚拟的以太网接口转发给网络协议栈。
在上述技术方案的基础上,所述虚拟以太网设备驱动模块包括注册子模块、发送子模块和接收子模块,注册子模块分别与发送子模块、接收子模块相连;
所述注册子模块用于:在Linux内核中注册虚拟以太网设备,并将发送子模块、接收子模块注册为该虚拟以太网设备的发送、接收部件;初始化缓冲区描述符表(BD表);
所述发送子模块用于:接收来自上层的网络协议栈的组包数据,将该组包数据通过虚拟的以太网接口转发给物理接口驱动模块;对BD表进行更新,并触发接收端的接收中断,通知接收端接收数据;
所述接收子模块用于:当接收中断被触发,数据通过物理接口到达本地后,通过轮训当前BD表中各条包状态,将所有接收到的组包数据通过虚拟的以太网接口转发给上层的网络协议栈,并对BD表进行更新。
在上述技术方案的基础上,所述虚拟以太网设备驱动模块还包括包缓存清理子模块,所述包缓存清理子模块与发送子模块相连,用于定期对发送完成的发送数据包缓存进行清理。
在上述技术方案的基础上,所述物理接口为I2C接口、SPI接口、UART接口、Ethernet接口或PCIe接口。
本发明还提供一种基于上述虚拟以太网通信部件的实现通信的方法,包括以下步骤:
步骤S1:发送端的虚拟以太网设备驱动模块接收到上层的网络协议栈发来的组包数据后,将该组包数据通过虚拟的以太网接口转发给物理接口驱动模块;物理接口驱动模块控制物理接口按照标准定义的物理接口总线协议将组包数据发送至接收端;
步骤S2:接收端的物理接口驱动模块将物理接口接收到组包数据上传给虚拟以太网设备驱动模块;虚拟以太网设备驱动部件通过虚拟的以太网接口将组包数据转发给接收端的上层的网络协议栈。
在上述技术方案的基础上,步骤S1具体包括以下操作:发送端的虚拟以太网设备驱动模块接收从网络协议栈发来的组包数据,当BD表的缓冲区状态不为满或不为未被清理状态,则虚拟以太网设备驱动模块通过虚拟的以太网接口将组包数据转发给物理接口驱动模块;物理接口驱动模块将组包数据地址映射到DMA内存空间,根据物理接口总线协议将DMA内存地址映射到接收端的物理接口空间;虚拟以太网设备驱动模块更新BD表缓冲区状态,将组包数据映射到DMA的内存地址写入BD表,将对应的包状态置为DIRTY,并触发接收端的接收中断,通知接收端接收数据;物理接口按照物理接口总线协议将组包数据发送至接收端的物理接口。
在上述技术方案的基础上,所述虚拟以太网设备驱动模块触发接收端的接收中断时,若接收端的物理接口没有对应的接收中断,则使用空闲的中断资源作为虚拟以太网设备的接收中断。
在上述技术方案的基础上,步骤S2具体包括以下操作:
步骤S201:组包数据到达接收端的物理接口后,物理接口驱动模块将物理接口接收到组包数据上传给虚拟以太网设备驱动模块,转入步骤S202;步骤S202:虚拟以太网设备驱动模块读取当前BD表,判断当前BD表中的一条数据包的包状态是否为DIRTY,若是,转入步骤S203;若则,结束;步骤S203:虚拟以太网设备驱动模块创建上层的网络协议栈所需的skbuff,通过DMA数据传输通道将物理接口的端口的数据填入skbuff,转入步骤S204;步骤S204:虚拟以太网设备驱动模块将含有接收数据的skbuff通过虚拟的以太网接口转发给上层的网络协议栈,转入步骤S205;步骤S205:虚拟以太网设备驱动模块更新BD表缓冲区状态,将BD表中的组包数据的内存地址清零,并将包状态置为FREE,转入步骤S206;步骤S206:判断是否为BD表中最后一条数据包,若是,结束;否则,获取BD表中下一条数据包的包状态,返回步骤S202。
在上述技术方案的基础上,在步骤S2之后,还包括清理发送的数据包的操作:步骤S301:发送端的虚拟以太网设备驱动模块检查当前BD表中的一条数据包的包状态是否为FREE,若是,转入步骤S302;否则,结束;步骤S302:释放BD表中对应的发送数据包缓冲区,转入步骤S303;步骤S303:判断当前物理接口中进行发送的端口是否为“忙状态”,若是,转入步骤S304;若否,转入步骤S305;步骤S304:清除“忙状态”标志位,转入步骤S305;步骤S305:判断是否为BD表中最后一条数据包,若是,结束;否则,获取BD表中下一条数据包的包状态,检查下一个发送数据包缓冲区状态,返回步骤S301。
本发明的有益效果在于:
1、本发明采用通用的虚拟以太网接口的设计思路,在Linux网络通信架构下,通过在Linux内核中加入与通信物理接口无关的虚拟以太网通信部件。该虚拟以太网通信部件中设置有虚拟以太网设备驱动模块,虚拟以太网设备驱动模块能在Linux内核中注册为虚拟以太网设备;收发数据时,能利用虚拟以太网设备虚拟出的以太网接口实现与上层网络协议栈、物理接口驱动模块的数据交互。该虚拟的以太网接口作为中间桥梁连接上层网络协议栈与物理接口,从而使得上层可利用Linux内核的网络协议栈,采用通用的tcp/ip协议完成可靠地网络通信,无需单独设计通信协议,进而使得代码的开发难度低、开发周期短;并且,由于虚拟以太网通信部件与具体的物理通信接口无关(可适用于任何种类的物理接口),因此,开发代码的可复用性高、可维护性强。
2、本发明中,虚拟以太网设备驱动模块中还设置有包缓存清理子模块,该模块能定期对发送完成的发送数据包缓存进行清理,不仅提高了发送缓存区的利用率,还有效避免了出现因缓存区数据充斥而无法正常处理的情况,保障了通信可靠性。
附图说明
图1为本发明实施例中与接口无关的虚拟以太网通信部件的结构框图;
图2为本发明实施例中基于虚拟以太网通信部件实现通信的方法的流程图;
图3为步骤S1的具体流程图;
图4为步骤S2的具体流程图;
图5为清理发送的数据包的操作流程图;
图6为核心扣板P2020与子卡MPC8308之间通过虚拟以太网通信部件实现通信的架构示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供一种与接口无关的虚拟以太网通信部件,包括通信使用的物理接口、物理接口驱动模块和虚拟以太网设备驱动模块,虚拟以太网设备驱动模块、物理接口驱动模块以及物理接口三者顺次相连。
其中,物理接口用于:提供物理通道进行数据收发。该物理接口可以是I2C、SPI、UART、Ethernet或PCIe等接口。
物理接口驱动模块用于:控制和驱动所述物理接口,在Linux内核中控制所述物理接口按照标准定义的物理接口总线协议进行数据收发。
虚拟以太网设备驱动模块用于:在Linux内核中注册为虚拟以太网设备;收发数据时,利用虚拟以太网设备虚拟出的以太网接口实现与上层网络协议栈、物理接口驱动模块的数据交互。可以理解的是,所述数据交互的过程包括:将网络协议栈传来的数据通过虚拟的以太网接口转发给物理接口驱动模块,或者将物理接口驱动模块传来的数据通过虚拟的以太网接口转发给网络协议栈。
进一步地,参见图1所示,所述虚拟以太网设备驱动模块包括注册子模块、发送子模块、接收子模块以及包缓存清理子模块,注册子模块分别与发送子模块、接收子模块相连,包缓存清理子模块与发送子模块相连;
其中,注册子模块用于:在Linux内核中注册虚拟以太网设备,并将发送子模块、接收子模块注册为该虚拟以太网设备的发送、接收部件;初始化缓冲区描述符表(以下简称BD表);
发送子模块用于:接收来自上层的网络协议栈的组包数据,将该组包数据通过虚拟的以太网接口转发给物理接口驱动模块;对BD表进行更新,并触发接收端的接收中断,通知接收端接收数据;
接收子模块用于:当接收中断被触发,数据通过物理接口到达本地后,通过轮训当前BD表中各条包状态,将所有接收到的组包数据通过虚拟的以太网接口转发给上层的网络协议栈,并对BD表进行更新;
包缓存清理子模块用于:定期对发送完成的发送数据包缓存进行清理。
参见图2所示,本发明实施例还提供一种基于上述虚拟以太网通信部件的实现通信的方法,包括以下步骤:
步骤S1、数据的发送:作为发送端的虚拟以太网设备驱动模块接收到上层的网络协议栈发来的组包数据后,将该组包数据通过虚拟的以太网接口转发给物理接口驱动模块;物理接口驱动模块控制物理接口按照标准定义的物理接口总线协议将组包数据发送至接收端;
步骤S2、数据的接收:作为接收端的物理接口驱动模块将物理接口接收到组包数据上传给虚拟以太网设备驱动模块;虚拟以太网设备驱动部件通过虚拟的以太网接口将组包数据转发给接收端的上层的网络协议栈。
实际操作时,参见图3所示,步骤S1具体包括以下操作:
步骤S101:作为发送端的虚拟以太网设备驱动模块接收从上层的网络协议栈发来的组包数据,转入步骤S102。
步骤S102:虚拟以太网设备驱动模块检测当前BD表的缓冲区状态,若缓冲区状态为满或未被清理,则返回“忙状态”,结束(即不进行数据的发送);否则,转入步骤S103。
步骤S103:虚拟以太网设备驱动模块通过虚拟的以太网接口将组包数据转发给物理接口驱动模块,转入步骤S104。
步骤S104:物理接口驱动模块将组包数据地址映射到DMA(DirectMemoryAccess,直接内存存取)内存空间,根据物理接口总线协议将DMA内存地址映射到接收端的物理接口空间,转入步骤S105。
步骤S105:虚拟以太网设备驱动模块更新BD表缓冲区状态,将组包数据映射到DMA的内存地址写入BD表,并将对应的包状态置为DIRTY;更新虚拟以太网设备的发包数量及时间;触发接收端的接收中断,通知接收端接收数据。可以理解的是,虚拟以太网设备驱动模块触发接收端的接收中断时,若接收端的物理接口没有对应的接收中断,则使用空闲的中断资源(如定时器中断)作为虚拟以太网设备的接收中断,即虚拟以太网设备驱动模块触发接收端空闲的中断资源。
步骤S106:物理接口按照物理接口总线协议将组包数据发送至接收端的物理接口。
参见图4所示,步骤S2具体包括以下操作:
步骤S201:组包数据到达接收端的物理接口后(接收端的接收中断被触发,表明组包数据已到达接收端的物理接口),物理接口驱动模块将物理接口接收到组包数据上传给虚拟以太网设备驱动模块,转入步骤S202;
步骤S202:虚拟以太网设备驱动模块读取当前BD表,判断当前BD表中的一条数据包的包状态是否为DIRTY,若是,转入步骤S203;若则,结束;
步骤S203:虚拟以太网设备驱动模块创建上层的网络协议栈所需的skbuff(Linux内核中的重要数据结构),通过DMA数据传输通道将物理接口的端口的数据填入skbuff,转入步骤S204;
步骤S204:虚拟以太网设备驱动模块将含有接收数据的skbuff通过虚拟的以太网接口转发给上层的网络协议栈,转入步骤S205;
步骤S205:虚拟以太网设备驱动模块更新BD表缓冲区状态,将BD表中的组包数据的内存地址清零,并将包状态置为FREE;更新虚拟以太网设备的收包数量及时间,转入步骤S206;
步骤S206:判断是否为BD表中最后一条数据包,若是,结束;否则,获取BD表中下一条数据包的包状态,返回步骤S202。
更进一步地,为了提高发送缓存区的利用率,避免出现因缓存区数据充斥而无法正常处理的情况。在步骤S2之后,还包括清理发送的数据包的操作,如图5所示:
步骤S301:发送端的虚拟以太网设备驱动模块检查当前BD表中的一条数据包的包状态是否为FREE,若是,转入步骤S302;否则,结束;
步骤S302:释放BD表中对应的发送数据包缓冲区,转入步骤S303;
步骤S303:判断当前物理接口中进行发送的端口是否为“忙状态”,若是,转入步骤S304;若否,转入步骤S305;
步骤S304:清除“忙状态”标志位,转入步骤S305;
步骤S305:判断是否为BD表中最后一条数据包,若是,结束;否则,获取BD表中下一条数据包的包状态,检查下一个发送数据包缓冲区状态,返回步骤S301。
为了更好地理解本发明的方法,下面以FreeScale平台的核心扣板P2020与子板MPC8308之间的通信为例对本发明做进一步说明。
本应用场景中,核心扣板P2020与子卡MPC8308的内部均设备有本发明的虚拟以太网通信部件。其中,核心扣板P2020与子卡MPC8308均采用Linux操作系统,两者的物理接口为PCIe接口,物理接口总线协议为PCIe协议,即在物理层通过PCIe接口相连,按照PCIe协议进行通信。
参见图6所示,在核心扣板P2020与子卡MPC8308中,虚拟以太网设备驱动模块位于Linux内核的网络协议栈和PCIe接口驱动模块(即物理接口驱动模块)之间。
发送数据时,核心扣板P2020或子卡MPC8308的虚拟以太网设备驱动模块接收来自网络协议栈的组包数据;该虚拟以太网设备驱动模块将该组包数据通过虚拟的以太网接口转发给本板卡内的PCIe接口驱动模块;本板卡内的PCIe接口驱动模块控制本板卡内的PCIe接口(即物理接口)按照PCIe协议,将组包数据包通过发送给对端的子卡MPC8308或核心扣板P2020。接收数据时,核心扣板P2020或子卡MPC8308的物理接口接收到数据包后,本板卡内的PCIe接口驱动模块将数据包上传给虚拟以太网设备驱动模块;虚拟以太网设备驱动部件通过虚拟的以太网接口将数据包转发给Linux内核的网络协议栈。通过上述通信方法,核心扣板P2020与子卡MPC8308之间能完成点对点通信,且实现通信时无需关心物理层的物理接口具体是哪种接口,通过虚拟以太网设备驱动模块虚拟出的以太网接口实现与上层网络协议栈、物理接口驱动模块的数据交互。该虚拟的以太网接口作为中间桥梁连接上层网络协议栈与物理接口,从而使得上层可利用Linux内核的网络协议栈,采用通用的tcp/ip协议完成可靠地网络通信,无需单独设计通信协议,进而使得代码的开发难度低、开发周期短;并且,由于虚拟以太网通信部件与具体的物理通信接口无关(可适用于任何种类的物理接口),因此,开发代码的可复用性高、可维护性强。
进一步地,对于上述子卡MPC8308来说,虚拟以太网设备驱动模块中的注册子模块在实现时,可采用Linux系统的网络设备驱动注册函数;虚拟以太网设备驱动模块加载时,调用上述注册函数在系统中注册一个以太网设备,用来接收和发送数据包。具体实现时,所述注册函数会分配以太网设备结构用来保存相关以太网设备信息,向操作系统注册以太网设备,提供当前以太网设备的一系列回调函数(主要是具体执行发送部件和接收部件功能的函数)给操作系统调用。
Linux操作系统加载以太网设备完成后,可以启动以太网设备。由于所述以太网设备是虚拟的,没有实际的硬件寄存器和中断,所以不存在“启动”这个动作。但是,没有中断就不知道何时可以接收对端以太网设备发来的数据包,本发明中使用空闲的中断资源(定时器中断)来作为虚拟以太网设备的接收中断。具体实施是在注册虚拟以太网设备时,对定时器进行初始化。当对端核心扣板P2020发送数据包时,主动触发子卡MPC8308定时器中断,当子卡MPC8308定时器中断被触发,表明数据已到达PCIe接口,开始准备接收数据。
具体实现接收子模块时,本实施例采用一个轮询函数,用来处理接收到的所有数据包。具体实施如步骤S2的详述部分。具体实现发送子模块时,可采用一个发送函数实现,操作系统会调用注册的回调函数来发送数据给虚拟以太网设备驱动模块。
另外,本实施例中,发送子模块发送完数据后需要释放协议栈的数据包缓存。由于以太网设备是虚拟的,没有实际的硬件寄存器和发送完成中断,也就无法知晓何时需对数据包缓存进行清理。本发明在虚拟以太网设备驱动模块中创建一个发送完成的内核线程,即包缓存清理子模块。该模块能定时轮询BD表数据包状态,一旦数据包状态是FREE,则对BD表中对应的数据包缓存进行释放。
对于上述核心扣板P2020来说,其中的虚拟以太网通信部件与子卡MPC8308大体相同,唯一区别在于P2020作为PCIe接口的主设备,不需要自行指定接收中断,在PCIe总线协议中存在PCIe接口的接收中断,可利用该中断提醒CPU准备接收数据。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (10)
1.一种与接口无关的虚拟以太网通信部件,其特征在于:包括顺次相连的物理接口、物理接口驱动模块和虚拟以太网设备驱动模块;
所述物理接口用于:提供物理通道进行数据收发;
所述物理接口驱动模块用于:在Linux内核中控制所述物理接口按照标准定义的物理接口总线协议进行数据收发;
所述虚拟以太网设备驱动模块用于:在Linux内核中注册为虚拟以太网设备;收发数据时,利用虚拟以太网设备虚拟出的以太网接口实现与上层网络协议栈、物理接口驱动模块的数据交互。
2.如权利要求1所述的与接口无关的虚拟以太网通信部件,其特征在于:所述虚拟以太网设备驱动模块进行数据交互的过程包括:将网络协议栈传来的数据通过虚拟的以太网接口转发给物理接口驱动模块,或者将物理接口驱动模块传来的数据通过虚拟的以太网接口转发给网络协议栈。
3.如权利要求1所述的与接口无关的虚拟以太网通信部件,其特征在于:所述虚拟以太网设备驱动模块包括注册子模块、发送子模块和接收子模块,注册子模块分别与发送子模块、接收子模块相连;
所述注册子模块用于:在Linux内核中注册虚拟以太网设备,并将发送子模块、接收子模块注册为该虚拟以太网设备的发送、接收部件;初始化BD表;
所述发送子模块用于:接收来自上层的网络协议栈的组包数据,将该组包数据通过虚拟的以太网接口转发给物理接口驱动模块;对BD表进行更新,并触发接收端的接收中断,通知接收端接收数据;
所述接收子模块用于:当接收中断被触发,数据通过物理接口到达本地后,通过轮训当前BD表中各条包状态,将所有接收到的组包数据通过虚拟的以太网接口转发给上层的网络协议栈,并对BD表进行更新。
4.如权利要求3所述的与接口无关的虚拟以太网通信部件,其特征在于:所述虚拟以太网设备驱动模块还包括包缓存清理子模块,所述包缓存清理子模块与发送子模块相连,用于定期对发送完成的发送数据包缓存进行清理。
5.如权利要求1至4中任一项所述的与接口无关的虚拟以太网通信部件,其特征在于:所述物理接口为I2C接口、SPI接口、UART接口、Ethernet接口或PCIe接口。
6.一种基于权利要求1所述虚拟以太网通信部件的实现通信的方法,其特征在于,包括以下步骤:
步骤S1:发送端的虚拟以太网设备驱动模块接收到上层的网络协议栈发来的组包数据后,将该组包数据通过虚拟的以太网接口转发给物理接口驱动模块;物理接口驱动模块控制物理接口按照标准定义的物理接口总线协议将组包数据发送至接收端;
步骤S2:接收端的物理接口驱动模块将物理接口接收到组包数据上传给虚拟以太网设备驱动模块;虚拟以太网设备驱动部件通过虚拟的以太网接口将组包数据转发给接收端的上层的网络协议栈。
7.如权利要求6所述的虚拟以太网通信部件实现通信的方法,其特征在于,步骤S1具体包括以下操作:
发送端的虚拟以太网设备驱动模块接收从网络协议栈发来的组包数据;当BD表的缓冲区状态不为满或不为未被清理状态,则虚拟以太网设备驱动模块通过虚拟的以太网接口将组包数据转发给物理接口驱动模块;
物理接口驱动模块将组包数据地址映射到DMA内存空间,根据物理接口总线协议将DMA内存地址映射到接收端的物理接口空间;
虚拟以太网设备驱动模块更新BD表缓冲区状态,将组包数据映射到DMA的内存地址写入BD表,将对应的包状态置为DIRTY;并触发接收端的接收中断,通知接收端接收数据;
物理接口按照物理接口总线协议将组包数据发送至接收端的物理接口。
8.如权利要求7所述的虚拟以太网通信部件实现通信的方法,其特征在于:所述虚拟以太网设备驱动模块触发接收端的接收中断时,若接收端的物理接口没有对应的接收中断,则使用空闲的中断资源作为虚拟以太网设备的接收中断。
9.如权利要求7所述的虚拟以太网通信部件实现通信的方法,其特征在于,步骤S2具体包括以下操作:
步骤S201:组包数据到达接收端的物理接口后,物理接口驱动模块将物理接口接收到组包数据上传给虚拟以太网设备驱动模块,转入步骤S202;
步骤S202:虚拟以太网设备驱动模块读取当前BD表,判断当前BD表中的一条数据包的包状态是否为DIRTY,若是,转入步骤S203;若则,结束;
步骤S203:虚拟以太网设备驱动模块创建上层的网络协议栈所需的skbuff,通过DMA数据传输通道将物理接口的端口的数据填入skbuff,转入步骤S204;
步骤S204:虚拟以太网设备驱动模块将含有接收数据的skbuff通过虚拟的以太网接口转发给上层的网络协议栈,转入步骤S205;
步骤S205:虚拟以太网设备驱动模块更新BD表缓冲区状态,将BD表中的组包数据的内存地址清零,并将包状态置为FREE,转入步骤S206;
步骤S206:判断是否为BD表中最后一条数据包,若是,结束;否则,获取BD表中下一条数据包的包状态,返回步骤S202。
10.如权利要求7所述的虚拟以太网通信部件实现通信的方法,其特征在于,在步骤S2之后,还包括清理发送的数据包的操作:
步骤S301:发送端的虚拟以太网设备驱动模块检查当前BD表中的一条数据包的包状态是否为FREE,若是,转入步骤S302;否则,结束;
步骤S302:释放BD表中对应的发送数据包缓冲区,转入步骤S303;
步骤S303:判断当前物理接口中进行发送的端口是否为“忙状态”,若是,转入步骤S304;若否,转入步骤S305;
步骤S304:清除“忙状态”标志位,转入步骤S305;
步骤S305:判断是否为BD表中最后一条数据包,若是,结束;否则,获取BD表中下一条数据包的包状态,检查下一个发送数据包缓冲区状态,返回步骤S301。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610288955.0A CN105812225B (zh) | 2016-05-04 | 2016-05-04 | 与接口无关的虚拟以太网通信部件及其实现通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610288955.0A CN105812225B (zh) | 2016-05-04 | 2016-05-04 | 与接口无关的虚拟以太网通信部件及其实现通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105812225A true CN105812225A (zh) | 2016-07-27 |
CN105812225B CN105812225B (zh) | 2019-03-15 |
Family
ID=56456203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610288955.0A Active CN105812225B (zh) | 2016-05-04 | 2016-05-04 | 与接口无关的虚拟以太网通信部件及其实现通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105812225B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108199976A (zh) * | 2017-12-28 | 2018-06-22 | 天津芯海创科技有限公司 | RapidIO网络的交换设备、交换系统和数据发送方法 |
CN109150747A (zh) * | 2017-06-15 | 2019-01-04 | 中兴通讯股份有限公司 | 一种变更业务带宽的方法、装置及计算机可读存储介质 |
CN109408419A (zh) * | 2018-10-11 | 2019-03-01 | 湖南理工学院 | Dsp硬件抽象层和dsp处理器 |
CN110311843A (zh) * | 2018-03-27 | 2019-10-08 | 北京深鉴智能科技有限公司 | 基于PCIe链路的通信方法、装置、电子设备、存储介质 |
CN110830530A (zh) * | 2018-08-09 | 2020-02-21 | 中国电信股份有限公司 | 实现对下挂终端镜像处理的方法、系统和边缘网关设备 |
CN113468090A (zh) * | 2020-03-30 | 2021-10-01 | 浙江宇视科技有限公司 | 一种PCle通信方法、装置、电子设备及可读存储介质 |
CN114205848A (zh) * | 2021-12-08 | 2022-03-18 | 深圳技德智能科技研究院有限公司 | 虚拟wifi上网方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859112A (zh) * | 2006-01-19 | 2006-11-08 | 华为技术有限公司 | 虚拟以太网设备数据传送装置及数据传送方法 |
CN101909074A (zh) * | 2010-06-17 | 2010-12-08 | 中兴通讯股份有限公司 | 一种网络接入设备及不同物理媒介间实现数据转发的方法 |
-
2016
- 2016-05-04 CN CN201610288955.0A patent/CN105812225B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859112A (zh) * | 2006-01-19 | 2006-11-08 | 华为技术有限公司 | 虚拟以太网设备数据传送装置及数据传送方法 |
CN101909074A (zh) * | 2010-06-17 | 2010-12-08 | 中兴通讯股份有限公司 | 一种网络接入设备及不同物理媒介间实现数据转发的方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109150747A (zh) * | 2017-06-15 | 2019-01-04 | 中兴通讯股份有限公司 | 一种变更业务带宽的方法、装置及计算机可读存储介质 |
CN109150747B (zh) * | 2017-06-15 | 2023-01-10 | 中兴通讯股份有限公司 | 一种变更业务带宽的方法、装置及计算机可读存储介质 |
CN108199976B (zh) * | 2017-12-28 | 2021-05-04 | 天津芯海创科技有限公司 | RapidIO网络的交换设备、交换系统和数据发送方法 |
CN108199976A (zh) * | 2017-12-28 | 2018-06-22 | 天津芯海创科技有限公司 | RapidIO网络的交换设备、交换系统和数据发送方法 |
CN110311843A (zh) * | 2018-03-27 | 2019-10-08 | 北京深鉴智能科技有限公司 | 基于PCIe链路的通信方法、装置、电子设备、存储介质 |
CN110311843B (zh) * | 2018-03-27 | 2022-06-28 | 赛灵思公司 | 基于PCIe链路的通信方法、装置、电子设备、存储介质 |
CN110830530A (zh) * | 2018-08-09 | 2020-02-21 | 中国电信股份有限公司 | 实现对下挂终端镜像处理的方法、系统和边缘网关设备 |
CN109408419B (zh) * | 2018-10-11 | 2020-11-13 | 湖南理工学院 | Dsp硬件抽象层和dsp处理器 |
CN109408419A (zh) * | 2018-10-11 | 2019-03-01 | 湖南理工学院 | Dsp硬件抽象层和dsp处理器 |
CN113468090A (zh) * | 2020-03-30 | 2021-10-01 | 浙江宇视科技有限公司 | 一种PCle通信方法、装置、电子设备及可读存储介质 |
CN113468090B (zh) * | 2020-03-30 | 2024-04-05 | 浙江宇视科技有限公司 | 一种PCIe通信方法、装置、电子设备及可读存储介质 |
CN114205848A (zh) * | 2021-12-08 | 2022-03-18 | 深圳技德智能科技研究院有限公司 | 虚拟wifi上网方法、装置、计算机设备和存储介质 |
CN114205848B (zh) * | 2021-12-08 | 2024-01-09 | 深圳技德智能科技研究院有限公司 | 虚拟wifi上网方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105812225B (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105812225A (zh) | 与接口无关的虚拟以太网通信部件及其实现通信的方法 | |
US20200174953A1 (en) | Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link | |
US9934181B2 (en) | PCI express tunneling over a multi-protocol I/O interconnect | |
EP3042298B1 (en) | Universal pci express port | |
CN106155960A (zh) | 基于gpio握手和edma的uart串口通信方法 | |
JP5475069B2 (ja) | 統一コネクタアーキテクチャ | |
US20020091826A1 (en) | Method and apparatus for interprocessor communication and peripheral sharing | |
CN103312601A (zh) | 用户态到内核态的数据报文处理方法 | |
WO2013101678A1 (en) | Multi-protocol i/o interconnect flow control | |
CN101620551A (zh) | 一种面向多虚拟机应用的网卡中断控制方法 | |
CN108028788A (zh) | 在lan接口重置期间活动的链路 | |
CN101567873B (zh) | 一种多任务并行处理方法及系统 | |
WO2001067713A1 (en) | A packet format independent computer network controller | |
JP2012515960A (ja) | デバイスの複数のコンポーネント間でメモリ資源を共有するための通信プロトコル | |
CN101087256B (zh) | 报文传输方法及系统 | |
CN100391150C (zh) | 数据传送装置及数据传送方法 | |
CN102890661A (zh) | 一种主从机通讯协议 | |
CN112311694B (zh) | 一种优先级调整方法及装置 | |
CN112346878A (zh) | 信息处理系统、中继装置及程序 | |
CN113794713B (zh) | Fc-ae-1553协议桥接mil-std-1553和uart的通讯处理方法 | |
CN106294235A (zh) | 一种基于轮询/中断的实时虚拟无线电数据的同步方法 | |
WO2012044050A2 (en) | Apparatus and method for saving power of usb device | |
CN105323139B (zh) | 一种用于虚拟交换机系统的虚拟链路协商方法 | |
JP6979913B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
CN101867510A (zh) | 板级双系统互联方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |