CN110943941A - 一种报文接收方法、发送方法、网卡及电子设备 - Google Patents
一种报文接收方法、发送方法、网卡及电子设备 Download PDFInfo
- Publication number
- CN110943941A CN110943941A CN201911254796.2A CN201911254796A CN110943941A CN 110943941 A CN110943941 A CN 110943941A CN 201911254796 A CN201911254796 A CN 201911254796A CN 110943941 A CN110943941 A CN 110943941A
- Authority
- CN
- China
- Prior art keywords
- message
- port
- physical
- virtual
- network
- 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
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9036—Common buffer combined with individual queues
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种报文接收方法、发送方法、网卡及电子设备。该方法包括:接收通过物理网口传来的第一报文;将物理网口的网口ID和第一报文装载到DMA内存中,并将第一报文对应的DMA描述符中的状态标识置位;从已置位的DMA描述符中提取第一报文,并在第一报文中增加与网口ID对应的虚口标识获得第二报文;将第二报文保存至接收队列中;根据虚口标识从接收队列中取出第二报文,并将第二报文存储至虚口标识对应的缓冲区中。本申请实施例通过将第一报文以及对应的网口ID存入DMA描述符中,然后按照物理网口对应的虚口标识从接收队列中取对应的第二报文,从而实现了多个物理网口共用DMA内存和接收队列,并且有效防止串包。
Description
技术领域
本申请涉及通信技术领域,具体而言,涉及一种报文接收方法、发送方法、网卡及电子设备。
背景技术
Intel网卡成本高,硬件核心部件和软件程序都是国外的。图1为现有技术提供的Intel网卡结构示意图,如图1所示,Intel网卡内部存在桥片,从硬件看,一个PCI接口就可以分出四个PCI槽位,分别对应网卡的四个物理网口,该网卡的每个网口都有独立的DMA,描述符基址寄存器,收发描述符队列。
图2为现有技术提供的Intel网卡运行时的结构示意图,如图2所示,每个PCI接口对应一个PCI槽位,Intel网卡接入设备启动linux系统,并加载E1000网卡驱动程序后,可以通过驱动程序为每个PCI槽位注册一个网络设备,每个网络设备对应一个物理网口。
现有的网卡驱动程序只适配Intel网卡,若没有桥片的网卡使用现有的网卡驱动程序,那么只能使用1个物理网口,无法现实多个物理网口共同收发数据。
发明内容
本申请实施例的目的在于提供一种报文接收方法、发送方法、网卡及电子设备,用以解决现有技术中,利用E1000网卡驱动程序驱动没有桥片的网卡时,无法使用多个物理网口进行数据收发的问题。
第一方面,本申请实施例提供一种报文接收方法,应用于网卡,所述网卡包括多个物理网口,所述多个物理网口与多个虚口一一对应,所述方法包括:
接收通过物理网口传来的第一报文;
将所述物理网口的网口ID和所述第一报文装载到所述多个物理网口共享的直接内存存取DMA内存中,并将所述第一报文对应的DMA描述符中的状态标识置位;
从已置位的DMA描述符中提取所述第一报文,并在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文;
将所述第二报文保存至所述多个物理网口共享的接收队列中;
根据虚口标识从接收队列中取出第二报文,并将所述第二报文存储至所述虚口标识对应的缓冲区中。
本申请实施例通过将第一报文以及对应的网口ID存入DMA描述符中,并且在存入接收队列之前在第一报文中增加网口ID对应的虚口标识,形成第二报文,然后按照虚口标识从接收队列中取对应的第二报文,从而实现了多个物理网口共用DMA内存和接收队列,并且有效防止串包。
进一步地,所述网卡包括一个物理槽位和至少一个虚拟槽位,其中,所述至少一个虚拟槽位通过虚拟程序对所述物理槽位进行虚拟化获得,且所述至少一个虚拟槽位和所述物理槽位共用一个DMA内存和多个接收队列,所述至少一个虚拟槽位和所述物理槽位形成的多个槽位与所述多个物理网口一一对应。
本申请实施例通过对一个物理槽位进行虚拟化,获得多个虚拟槽位,进而能够使网卡使用多个物理网口进行收发数据。
进一步地,所述在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文,包括:
通过调用接收函数在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文。
由于接收函数中保存有物理网口与虚口之间的对应关系,因此通过接收函数在第一报文中增加网口ID对应的虚口标识能够有效防止报文在传送过程中串包。
进一步地,所述根据虚口标识从接收队列中取出第二报文,并将所述第二报文存储至对应的缓冲区中,包括:
从所述接收队列中将具有相同虚口标识的第二报文取出并保存至对应的一个内存缓冲区中。
本申请实施例通过按照虚口标识将第二报文从接收队列中取出,放入该虚口标识、该队列对应的缓冲区,以使上层应用在获取到数据后可以获知是哪个虚口收上来的,防止其串包。
进一步地,所述接收队列包括接收无锁环;所述将所述第二报文保存至所述多个物理网口共享的接收队列中,包括:
将所述第二报文保存至所述多个物理网口共享的接收队列的接收无锁环中。
第二方面,本申请实施例提供一种报文发送方法,应用于网卡,所述网卡包括多个物理网口,每个物理网口对应一个虚口,所述方法包括:
从多个物理网口共享的DMA内存中读取状态标识已置位的DMA描述符;其中,所述状态标识已置位的DMA描述符装载有待发送报文和网口ID;
通过所述网口ID对应的物理网口将所述待发送报文发出。
本申请实施例通过在DMA描述符中装载有网口ID,因此,在使用多物理网口共享的多个发送队列进行发送时,确保将待发送报文从对应的物理网口中发出,防止串包。
进一步地,所述状态标识已置位的DMA描述符为上层应用调用所述物理网口对应的虚口的发送函数对所述待发送报文进行组装获得。
由于发送函数中存储有物理网口和虚口的对应关系,因此上层应用通过发送函数在待发送报文中增加对应的网口ID,保证了待发送报文能够从正确的物理网口发送出去。
进一步地,所述网卡包括一个物理槽位和至少一个虚拟槽位,其中,所述至少一个虚拟槽位通过虚拟程序对所述物理槽位进行虚拟化获得,且所述至少一个虚拟槽位和所述物理槽位共用一个DMA内存和多个接收队列,所述至少一个虚拟槽位和所述物理槽位形成的多个槽位与所述多个物理网口一一对应。
本申请实施例通过对一个物理槽位进行虚拟化,获得多个虚拟槽位,进而能够使网卡使用多个物理网口进行收发数据。
第三方面,本申请实施例提供一种网卡,包括:接收模块,用于接收通过物理网口传来的第一报文;
数据装载模块,用于将所述物理网口的网口ID和所述第一报文装载到所述多个物理网口共享的直接内存存取DMA内存中,并将所述第一报文对应的DMA描述符中的状态标识置位;
报文提取模块,用于从已置位的DMA描述符中提取所述第一报文,并在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文;
报文入队列模块,用于将所述第二报文保存至所述多个物理网口共享的接收队列中;
报文出队列模块,用于根据虚口标识从接收队列中取出第二报文,并将所述第二报文存储至所述虚口标识对应的缓冲区中。
第四方面,本申请实施例提供一种网卡,包括:
描述符读取模块,用于从多个物理网口共享的DMA内存中读取状态标识已置位的DMA描述符;其中,所述状态标识已置位的DMA描述符装载有待发送报文和网口ID;
报文发送模块,用于通过所述网口ID对应的物理网口将所述待发送报文发出。
第五方面,本申请实施例提供一种网卡,包括:处理芯片、存储器和多个物理网口,其中,所述多个物理网口共用一个DMA内存和多个接收队列;
所述存储器中有可被所述处理芯片执行的程序指令,所述处理芯片调用所述程序指令能够执行第一方面或第二方面所述的方法。
第六方面,本申请实施例提供一种电子设备,包括第五方面所述的网卡。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为现有技术提供的Intel网卡结构示意图;
图2为现有技术提供的Intel网卡运行时的结构示意图;
图3为本申请实施例提供的网卡结构示意图;
图4为本申请实施例提供的网卡的另一种示意图;
图5为本申请实施例提供的一种报文接收方法流程示意图;
图6为本申请实施例提供的一种报文发送方法流程示意图;
图7为本申请实施例提供的网卡结构示意图;
图8为本申请实施例提供的另一种网卡结构示意图;
图9为本申请实施例提供的网卡实体结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
图3为本申请实施例提供的网卡结构示意图,如图3所示,该网卡包括四个物理网口,且该网卡内部不存在桥片。因此,从硬件上看,一个PCI接口只能出一个PCI槽位,为了能够使这四个物理网口都能够收发数据,本申请实施例通过虚拟程序,将一个PCI槽位镜像映射为4个PCI槽位,每一个槽位对应一个物理网口。可以理解的是,4个PCI槽位中,有一个是物理槽位,有三个是该物理槽位对应的虚拟槽位。由于一个物理的PCI槽位只有一个DMA内存和一套收发队列,一套收发队列包括八条收队列和八条发队列。应当说明的是,图3只是一种网卡的示意图,其物理网口可以根据实际情况进行设置,例如可以是2个、5个、6个等。收发队列的条数根据CPU核的个数确定,八条只是一种示例,本申请实施例不对收发队列的具体条数进行限定。
因此,本申请实施例提供的网卡上的4个物理网口共享8个收包队列和8个发包队列。数据包有可能同时从网卡的4个物理网口进行接收和发送。对上层而言,收到的数据包要知道从哪个物理网口收上来的,发出去的数据包要确保从指定的物理网口发出去。对外部操作人员而言,4个物理网口是独立的实口,可以单独操作。
为了能够将一个物理PCI槽位虚拟成4个PCI槽位,本申请实施例通过虚口程序实现。由于4个物理网口共享一套收发队列,为了保证数据包在传输过程中不串包,本申请实施例通过隔离程序实现。为了保证网卡正常工作,本申请实施例提供该网卡对应的驱动程序。
图4为本申请实施例提供的网卡的另一种示意图,如图4所示。网卡和驱动程序是一一配对注册的,驱动程序中维护了一个设备链表和一个驱动链表。在设备链表中存储有每个槽位分别对应的网络设备,驱动链表中包括该网卡的驱动程序,当然,还可以包括其他网卡(例如:Intel网卡)的驱动程序。驱动程序只有匹配到相应的网络设备才能完成驱动的注册,才能分配出虚口port。驱动程序加载时会去设备链表中扫描对应的设备,使得虚口程序创建的4个网络设备都安装驱动程序,这样从上层就可以看到4个物理网口。应当说明的是,一个物理网口对应一个虚口port。
另外,对网卡4个虚口初始化,只能初始化一次。由于这4个虚口共用相同的收发队列和DMA内存,所以开启网口收发功能的时候,实际上只能进行一次实际硬件寄存器的初始化,对所有虚口都关闭网口收发功能才能进行一次实际硬件寄存器的寄存器复位。只有这样设计驱动程序才能确保各个虚口互不影响收发功能。
在上述实施例的基础上,本申请实施例提供一种报文接收方法,如图5所示,在接收报文之前,需要对描述符结构进行修改,即在原有的描述符结构中增加队列接收环成员,包括:
inport_id;//输入物理端口号
Type;//报文类型
struct fpga_rx_queue;//接收队列结构体中添加
struct rte_ring*poll_ring[MAX_FPGA_PORT_NUM];//接收环
uint16_t fpga_cardid;//加速卡卡号
uint16_t fpga_portid;//加速卡端口号
uint16_t port_id;//端口号
struct fpga_adapter*adapter加速卡适配器结构体中添加
uint16_t fpga_cardid;//加速卡卡号
uint16_t fpga_portid;//加速卡端口号
uint16_t inp_portid;//端口号
修改完描述符结构后,按照虚口和队列创建接收环,其中,每个接收队列对应一个接收环。
该报文接收方法应用于上述实施例提供的网卡,方法包括:
步骤501:接收通过物理网口传来的第一报文;
步骤502:将所述物理网口的网口ID和所述第一报文装载到所述多个物理网口共享的直接内存存取DMA内存中,并将所述第一报文对应的DMA描述符中的状态标识置位;
步骤503:从已置位的DMA描述符中提取所述第一报文,并在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文;
步骤504:将所述第二报文保存至所述多个物理网口共享的接收队列中;
步骤505:根据虚口标识从接收队列中取出第二报文,并将所述第二报文存储至所述虚口标识对应的缓冲区中。
下面对上述步骤501-步骤505进行详细描述,为了方便描述,本申请实施例采用具有4个物理网口的网卡进行描述,可以理解的是,本申请实施例对应的网卡的物理网口数量可以根据实际情况进行选择。
在步骤501中,物理网口可以是网卡上的任意一个物理网口,外部设备向该网卡对应的设备上传输报文时,可以通过网卡的物理网口接收第一报文。
在步骤502中,网卡在接收到物理网口传来的第一报文之后,需要将该第一报文写入的描述符基址中,可以理解的是,描述符基址对应DMA内存。为了区分是从哪个物理网口传来的第一报文,在将第一报文装载到DMA描述符的同时,还需要将该物理网口对应的网口ID也装载到该DMA描述符中,并且将该DMA描述符的状态标识置位,应当说明的是,状态标识用来标识该DMA描述符的基址中是否有数据,可以用“1”来表示有数据,用“0”来表示没有数据。应当说明的是,状态标识还可以通过其他字符来区分对应的DMA描述符中是否有第一报文,本申请实施例对此不作具体限定。
在步骤503中,从已置位的DMA描述符中提取所述第一报文,并在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文。
在具体的实施过程中,网卡中的接收函数实时扫描各个DMA描述符的状态标识,当状态标识为1时,则从该DMA描述符基址中获取第一报文。由于接收函数中存储有各个物理网口和虚口的对应关系,因此,可以根据网口ID获得对应的虚口标识,并将获得的虚口标识添加到第一报文中,得到第二报文。
在步骤504中,将所述第二报文保存至所述多个物理网口共享的接收队列中。
其中,接收队列有多个,且多个物理网口共享多个接收队列,即每个物理网口均可以通过多个接收队列中的任意一个队列传输报文。每个接收队列中对应一个接收无锁环,通过接收函数的入环操作将第二报文存储到接收无锁环中。可以理解的是,在选择存储第二报文的接收队列时,可以选择DMA描述符最少的接收队列,这样可以更加快速的出环。
在步骤505中,根据虚口标识从接收队列中取出第二报文,并将所述第二报文存储至所述虚口标识对应的缓冲区中。
其中,每个虚口对应一个接收函数,接收函数的出环操作是从接收无锁环中将对应虚口标识的第二报文取出,在取出之后,将第二报文存储对应的缓冲区中。其中,每个虚口,每条队列对应一个缓冲区,因此,若一共4个虚口,8个接收队列,那么一共有32个缓冲区,上层应用从这32个缓冲区中读取报文。应当说明的是,缓冲区可以是buffer指针,将第二报文放入buffer指针中。
本申请实施例通过将第一报文以及对应的网口ID存入DMA描述符中,并且在存入接收队列之前在第一报文中增加网口ID对应的虚口标识,形成第二报文,然后按照虚口标识从接收队列中取对应的第二报文,从而实现了多个物理网口共用DMA内存和接收队列,并且有效防止串包。
图6为本申请实施例提供的一种报文发送方法流程示意图,如图6所示,该报文发送方法应用于上述实施例提供的网卡,方法包括:
步骤601:从多个物理网口共享的DMA内存中读取状态标识已置位的DMA描述符;其中,所述状态标识已置位的DMA描述符装载有待发送报文和网口ID;
步骤602:通过所述网口ID对应的物理网口将所述待发送报文发出。
下面对上述步骤601-步骤602进行详细描述。
在步骤601中,从多个物理网口共享的DMA内存中读取状态标识已置位的DMA描述符。
当上层应用需要将待发送报文发送出去时,其已经确定对应的虚口,并调用该虚口的发送函数在待发送报文中添加对应的物理网口的网口ID。应当说明的是,发送函数中存储有虚口对应的物理网口的网口ID。然后将添加了网口ID的待发送报文存入DMA描述符基址中(即DMA内存),并将待发送报文对应的DMA描述符的状态标识置位。网卡从DMA内存中读取状态标识已置位的DMA描述符。
在步骤602中,通过所述网口ID对应的物理网口将所述待发送报文发出。
网卡在从DAM内存中提取出DAM描述符后,从DMA描述符中提取网口ID,然后将DMA描述符中的待发送报文从网口ID对应的物理网口发出去。
本申请实施例通过在将待发送报文通过物理网口发送出去时,根据DMA描述符中的网口ID确定待发送报文发出的物理网口,因此,虽然多个物理网口共用多条发送队列,也不会造成串包的问题。
图7为本申请实施例提供的网卡结构示意图,该网卡可以是电子设备上的模块、程序段或代码。应理解,该装置与上述图5方法实施例对应,能够执行图5方法实施例涉及的各个步骤,该网卡具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该网卡包括:接收模块701、数据装载模块702、报文提取模块703、报文入队列模块704和报文出队列模块705,其中:
接收模块701用于接收通过物理网口传来的第一报文;数据装载模块702用于将所述物理网口的网口ID和所述第一报文装载到所述多个物理网口共享的直接内存存取DMA内存中,并将所述第一报文对应的DMA描述符中的状态标识置位;报文提取模块703用于从已置位的DMA描述符中提取所述第一报文,并在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文;报文入队列模块704用于将所述第二报文保存至所述多个物理网口共享的接收队列中;报文出队列模块705用于根据虚口标识从接收队列中取出第二报文,并将所述第二报文存储至所述虚口标识对应的缓冲区中。
在上述实施例的基础上,所述网卡包括一个物理槽位和至少一个虚拟槽位,其中,所述至少一个虚拟槽位通过虚拟程序对所述物理槽位进行虚拟化获得,且所述至少一个虚拟槽位和所述物理槽位共用一个DMA内存和多个接收队列,所述至少一个虚拟槽位和所述物理槽位形成的多个槽位与所述多个物理网口一一对应。
在上述实施例的基础上,报文提取模块703具体用于:
通过调用接收函数在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文。
在上述实施例的基础上,报文出队列模块705具体用于:
从所述接收队列中将具有相同虚口标识的第二报文取出并保存至对应的一个内存缓冲区中。
在上述实施例的基础上,所述接收队列包括接收无锁环;所述报文入队列模块704具体用于:
将所述第二报文保存至所述多个物理网口共享的接收队列的接收无锁环中。
图8为本申请实施例提供的网卡结构示意图,该网卡可以是电子设备上的模块、程序段或代码。应理解,该装置与上述图6方法实施例对应,能够执行图6方法实施例涉及的各个步骤,该网卡具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该网卡包括:描述符读取模块801和报文发送模块802,其中:
描述符读取模块801用于从多个物理网口共享的DMA内存中读取状态标识已置位的DMA描述符;其中,所述状态标识已置位的DMA描述符装载有待发送报文和网口ID;报文发送模块802用于通过所述网口ID对应的物理网口将所述待发送报文发出。
在上述实施例的基础上,所述状态标识已置位的DMA描述符为上层应用调用所述物理网口对应的虚口的发送函数对所述待发送报文进行组装获得。
在上述实施例的基础上,所述网卡包括一个物理槽位和至少一个虚拟槽位,其中,所述至少一个虚拟槽位通过虚拟程序对所述物理槽位进行虚拟化获得,且所述至少一个虚拟槽位和所述物理槽位共用一个DMA内存和多个接收队列,所述至少一个虚拟槽位和所述物理槽位形成的多个槽位与所述多个物理网口一一对应。
综上所述,本申请实施例通过隔离程序实现了对数据包的隔离,保证从各个物理网口收上来的数据包在通过多个物理网口共享的队列时不会串包。
图9为本申请实施例提供的网卡实体结构示意图,如图9所示,所述电子设备,包括:处理芯片901、存储器(memory)902和多个物理网口903;其中,
所述多个物理网口903共用一个DMA内存和多个接收队列;
所述处理芯片901用于调用所述存储器902中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:接收通过物理网口传来的第一报文;将所述物理网口的网口ID和所述第一报文装载到所述多个物理网口共享的直接内存存取DMA内存中,并将所述第一报文对应的DMA描述符中的状态标识置位;从已置位的DMA描述符中提取所述第一报文,并在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文;将所述第二报文保存至所述多个物理网口共享的接收队列中;根据虚口标识从接收队列中取出第二报文,并将所述第二报文存储至所述虚口标识对应的缓冲区中。
本申请实施例还提供一种电子设备,该电子设备包括有上述实施例提供的网卡。可以理解的是,该电子设备可以是台式电脑、笔记本电脑等,在电子设备上还可以插有其他网卡,例如Intel网卡。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (12)
1.一种报文接收方法,其特征在于,应用于网卡,所述网卡包括多个物理网口,所述多个物理网口与多个虚口一一对应,所述方法包括:
接收通过物理网口传来的第一报文;
将所述物理网口的网口ID和所述第一报文装载到所述多个物理网口共享的直接内存存取DMA内存中,并将所述第一报文对应的DMA描述符中的状态标识置位;
从已置位的DMA描述符中提取所述第一报文,并在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文;
将所述第二报文保存至所述多个物理网口共享的接收队列中;
根据虚口标识从接收队列中取出第二报文,并将所述第二报文存储至所述虚口标识对应的缓冲区中。
2.根据权利要求1所述的方法,其特征在于,所述网卡包括一个物理槽位和至少一个虚拟槽位,其中,所述至少一个虚拟槽位通过虚拟程序对所述物理槽位进行虚拟化获得,且所述至少一个虚拟槽位和所述物理槽位共用一个DMA内存和多个接收队列,所述至少一个虚拟槽位和所述物理槽位形成的多个槽位与所述多个物理网口一一对应。
3.根据权利要求1所述的方法,其特征在于,所述在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文,包括:
通过调用接收函数在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文。
4.根据权利要求1所述的方法,其特征在于,所述根据虚口标识从接收队列中取出第二报文,并将所述第二报文存储至对应的缓冲区中,包括:
从所述接收队列中将具有相同虚口标识的第二报文取出并保存至对应的一个内存缓冲区中。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述接收队列包括接收无锁环;所述将所述第二报文保存至所述多个物理网口共享的接收队列中,包括:
将所述第二报文保存至所述多个物理网口共享的接收队列的接收无锁环中。
6.一种报文发送方法,其特征在于,应用于网卡,所述网卡包括多个物理网口,每个物理网口对应一个虚口,所述方法包括:
从多个物理网口共享的DMA内存中读取状态标识已置位的DMA描述符;其中,所述状态标识已置位的DMA描述符装载有待发送报文和网口ID;
通过所述网口ID对应的物理网口将所述待发送报文发出。
7.根据权利要求6所述的方法,其特征在于,所述状态标识已置位的DMA描述符为上层应用调用所述物理网口对应的虚口的发送函数对所述待发送报文进行组装获得。
8.根据权利要求1所述的方法,其特征在于,所述网卡包括一个物理槽位和至少一个虚拟槽位,其中,所述至少一个虚拟槽位通过虚拟程序对所述物理槽位进行虚拟化获得,且所述至少一个虚拟槽位和所述物理槽位共用一个DMA内存和多个接收队列,所述至少一个虚拟槽位和所述物理槽位形成的多个槽位与所述多个物理网口一一对应。
9.一种网卡,其特征在于,包括:
接收模块,用于接收通过物理网口传来的第一报文;
数据装载模块,用于将所述物理网口的网口ID和所述第一报文装载到所述多个物理网口共享的直接内存存取DMA内存中,并将所述第一报文对应的DMA描述符中的状态标识置位;
报文提取模块,用于从已置位的DMA描述符中提取所述第一报文,并在所述第一报文中增加与所述网口ID对应的虚口标识,获得第二报文;
报文入队列模块,用于将所述第二报文保存至所述多个物理网口共享的接收队列中;
报文出队列模块,用于根据虚口标识从接收队列中取出第二报文,并将所述第二报文存储至所述虚口标识对应的缓冲区中。
10.一种网卡,其特征在于,包括:
描述符读取模块,用于从多个物理网口共享的DMA内存中读取状态标识已置位的DMA描述符;其中,所述状态标识已置位的DMA描述符装载有待发送报文和网口ID;
报文发送模块,用于通过所述网口ID对应的物理网口将所述待发送报文发出。
11.一种网卡,其特征在于,包括:处理芯片、存储器和多个物理网口,其中,所述多个物理网口共用一个DMA内存和多个接收队列;
所述存储器中有可被所述处理芯片执行的程序指令,所述处理芯片调用所述程序指令能够执行如权利要求1-8任一项所述的方法。
12.一种电子设备,其特征在于,包括如权利要求11所述的网卡。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911254796.2A CN110943941B (zh) | 2019-12-06 | 2019-12-06 | 一种报文接收方法、网卡及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911254796.2A CN110943941B (zh) | 2019-12-06 | 2019-12-06 | 一种报文接收方法、网卡及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110943941A true CN110943941A (zh) | 2020-03-31 |
CN110943941B CN110943941B (zh) | 2022-03-11 |
Family
ID=69909951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911254796.2A Active CN110943941B (zh) | 2019-12-06 | 2019-12-06 | 一种报文接收方法、网卡及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110943941B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113676421A (zh) * | 2021-10-25 | 2021-11-19 | 之江实验室 | 一种基于PCIe的多端口网络报文收发方法 |
CN115277407A (zh) * | 2022-07-25 | 2022-11-01 | 北京天融信网络安全技术有限公司 | 网口配置处理方法、装置、电子设备和存储介质 |
CN116996417A (zh) * | 2023-09-26 | 2023-11-03 | 中国科学院自动化研究所 | 多源端口数据存储方法及装置 |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0642246A2 (en) * | 1993-09-08 | 1995-03-08 | Hitachi, Ltd. | Network communication method and network system |
CN101178694A (zh) * | 2006-11-07 | 2008-05-14 | 莱克斯信息技术(北京)有限公司 | Intel e1000零拷贝的方法 |
CN101202707A (zh) * | 2007-12-03 | 2008-06-18 | 杭州华三通信技术有限公司 | 高速单板传输报文的方法、现场可编程门阵列及高速单板 |
CN101540727A (zh) * | 2009-05-05 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种ip报文的硬件分流方法 |
CN102137169A (zh) * | 2011-01-30 | 2011-07-27 | 华为技术有限公司 | 一种绑定物理网口的方法、网卡及通信系统 |
CN102255818A (zh) * | 2011-08-26 | 2011-11-23 | 迈普通信技术股份有限公司 | 一种驱动接收报文的方法及装置 |
CN102750245A (zh) * | 2012-05-29 | 2012-10-24 | 中国人民解放军国防科学技术大学 | 报文接收方法、报文接收模块、装置及系统 |
CN102752219A (zh) * | 2012-07-18 | 2012-10-24 | 杭州华三通信技术有限公司 | 用于实现vd互连的方法和交换设备 |
CN103200085A (zh) * | 2013-04-16 | 2013-07-10 | 中航网信(北京)科技有限公司 | 一种实现vxlan报文线速收发的方法及系统 |
CN103259735A (zh) * | 2013-05-15 | 2013-08-21 | 重庆邮电大学 | 一种基于NetFPGA的可编程虚拟化路由器的通信方法 |
CN103442091A (zh) * | 2013-08-28 | 2013-12-11 | 华为技术有限公司 | 一种数据传输方法及装置 |
US20140059111A1 (en) * | 2012-08-27 | 2014-02-27 | Vmware, Inc. | Method and system for enabling multi-core processing of vxlan traffic |
CN106411740A (zh) * | 2016-08-31 | 2017-02-15 | 南京磐能电力科技股份有限公司 | 基于以太网控制器的网络端口扩展方法 |
CN107995129A (zh) * | 2017-11-30 | 2018-05-04 | 锐捷网络股份有限公司 | 一种nfv报文转发方法和装置 |
CN108322326A (zh) * | 2017-06-27 | 2018-07-24 | 新华三技术有限公司 | 一种接口状态控制方法、报文传输方法及装置 |
CN108683616A (zh) * | 2018-04-20 | 2018-10-19 | 全球能源互联网研究院有限公司 | 一种虚拟交换机队列的网络配置装置 |
CN108768851A (zh) * | 2018-06-01 | 2018-11-06 | 武汉绿色网络信息服务有限责任公司 | 一种基于Linux系统实现的路由器环回口方法和装置 |
CN109558344A (zh) * | 2018-12-03 | 2019-04-02 | 郑州云海信息技术有限公司 | 一种适用于网络传输的dma传输方法及dma控制器 |
CN109729021A (zh) * | 2018-12-27 | 2019-05-07 | 北京天融信网络安全技术有限公司 | 一种报文处理方法及电子设备 |
CN110519180A (zh) * | 2019-07-17 | 2019-11-29 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 网卡虚拟化队列调度方法及系统 |
-
2019
- 2019-12-06 CN CN201911254796.2A patent/CN110943941B/zh active Active
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0642246A2 (en) * | 1993-09-08 | 1995-03-08 | Hitachi, Ltd. | Network communication method and network system |
CN101178694A (zh) * | 2006-11-07 | 2008-05-14 | 莱克斯信息技术(北京)有限公司 | Intel e1000零拷贝的方法 |
CN101202707A (zh) * | 2007-12-03 | 2008-06-18 | 杭州华三通信技术有限公司 | 高速单板传输报文的方法、现场可编程门阵列及高速单板 |
CN101540727A (zh) * | 2009-05-05 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种ip报文的硬件分流方法 |
CN102137169A (zh) * | 2011-01-30 | 2011-07-27 | 华为技术有限公司 | 一种绑定物理网口的方法、网卡及通信系统 |
CN102255818A (zh) * | 2011-08-26 | 2011-11-23 | 迈普通信技术股份有限公司 | 一种驱动接收报文的方法及装置 |
CN102750245A (zh) * | 2012-05-29 | 2012-10-24 | 中国人民解放军国防科学技术大学 | 报文接收方法、报文接收模块、装置及系统 |
CN102752219A (zh) * | 2012-07-18 | 2012-10-24 | 杭州华三通信技术有限公司 | 用于实现vd互连的方法和交换设备 |
US20140059111A1 (en) * | 2012-08-27 | 2014-02-27 | Vmware, Inc. | Method and system for enabling multi-core processing of vxlan traffic |
CN103200085A (zh) * | 2013-04-16 | 2013-07-10 | 中航网信(北京)科技有限公司 | 一种实现vxlan报文线速收发的方法及系统 |
CN103259735A (zh) * | 2013-05-15 | 2013-08-21 | 重庆邮电大学 | 一种基于NetFPGA的可编程虚拟化路由器的通信方法 |
CN103442091A (zh) * | 2013-08-28 | 2013-12-11 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN106411740A (zh) * | 2016-08-31 | 2017-02-15 | 南京磐能电力科技股份有限公司 | 基于以太网控制器的网络端口扩展方法 |
CN108322326A (zh) * | 2017-06-27 | 2018-07-24 | 新华三技术有限公司 | 一种接口状态控制方法、报文传输方法及装置 |
CN107995129A (zh) * | 2017-11-30 | 2018-05-04 | 锐捷网络股份有限公司 | 一种nfv报文转发方法和装置 |
CN108683616A (zh) * | 2018-04-20 | 2018-10-19 | 全球能源互联网研究院有限公司 | 一种虚拟交换机队列的网络配置装置 |
CN108768851A (zh) * | 2018-06-01 | 2018-11-06 | 武汉绿色网络信息服务有限责任公司 | 一种基于Linux系统实现的路由器环回口方法和装置 |
CN109558344A (zh) * | 2018-12-03 | 2019-04-02 | 郑州云海信息技术有限公司 | 一种适用于网络传输的dma传输方法及dma控制器 |
CN109729021A (zh) * | 2018-12-27 | 2019-05-07 | 北京天融信网络安全技术有限公司 | 一种报文处理方法及电子设备 |
CN110519180A (zh) * | 2019-07-17 | 2019-11-29 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 网卡虚拟化队列调度方法及系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113676421A (zh) * | 2021-10-25 | 2021-11-19 | 之江实验室 | 一种基于PCIe的多端口网络报文收发方法 |
CN115277407A (zh) * | 2022-07-25 | 2022-11-01 | 北京天融信网络安全技术有限公司 | 网口配置处理方法、装置、电子设备和存储介质 |
CN115277407B (zh) * | 2022-07-25 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 网口配置处理方法、装置、电子设备和存储介质 |
CN116996417A (zh) * | 2023-09-26 | 2023-11-03 | 中国科学院自动化研究所 | 多源端口数据存储方法及装置 |
CN116996417B (zh) * | 2023-09-26 | 2024-01-16 | 中国科学院自动化研究所 | 多源端口数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110943941B (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110943941B (zh) | 一种报文接收方法、网卡及电子设备 | |
US8332875B2 (en) | Network device driver architecture | |
CN102609298B (zh) | 基于硬件队列扩展的网卡虚拟化系统及其方法 | |
US9996484B1 (en) | Hardware acceleration for software emulation of PCI express compliant devices | |
CN107967225B (zh) | 数据传输方法、装置、计算机可读存储介质和终端设备 | |
JPH07122863B2 (ja) | 汎用のオペレーティング・システム・インターフェースを有するデバイス・ドライバを含むデータ処理システム | |
EP3436947B1 (en) | Secure driver platform | |
CN113296884A (zh) | 虚拟化方法、装置、电子设备、介质及资源虚拟化系统 | |
CN114281484B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN111737180A (zh) | 一种基于pci总线的串口驱动系统 | |
CN115277407A (zh) | 网口配置处理方法、装置、电子设备和存储介质 | |
CN112015476B (zh) | 显卡驱动方法、装置、电子设备以及存储介质 | |
CN116257472A (zh) | 接口控制方法、装置、电子设备及存储介质 | |
US9769093B2 (en) | Apparatus and method for performing InfiniBand communication between user programs in different apparatuses | |
CN107908578A (zh) | 基于PXIe总线和VISA驱动的通用DMA传输方法 | |
CN112506676A (zh) | 进程间的数据传输方法、计算机设备和存储介质 | |
CN107861803A (zh) | 一种基于中断的xp系统下cpci总线rs422通信驱动方法 | |
CN116881987A (zh) | Pcie设备直通虚拟机的方法、装置及相关设备 | |
EP4273731A1 (en) | Information processing method and apparatus | |
CN116450554A (zh) | 中断处理方法、根复合体设备及电子设备 | |
CN116107774A (zh) | Io请求处理方法、装置、电子设备和存储介质 | |
CN113037696B (zh) | 一种数据传输方法、系统服务器、存储介质和计算机设备 | |
US11360926B2 (en) | Configuration management device, configuration management system, configuration management method, and non-transitory computer readable storage medium | |
CN115687223A (zh) | 用于嵌入式设备串口通信的方法及装置、嵌入式设备、存储介质 | |
CN111615150B (zh) | 基于PCIe接口的5G数据传输方法、装置、设备及存储介质 |
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 |