CN102571912A - 一种实现基于多核处理器和混合操作系统的卸载协议栈的方法 - Google Patents
一种实现基于多核处理器和混合操作系统的卸载协议栈的方法 Download PDFInfo
- Publication number
- CN102571912A CN102571912A CN2011103678874A CN201110367887A CN102571912A CN 102571912 A CN102571912 A CN 102571912A CN 2011103678874 A CN2011103678874 A CN 2011103678874A CN 201110367887 A CN201110367887 A CN 201110367887A CN 102571912 A CN102571912 A CN 102571912A
- Authority
- CN
- China
- Prior art keywords
- protocol stack
- unloading
- message
- operating system
- unloading protocol
- 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
Landscapes
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种实现基于多核处理器和混合操作系统的卸载协议栈的方法,包括:将卸载协议栈分为卸载协议栈和卸载协议栈适配层,卸载协议栈适配层运行于Linux操作系统上,卸载协议栈运行于简单执行环境或实时操作系统上,卸载协议栈适配层与卸载协议栈之间利用消息机制实现信息交互,其中卸载协议栈执行OSI网络模型中4层及以下的协议处理,卸载协议栈适配层为卸载协议栈提供Linux操作系统上的标准的套接字接口。该方法为用户提供了标准的Linux网络应用开发与管理的接口,同时提供了高性能的TCP/IP协议处理能力。
Description
技术领域
本发明涉及一种实现基于多核处理器和混合操作系统的卸载协议栈的方法,具体来说,是在一颗多核处理器上同时运行Linux操作系统和实时操作系统或简单执行环境,在Linux操作系统上提供至卸载协议栈的标准BSD socket接口,在实时操作系统或简单执行环境上实现具体的OSI网络模型中4层及以下的协议处理。
背景技术
TCP协议栈被广泛地应用于互联网的各个领域,例如HTTP协议、FTP协议、RTSP协议都是基于TCP协议实现的。但是处理TCP协议会产生大量的系统开销,导致处理器利用率上升,这样会影响操作系统中其他程序的运行。因此TCP卸载技术应运而生,TCP卸载(TCP offload)又名TCP卸载引擎(TCP offloadengine,简称TOE),其主要功能是将TCP协议层以下的部分从操作系统中分离,并将其放在独立的网卡或者芯片上实现。通过TCP卸载技术可以有效地缓解操作系统的压力,高效的TOE网卡可以将处理器的利用率从95%降低到5%,因此操作系统可以有更多的处理器资源用于调度其他的任务,从而提高系统的整体性能。
随着处理器技术的不断发展,多核处理器的使用逐渐成为趋势。多核处理器相对于单核处理器来说,虽然每个处理器核心的主频较低,但是整体功耗更小,并且多核处理器可以通过提升核数弥补主频的不足,多个处理器核心可以通过串行、并行、混合流水线等结构对不同的应用进行优化,既可以充分发挥处理器的性能,又能提高应用程序的执行效率。目前多核处理器已经被广泛用于嵌入式平台,如基于ARM的Cortex处理器、基于MIPS的OCTEON II处理器和基于PowerPC的各种高性能处理器已经大量应用于手机、单片机、路由器、服务器等领域。
嵌入式平台大多采用Linux操作系统,在处理TCP协议时同样面临开销过高的问题,尤其是当处理器的主频较低时,处理TCP协议的开销会直接影响其他程序的性能,因此需要提出合理的解决方案降低Linux操作系统处理TCP协议的系统开销,合理地分配处理器的计算资源,提高嵌入式平台的整体性能。并且为了充分利用处理器上的多核资源,还应重点考虑如何将Linux操作系统和TCP协议栈实现在同一颗处理器上,这样可以降低Linux操作系统和协议栈之间的通信开销以及内存拷贝等问题。
发明内容
为解决以上问题,本发明提供一种实现基于多核处理器和混合操作系统的卸载协议栈的方法,包括:将卸载协议栈分为卸载协议栈和卸载协议栈适配层,所述卸载协议栈适配层运行于Linux操作系统上,所述卸载协议栈运行于简单执行环境或实时操作系统上,所述卸载协议栈适配层与卸载协议栈之间利用消息机制实现信息交互,其中所述卸载协议栈执行OSI网络模型中4层即传输层及以下的协议处理,所述卸载协议栈适配层为所述卸载协议栈提供Linux操作系统上的标准的套接字接口。
根据本发明的方法,其还包括将所述卸载协议栈适配层分为BSD socket函数族接口、卸载协议栈驱动、Linux侧卸载协议栈交互接口;将上述卸载协议栈分为实时操作系统侧或简单执行环境侧卸载协议栈交互接口、协议栈处理核心模块、网卡驱动。
根据本发明的方法,其中还包括:将所述卸载协议栈适配层中的BSD socket函数族接口设为Linux操作系统中的标准函数接口且具体实现功能不变;所述卸载协议栈驱动将所述BSD socket函数族中的函数调用重定向到所述Linux侧卸载协议栈交互接口,也可以根据所述Linux侧卸载协议栈交互接口返回的信息重定向到所述BSD socket函数族中的对应函数;所述Linux侧卸载协议栈交互接口将所述卸载协议栈驱动重定向的函数调用转换为消息,发送到所述卸载协议栈;所述Linux侧卸载协议栈交互接口从卸载协议栈接收消息,解析消息中的信息,返回给所述卸载协议栈驱动。
根据本发明的方法,其中还包括:所述卸载协议栈中的实时操作系统侧或简单执行环境侧卸载协议栈交互接口接收所述卸载协议栈适配层发送的消息,解析消息中的信息,根据消息中的操作类型调用所述协议栈处理核心模块的对应函数,并将函数执行结果填写到消息中返回给所述卸载协议栈适配层;所述协议栈处理核心模块与网卡驱动执行OSI网络模型中4层及以下的协议处理。
根据本发明的方法,其中还包括:所述卸载协议栈适配层和卸载协议栈通过消息建立起所述卸载协议栈适配层和卸载协议栈之间的数据和操作通道。
根据本发明的方法,其还包括将所述卸载协议栈和卸载协议栈适配层之间的消息分为几个字段,优选地分为七个字段。具体来说,第一字段为发送消息的核标识,第二字段为接收消息的核标识,第三字段为操作类型,第四字段为参数,第五字段为操作执行返回结果,第六字段为所述卸载协议栈适配层和卸载协议栈交互的数据块指针,第七字段为预留的状态位。
操作类型定义了卸载协议栈适配层和卸载协议栈之间的调用关系,这些调用包括套接字函数族中的套接字描述符创建(socket)、绑定(bind)、监听(listen)、接受连接(accept)、发起连接(connect)、释放套接字描述符(release)、关闭连接(shutdown)、设置套接字选项(setsockopt)、查询套接字选项(getsockopt)、发送数据(sendmsg)、接收数据(recvmsg)等操作以及I/O设备控制(ioctl)操作,操作类型还包括了卸载协议栈通过accept接收连接后对卸载协议栈适配层的accept回调操作。
操作参数是与操作类型中指定操作对应的参数信息,包括套接字描述符创建(socket)操作的sockfd,domain、type、protocol参数,其中sockfd为BSD socket函数族中的create生成的套接字描述符,绑定(bind)操作的sockptr、address、addrlen参数,监听(listen)操作的sockptr、backlog参数,接受连接(accept)操作的sockptr、address、addrlen参数,发起连接(connect)操作的sockptr、address、addrlen参数,释放套接字描述符(release)操作的sockptr参数,关闭连接(shutdown)操作的sockptr、how参数,设置套接字选项(setsockopt)操作的sockptr、level、optname、optval、optlen参数,查询套接字选项(getsockopt)操作的sockptr、level、optname、optval、optlen参数,发送数据(sendmsg)操作的sockptr、msg、len、flags参数,接收数据(recvmsg)操作的sockptr、msg、len、flags参数,I/O设备控制(ioctl)操作的sockptr、cmd参数,其中sockptr表示卸载协议栈中TCP控制块(TCB)的描述符。
操作执行返回结果表示卸载协议栈执行操作类型所对应操作的返回值,包括执行套接字描述符创建(socket)操作返回的sockptr、retval,绑定(bind)操作返回的socktag、retval,监听(listen)操作返回的retval,接受连接(accept)操作返回的sockptr、retval,发起连接(connect)操作返回的socktag、retval,释放套接字描述符(release)操作返回的retval,关闭连接(shutdown)操作返回的retval,设置套接字选项(setsockopt)操作返回的retval,查询套接字选项(getsockopt)操作返回的optval、optlen、retval,其中optval为套接字选项信息,optlen为信息的长度,发送数据(sendmsg)操作返回retval,接收数据(recvmsg)操作返回的msg、retval,I/O设备控制(ioctl)操作返回的retval,以上出现的sockptr表示卸载协议栈中TCP控制块(TCB)的描述符,socktag为卸载协议栈标识连接的描述符,retval表示操作执行是否成功,针对sendmsg/recvmsg时retval还表示成功发送/接收的字节数;操作执行返回结果也可以表示卸载协议栈适配层执行操作类型所对应操作的返回值,包括accept回调操作返回的sockfd,其中sockfd为BSD socket函数族中的create生成的套接字描述符,用于标识accept操作生成的连接。
卸载协议栈适配层和卸载协议栈交互的数据块指针用于传送过大、无法保存在消息中的数据,这些数据可以是发送(send)函数时提交的数据块msg,I/O设备控制(ioctl)函数对路由、邻居子系统设置的cmd数据块,接收(recv)函数返回的的数据块msg,I/O设备控制(ioctl)函数对路由、邻居子系统查询时返回的cmd数据块。
协议栈处理核心模块实现的函数族与卸载协议栈驱动中重定向的函数一一对应,包括Linux操作系统中标准的proto_ops结构体中的主要函数release,bind,connect,accept,ioctl,listen,shutdown,setsockopt,getsockopt,sendmsg,recvmsg,以及Linux操作系统中标准的net_proto_family结构体中的create函数。
运行于Linux操作系统中的应用程序和网络管理工具通过卸载协议栈适配层与卸载协议栈进行交互,卸载协议栈适配层通过上述的消息机制与卸载协议栈交互。应用程序调用BSD socket函数族时,通过卸载协议栈驱动对函数调用重定向,并在Linux侧卸载协议栈交互接口将函数调用转换为消息,这样就完成了从函数调用到操作、从操作到消息的转换,如socket、accept、connect、send、recv等函数都可以使用该流程进行转换。Linux侧卸载协议栈交互接口将消息发往卸载协议栈适配层,由实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口进行接收,并解析消息中的操作类型,根据操作类型调用协议栈处理核心模块中的对应函数,这样就完成了从消息到操作、从操作到函数调用的转换。通过上述的机制实现了Linux操作系统上协议栈的卸载工作。
通过以上的机制还可以实现BSD socket函数族中的ioctl函数,该函数主要功能是对网络设备进行状态的设置和查询,当应用程序和网络管理工具调用该函数时,将通过卸载协议栈驱动重定向,在Linux侧卸载协议栈交互接口生成消息,在消息中填写ioctl要传递的数据,并发往卸载协议栈。实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口进行消息接收,解析消息中的操作类型,由于是ioctl函数,则根据消息中携带的参数和数据块指针对卸载协议栈所管理的设备进行设置,包括对路由系统、邻居系统的设置等操作。如果应用程序和网络管理工具使用ioctl函数进行查询,则协议栈处理核心模块将返回相应设备、路由、邻居系统的状态信息,并将这些数据的物理地址填写在消息中的数据块指针字段,通过实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口将消息返回给卸载协议栈适配层,Linux侧卸载协议栈交互接口接收并接卸消息,经过卸载协议栈驱动将查询的结果返回给BSD socket函数族中的ioctl函数。
采用本发明提供的方法和技术,可以在一颗多核处理器上实现协议栈的卸载,通过处理器内部的消息通信机制提高卸载协议栈系统的工作效率和稳定性,并且由于Linux操作系统和实时操作系统或简单执行环境运行在同一颗处理器上,可以共享内存空间,因此可减少传递数据时的内存拷贝,进一步提高卸载协议栈的性能。
附图说明
图1是根据本发明的实现基于多核处理器和混合操作系统的卸载协议栈的方法的逻辑框图;
图2显示的是根据本发明的优选实施例的卸载协议栈适配层与卸载协议栈交互时使用的消息体结构图;
图3显示的是根据本发明的一个实施例的创建用于TCP协议socket描述符的时序关系图;
图4显示的是根据本发明的一个实施例的调用listen和accept函数的时序关系图;以及
图5显示的是根据本发明的一个实施例的调用send和recv函数的时序关系图。
具体实施方式
本发明的主要思想是在一颗多核处理器上同时运行Linux操作系统和实时操作系统或简单执行环境,在Linux操作系统上提供至卸载协议栈的标准BSDsocket接口,在实时操作系统或简单执行环境上实现具体的OSI网络模型中4层及以下的协议处理,从而可充分利用多核处理器中的多核资源,降低Linux操作系统处理TCP/IP协议栈操作的工作量,提高系统的整体性能。
下面结合附图和优选实施方式对本发明的技术方案进行详细说明。
图1是根据本发明的实现基于多核处理器和混合操作系统的卸载协议栈的方法的逻辑框图。具体来说,卸载协议栈适配层101包括BSD socket函数族102、卸载协议栈驱动103和Linux侧卸载协议栈交互接口104三个部分,通过这三个部分实现Linux操作系统中BSD socket函数的重定向,使对应函数在卸载协议栈中进行处理,由此完成协议栈的卸载工作。
BSD socket函数族102为Linux操作系统中的标准函数接口,具体的实现功能不变,通过这样一族函数可以保证卸载协议栈对Linux操作系统之上的应用程序和网络管理工具透明,使用BSD socket函数族的应用程序和网络管理工具不需要做修改就可以直接使用卸载协议栈。
卸载协议栈驱动103将BSD socket函数族中的函数调用重定向到Linux侧卸载协议栈交互接口104,也可以根据Linux侧卸载协议栈交互接口104返回的信息重定向到BSD socket函数族中的对应函数,通过这个卸载协议栈驱动103完成BSD socket函数族中的函数调用与消息的相互转换,它是Linux操作系统中涉及BSD socket函数族的调用进入与卸载协议栈相关的模块,另外也将卸载协议栈反馈的结果返回给相应的BSD socket函数。
Linux侧卸载协议栈交互接口104将卸载协议栈驱动重定向的函数调用转换为消息,发送到卸载协议栈;Linux侧卸载协议栈交互接口104从卸载协议栈接收消息,解析消息中的信息,返回给卸载协议栈驱动103。通过卸载协议栈交互接口104实现卸载协议栈适配层到卸载协议栈消息的生成,以及卸载协议栈到卸载协议栈适配层101消息的解析。
卸载协议栈105,包括实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口106、协议栈处理核心模块107和网卡驱动108三个部分,通过这三个部分实现与卸载协议栈适配层101之间的交互,并执行实际的协议栈处理工作。
实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口106接收卸载协议栈适配层101发送的消息,解析消息中的信息,根据消息中的操作类型调用协议栈处理核心模块107的对应函数,并将函数执行结果填写到消息中返回给卸载协议栈适配层101,通过该模块实现卸载协议栈105对卸载协议栈适配层101的响应。
协议栈处理核心模块107实际执行OSI网络模型中4层及以下的协议处理。
网卡驱动108为卸载协议栈105提供数据包收发功能。
卸载协议栈适配层101与卸载协议栈105的消息交互通道109提供卸载协议栈适配层101和卸载协议栈105之间的消息交互机制,交互的消息中包含操作类型、参数等信息,由此提供了卸载协议栈适配层和卸载协议栈之间的数据和操作通道。
图2是根据本发明的一个优选实施例的卸载协议栈适配层与卸载协议栈交互时使用的消息体结构图。具体来说,图2显示的消息体结构分为以下7个字段:发送消息核标识201,用于标记该消息是由哪个核发送的,接收消息的核使用该字段确认如何返回消息;接收消息核标识202,用于标记该消息是由哪个核接收的,通过该字段通知多核处理器准确的将该消息发送到正确的核,在此基础上保证卸载协议栈适配层101和卸载协议栈105可以使用消息机制正常通信;操作类型203,用于定义卸载协议栈适配层101和卸载协议栈105之间的调用关系,这些调用包括套接字函数族中的套接字描述符创建(socket)、绑定(bind)、监听(listen)、接受连接(accept)、发起连接(connect)、释放套接字描述符(release)、关闭连接(shutdown)、设置套接字选项(setsockopt)、查询套接字选项(getsockopt)、发送数据(sendmsg)、接收数据(recvmsg)等函数调用以及I/O设备控制(ioctl)函数调用;操作参数204,操作参数是与操作类型中函数调用对应的参数信息,包括套接字描述符创建(socket)函数的sockfd,domain、type、protocol参数,其中sockfd为BSD socket函数族中的create生成的套接字描述符,绑定(bind)函数的sockptr、address、addrlen参数,监听(listen)函数的sockptr、backlog参数,接受连接(accept)函数的sockptr、address、addrlen参数,发起连接(connect)函数的sockptr、address、addrlen参数,释放套接字描述符(release)函数的sockptr参数,关闭连接(shutdown)函数的sockptr、how参数,设置套接字选项(setsockopt)函数的sockptr、level、optname、optval、optlen参数,查询套接字选项(getsockopt)函数的sockptr、level、optname、optval、optlen参数,发送数据(sendmsg)函数的sockptr、msg、len、flags参数,接收数据(recvmsg)函数的sockptr、msg、len、flags参数,I/O设备控制(ioctl)函数的sockptr、cmd参数,其中sockptr表示卸载协议栈中TCP控制块(TCB)的描述符。当send、recv函数需要传递数据块msg,或者ioctl函数要设置、查询卸载协议栈中的路由、邻居信息而携带cmd数据块时,需要将数据块的物理地址指针存放在消息体中的数据块指针字段;操作执行返回结果205,用于表示卸载协议栈105执行操作类型所对应函数的返回值,包括执行套接字描述符创建(socket)函数返回的sockptr、retval,绑定(bind)函数返回的socktag、retval,监听(listen)函数返回的retval,接受连接(accept)函数返回的sockptr、retval,发起连接(connect)函数返回的socktag、retval,释放套接字描述符(release)函数返回的retval,关闭连接(shutdown)函数返回的retval,设置套接字选项(setsockopt)函数返回的retval,查询套接字选项(getsockopt)函数返回的optval、optlen、retval,其中optval为套接字选项信息,optlen为信息的长度,发送数据(sendmsg)函数返回retval,接收数据(recvmsg)函数返回的msg、retval,I/O设备控制(ioctl)函数返回的retval,以上出现的sockptr表示卸载协议栈中TCP控制块(TCB)的描述符,socktag为卸载协议栈标识连接的描述符,retval表示函数执行是否成功,针对sendmsg/recvmsg时retval还表示成功发送/接收的字节数;数据块指针206,卸载协议栈适配层101和卸载协议栈105交互的数据块指针用于传送过大、无法保存在消息中的数据,包括发送(send)函数时提交的数据块msg物理地址指针,I/O设备控制(ioctl)函数对路由、邻居子系统设置的cmd数据块物理地址指针,接收(recv)函数返回的的数据块msg物理地址指针,I/O设备控制(ioctl)函数对路由、邻居子系统查询时返回的cmd数据块物理地址指针,数据块指针指向存放数据的数据块起始物理地址;预留的状态位207,用于扩展卸载协议栈适配层101和卸载协议栈105功能的预留位;数据块208,一块核间共享内存,用于存放send、recv、ioctl函数需要传递的数据。
下面通过具体应用中的实例对本发明的技术方案作进一步的详细描述。
图3显示的是根据本发明的一个实施例的创建用于TCP协议socket描述符的时序关系图。
1.应用程序调用BSD socket函数族102中的socket函数,在该函数中生成socket描述符sockfd,为了使卸载协议栈105也能知道这个函数调用,并执行TCP协议栈的相应工作,还需要将sockfd传递给卸载协议栈105;
2.socket函数继续调用inet socket函数族中的create函数;
3.卸载协议栈驱动103通知Linux侧卸载协议栈交互接口104生成消息,消息中的操作类型为socket描述符创建,并填写相应参数;
4.Linux侧卸载协议栈交互接口104生成核间通信消息,设置消息的操作类型为socket描述符创建消息,并在消息中填写创建socket描述符的详细参数,最终将消息提交给处理器消息通信系统;
5.实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口106从处理器消息通信系统中读取消息,并根据消息中的操作类型作对应的操作,此实例中为create操作,则通知协议栈处理核心模块107执行TCP协议栈的create操作;
6.依次将结果返回给应用程序。
图4显示的是根据本发明的一个实施例的调用listen和accept函数的时序关系图。
1.应用程序调用BSD socket函数族102中的listen函数;
2.listen函数继续调用inet socket函数族中的listen函数;
3.卸载协议栈驱动103通知Linux侧卸载协议栈交互接口104生成消息,消息中的操作类型为listen,并填写相应参数;
4.Linux侧卸载协议栈交互接口104生成核间通信消息,设置消息的操作类型为listen,并在消息中填写listen的详细参数,最终将消息提交给处理器消息通信系统;
5.实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口106从处理器消息通信系统中读取消息,并根据消息中的操作类型作对应的操作,此实例中为listen操作,则通知协议栈处理核心模块107执行TCP协议栈的listen操作,即创建监听队列,等待远端客户发起connect请求;
6.依次将结果返回给应用程序;
7.网卡驱动108接收远端客户发送的SYN数据包,并发送给协议栈处理核心模块107;
8.协议栈处理核心模块107回应SYN_RCVD数据包,并通过网卡驱动108发送出去;
9.远端客户端发送ACK数据包,网卡驱动108接收后发送给协议栈处理核心模块107,由后者执行TCP连接建立过程,更新相应TCP连接状态和TCP连接监听队列;
10.协议栈处理核心模块107调用实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口106生成消息,消息中的操作类型为accept回调函数,通知BSDsocket函数族102创建一个与TCP连接对应的socket描述符;
11.实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口106生成消息,并将消息发送给Linux侧卸载协议栈交互接口104;
12.Linux侧卸载协议栈交互接口104接收消息后,解析消息中的操作类型,此实例中为accept回调函数,因此调用卸载协议栈驱动103中的相应函数;
13.卸载协议栈驱动103调用BSD socket函数族102中的accept回调函数,为TCP连接生成一个对应socket描述符,并依次将结果返回给协议栈处理核心模块107;
14.协议栈处理核心模块107将socket描述符与TCP连接对应起来,以备accept函数使用;
15.应用程序调用BSD socket函数族102中的accept函数;
16.accept函数调用inet socket函数族中的accept函数;
17.卸载协议栈驱动103通知Linux侧卸载协议栈交互接口104生成消息,消息中的操作类型为accept,并填写相应参数;
18.Linux侧卸载协议栈交互接口104生成核间通信消息,设置消息的操作类型为accept,并在消息中填写accept的详细参数,最终将消息提交给处理器消息通信系统;
19.实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口106从处理器消息通信系统中读取消息,并根据消息中的操作类型作对应的操作,此实例中为accept操作,则通知协议栈处理核心模块107执行TCP协议栈的listen操作,即检查创建监听队列,从其中取出TCP连接信息;
20.依次将结果返回给应用程序。
图5显示的是根据本发明的一个实施例的调用send和recv函数的时序关系图。
1.应用程序调用BSD socket函数族102中的send函数;
2.send函数调用inet socket函数族中的send函数;
3.卸载协议栈驱动103通知Linux侧卸载协议栈交互接口104生成消息,消息中的操作类型为send函数,并填写相应参数;
4.Linux侧卸载协议栈交互接口104生成核间通信消息,设置消息的操作类型为send,并在消息中填写send的详细参数,在数据块指针字段填写send函数提交的msg数据块物理地址,最终将消息提交给处理器消息通信系统;
5.实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口106从处理器消息通信系统中读取消息,并根据消息中的操作类型作对应的操作,此实例中为send操作,则通知协议栈处理核心模块107执行TCP协议栈的send操作,即将数据加入发送队列中,根据TCP协议栈的拥塞控制和滑动窗口机制发送数据,经过路由、下一跳查询以及数据包封装后,将数据包提交到网卡驱动108;
6.网卡驱动108实现数据发送;
7.依次将结果返回给应用程序;
8.网卡驱动108从网络接收数据,并将数据提交给协议栈处理核心模块107;
9.协议栈处理核心模块107对数据包进行协议处理,执行IP、TCP协议包头解析后执行路由、邻居子系统等一系列操作,并将TCP数据加入到相应连接的接收缓存队列中;
10.应用程序调用BSD socket函数族102中的recv函数;
11.recv函数调用inet socket函数族中的recv函数;
12.卸载协议栈驱动103通知Linux侧卸载协议栈交互接口104生成消息,消息中的操作类型为recv函数,并填写相应参数;
13.Linux侧卸载协议栈交互接口104生成核间通信消息,设置消息的操作类型为recv,并在消息中填写recv的详细参数,最终将消息提交给处理器消息通信系统;
14.实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口104从处理器消息通信系统中读取消息,并根据消息中的操作类型作对应的操作,此实例中为recv操作,则通知协议栈处理核心模块107执行TCP协议栈的recv操作,即查询相应连接的接收缓存队列,并将队列中的数据块指针返回;
15.实时操作系统侧(或简单执行环境侧)卸载协议栈交互接口106接收协议栈处理核心模块107的返回结果,生成返回的消息,填写消息中的操作类型为recv,操作执行返回结果填写接收到数据块的字节数,并将数据块所在内存的物理地址填写到消息体中的数据块指针字段;
16.依次将结果返回给应用程序。
需要指出的是,以上仅为根据本发明的处理TCP协议时的较佳实施例,并非用来限定本发明的实施范围,本发明也可以根据以上实例用于UDP、RAW数据的处理。本领域的技术人员可以根据以上实施例实现本发明,即通过卸载协议栈处理OSI网络模型中4层及以下的协议,因此凡是根据本发明所作的等效的变化与修改,都被本发明的权利要求的范围所覆盖。
Claims (6)
1.一种实现基于多核处理器和混合操作系统的卸载协议栈的方法,包括:将卸载协议栈分为卸载协议栈和卸载协议栈适配层,所述卸载协议栈适配层运行于Linux操作系统上,所述卸载协议栈运行于简单执行环境或实时操作系统上,所述卸载协议栈适配层与卸载协议栈之间利用消息机制实现信息交互,其中所述卸载协议栈执行OSI网络模型中4层即传输层及以下的协议处理,所述卸载协议栈适配层为所述卸载协议栈提供Linux操作系统上的标准的套接字接口。
2.根据权利要求1所述的实现基于多核处理器和混合操作系统的卸载协议栈的方法,其还包括将所述卸载协议栈适配层分为BSD socket函数族接口、卸载协议栈驱动、Linux侧卸载协议栈交互接口;将上述卸载协议栈分为实时操作系统侧或简单执行环境侧卸载协议栈交互接口、协议栈处理核心模块、网卡驱动。
3.根据权利要求2所述的实现基于多核处理器和混合操作系统的卸载协议栈的方法,其中还包括:将所述卸载协议栈适配层中的BSD socket函数族接口设为Linux操作系统中的标准函数接口且具体实现功能不变;所述卸载协议栈驱动将所述BSDsocket函数族中的函数调用重定向到所述Linux侧卸载协议栈交互接口,根据所述Linux侧卸载协议栈交互接口返回的信息重定向到所述BSD socket函数族中的对应函数;所述Linux侧卸载协议栈交互接口将所述卸载协议栈驱动重定向的函数调用转换为消息,发送到所述卸载协议栈;所述Linux侧卸载协议栈交互接口从所述卸载协议栈接收消息,解析消息中的信息,返回给所述卸载协议栈驱动。
4.根据权利要求2所述的实现基于多核处理器和混合操作系统的卸载协议栈的方法,其中还包括:所述卸载协议栈中的实时操作系统侧或简单执行环境侧卸载协议栈交互接口接收所述卸载协议栈适配层发送的消息,解析消息中的信息,根据消息中的操作类型调用所述协议栈处理核心模块的对应函数,并将函数执行结果填写到消息中返回给所述卸载协议栈适配层;所述协议栈处理核心模块与网卡驱动执行OSI网络模型中4层及以下的协议处理。
5.根据权利要求1所述的实现基于多核处理器和混合操作系统的卸载协议栈的方法,其还包括将所述卸载协议栈和卸载协议栈适配层之间的消息分为七个字段:第一字段为发送消息的核标识,第二字段为接收消息的核标识,第三字段为操作类型,第四字段为参数,第五字段为操作执行返回结果,第六字段为所述卸载协议栈适配层和卸载协议栈交互的数据块指针,第七字段为预留的状态位。
6.根据权利要求1-5任一项所述的实现基于多核处理器和混合操作系统的卸载协议栈的方法,其中还包括:所述卸载协议栈适配层和卸载协议栈通过消息建立起所述卸载协议栈适配层和卸载协议栈之间的数据和操作通道。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110367887.4A CN102571912B (zh) | 2010-12-08 | 2011-11-18 | 一种实现基于多核处理器和混合操作系统的卸载协议栈的方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010590444 | 2010-12-08 | ||
CN201010590444.7 | 2010-12-08 | ||
CN201110367887.4A CN102571912B (zh) | 2010-12-08 | 2011-11-18 | 一种实现基于多核处理器和混合操作系统的卸载协议栈的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102571912A true CN102571912A (zh) | 2012-07-11 |
CN102571912B CN102571912B (zh) | 2014-09-10 |
Family
ID=46416378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110367887.4A Active CN102571912B (zh) | 2010-12-08 | 2011-11-18 | 一种实现基于多核处理器和混合操作系统的卸载协议栈的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102571912B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105245487A (zh) * | 2014-06-11 | 2016-01-13 | 中兴通讯股份有限公司 | 远程呈现系统中协议栈的调度方法及装置 |
CN106034084A (zh) * | 2015-03-16 | 2016-10-19 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN106781122A (zh) * | 2016-11-29 | 2017-05-31 | 山东浪潮商用系统有限公司 | 一种带路由功能的税控打印方法及一体机 |
CN108989151A (zh) * | 2018-07-20 | 2018-12-11 | 北京云杉世纪网络科技有限公司 | 用于网络或应用性能管理的流量采集方法 |
CN112422411A (zh) * | 2020-11-09 | 2021-02-26 | 天津卓越信通科技有限公司 | 一种基于大型通信系统的消息分发机制 |
CN113841119A (zh) * | 2019-05-23 | 2021-12-24 | 三菱电机株式会社 | 控制装置及分散处理方法 |
CN114090096A (zh) * | 2022-01-21 | 2022-02-25 | 成都云祺科技有限公司 | 一种网络虚拟文件系统实现方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050182854A1 (en) * | 2002-04-30 | 2005-08-18 | Microsoft Corporation | Method to synchronize and upload an offloaded network stack connection with a network stack |
CN101477511A (zh) * | 2008-12-31 | 2009-07-08 | 杭州华三通信技术有限公司 | 一种实现多操作系统共享存储介质的方法和装置 |
CN101847105A (zh) * | 2009-03-26 | 2010-09-29 | 联想(北京)有限公司 | 一种计算机及多操作系统共享内存的方法 |
-
2011
- 2011-11-18 CN CN201110367887.4A patent/CN102571912B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050182854A1 (en) * | 2002-04-30 | 2005-08-18 | Microsoft Corporation | Method to synchronize and upload an offloaded network stack connection with a network stack |
CN101477511A (zh) * | 2008-12-31 | 2009-07-08 | 杭州华三通信技术有限公司 | 一种实现多操作系统共享存储介质的方法和装置 |
CN101847105A (zh) * | 2009-03-26 | 2010-09-29 | 联想(北京)有限公司 | 一种计算机及多操作系统共享内存的方法 |
Non-Patent Citations (1)
Title |
---|
陈续喜等: "一种TCP/IP卸载结构的设计与实现", 《计算机系统应用》, no. 1, 31 January 2009 (2009-01-31) * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105245487A (zh) * | 2014-06-11 | 2016-01-13 | 中兴通讯股份有限公司 | 远程呈现系统中协议栈的调度方法及装置 |
CN105245487B (zh) * | 2014-06-11 | 2019-10-11 | 中兴通讯股份有限公司 | 远程呈现系统中协议栈的调度方法及装置 |
CN106034084A (zh) * | 2015-03-16 | 2016-10-19 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN106781122A (zh) * | 2016-11-29 | 2017-05-31 | 山东浪潮商用系统有限公司 | 一种带路由功能的税控打印方法及一体机 |
CN108989151A (zh) * | 2018-07-20 | 2018-12-11 | 北京云杉世纪网络科技有限公司 | 用于网络或应用性能管理的流量采集方法 |
CN108989151B (zh) * | 2018-07-20 | 2020-08-28 | 北京云杉世纪网络科技有限公司 | 用于网络或应用性能管理的流量采集方法 |
CN113841119A (zh) * | 2019-05-23 | 2021-12-24 | 三菱电机株式会社 | 控制装置及分散处理方法 |
CN113841119B (zh) * | 2019-05-23 | 2022-12-27 | 三菱电机株式会社 | 控制装置及分散处理方法 |
CN112422411A (zh) * | 2020-11-09 | 2021-02-26 | 天津卓越信通科技有限公司 | 一种基于大型通信系统的消息分发机制 |
CN114090096A (zh) * | 2022-01-21 | 2022-02-25 | 成都云祺科技有限公司 | 一种网络虚拟文件系统实现方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102571912B (zh) | 2014-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102571912B (zh) | 一种实现基于多核处理器和混合操作系统的卸载协议栈的方法 | |
US11196677B2 (en) | Heterogeneous multi-protocol stack method, apparatus, and system | |
CN109412946B (zh) | 一种确定回源路径的方法、装置、服务器及可读存储介质 | |
US10498831B2 (en) | Communication sessions at a CoAP protocol layer | |
KR101938623B1 (ko) | 오픈 플로우 통신 방법, 시스템, 제어기 및 서비스 게이트웨이 | |
WO2016187813A1 (zh) | 一种光电混合网络的数据传输方法及装置 | |
WO2020063086A1 (zh) | 基于物联网的数据传输方法及通信装置 | |
CN112631788B (zh) | 数据传输方法及数据传输服务器 | |
US20070297334A1 (en) | Method and system for network protocol offloading | |
CN1674485A (zh) | 动态提供计算机系统资源的方法和系统 | |
CN1921438A (zh) | 一种应用代理实现网间应用加速的方法 | |
CN1812405A (zh) | 在请求-响应传输协议上的可靠的单向消息传递 | |
WO2018023988A1 (zh) | 一种网络报文处理方法、装置及网络服务器 | |
CN108234149A (zh) | 一种网络请求的管理方法和装置 | |
CN111064792A (zh) | 一种基于quic协议加快传感器设备数据采集的方法 | |
Karamitsios et al. | Efficient IoT data aggregation for connected health applications | |
CN102315918B (zh) | 一种tcp连接与sctp连接互通的方法及装置 | |
CN102055774B (zh) | 基于包处理的http服务器及其数据处理方法 | |
CN100363922C (zh) | 用于独立于带宽延迟产品的tcp/ip卸载的系统和方法 | |
CN113596111A (zh) | 一种基于分布式的节点间通信方法 | |
WO2023229699A1 (en) | Creating elasticity and resiliency in virtualized rans | |
CN105162751B (zh) | 一种基于lwIP协议栈多网口多连接的通讯系统 | |
CN111917511B (zh) | 一种数据的接收方法 | |
KR20230132143A (ko) | 산업용 IoT를 위한 OPC UA 시너지 플랫폼 | |
WO2017040948A1 (en) | Enabling time flexibility for block transfer in coap protocol |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210803 Address after: Room 1601, 16th floor, East Tower, Ximei building, No. 6, Changchun Road, high tech Industrial Development Zone, Zhengzhou, Henan 450001 Patentee after: Zhengzhou xinrand Network Technology Co.,Ltd. Address before: 100190, No. 21 West Fourth Ring Road, Beijing, Haidian District Patentee before: INSTITUTE OF ACOUSTICS, CHINESE ACADEMY OF SCIENCES |