CN107135189B - 一种报文发送方法及物理机 - Google Patents
一种报文发送方法及物理机 Download PDFInfo
- Publication number
- CN107135189B CN107135189B CN201610113259.6A CN201610113259A CN107135189B CN 107135189 B CN107135189 B CN 107135189B CN 201610113259 A CN201610113259 A CN 201610113259A CN 107135189 B CN107135189 B CN 107135189B
- Authority
- CN
- China
- Prior art keywords
- memory
- pages
- data
- memory pages
- message
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000015654 memory Effects 0.000 claims abstract description 286
- 238000011010 flushing procedure Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- 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/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种报文发送方法及物理机,用于提高在因获取报文的内容而访问内存时的访问效率。该方法包括:物理机中的发送设备在需发送报文时,从资源池中获取连续M页内存页;其中,M页内存页分别用于存储M个数据结构体所指示的数据,资源池包括发送设备预先申请的连续N页内存页;发送设备将报文包括的M个数据结构体依次所指示的数据分别存储到M页内存页中;发送设备将M页内存页依次对应的内存地址分别封装到M个数据结构体中,并将M个数据结构体发送给物理机中的接收设备;接收设备接收所述M个数据结构体,并依次从M个数据结构体分别封装的内存地址对应的内存中获取数据,以及将依次获取的数据组成报文。
Description
技术领域
本发明涉及通信领域,特别涉及一种报文发送方法及物理机。
背景技术
目前在虚拟化环境下,运行在宿主机(HOST)中的虚拟机(virtual machine,VM)并不能直接访问该HOST中的硬件设备,而必须借助于HOST来实现数据的传递。
例如,HOST可以为VM提供一条用于连通硬件设备的数据通路,即I/O(输入/输出)通道,I/O通道一般包括HOST及VM中的若干设备,例如可以包括VM中的前端设备(FrontDevice)、HOST中的后端设备(Back Device)、连接在前端设备和后端设备之间的数据处理模块(Data Process Modules)、HOST中的桥(bridge)和HOST中的本地设备(NativeDevice)。前端设备是HOST为VM呈现的设备,对于VM来说是可见的,在VM中可以对前端设备进行配置,后端设备是在HOST中呈现的设备,与VM中的前端设备一一对应,数据处理模块用于连接前端设备和后端设备,主要可以完成相应的数据处理业务,例如数据拷贝或数据过滤等,桥用于连接本地设备和后端设备,其中,前端设备、数据处理模块、后端设备和桥均可以是软件模块,本地设备是HOST中的真正的硬件设备。例如,本地设备可以向运行在该HOST中的VM发送报文,该报文依次经过桥、后端设备、数据处理模块和前端设备,再到达VM,同样VM也可以按照相反的路径向本地设备发送报文,这样就实现了VM对HOST的硬件设备的访问。
在网络虚拟化场景下,本地设备和后端设备之间在传输报文时,一般用规定的数据结构体来进行传输,即,可以将报文的内容存储在内存里,将存储了报文的内存空间的地址封装在数据结构体中进行传输,接收设备在接收数据结构体后,可以根据数据结构体中封装的地址获取报文的内容。例如目前一般比较通用的数据结构体为SKB结构体。例如后端设备要向VM发送报文,则后端设备可以从本地的内存中申请内存空间用于存储报文的内容,SKB结构中包括用于存储报文的元数据的地址的字段以及用于存储报文的内容的地址的字段,这两个字段所指示的内存空间可以连续也可以不连续,所以后端设备申请的内存空间可能就是不连续的。那么前端设备在接收后端设备发送的SKB结构体后,可能就需要通过访问不连续的内存空间来获取报文的全部内容,即获取报文的元数据及报文的内容,如果不连续的内存空间的跨度较大,就会增加访问时的难度,使得访问内存时的操作复杂度较高,而访问效率较低。
发明内容
本发明实施例提供一种报文发送方法及物理机,用于提高在因获取报文的内容而访问内存时的访问效率。
第一方面,提供一种报文发送方法,该方法可以包括:物理机中的发送设备在需发送报文时,从资源池中获取连续M页内存页;其中,所述M页内存页分别用于存储M个数据结构体所指示的数据,每个数据结构体所指示的内存空间为一页,所述资源池包括所述发送设备预先申请的连续N页内存页,所述N页内存页用于存储N个数据结构体所指示的数据,所述M、N均为正整数,且M小于等于N;所述发送设备将所述报文包括的M个数据结构体依次所指示的数据分别存储到所述M页内存页中;所述发送设备将所述M页内存页依次对应的内存地址分别封装到所述M个数据结构体中,并将所述M个数据结构体发送给所述物理机中的接收设备;所述接收设备接收所述M个数据结构体,并依次从所述M个数据结构体分别封装的内存地址对应的内存中获取数据,以及将依次获取的数据组成所述报文。
本发明实施例中,资源池中可以预留事先申请好的连续的内存页,这样发送设备在需发送报文时,可以直接从资源池中获取已申请的内存页来存储报文的内容,减少了发送设备在发送报文时所需的准备工作,节省报文发送的时间。且M页内存页是连续的,那么接收设备在接收发送设备发送的数据结构体后,通过访问数据结构体所指示的连续的内存页就可以获取报文的全部内容,访问较为简单快捷,降低了访问时的难度,从而提高了访问效率。
结合第一方面,在第一方面的第一种可能的实现方式中,若M=1,则所述发送设备可以获取所述资源池的首地址所指向的内存页;若M>1,则发送设备可以获取所述资源池的首地址所指向的内存页,并从所述首地址所指向的内存页开始,依次获取连续M-1个内存页。
发送设备可以每次从资源池的首地址开始获取内存页,因为发送设备一般来说可以存储资源池的首地址,这样在获取内存页时无需再查找地址,提高操作效率。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在依次从所述M个数据结构体分别封装的内存地址对应的内存中获取数据之后,所述接收设备可以指示所述发送设备释放所述M个数据结构体,所述发送设备可以释放所述M个数据结构体,并清空所述M个数据结构体所指示的所述M页内存页中存储的数据。
在数据结构体使用完毕后,可以将其释放,这样在下一次可以继续使用这些数据结构体,且数据结构体所指示的内存页也是固定的,在一次使用完毕后可以清空,以便下次继续使用。这也就提高了数据结构体和内存的复用率。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,发送设备可以从所述资源池的首地址所指向的内存页开始,依次清空所述M页内存页中存储的数据。
发送设备可能会存储资源池的首地址,则发送设备在清空时可以从首地址指示的内存页开始清空,这样可以省去了查找地址的步骤,提高操作效率。
结合第一方面或第一方面的第一种可能的实现方式至第三种可能的实现方式中的任一种可能的实现方式,在第一方面的第四种可能的实现方式中,若所述资源池中已被所述发送设备获取的内存页的数量大于等于第一门限值,则所述发送设备再申请连续K个内存页放入所述资源池,K为正整数;或,若所述资源池中已被所述发送设备获取的内存页的数量小于等于第二门限值,则所述发送设备从所述资源池中释放连续P个内存页,P为正整数;其中,所述第一门限值大于所述第二门限值。
在初始申请资源池时,为了不占用过多的内存,申请的资源池可以不太大,在后期使用过程中,如果发送设备需要申请的内存页较多,则可以继续申请新的内存页放入资源池,如果发送设备需申请的内存页较少,则可以从资源池中释放一些内存页,这样可以根据需要来动态调整资源池的大小,尽量使得内存能够得到较为合理高效的利用。而且在申请新的内存页放入资源池时,可以申请连续的内存页,且这些连续的内存页与资源池中已有的内存页也可以连续,在释放资源池中的内存页时,例如可以从资源池的尾部开始释放连续的内存页,这样可以尽量保证资源池中的内存页是连续的。
第二方面,提供一种物理机,包括发送设备和接收设备。其中,发送设备可以用于在需发送报文时,从资源池中获取连续M页内存页,将所述报文包括的M个数据结构体依次所指示的数据分别存储到所述M页内存页中,将所述M页内存页依次对应的内存地址分别封装到所述M个数据结构体中,并将所述M个数据结构体发送给所述物理机中的接收设备;其中,所述M页内存页分别用于存储M个数据结构体所指示的数据,每个数据结构体所指示的内存空间为一页,所述资源池包括所述发送设备预先申请的连续N页内存页,所述N页内存页用于存储N个数据结构体所指示的数据,所述M、N均为正整数,且M小于等于N。接收设备可以用于接收所述M个数据结构体,并依次从所述M个数据结构体分别封装的内存地址对应的内存中获取数据,以及将依次获取的数据组成所述报文。
结合第二方面,在第二方面的第一种可能的实现方式中,若M=1,发送设备可以获取所述资源池的首地址所指向的内存页;若M>1,发送设备可以获取所述资源池的首地址所指向的内存页,并从所述首地址所指向的内存页开始,依次获取连续M-1个内存页。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,接收设备,还用于在依次从所述M个数据结构体分别封装的内存地址对应的内存中获取数据之后,指示所述发送设备释放所述M个数据结构体;发送设备,还用于释放所述M个数据结构体,并清空所述M个数据结构体所指示的所述M页内存页中存储的数据。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,发送设备可以从所述资源池的首地址所指向的内存页开始,依次清空所述M页内存页中存储的数据。
结合第二方面或第二方面的第一种可能的实现方式至第三种可能的实现方式中的任一种可能的实现方式,在第二方面的第四种可能的实现方式中,发送设备还可以用于:若所述资源池中已被所述发送设备获取的内存页的数量大于等于第一门限值,则再申请连续K个内存页放入所述资源池,K为正整数;或,若所述资源池已被所述发送设备获取的内存页的数量小于等于第二门限值,则从所述资源池中释放连续P个内存页,P为正整数。其中,所述第一门限值大于所述第二门限值。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的宿主机的内部结构示意图;
图2为SKB结构示意图;
图3为本发明实施例提供的PKT结构示意图;
图4为本发明实施例提供的报文发送方法的一种可能的流程图;
图5为本发明实施例提供的物理机的一种可能的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
以下,对本发明实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1)物理机,可以运行VM,例如物理机可以包括服务器(Server)和终端设备,终端设备是指向用户提供语音和/或数据连通性的设备,例如可以包括具有无线连接功能的手持式设备、或连接到无线调制解调器的处理设备。该终端设备可以经无线接入网(RadioAccess Network,RAN)与核心网进行通信,与RAN交换语音和/或数据。该终端设备可以包括用户设备(User Equipment,UE)、无线终端设备、移动终端设备、订户单元(SubscriberUnit)、订户站(Subscriber Station),移动站(Mobile Station)、移动台(Mobile)、远程站(Remote Station)、接入点(Access Point,AP)、远程终端设备(Remote Terminal)、接入终端设备(Access Terminal)、用户终端设备(User Terminal)、用户代理(User Agent)、或用户装备(User Device)等。例如,可以包括移动电话(或称为“蜂窝”电话),具有移动终端设备的计算机,便携式、袖珍式、手持式、计算机内置的或者车载的移动装置。例如,个人通信业务(Personal Communication Service,PCS)电话、无绳电话、会话发起协议(SIP)话机、无线本地环路(Wireless Local Loop,WLL)站、个人数字助理(Personal DigitalAssistant,PDA)等设备。
2)本发明实施例中,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
请参见图1,为物理机的一种可能的内部结构,下面先对图1中涉及到的功能模块或设备、以及一些概念进行介绍。
虚拟机101,指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离的环境中的完整的计算机系统。
HOST102,是物理存在的计算机,即物理机,一个HOST102上可以运行多个VM101,HOST102上运行的操作系统可以为VM101对HOST102中的硬件设备的操作提供接口和I/O通道。
前端设备103,是VM101中能够看到的设备,实际上是HOST102为VM101模拟的设备。
后端设备104,是HOST102上运行的操作系统中的与前端设备103相对应的模拟设备。本发明实施例里的后端设备104,可以是指VM101的虚拟网卡的驱动。
本发明实施例里的本地设备105,可以是HOST102中的物理网卡的驱动。
桥106,用于连接本地设备105和后端设备104。可替换的,如果本地设备105与后端设备104能够直接通信,则桥106也可以取消。
数据处理模块107,可以完成前端设备103与后端设备104之间的数据传递,一般可以包括与前端设备103和后端设备104的接口和工作线程等部分。
可选的,本发明实施例中,图1中的本地设备105可以作为发送设备,图1中的后端设备104可以作为接收设备,或者,图1中的本地设备105可以作为接收设备,图1中的后端设备104可以作为发送设备。
例如,VM101要向物理网卡发送数据时,VM101可以先将数据发送给VM101的虚拟网卡,VM101的虚拟网卡将数据发送给虚拟网卡的驱动,虚拟网卡的驱动将数据存储到内存中,然后将用于指示数据在内存中的地址的数据结构体发送给桥106,桥106将数据结构体发送给HOST102中的物理网卡的驱动,物理网卡的驱动根据数据结构体指示的地址从内存中获取数据,将数据发送给物理网卡,物理网卡接收该数据,例如可以继续将该数据发送给其他设备,例如其他HOST。例如,物理网卡向VM101发送数据,则物理网卡将数据发送给物理网卡的驱动,物理网卡的驱动将数据存储到内存中,然后将用于指示数据在内存中的地址的数据结构体发送给桥106,桥106将数据结构体发送给VM101的虚拟网卡的驱动,虚拟网卡的驱动根据数据结构体指示的地址从内存中获取数据,将数据发送给虚拟网卡,虚拟网卡再将数据发送给VM101,例如发送给VM101的虚拟处理器等。
元数据(metadata),是报文管理数据,例如可以包括媒体访问控制(Media AccessControl,MAC)头所在位置、网际协议(Internet Protocol,IP)头所在位置、虚拟局域网(virtual local area network,vlan)标识(identity,ID)等信息。
目前,在本地设备105和后端设备104之间传输报文时,所用的数据结构体为报文套接字数据结构(SKB)结构体,是网络虚拟化场景下用于传输报文的数据结构体,用于管理报文,包括定义报文的数据所在的内存位置,以及定义对应的metadata所在的内存位置等。下面介绍一下SKB结构体。
请参见图2,为SKB结构体及其所指示的内存空间的示意图。其中,报文套接字管理数据结构(sk_buff)字段用于存储报文的元数据的地址,头(head)字段用于存储报文的第一页内容在内存中的首地址,结束(end)字段用于存储报文的第一页内容在内存中的尾地址。线性数据区域(Linear data area)为用于存储报文的第一页内容的内存页,在报文存在多个分片时,报文套接字共享信息数据结构(skb_shared_info)字段用于描述除了报文的线性区(首个分片中的数据,在一页内存中)外的其他分片的信息,在SKB发生复制(clone)时,skb_shared_info字段可被多个SKB共享。报文套接字内存页(frags)(0)字段~frags(16)字段为内存中的用于存储报文的剩余内容的区域,如果报文的内容超过一页,那么报文的第一页内容存储在线性数据区域,报文的其他页的内容可以依次存储在frags(x)中,每个frags可以存储一页的内容。
若按照SKB结构体来封装用于存储报文的内容的内存空间的地址,那么发送设备在需要发送报文时,可以根据报文的大小从内存中申请内存空间,SKB结构对于报文的元数据和报文的内容的存储位置不限制,因此发送设备申请的内存空间可能是不连续的,发送设备可能将报文的元数据和报文的内容存储在不连续的内存空间中,这样,接收设备接收到用于指示不连续的内存空间的SKB结构体后,需要通过访问不连续的内存空间来获取报文的元数据和报文的内容,可能访问时的跨度较大,给访问增加了难度,也增加了访问所需的时间,访问效率较低。
接收设备在不再需要使用SKB结构体时,可以指示发送设备释放SKB结构体,而SKB结构体所指示的内存空间可能是不连续的,大小可能也不一致,直接将其释放回内存中,出现碎片的概率较大,会影响系统的整体效率。
另外,释放的内存空间又分散释放到了内存中,若发送设备下次又需要通过SKB结构体来发送报文,则发送设备需要重新申请内存空间,也就是说每次都需要重新申请内存空间,操作步骤较为繁琐,也降低了效率。
本发明实施例充分考虑到以上问题,资源池中可以预留事先申请好的连续的内存页,这样发送设备在需发送报文时,可以直接从资源池中获取已申请的内存页来存储报文的内容,减少了发送设备在发送报文时所需的准备工作,节省报文发送的时间。且M页内存页是连续的,那么接收设备在接收发送设备发送的数据结构体后,通过访问数据结构体所指示的连续的内存页就可以获取报文的全部内容,访问较为简单快捷,降低了访问时的难度,从而提高了访问效率。
另外,接收设备在不再需要使用该数据结构体时,可以指示发送设备释放该数据结构体,而数据结构体所指示的内存页是连续的,将其释放回内存中后出现碎片的概率较小,在一定程度上能够提高系统的整体效率。
下面介绍本发明实施例所提供的方案。
请参见图3,为本发明实施例提供的一种数据结构体及其所指示的内存空间的示意图,在本发明实施例中,本地设备105和后端设备104之间可以按照该数据结构体来传输报文。该数据结构体的名称例如为报文数据结构(PKT),当然也可以有其他的命名,名称对该数据结构体本身不造成限制,为方便描述,下面将PKT作为该数据结构体的名称进行描述。
在PKT结构体中,基于统一驱动框架的报文数据结构缓存(ceth_pkt_buffer)字段可以用于定义该PKT结构体占用的内存页或内存页所在的资源池的相关的管理信息,例如,可以记录该内存页在内存中的地址,还可以记录资源池涉及的链表数据结构等。基于统一驱动框架的报文数据结构(ceth_pkt)字段用于存储报文的元数据在内存中的地址,skb字段可以视为指针,可以用于访问PKT结构体对应的SKB结构体,用于兼容SKB结构体,从而可以较为快速地将PKT结构体和SKB结构体进行转化,skb字段下面的frags字段,为PKT结构体的标志位,可以用于记录必要的报文属性。end字段,可以视为指针,可以指向报文内容在内存中的结尾地址,end字段下面的数据(data)字段,可以视为指针,可以指向报文内容在内存中的起始地址。顶部空间(head room),为报文的报头之前的一段预留的内存空间,用于为可能存在的报文提供向前扩展的能力。head room下面的data,例如其中文名称可以是报文数据空间,为一段内存空间,这段内存空间可以用于存储报文的内容。为了兼容SKB结构体,在PKT结构体中保留了skb_shared_info、sk_buff、frags(0)~frags(16)、end、head、及data等字段,这样,在提高访问效率的同时,尽量避免破坏SKB结构体原有的功能。
另外,PKT结构体中各个部分的命名只是一种可能的命名方式,也可以有其他的命名,内部各个部分的名称对该PKT结构体本身不造成限制。
可以定义,图3中所示的PKT结构体所指示的内存空间为一页,即一个PKT结构体所指示的报文的元数据和报文的内容可以存储在一页内存中,这样元数据和报文的内容不会存储在不连续的内存空间中,使得对内存的访问变得更加简单快捷,提高访问效率。
可选的,如果报文的内容较多,那么发送设备在申请内存页时可以申请多页,即申请多个PKT结构体,其中的第一个PKT结构体所指示的内存页,即首个内存页可以存储报文的元数据的地址和报文的第一页的内容的地址,报文的其他页的地址可以依次存储在申请的其他的PKT结构体中,而其他的PKT结构体中可以无需再存储报文的元数据的地址,这样可以减少需要存储在PKT结构体中的数据量,提高封装效率。
下面介绍一种通过PKT结构体来发送报文的方法,该方法可以依托于图1所示的架构实现。请参见图4,该方法的流程描述如下:
步骤401:物理机中的发送设备在需发送报文时,从资源池中获取连续M页内存页;其中,M页内存页分别用于存储M个数据结构体所指示的数据,每个数据结构体所指示的内存空间为一页,资源池包括发送设备预先申请的连续N页内存页,N页内存页用于存储N个数据结构体所指示的数据,M、N均为正整数,且M小于等于N;
步骤402:发送设备将报文包括的M个数据结构体依次所指示的数据分别存储到M页内存页中;
步骤403:发送设备将M页内存页依次对应的内存地址分别封装到M个数据结构体中,并将M个数据结构体发送给物理机中的接收设备;
步骤404:接收设备接收M个数据结构体,并依次从M个数据结构体分别封装的内存地址对应的内存中获取数据,以及将依次获取的数据组成报文。
可选的,图4中的数据,“数据”和“内容”这两个概念可互换。
可选的,图4中的数据结构体可以包括PKT结构体。
资源池可以位于内存中,无论发送设备是本地设备105还是后端设备104,只要是需要发送报文,则都可以在本地预先申请并维护资源池。可选的,如果发送设备是图1中的本地设备105,那么资源池就位于本地设备105的内存中,例如可以位于HOST102的物理网卡的内存中,如果发送设备是图1中的后端设备104,由于后端设备104对应的虚拟网卡实际上是软件设备,因此资源池可以位于后端设备104的线性内存中。
可选的,发送设备在从资源池中获取连续的M个内存页之前,可以在内存中预先申请连续的N页内存页,发送设备可以将申请的N页内存页用链表进行串接,这样就相当于得到了该资源池,该资源池中就包括N页内存页。发送设备在需要发送报文时,可以从资源池中获取内存页,每个内存页可以存储一个PKT结构体所指示的数据。
可选的,一个PKT结构体所指示的内存空间为一页,即,一个PKT结构体可以指示资源池中的一页内存页。发送设备需发送的报文的大小可能是不同的,比如有的报文的内容可能只需占用一页内存页,而有的报文的内容可能需要占用多页内存页,那么,发送设备在从资源池中获取内存页时,可以根据报文的大小获取不同数量的内存页。例如,如果报文的内容为一页,则发送设备可以获取一页内存页,即M=1,如果报文的内容有多页,则发送设备可以获取多页内存页,即M>1。
可选的,发送设备在预先申请资源池后,可以存储资源池的首地址,即资源池中的第一个内存页的起始地址,那么发送设备在从资源池中获取内存页时,可以优先从资源池的首地址开始获取,这样节省了发送设备查找地址所需的时间。
例如,若M=1,则发送设备可以直接获取资源池的首地址指向的内存页,若M>1,则发送设备可以获取资源池的首地址指向的内存页,例如将其称为第一内存页,且发送设备可以在资源池中从第一内存页开始,依次获取连续的M-1页内存页,这样就获得了M页内存页。
发送设备在获得M页内存页后,可以将待发送的报文的内容存储到M页内存页中,并按照该数据结构体所指示的格式,即按照PKT结构体封装待发送的报文在内存中的地址。例如,如果报文的内容只有一页,那么发送设备获得的是一页内存页,则发送设备用一个PKT结构体封装报文的元数据的地址和报文的内容的地址,如果报文的内容有多页,那么发送设备获得的是多页内存页,则发送设备通过多个PKT结构体来封装报文的元数据的地址和报文的内容的地址,例如发送设备共获得了3页内存页,这3页内存页在内存中的地址从小到大的顺序为:第1页内存页的地址<第2页内存页的地址<第3页内存页的地址,那么,按照在内存中的地址从小到大的顺序,用于指示第1页内存页的PKT结构体可以用于封装报文的元数据的地址和报文的第一页的内容的地址,用于指示第2页内存页的PKT结构体可以用于封装报文的第二页的内容的地址,用于指示第3页内存页的PKT结构体可以用于封装报文的第3页的内容的地址。
发送设备在将报文的地址封装完毕后,可以发送PKT结构体。例如发送设备为本地设备105,则PKT结构体先发送给桥106,再发送给后端设备104,或者例如发送设备为后端设备104,则PKT结构体先发送给桥106,再发送给本地设备105,也就是说,桥106也是其中的一个接收设备,本发明实施例暂时不讨论桥106作为接收设备所要做的工作,例如发送设备为本地设备105,则本发明实施例所提到的接收设备可以是指后端设备104,或者例如发送设备为后端设备104,则本发明实施例所提到的接收设备可以是指本地设备105。
发送设备发送PKT结构体后,接收设备可以接收PKT结构体,接收设备接收PKT结构体后,可以根据PKT结构体中封装的地址,从内存中获取报文的内容。之后,如果接收设备为本地设备105,则可能报文的传输过程已经完毕,或者报文可能通过本地设备105再传输给其他的物理机,或者,如果接收设备为后端设备104,则后端设备104可以将报文发送给VM101,无论如何,即使需要再传输报文,可能也无需再用到PKT结构体,即接收设备对报文进行解封装后,相当于PKT结构体已经使用完毕,也就相当于本发明实施例所定义的用于表征数据结构的指示信息已使用完毕,那么为了使得用于表征数据结构的指示信息可以复用,接收设备可以指示发送设备释放M个PKT结构体,发送设备可以重新将M个PKT结构体所指示的内存页放入资源池,这样发送设备后续需要向接收设备发送报文时可以再次从资源池中获取内存页,很可能同一页内存页可以被多次使用,也就实现了内存的复用,提高内存的利用率。
可选的,发送设备在从资源池中获取内存页时,可以优先从资源池的首地址开始获取,同样的,发送设备在将释放的PKT结构体所指示的内存页放回资源池时,也可以优先放回资源池的首地址所指向的位置,这样节省了查找地址所需的时间,且始终从资源池的头部获取内存页和放入内存页,提高了内存的复用率。其中,本发明实施例中,将内存页放回资源池,可以是指清空内存页中存储的已传输的报文的内容。
例如,若M=1,则发送设备可以直接获取资源池的首地址指向的内存页,那么在接收设备指示发送设备释放用于指示该内存页的PKT结构体后,发送设备可以重新将该内存页放入资源池的首地址所指向的位置,即清空资源池的首地址所指向的内存页中存储的内容,若M>1,则发送设备可以获取资源池的首地址指向的内存页,例如将其称为第一内存页,且发送设备可以在资源池中从第一内存页开始,依次获取连续的M-1页内存页,这样就获得了M页内存页,在接收设备指示发送设备释放用于指示该M页内存页的M个PKT结构体后,发送设备可以重新将该M页内存页放入资源池,即清空该M页内存页中存储的内容,例如,发送设备可以从第一内存页开始,依次清空该M页内存页中存储的内容。
可选的,为了提升内存的复用率以及减少系统的内存占用,发送设备在预先申请资源池时,所申请的资源池可以不必过大,以避免占用内存过多。而在发送报文时,如果需发送的报文的数量较多,则可能需要获取的内存页的数量可能大于等于资源池中包括的内存页的数量,即可能会出现资源池的资源不足的情况,为解决该问题,本发明实施例提出,资源池的大小可以在使用过程中根据需求进行调整,下面进行介绍。
可选的,在发送设备中可以维护队列(queue),例如称为发送队列,发送队列可以用于维护待发送的报文。如果发送设备是本地设备105,则发送队列可以位于本地设备105的内存中,如果发送设备是后端设备104,则发送队列可以位于后端设备104的线性内存中。那么,发送设备在初始申请资源池时,所申请的资源池的大小可以大于等于发送设备中的发送队列的大小,以保证能够正常发送报文。
可选的,发送设备可以实时对资源池进行监控,或者也可以在每次需要从资源池中获取内存页时对资源池进行监控,或者也可以在每次从资源池中获取内存页后对资源池进行监控,等等,对于对资源池的监控点本发明实施例不作限制。
可选的,如果资源池中已被发送设备获取的内存页的数量大于等于第一门限值,则发送设备可以再从内存中申请连续K页内存页放入资源池,K为正整数。例如一种可能的计算第一门限值及K的方式如下:
M1=c1*(当前的发送队列的大小)-a1*(最近b秒内申请的报文个数)(1)
K=a2*(最近b秒内申请的报文个数)+c2*(当前的发送队列的大小)(2)
其中,公式(1)中的M1为第一门限值,公式(1)和公式(2)中的a1、a2、b、c1、c2为测试获得的经验值。
可选的,如果资源池中已被发送设备获取的内存页的数量小于等于第二门限值,则发送设备可以从资源池中释放连续P页内存页。其中,P均为正整数。例如一种可能的计算第二门限值及P的方式如下:
M2=c1*(当前的发送队列的大小)-a1*(最近b秒内申请的报文个数)(3)
P=c2*(当前的发送队列的大小)-a1*(最近b秒内申请的报文个数)(4)
其中,公式(3)中的M2为第二门限值,公式(3)和公式(4)中的a1、a2、b、c1、c2为测试获得的经验值。其中,M2最小可以是0,P最小也可以是0。
根据公式(1)和公式(3)可以看到,这种计算方式下是以第一门限值和第二门限值相等为例,在实际应用中,第一门限值和第二门限值也可以不相等。可选的,第一门限值可以大于第二门限值。
请参见图5,基于同一发明构思,提供一种物理机500,该物理机500可以包括发送设备501和接收设备502。
可选的,该物理机500与图1所示的宿主机102可以是同一设备。
可选的,发送设备501可以是图1中的本地设备105,接收设备502可以是图1中的后端设备104。可替换的,发送设备501可以是图1中的后端设备104,接收设备502可以是图1中的本地设备105。
该物理机500可以实现图4所示的方法,因此,对于该物理机500中的各功能单元所实现的功能等,可参考如前方法部分的描述,不多赘述。
本发明实施例中,资源池中可以预留事先申请好的连续的内存页,这样发送设备在需发送报文时,可以直接从资源池中获取已申请的内存页来存储报文的内容,减少了发送设备在发送报文时所需的准备工作,节省报文发送的时间。且M页内存页是连续的,那么接收设备在接收发送设备发送的数据结构体后,通过访问数据结构体所指示的连续的内存页就可以获取报文的全部内容,访问较为简单快捷,降低了访问时的难度,从而提高了访问效率。
在本发明中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例。
在本发明实施例中的各功能单元可以集成在一个处理单元中,或者各个单元也可以均是独立的物理模块。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(Universal Serial Bus flash drive)、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以对本发明的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明实施例的方法,不应理解为对本发明实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本发明实施例的保护范围之内。
Claims (10)
1.一种报文发送方法,其特征在于,包括:
物理机中的发送设备在需发送报文时,从资源池中获取连续M页内存页;其中,所述M页内存页分别用于存储M个数据结构体所指示的数据,每个数据结构体所指示的内存空间为一页,所述资源池包括所述发送设备预先申请的连续N页内存页,所述N页内存页用于存储N个数据结构体所指示的数据,所述M、N均为正整数,且M小于等于N;
所述发送设备将所述报文包括的M个数据结构体依次所指示的数据分别存储到所述M页内存页中,其中,用于指示所述M页内存页中的第一页内存页的数据结构体用于封装所述报文的元数据的地址和所述报文的第一页的内容的地址,用于指示所述M页内存页中的其他的内存页的数据结构体用于封装所述报文对应的页的内容的地址,以及不用于封装所述报文的元数据的地址;
所述发送设备将所述M页内存页依次对应的内存地址分别封装到所述M个数据结构体中,并将所述M个数据结构体发送给所述物理机中的接收设备;
所述接收设备接收所述M个数据结构体,并依次从所述M个数据结构体分别封装的内存地址对应的内存中获取数据,以及将依次获取的数据组成所述报文。
2.如权利要求1所述的方法,其特征在于,
若M=1,从资源池中获取连续M页内存页,包括:
所述发送设备获取所述资源池的首地址所指向的内存页;
若M>1,从资源池中获取连续M页内存页,包括:
所述发送设备获取所述资源池的首地址所指向的内存页,并从所述首地址所指向的内存页开始,依次获取连续M-1个内存页。
3.如权利要求1或2所述的方法,其特征在于,在依次从所述M个数据结构体分别封装的内存地址对应的内存中获取数据之后,还包括:
所述接收设备指示所述发送设备释放所述M个数据结构体;
所述发送设备释放所述M个数据结构体,并清空所述M个数据结构体所指示的所述M页内存页中存储的数据。
4.如权利要求3所述的方法,其特征在于,清空所述M个数据结构体所指示的所述M页内存页中存储的数据,包括:
所述发送设备从所述资源池的首地址所指向的内存页开始,依次清空所述M页内存页中存储的数据。
5.如权利要求1或2所述的方法,其特征在于,所述方法还包括:
若所述资源池中已被所述发送设备获取的内存页的数量大于等于第一门限值,则所述发送设备再申请连续K个内存页放入所述资源池,K为正整数;或
若所述资源池中已被所述发送设备获取的内存页的数量小于等于第二门限值,则所述发送设备从所述资源池中释放连续P个内存页,P为正整数;
其中,所述第一门限值大于所述第二门限值。
6.一种物理机,其特征在于,包括发送设备和接收设备;其中,
所述发送设备,用于在需发送报文时,从资源池中获取连续M页内存页,将所述报文包括的M个数据结构体依次所指示的数据分别存储到所述M页内存页中,将所述M页内存页依次对应的内存地址分别封装到所述M个数据结构体中,并将所述M个数据结构体发送给所述物理机中的接收设备;其中,所述M页内存页分别用于存储M个数据结构体所指示的数据,每个数据结构体所指示的内存空间为一页,所述资源池包括所述发送设备预先申请的连续N页内存页,所述N页内存页用于存储N个数据结构体所指示的数据,所述M、N均为正整数,且M小于等于N,用于指示所述M页内存页中的第一页内存页的数据结构体用于封装所述报文的元数据的地址和所述报文的第一页的内容的地址,用于指示所述M页内存页中的其他的内存页的数据结构体用于封装所述报文对应的页的内容的地址,以及不用于封装所述报文的元数据的地址;
所述接收设备,用于接收所述M个数据结构体,并依次从所述M个数据结构体分别封装的内存地址对应的内存中获取数据,以及将依次获取的数据组成所述报文。
7.如权利要求6所述的物理机,其特征在于,
若M=1,所述发送设备从资源池中获取连续M页内存页时,具体用于:
获取所述资源池的首地址所指向的内存页;
若M>1,所述发送设备从资源池中获取连续M页内存页时,具体用于:
获取所述资源池的首地址所指向的内存页,并从所述首地址所指向的内存页开始,依次获取连续M-1个内存页。
8.如权利要求6或7所述的物理机,其特征在于,
所述接收设备,还用于在依次从所述M个数据结构体分别封装的内存地址对应的内存中获取数据之后,指示所述发送设备释放所述M个数据结构体;
所述发送设备,还用于释放所述M个数据结构体,并清空所述M个数据结构体所指示的所述M页内存页中存储的数据。
9.如权利要求8所述的物理机,其特征在于,所述发送设备清空所述M个数据结构体所指示的所述M页内存页中存储的数据时,具体用于:
从所述资源池的首地址所指向的内存页开始,依次清空所述M页内存页中存储的数据。
10.如权利要求6或7所述的物理机,其特征在于,所述发送设备还用于:
若所述资源池中已被所述发送设备获取的内存页的数量大于等于第一门限值,则再申请连续K个内存页放入所述资源池;K为正整数;或
若所述资源池已被所述发送设备获取的内存页的数量小于等于第二门限值,则从所述资源池中释放连续P个内存页;P为正整数;
其中,所述第一门限值大于所述第二门限值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610113259.6A CN107135189B (zh) | 2016-02-26 | 2016-02-26 | 一种报文发送方法及物理机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610113259.6A CN107135189B (zh) | 2016-02-26 | 2016-02-26 | 一种报文发送方法及物理机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107135189A CN107135189A (zh) | 2017-09-05 |
CN107135189B true CN107135189B (zh) | 2020-02-14 |
Family
ID=59721413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610113259.6A Active CN107135189B (zh) | 2016-02-26 | 2016-02-26 | 一种报文发送方法及物理机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107135189B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992352B (zh) * | 2017-12-29 | 2021-10-08 | 迈普通信技术股份有限公司 | 数据传输方法、装置、电子设备及可读取存储介质 |
CN111162965A (zh) * | 2019-12-17 | 2020-05-15 | 杭州迪普科技股份有限公司 | 监控Buffer的方法和装置 |
CN111831596B (zh) * | 2020-07-28 | 2022-01-21 | 山东有人物联网股份有限公司 | 一种rtos串口网络传输方法及装置 |
CN114911725A (zh) * | 2021-02-10 | 2022-08-16 | 华为技术有限公司 | 通信方法、装置及系统 |
CN113176950B (zh) * | 2021-04-09 | 2023-10-27 | 杭州迪普科技股份有限公司 | 报文处理方法、装置、设备及计算机可读存储介质 |
CN116775522A (zh) * | 2022-03-08 | 2023-09-19 | 华为技术有限公司 | 一种基于网络设备的数据处理方法及网络设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707565A (zh) * | 2009-12-04 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 零拷贝网络报文发送、接收方法和装置 |
CN102014067A (zh) * | 2010-12-14 | 2011-04-13 | 北京星网锐捷网络技术有限公司 | 一种报文分片发送的方法、装置和网络设备 |
CN103136407A (zh) * | 2011-12-03 | 2013-06-05 | 南京南瑞继保电气有限公司 | 一种基于数据整体存取技术实现emtdc仿真模型快照功能的方法 |
CN103885569A (zh) * | 2014-04-11 | 2014-06-25 | 珠海全志科技股份有限公司 | 内存的管理方法及装置 |
CN103970672A (zh) * | 2014-04-09 | 2014-08-06 | 汉柏科技有限公司 | 一种报文内存的管理方法及系统 |
-
2016
- 2016-02-26 CN CN201610113259.6A patent/CN107135189B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707565A (zh) * | 2009-12-04 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 零拷贝网络报文发送、接收方法和装置 |
CN102014067A (zh) * | 2010-12-14 | 2011-04-13 | 北京星网锐捷网络技术有限公司 | 一种报文分片发送的方法、装置和网络设备 |
CN103136407A (zh) * | 2011-12-03 | 2013-06-05 | 南京南瑞继保电气有限公司 | 一种基于数据整体存取技术实现emtdc仿真模型快照功能的方法 |
CN103970672A (zh) * | 2014-04-09 | 2014-08-06 | 汉柏科技有限公司 | 一种报文内存的管理方法及系统 |
CN103885569A (zh) * | 2014-04-11 | 2014-06-25 | 珠海全志科技股份有限公司 | 内存的管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107135189A (zh) | 2017-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107135189B (zh) | 一种报文发送方法及物理机 | |
EP3621360B1 (en) | System information transmission method and related device | |
EP2793448B1 (en) | Method, device, and system for short address use in wireless data communication networks | |
EP3742785A1 (en) | Session management method and device | |
EP2560337A1 (en) | Method and system for realizing wireless usb flash disk | |
US10462716B2 (en) | Network access method, relevant device and system | |
WO2016173217A1 (zh) | 一种数据传输方法、装置及系统 | |
CN116225671A (zh) | 一种基于dpdk的数据处理方法及装置 | |
CN105264869A (zh) | 一种ip地址分配的系统和方法 | |
WO2019062151A1 (zh) | 一种资源指示方法、通信装置及网络设备 | |
CN113609059B (zh) | 一种通信系统及通信方法 | |
EP3567826A1 (en) | Data transmission method and device, transmitting terminal, receiving terminal, and system | |
IL272881B2 (en) | Method and device for wireless communication | |
CN111698274B (zh) | 数据处理方法及装置 | |
KR102014758B1 (ko) | 탐색 정보 송신 방법, 디바이스, 및 통신 시스템 | |
CN114615355A (zh) | 报文处理方法以及报文解析模块 | |
CN103200620A (zh) | 一种lte系统中接入核心网的方法及装置 | |
WO2014205691A1 (zh) | 数据报文处理方法、数据报文处理装置及系统 | |
CN110557750B (zh) | 信息传输方法、网关设备、核心网设备以及存储介质 | |
CN112765085A (zh) | 数据传输方法及相关装置 | |
CN115987912B (zh) | 报文转发控制方法、装置、设备及存储介质 | |
CN104780577A (zh) | 一种数据资源在小区间进行切换传输的方法和设备 | |
CN117082152B (zh) | 服务处理方法、系统及装置 | |
EP4322641A1 (en) | Communication method and device | |
WO2023280107A1 (zh) | 一种检测数据传输的质量的方法以及相关装置 |
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 |