CN115378921A - 基于raw的网络构架及数据传输方法 - Google Patents
基于raw的网络构架及数据传输方法 Download PDFInfo
- Publication number
- CN115378921A CN115378921A CN202210947832.9A CN202210947832A CN115378921A CN 115378921 A CN115378921 A CN 115378921A CN 202210947832 A CN202210947832 A CN 202210947832A CN 115378921 A CN115378921 A CN 115378921A
- Authority
- CN
- China
- Prior art keywords
- network
- packet
- data packet
- application program
- function
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2885—Hierarchically arranged intermediate devices, e.g. for hierarchical caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种基于RAW的网络构架,包括PHY层、MAC层、网络驱动层和应用程序;网络驱动层包括用于提供给应用程序进行直接调用的函数接口;应用程序通过调用函数接口实现与MAC层间直接对接进行网络数据包的收发。函数接口包括:数据写函数,用于实现应用程序将待发送的网络数据包直接写入MAC层的缓存区,以通过PHY层发送;数据读函数,用于实现应用程序直接读取MAC层的缓存区所缓存的通过PHY层接收的网络数据包;中断函数,用于实现上层应用程序进行网络数据包的直接写入或直接读取过程中的控制。还提供了应用于上述网络构架中的数据传输方法。本申请可以提高使用RAW网络进行通信的应用程序收发网络数据包的实时性。
Description
技术领域
本申请涉及属于网络通信技术领域,尤其涉及一种基于RAW的网络构架及数据传输方法。
背景技术
工业级网络操作系统的RAW网络收发包架构层次分明、下层一般包括物理(Physical,PHY)层、媒体接入控制(Medium Access Control,MAC)层、上层包括操作系统及应用程序,应用程序的收发包需以操作系统任务方式实现。
例如,应用程序发包的阶段包括:应用程序将对应的数据填充到操作系统提供的发包任务队列,然后操作系统的发包任务调用底层的函数,将数据传输到底层,以进一步传输到网络。
又如,应用程序收包的阶段包括:通过底层接收网络数据包,操作系统运行的收包任务获知后,通过调用函数将底层的网络数据包放入操作系统提供的收包任务队列,收包任务队列中的网络数据包再提供给上层应用程序。
由于收发包都是基于以操作系统任务方式实现,此时就会涉及任务优先级问题,例如,当应用程序需要高优先级来收发包的时候,但是操作系统若此时分配的收发包任务的优先级较低,就会影响使用RAW网络进行通信的应用程序收发网络数据包的实时性。例如,影响类似EtherCAT主站等对实时性要求较高的应用业务的实时性的性能。
发明内容
鉴于现有技术的以上问题,本申请提供一种基于RAW的网络构架及数据传输方法,可以提高使用RAW网络进行通信的应用程序收发网络数据包的实时性。
为达到上述目的,本申请第一方面提供了一种基于RAW的网络构架,依次包括PHY层、MAC层、网络驱动层和应用程序;
所述网络驱动层包括用于提供给应用程序进行直接调用的函数接口;
所述应用程序通过调用所述函数接口实现与所述MAC层间直接对接进行网络数据包的收发。
由上,上层应用程序通过直接调用所述函数接口,实现与所述MAC层间直接对接,进行网络数据包的收发,旁路了操作系统的任务队列机制,从而提高了网络收发包的实时性。
作为第一方面的一种可能的实现方式,所述函数接口包括:
数据写函数,用于实现应用程序将待发送的网络数据包直接写入MAC层的缓存区,以通过PHY层发送;
数据读函数,用于实现应用程序直接读取MAC层的缓存区所缓存的通过PHY层接收的网络数据包;
中断函数,用于实现上层应用程序进行所述网络数据包的所述直接写入或所述直接读取过程中的控制。
由上,网络驱动层的上述三个接口函数,用于提供给上层应用程序进行调用。当上层应用程序在收发包时,通过上层应用程序调用本申请上述数据读写函数,并通过应用程序调用上述中断函数控制数据的收发过程,实现网络数据包直接在应用程序与MAC层之间的传输,旁路了操作系统的任务队列机制,从而提高了网络收发包的实时性。
作为第一方面的一种可能的实现方式,所述MCA层还包括DMA模块,用于将来自PHY层的网络数据包写入所述缓存区,或将所述缓存区中的来自应用程序的网络数据包读出给PHY层,及用于在进行对所述缓存区的读写过程中,产生提供给所述中断函数的中断信号。
由上,MAC层可具体通过DMA模块产生所述中断信号。
作为第一方面的一种可能的实现方式,所述应用程序包括:发包函数,用于应用程序发送网络数据包时通过该发包函数调用所述数据写函数;或收包函数,用于应用程序接收网络数据包时通过该收包函数调用所述数据读函数。
由上,通过应用程序的该发包函数和收包函数,可与本申请数据写函数、数据读函数对接。
本申请第二方面提供了一种数据传输方法,应用于第一方面任意一项所述的网络构架中,所述方法包括:
由PHY层接收网络数据包;
由MAC层从PHY层获取所述网络数据包并写入缓存区,及产生一中断信号,所述中断信号用于表示网络数据包已写入缓存区;
由应用程序获取到所述中断信号后,将MAC层的所述缓存区中的所述网络数据包直接读出。
由上,在应用程序接收网络数据包过程中,应用程序可将MAC层的所述缓存区中的所述网络数据包直接读出,旁路了操作系统的任务队列机制,从而提高了网络收发包的实时性。
作为第二方面的一种可能的实现方式,所述由应用程序获取到所述中断信号后,将MAC层的所述缓存区中的所述网络数据包直接读出,包括:由应用程序调用中断函数获取到所述中断信号后,由应用程序调用数据读函数将MAC层的所述缓存区中的所述网络数据包直接读出。
由上,可由应用程序调用中断函数获取到所述中断信号后,由应用程序调用数据读函数将MAC层的所述缓存区中的所述网络数据包直接读出。具体的一个例子是,可由应用程序通过驱动层的中断函数收到该中断信号后,通过应用程序的收包函数调用驱动层的数据读函数,直接操作MAC层的收包缓存区(或称为收包描述符),将MAC层的收包缓存区的网络数据包直接读出。其中,通过应用程序的收包函数与驱动层的数据读函数实现了应用程序与MAC缓存区接口的对接。
作为第二方面的一种可能的实现方式,所述由MAC层从PHY层获取所述网络数据包并写入缓存区,及产生一中断信号,包括:
由MAC层的DMA模块将从PHY层获取的网络数据包写入缓存区,及产生所述中断信号。
本申请第三方面提供了一种数据传输方法,应用于第一方面任意一项所述的网络构架中,所述方法包括:
由应用程序将所要发送的网络数据包直接写入MAC层的缓存区;
由MAC层将缓存区中的所述网络数据包读出并发送给PHY层,及产生一中断信号,所述中断信号用于表示网络数据包已读出缓存区;
由PHY层将所述网络数据包发送出去。
由上,在应用程序发送网络数据包过程中,应用程序可将所要发送的网络数据包直接写入MAC层的缓存区,旁路了操作系统的任务队列机制,从而提高了网络收发包的实时性。
作为第三方面的一种可能的实现方式,所述由应用程序将所要发送的网络数据包直接写入MAC层的缓存区,包括:由应用程序调用数据写函数,将所要发送的网络数据包直接写入MAC层的所述缓存区。
由上,可以由应用程序调用数据写函数,将所要发送的网络数据包直接写入MAC层的所述缓存区。具体的一个例子是,可由应用程序的发包函数调用驱动层的数据写函数,直接操作MAC层的收包缓存区(或称为收包描述符),将要发送的网络数据包直接写入MAC层的发包缓存区。其中,通过应用程序的发包函数与驱动层的数据写函数实现了应用程序与MAC缓存区接口的对接。
作为第三方面的一种可能的实现方式,所述由MAC层将缓存区中的所述网络数据包读出并发送给PHY层,及产生一中断信号,包括:由MAC层的DMA模块将所述网络数据包从缓存区中读出并发送给PHY层,及产生所述中断信号。
本申请第四方面提供了一种计算设备,处理器,以及存储器,存储器上存储有程序指令,所述程序指令当被所述处理器执行时使得所述处理器执行第二方面任意一项所述的方法,或所述程序指令当被所述处理器执行时使得所述处理器执行第三方面任意一项所述的方法。
本申请第五方面提供了一种计算机存储介质,其上上存储有程序指令,所述程序指令当被处理器执行时使得所述处理器执行第二方面任意一项所述的方法,或所述程序指令当被处理器执行时使得所述处理器执行第三方面任意一项所述的方法。
综上所述,本发明可以有效的优化工业级网络操作系统的RAW网络收发包模块,使工业级网络操作系统的RAW网络收发包的实时性得到较大的提升。有实时性较高需求的应用程序,例如EtherCAT主站可以直接使用本申请方案来进行收发包处理,满足应用程序对网络的高实时性需求,可以显著的提高例如EtherCAT主站等搞实时要求业务程序的性能。
附图说明
图1a为一种工业级的网络操作系统的RAW网络收发包架构的示意图;
图1b为图1a所示架构下进行RAW网络收包流程的示意图;
图1c为图1a所示架构下进行RAW网络发包流程的示意图;
图2a为本申请实施例提供的基于RAW的网络构架的示意图;
图2b为本申请实施例提供的图2a所示架构下进行RAW网络收包流程的示意图;
图2c为本申请实施例提供的图2a所示架构下进行RAW网络发包流程的示意图;
图3为本申请实施例提供的一种计算设备的结构性示意性图。
应理解,上述结构示意图中,各框图的尺寸和形态仅供参考,不应构成对本发明实施例的排他性的解读。结构示意图所呈现的各框图间的相对位置和包含关系,仅为示意性地表示各框图间的结构关联,而非限制本发明实施例的物理连接方式。
具体实施方式
下面结合附图并举实施例,对本申请提供的技术方案作进一步说明。应理解,本申请实施例中提供的系统结构和业务场景主要是为了说明本申请的技术方案的可能的实施方式,不应被解读为对本申请的技术方案的唯一限定。本领域普通技术人员可知,随着系统结构的演进和新业务场景的出现,本申请提供的技术方案对类似技术问题同样适用。
应理解,本申请实施例提供的基于RAW的网络构架及数据传输方法,包括基于RAW的网络构架、数据传输方法、计算设备、存储介质。由于这些技术方案解决问题的原理相同或相似,在如下具体实施例的介绍中,某些重复之处可能不再赘述,但应视为这些具体实施例之间已有相互引用,可以相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。如有不一致,以本说明书中所说明的含义或者根据本说明书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。为了准确地对本申请中的技术内容进行叙述,以及为了准确地理解本发明,在对具体实施方式进行说明之前先对本说明书中所使用的术语给出如下的解释说明或定义:
1)确定性网络:或称为可靠性和可用性网络(Reliable and AvailableWireless,RAW)。RAW网络可以解决低丢包、低时延等工业互联网的需求,支持需要高可靠性和可用性的应用程序。
2)媒体接入控制(Medium Access Control,MAC)层:包括DMA模块、以及DMA模块直接操作的缓存区(buffer)。
DAM模块通过操作buffer将网络数据包写入或读出buffer,其中根据网络数据包的收发,可以分为收包缓存区(rx buffer)、发包缓存区(tx buffer),该收/发包缓存区(rx/tx buffer)也可以称为收发包描述符(rx/tx descriptor)。其中,缓存区可为环状缓存区(ring buffer)。
3)物理(Physical,PHY)层:用于电信号与bit流之间的转换。
4)介质无关接口(Media Independent interface,MII):是MAC层与PHY层之间的数据接口标准。
基于MII接口衍生出有系列接口,包括:简化MII(Reduced MII,RMII)、串行MII(Serial MII,SMII)、串行同步MII(Serial Sync MII,SSMII)、千兆MII(Gigabit MII,GMII)、简化千兆MII接口(Reduced GMII,RGMII)等。如无特别说明,本申请实施例中所使用的MII接口,可以为MII接口及其衍生出的系列接口中的任意之一。
5)以太网控制自动化技术(Ether Control Automation Technology,EtherCAT):是一个开放架构,以以太网为基础的现场总线系统。EtherCAT是一种高实时的、确定性的工业以太网。EtherCAT分为主站和从站,EtherCAT从站一般是通过专门的EtherCAT从站控制器(EtherCAT Slave Controller,ESC)芯片来实现数据收发,可以达到高实时的硬件级响应(可达微秒级时延)。而EtherCAT主站则完全由软件去实现,EtherCAT主站对于操作系统(OS)来说,本质上相当于操作系统上的一个不断进行网络收发包的应用,故操作系统以及操作系统的网络收发包任务的实时性极大的影响着EtherCAT主站的性能。
如图1a示出了一种工业级的网络操作系统的RAW网络收发包架构,底层包括PHY层及MAC层,MAC层上面为上层,包括OS与应用程序,其中应用程序运行于该OS上,应用程序进行网络收发包时,需借助于OS的网络收发任务实现,下面结合图1b、图1c,对基于图1a的架构下的网络收发包过程进行具体介绍:
如图1b示出了图1a所示架构下进行RAW网络收包流程的示意图,包括以下步骤S111-S119:
S111:网络数据包通过网线经RJ45接口传到PHY层,PHY层执行网络数据包的模数转换,即电信号到比特流的转换。
S113:PHY层通过MII接口将网络数据包由PHY层传到MAC层,由MAC层的DMA将网络数据包写入收包缓存区(rx buffer),即写入收包描述符(rx descriptor),并向上层发中断信号通知网络数据包的到来。其中,该中断信号可称为写中断信号,表示数据包已写入缓存区。
S115:操作系统收到写中断信号后,通过收包任务(netif_isr_task_routine)调用网络驱动的netif_input函数读取MAC的收包缓存区。
其中,当MAC收到网络数据包并写入收包缓存区,对应的地址会缓存。netif_input函数通过访问缓存获得网络数据包在收包缓存区中的地址,据此地址从收包缓存区读取网络数据包。
S117:读取的网络数据包会被操作系统的网络协议栈low_level_input函数收到网络协议栈中,并保存到收包消息队列中。
S119:操作系统上的应用程序通过read函数读网络数据包,该read函数调用操作系统的nic_raw_socket_read函数从收包消息队列中读取网络数据包。
其中,该nic_raw_socket_read函数会返回应用程序该网络数据包的长度,以使应用程序通过read函数读取对应长度的网络数据包。
如图1c示出了图1a所示架构下进行RAW网络发包流程的示意图,包括以下步骤S121-S129:
S121:应用程序通过write函数发网络数据包,该write函数调用操作系统的nic_raw_socket_write函数将网络数据包填充到发包消息队列。
S123:操作系统通过发包任务(adapter_send_task)获取发包队列中的网络数据包。
S125:操作系统的adapter_send_task会调用nic_write_protect函数去执行发网络数据包,nic_write_protect函数调用网络驱动的nic_write函数,将网络数据包写入MAC层的发包缓存区(tx buffer)中,即写入发包描述符(tx descriptor)中。
S127:由MAC层的DMA将网络数据包从发包缓存区读出,通过MII接口发送至PHY层,并向上层反馈中断信号,通知进行发包缓存区缓存数据的清理和网络数据包的继续写入。其中,该中断信号可称为读中断信号,表示数据包已读出缓存区。
S129:PHY层执行网络数据包的数模转换,即比特流到电信号的转换,并经RJ45接口传输到网线。
由上示出的RAW网络收/发包流程可以看出,该方案中的收发网络数据包过程,均是基于操作系统任务的方式实现,因此就会涉及任务优先级问题,当应用程序需要高优先级来收发网络数据包的时候,但是操作系统若此时分配的收发网络数据包任务的优先级较低,就会影响使用RAW网络进行通信的应用程序收发网络数据包的实时性。下面,以应用程序为EtherCAT主站为例,对此问题进行说明:
EtherCAT主站程序对实时性要求很高(微秒级时延),一般该EtherCAT主站程序中设定收发网络数据包为最高优先级。通常操作系统会有自己的任务优先级列表,其中的网络的收发网络数据包任务优先级一般会被操作系统设定为5(非最高级),一般为秒级,远远大于毫秒级,这就导致操作系统中的收发网络数据包任务低优先级不能匹配EtherCAT主站程序中设定的高优先级,从而影响EtherCAT主站程序的实时性。
由此,本申请实施例提供了改进的方案,具体提供了一种基于RAW的网络构架及数据传输方法,本申请实施例提供的基于RAW的网络构架,直接在网络驱动层提供给应用层进行直接调用的函数接口,例如实现RAW网络收发包的应用程序接口(ApplicationProgramming Interface,API),当应用程序收发网络数据包时,通过调用该API直接与MAC层对接,进行网络数据包的收发,使得将RAW网络收发包通过API直接整合到具体的应用程序中,让应用程序直接通过该API进行收发网络数据包,旁路了操作系统的收发任务,避免了RAW网络收发网络数据包要经过操作系统的任务来收发,从而不受操作系统的网络收发任务优先级的影响,提高了RAW网络收发网络数据包的实时性。下面,参见附图对本申请进行详细介绍。
下面参见附图2a,对本申请实施例提供的基于RAW的网络构架进行介绍,该网络构架依次包括PHY层、MAC层、网络驱动层和应用程序,下面进行详述:
其中,所述网络驱动层包括用于提供给应用程序进行直接调用的函数接口,所述应用程序通过调用所述函数接口实现与所述MAC层间直接对接进行网络数据包的收发。
在一些实施例中,该函数接口可以包括用于实现数据的读、数据的写、和/或数据读写中的中断控制的接口。在一些实施例中,函数接口可以以AIP接口函数的形式表示。
在一些实施例中,PHY层用于电信号与bit流之间的转换,PHY层对外提供接口,该对外的接口用于连接传输介质。
在一些实施例中,PHY层的对外的接口和对应的传输介质可为多种。例如,该对外接口为标准网口(如RJ45接口)时,则连接网线;该对外接口为同轴电缆接口时,则连接同轴电缆;该对外接口为光纤接口时,则连接光纤;该对外接口为双绞线接口时,则连接双绞线。
在一些实施例中,PHY层与MAC层的通信接口可为MII或基于MII接口衍生出的系列接口。
在一些实施例中,MAC层包括缓存区(buffer),用以缓存收发的网络数据包。
在一些实施例中,MAC层还会在网络数据包收发过程中向上反馈中断信号。在一些实施例中,根据网络数据包的收发过程,该中断信号可包括写中断信号和读中断信号。例如,在数据的接收过程,所述中断信号用于表示网络数据包已写入缓存区,可记为写中断信号。在数据的发送过程,所述中断信号用于表示网络数据包已读出缓存区,可记为读中断信号。
在一些实施例中,根据网络数据包的收发,MAC层的缓存区可以分为收包缓存区(rx buffer)、发包缓存区(tx buffer),该收/发包缓存区(rx/tx buffer)也可以称为收发包描述符(rx/tx descriptor)。在一些实施例中,缓存区可为环状缓存区(ring buffer)、先入先出缓存区(FIFO buffer)等。
在一些实施例中,MAC层还包括DMA模块,该DMA模块通过操作收/发包缓存区,将PHY层的网络数据包写入收包缓存区,或将发包缓存区中的网络数据包读出送给PHY层,并且在执行读写缓存区过程中,用以向上层反馈相应的中断信号。
在一些实施例中,网络驱动层包括的用于提供给应用程序进行直接调用的函数接口,可以包括下述三个API接口函数,用于提供给上层应用程序进行调用,具体实现时,可以通过接口函数的结构定义,在网络驱动中封装该三个接口函数。该三个接口函数具体如下:
数据写函数(nic_write_data()),作为上层应用可直接操作MAC层的发包缓存区(或称为发包描述符)的接口,用于实现上层应用程序将待发送的网络数据包直接写入MAC层的发包缓存区,以待PHY层发送。
数据读函数(nic_read_data()),作为上层应用可直接操作MAC层的收包缓存区(或称为收包描述符)的接口,用于实现上层应用程序直接读取MAC层的收包缓存区的网络数据包。
中断函数(nic_working_ec()),作为上层应用可直接调用DMA的读写中断信号的接口,用于实现上层应用程序进行所述网络数据包的所述直接写入或所述直接读取过程中的网络数据包收发的控制。例如,在收包过程中,通过该中断函数获取到MAC层DMA函数的写中断信号后,去控制读取收包缓存区中的网络数据包,在发包过程中,通过该中断函数获取到MAC层DMA模块的读中断信号后,去控制下一网络数据包向缓存区的写入。
在一些实施例中,应用程序包括发包函数和收包函数,发包函数用于应用程序发送网络数据包时通过该发包函数调用所述数据写函数;收包函数用于应用程序接收网络数据包时通过该收包函数调用所述数据读函数。
通过上述本申请实施例提供的基于RAW的网络构架,上层应用程序在收发包时,通过上层应用程序的收发包函数,调用本申请上述数据读写函数,并通过应用程序调用上述中断函数控制数据的收发过程,实现网络数据包直接在应用程序与MAC层之间的传输,旁路了操作系统的任务队列机制,从而提高了网络收发包的实时性。
本申请实施例还提供了数据传输方法,应用于上述基于RAW的网络构架的网络中,该数据传输方法包括网络数据包的接收和发送方法,下面参见图2b和图2c示出的流程示意图分别进行介绍。
如图2b示出了本申请实施例提供的基于RAW的网络构架的数据传输方法中的网络数据包的接收方法,包括以下步骤S11-S15:
S11:由PHY层通过对外接口接收到网络数据包,PHY层执行网络数据包的模数转换,即电信号到比特流的转换。
在一些实施例中,PHY层的对外的接口和对应的传输介质可为多种,可参见对图2a所对应的实施例中的描述,不再赘述。
S13:由MAC层通过接口从PHY层获取网络数据包,写入缓存区,及产生一中断信号,所述中断信号用于表示网络数据包已写入缓存区。
在一些实施例中,MAC层与PHY层的通信接口可为MII或基于MII接口衍生出的系列接口。
在一些实施例中,本步骤中,可由MAC层的DMA将获取的网络数据包写入收包缓存区(或称写入收包描述符),并产生所述中断信号,这里为写中断信号,上层应用程序根据该写中断信号可知晓网络数据包已经写入缓存区。
S15:由应用程序获取到所述中断信号后,将MAC层的所述缓存区中的所述网络数据包直接读出。
在一些实施例中,可由应用程序调用中断函数获取到所述中断信号后,由应用程序调用数据读函数将MAC层的所述缓存区中的所述网络数据包直接读出。具体的一个例子是,可由应用程序通过驱动层的中断函数(nic_working_ec())收到该中断信号后,通过应用程序的收包函数调用驱动层的数据读函数(nic_read_data()),直接操作MAC层的收包缓存区(或称为收包描述符),将MAC层的收包缓存区的网络数据包直接读出。
如图2c示出了本申请实施例提供的基于RAW的网络构架的数据传输方法中的网络数据包的发送方法,包括以下步骤S21-S25:
S21:应用程序要发网络数据包时,由应用程序将所要发送的网络数据包直接写入MAC层的缓存区。
在一些实施例中,可由应用程序调用数据写函数,将所要发送的网络数据包直接写入MAC层的所述缓存区。具体的一个例子是,可由应用程序的发包函数调用驱动层的数据写函数(nic_write_data()),直接操作MAC层的收包缓存区(或称为收包描述符),将要发送的网络数据包直接写入MAC层的发包缓存区。
S23:由MAC层将缓存区中的所述网络数据包读出并发送给PHY层,及产生一中断信号,所述中断信号用于表示网络数据包已读出缓存区;
在一些实施例中,可由MAC层将发包缓存区中的所述网络数据包读出,通过接口发送至PHY层,并产生所述中断信号,这里为读中断信号,上层应用程序收到该读中断信号后可知晓网络数据包已读出发包缓存区,由此可执行下一数据包向发包缓存区的写入。
在一些实施例中,MAC层与PHY层的通信接口可为MII或基于MII接口衍生出的系列接口。
在一些实施例中,本步骤中,可由MAC层的DMA将数据从发包缓存区读出数据,通过接口发送至PHY层,并向产生所述读中断信号。
在一些实施例中,应用程序通过驱动层的中断函数(nic_working_ec())收到该读中断信号后,则可以继续执行下一网络数据包向MCA层发包缓存区的写入。
S25:PHY层收到网络数据包后,执行数模转换,即比特流到电信号的转换,并经对外接口传输出去。
在一些实施例中,PHY层的对外的接口和对应的传输介质可为多种,可参见对图2a所对应的实施例中的描述,不再赘述。
下面,以本申请基于RAW的网络构架应用于EtherCAT主站作为实施例,进一步对本申请进行介绍。其中:
该实施例中,EtherCAT主站的发包函数为ec_gen_drvif_device_start_xmit(),收包函数为ec_gen_drvif_device_poll()。
该实施例中,本申请上述数据写函数(nic_write_data())、数据读函数(nic_read_data())、中断函数(nic_working_ec()),可采用如下结构定义的方式,封装到网络驱动层(ec_netdrv_t):
typedef struct{
void(*nic_working_ec_fp)(T_UBYTE minor);/*定义中断函数,其参数为中断信号*/
T_BOOL(*nic_write_data_fp)(T_UBYTE minor,void*data,u32 size);/*定义数据写函数,其参数为中断信号、数据、数据大小*/
u32(*nic_read_data_fp)(T_UBYTE minor,void*data,u32 size);/*定义数据读函数,其参数为中断信号、数据、数据大小*/
}ec_netdrv_t;
在EtherCAT主站使用基于RAW的网络构架接收数据的过程中,当EtherCAT主站通过nic_working_ec_fp()函数接收到来自MAC层的写中断信号后,EtherCAT主站通过其ec_gen_drvif_device_poll()函数调用nic_read_data_fp()函数,实现EtherCAT主站的收包接口与RAW网络MAC层的数据读接口的对接,直接将通过网卡接收的网络数据包从网卡的MAC层的收包描述符(即收包缓存区,可以为环状缓存区,记为rx descriptor ring)中读取出来。
在EtherCAT主站使用基于RAW的网络构架发送数据的过程中,EtherCAT主站通过ec_gen_drvif_device_start_xmit()函数调用nic_write_data_fp()函数,实现EtherCAT主站的发包接口与RAW网络MAC层的数据写接口的对接,直接将网络数据包直接写入MAC层的发包描述符(即发包缓存区,可以为环状缓存区,记为tx descriptor ring)中,在EtherCAT主站通过nic_working_ec_fp()函数接收到MAC层反馈的读中断信号后,EtherCAT主站可以继续执行进行下一网络数据包的发送。
图3是本申请实施例提供的一种计算设备900的结构性示意性图。该计算设备可以执行上述方法中的各可选实施例,该计算设备可以是终端,也可以是终端内部的芯片或芯片系统。如图3所示,该计算设备900包括:处理器910、存储器920、通信接口930。
应理解,图3所示的计算设备900中的通信接口930可以用于与其他设备之间进行通信,具体可以包括一个或多个收发电路或接口电路。
其中,该处理器910可以与存储器920连接。该存储器920可以用于存储该程序代码和数据。因此,该存储器920可以是处理器910内部的存储单元,也可以是与处理器910独立的外部存储单元,还可以是包括处理器910内部的存储单元和与处理器910独立的外部存储单元的部件。
可选的,计算设备900还可以包括总线。其中,存储器920、通信接口930可以通过总线与处理器910连接。总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中采用了一条无箭头的线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,在本申请实施例中,该处理器910可以采用中央处理单元(centralprocessing unit,CPU)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器910采用一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。
该存储器920可以包括只读存储器和随机存取存储器,并向处理器910提供指令和数据。处理器910的一部分还可以包括非易失性随机存取存储器。例如,处理器910还可以存储设备类型的信息。
在计算设备900运行时,所述处理器910执行所述存储器920中的计算机执行指令执行上述方法的任一操作步骤以及其中任一可选的实施例。
应理解,根据本申请实施例的计算设备900可以对应于执行根据本申请各实施例的方法中的相应主体,并且计算设备900中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行上述方法,该方法包括上述各个实施例所描述的方案中的至少之一。
本申请实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
另外,说明书和权利要求书中的词语“第一、第二、第三等”或模块A、模块B、模块C等类似用语,仅用于区别类似的对象,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
在上述的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
说明书和权利要求书中使用的术语“包括”不应解释为限制于其后列出的内容;它不排除其它的元件或步骤。因此,其应当诠释为指定所提到的所述特征、整体、步骤或部件的存在,但并不排除存在或添加一个或更多其它特征、整体、步骤或部件及其组群。因此,表述“包括装置A和B的设备”不应局限为仅由部件A和B组成的设备。
本说明书中提到的“一个实施例”或“实施例”意味着与该实施例结合描述的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在本说明书各处出现的用语“在一个实施例中”或“在实施例中”并不一定都指同一实施例,但可以指同一实施例。此外,在一个或多个实施例中,能够以任何适当的方式组合各特定特征、结构或特性,如从本公开对本领域的普通技术人员显而易见的那样。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,均属于本申请保护范畴。
Claims (10)
1.一种基于RAW的网络构架,包括PHY层、MAC层、网络驱动层和应用程序,其特征在于,
所述网络驱动层包括用于提供给应用程序进行直接调用的函数接口;
所述应用程序通过调用所述函数接口实现与所述MAC层间直接对接进行网络数据包的收发。
2.根据权利要求1所述的网络构架,其特征在于,所述函数接口包括:
数据写函数,用于实现应用程序将待发送的网络数据包直接写入MAC层的缓存区,以通过PHY层发送;
数据读函数,用于实现应用程序直接读取MAC层的缓存区所缓存的通过PHY层接收的网络数据包;
中断函数,用于实现上层应用程序进行所述网络数据包的所述直接写入或所述直接读取过程中的控制。
3.根据权利要求2所述的网络构架,其特征在于,所述MCA层还包括DMA模块,用于将来自PHY层的网络数据包写入所述缓存区,或将所述缓存区中的来自应用程序的网络数据包读出给PHY层,及用于在进行对所述缓存区的读写过程中,产生提供给所述中断函数的中断信号。
4.根据权利要求1至3任意一项所述的网络构架,其特征在于,所述应用程序包括:
发包函数,用于应用程序发送网络数据包时通过该发包函数调用所述数据写函数;或
收包函数,用于应用程序接收网络数据包时通过该收包函数调用所述数据读函数。
5.一种数据传输方法,其特征在于,应用于权利要求1至4任意一项所述的网络构架中,所述方法包括:
由PHY层接收网络数据包;
由MAC层从PHY层获取所述网络数据包并写入缓存区,及产生一中断信号,所述中断信号用于表示网络数据包已写入缓存区;
由应用程序获取到所述中断信号后,将MAC层的所述缓存区中的所述网络数据包直接读出。
6.根据权利要求5所述的方法,其特征在于,所述由应用程序获取到所述中断信号后,将MAC层的所述缓存区中的所述网络数据包直接读出,包括:
由应用程序调用中断函数获取到所述中断信号后,由应用程序调用数据读函数将MAC层的所述缓存区中的所述网络数据包直接读出。
7.根据权利要求5或6所述的方法,其特征在于,所述由MAC层从PHY层获取所述网络数据包并写入缓存区,及产生一中断信号,包括:
由MAC层的DMA模块将从PHY层获取的网络数据包写入缓存区,及产生所述中断信号。
8.一种数据传输方法,其特征在于,应用于权利要求1至4任意一项所述的网络构架中,所述方法包括:
由应用程序将所要发送的网络数据包直接写入MAC层的缓存区;
由MAC层将缓存区中的所述网络数据包读出并发送给PHY层,及产生一中断信号,所述中断信号用于表示网络数据包已读出缓存区;
由PHY层将所述网络数据包发送出去。
9.根据权利要求8所述的方法,其特征在于,所述由应用程序将所要发送的网络数据包直接写入MAC层的缓存区,包括:
由应用程序调用数据写函数,将所要发送的网络数据包直接写入MAC层的所述缓存区。
10.根据权利要求8或9所述的方法,其特征在于,所述由MAC层将缓存区中的所述网络数据包读出并发送给PHY层,及产生一中断信号,包括:
由MAC层的DMA模块将所述网络数据包从缓存区中读出并发送给PHY层,及产生所述中断信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210947832.9A CN115378921B (zh) | 2022-08-05 | 2022-08-05 | 基于raw的网络构架及数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210947832.9A CN115378921B (zh) | 2022-08-05 | 2022-08-05 | 基于raw的网络构架及数据传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115378921A true CN115378921A (zh) | 2022-11-22 |
CN115378921B CN115378921B (zh) | 2023-07-07 |
Family
ID=84064556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210947832.9A Active CN115378921B (zh) | 2022-08-05 | 2022-08-05 | 基于raw的网络构架及数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115378921B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020078249A1 (en) * | 1999-12-17 | 2002-06-20 | Xiaolin Lu | Programmable multi-standard MAC architecture |
US20030028658A1 (en) * | 2001-08-01 | 2003-02-06 | Bullman William R. | System and method for accessing registers of PHY device in network |
CN101247266A (zh) * | 2008-03-21 | 2008-08-20 | 深圳国人通信有限公司 | 以太网中进行数据处理的方法 |
CN101267361A (zh) * | 2008-05-09 | 2008-09-17 | 武汉飞思科技有限公司 | 一种基于零拷贝技术的高速网络数据包捕获方法 |
CN104955173A (zh) * | 2015-07-07 | 2015-09-30 | 无锡集敏科技有限公司 | Zigbee无线组网方法 |
CN109614147A (zh) * | 2018-12-03 | 2019-04-12 | 郑州云海信息技术有限公司 | 一种phy寄存器读写方法和装置 |
CN109976925A (zh) * | 2019-03-27 | 2019-07-05 | 北京翼辉信息技术有限公司 | 一种基于混合多系统核间实时通信的方法和系统 |
CN110728598A (zh) * | 2019-09-20 | 2020-01-24 | 华中科技大学 | 一种基于libpcap的计算机网络原理教学系统 |
CN114007233A (zh) * | 2021-10-22 | 2022-02-01 | 锐迪科微电子科技(上海)有限公司 | 缓存状态报告bsr上报方法、装置和电子设备 |
-
2022
- 2022-08-05 CN CN202210947832.9A patent/CN115378921B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020078249A1 (en) * | 1999-12-17 | 2002-06-20 | Xiaolin Lu | Programmable multi-standard MAC architecture |
US20030028658A1 (en) * | 2001-08-01 | 2003-02-06 | Bullman William R. | System and method for accessing registers of PHY device in network |
CN101247266A (zh) * | 2008-03-21 | 2008-08-20 | 深圳国人通信有限公司 | 以太网中进行数据处理的方法 |
CN101267361A (zh) * | 2008-05-09 | 2008-09-17 | 武汉飞思科技有限公司 | 一种基于零拷贝技术的高速网络数据包捕获方法 |
CN104955173A (zh) * | 2015-07-07 | 2015-09-30 | 无锡集敏科技有限公司 | Zigbee无线组网方法 |
CN109614147A (zh) * | 2018-12-03 | 2019-04-12 | 郑州云海信息技术有限公司 | 一种phy寄存器读写方法和装置 |
CN109976925A (zh) * | 2019-03-27 | 2019-07-05 | 北京翼辉信息技术有限公司 | 一种基于混合多系统核间实时通信的方法和系统 |
CN110728598A (zh) * | 2019-09-20 | 2020-01-24 | 华中科技大学 | 一种基于libpcap的计算机网络原理教学系统 |
CN114007233A (zh) * | 2021-10-22 | 2022-02-01 | 锐迪科微电子科技(上海)有限公司 | 缓存状态报告bsr上报方法、装置和电子设备 |
Non-Patent Citations (2)
Title |
---|
张霖;周继芹;张伟功;: "UM-BUS总线网卡的驱动程序设计与实现", no. 05 * |
陈取才\N\N\N,张蕴玉\N\N\N,胡修林: "Windows9x网络底层应用程序的设计方法", no. 01 * |
Also Published As
Publication number | Publication date |
---|---|
CN115378921B (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10467154B2 (en) | Multi-port multi-sideband-GPIO consolidation technique over a multi-drop serial bus | |
US9021153B2 (en) | Direct memory access system and method using the same | |
US8706832B2 (en) | Low latency, high bandwidth data communications between compute nodes in a parallel computer | |
US10635630B2 (en) | Flexible protocol and associated hardware for one-wire radio frequency front-end interface | |
US8601145B2 (en) | Inter-processor communication link with manageability port | |
CN108132897B (zh) | 一种基于zynq平台软核的srio控制器 | |
KR20180092969A (ko) | 메시징을 위한 최적의 레이턴시 패킷화기 유한 상태 머신 및 입력/출력 트랜스퍼 인터페이스들 | |
US10572410B2 (en) | Function-specific communication on a multi-drop bus for coexistence management | |
US20190227971A1 (en) | Architecture for consolidating multiple sources of low-bandwidth data over a serial bus | |
WO2018182949A1 (en) | System and method for sending in band interrupt messages between devices on a bus | |
WO2020143237A1 (zh) | 一种dma控制器和异构加速系统 | |
US10733121B2 (en) | Latency optimized I3C virtual GPIO with configurable operating mode and device skip | |
CN101052031B (zh) | 苹果计算机与无线通讯终端进行数据交互的方法 | |
US10592441B2 (en) | Bus communication enhancement based on identification capture during bus arbitration | |
US20190171588A1 (en) | Multi-point virtual general-purpose input/output (mp-vgi) for low latency event messaging | |
WO2016000376A1 (zh) | 一种基于pci-e接口的信号处理方法及信号处理装置 | |
CN110287141B (zh) | 一种基于多种接口的fpga重构方法和系统 | |
CN115378921A (zh) | 基于raw的网络构架及数据传输方法 | |
CN207764789U (zh) | 用于地震仪主控站cpu与外设数据传输的桥接器 | |
US11520729B2 (en) | I2C bus architecture using shared clock and dedicated data lines | |
CN111181690B (zh) | 一种多信道通信及接口动态切换方法 | |
US20100216506A1 (en) | System and Methods for Supporting Multiple Communications Protocols on a Mobile Phone Device | |
US20130198548A1 (en) | Apparatus and method for saving power of usb device | |
WO2012019376A1 (zh) | 无线通信终端网络设备功能的实现方法及装置 | |
JP2002169767A (ja) | データ転送方法、データ転送装置、通信インターフェース方法および通信インターフェース装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |