CN117793212A - 基于微内核操作系统的构件化网络协议栈的实现方法及装置 - Google Patents

基于微内核操作系统的构件化网络协议栈的实现方法及装置 Download PDF

Info

Publication number
CN117793212A
CN117793212A CN202311819416.1A CN202311819416A CN117793212A CN 117793212 A CN117793212 A CN 117793212A CN 202311819416 A CN202311819416 A CN 202311819416A CN 117793212 A CN117793212 A CN 117793212A
Authority
CN
China
Prior art keywords
protocol stack
component
network protocol
interface
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.)
Pending
Application number
CN202311819416.1A
Other languages
English (en)
Inventor
王希
叶浩宇
晏翼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Kunyi Software Technology Co ltd
Original Assignee
Shanghai Kunyi Software Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Kunyi Software Technology Co ltd filed Critical Shanghai Kunyi Software Technology Co ltd
Priority to CN202311819416.1A priority Critical patent/CN117793212A/zh
Publication of CN117793212A publication Critical patent/CN117793212A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Communication Control (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请涉及一种基于微内核操作系统的构件化网络协议栈的实现方法及装置,该方法包括预先设定网络协议栈接口;根据构件规范将网络协议栈构件化,得到协议栈构件,并划分协议栈构件的大小;且在将网络协议栈构件化时,将协议栈构件继承网络协议栈接口;根据微内核操作系统环境的使用要求选择协议栈构件对应的服务方式,并根据服务方式为用户进程提供服务。利用网络构件技术在微内核操作系统上实现了构件化的网络协议栈,该网络协议栈构件可以动态加载用户态,提供的构件界面可以继承新添加的网络协议栈,方便开发调试使用。

Description

基于微内核操作系统的构件化网络协议栈的实现方法及装置
技术领域
本公开涉及通信技术领域,尤其涉及一种基于微内核操作系统的构件化网络协议栈的实现方法及装置。
背景技术
嵌入式设备网络化的实现,需要以TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)网络协议栈为基础,但由于网络设备上各种通信协议对计算机存储器以及运算速度等要求较高,使得嵌入式系统协议栈的开发比较困难。
目前,影响网络协议栈开发的关键因素主要有性能和效率,以及开发调试方便性,一般传统的操作系统只能顾及其中一方面。例如,在Linux、FreeBSD等宏内核操作系统中,网络协议栈作为系统内核的一部分来实现,通常具有较高的通信效率,但是不便于用户添加新的用户协议或者根据特殊需要定制化用户自己的网络协议栈,对协议的实现细节做调节。同时,对于协议代码的维护、调试和升级开发也不方便,在嵌入式开发领域尤为明显。
由于嵌入式设备的多样性和通信需求的多样性,嵌入式领域的网络协议栈复用率非常低,因此提供一种在微内核操作系统内部实现的构件化方法来解决网络协议栈的复用问题,提高开发升级效率,是目前亟待解决的问题。
发明内容
有鉴于此,本申请提出一种基于微内核操作系统的构件化网络协议栈的实现方法及装置,以解决上述问题。
本申请一方面,提出一种基于微内核操作系统的构件化网络协议栈的实现方法,包括如下步骤:
预先设定网络协议栈接口;
根据构件规范将网络协议栈构件化,得到协议栈构件,并划分所述协议栈构件的大小;且在将网络协议栈构件化时,将所述协议栈构件继承所述网络协议栈接口;
根据微内核操作系统环境的使用要求选择所述协议栈构件对应的服务方式,并根据所述服务方式为用户进程提供服务。
作为本申请的一可选实施方案,可选地,所述网络协议栈接口包括通用网络API编程接口和协议栈内部固定调用接口,且所述通用网络API编程接口和所述协议栈内部固定调用接口均能够与协议栈构件化界面通信。
作为本申请的一可选实施方案,可选地,所述协议栈内部固定调用接口的设定基于RFC协议编写实现。
作为本申请的一可选实施方案,可选地,所述根据所述服务方式为用户进程提供服务,包括:
将所述协议栈构件作为用户态进程为用户进程提供服务;
将所述协议栈构件作为动态链接库链入用户进程地址空间为用户提供服务。
作为本申请的一可选实施方案,可选地,在将所述协议栈构件作为动态库链入用户进程地址空间为用户进程提供服务时,还包括:
对多进程共享的数据加锁,进行同步访问控制。
作为本申请的一可选实施方案,可选地,所述根据所述服务方式为用户进程提供服务,还包括:
将所述协议栈构件装入内核空间为用户提供服务。
本申请另一方面,提供一种装置,用于实现上述任一项所述的基于微内核操作系统的构件化网络协议栈的实现方法,包括:
接口构建模块,被配置为预先设定网络协议栈接口;
协议栈构件模块,被配置为根据构件规范将网络协议栈构件化,得到协议栈构件,并划分所述协议栈构件的大小;且在将网络协议栈构件化时,将所述协议栈构件继承所述网络协议栈接口;
服务提供模块,被配置为根据微内核操作系统环境的使用要求选择所述协议栈构件对应的服务方式,并根据所述服务方式为用户进程提供服务。
本发明的技术效果:
本申请利用网络构件技术在微内核操作系统上实现了构件化的网络协议栈。具体的,包括预先设定网络协议栈接口;根据构件规范将网络协议栈构件化,得到协议栈构件,并划分协议栈构件的大小;且在将网络协议栈构件化时,将协议栈构件继承网络协议栈接口;根据微内核操作系统环境的使用要求选择协议栈构件对应的服务方式,并根据服务方式为用户进程提供服务。本申请的网络协议栈构件可以动态加载用户态,提供的构件界面可以继承新添加的网络协议栈,方便开发调试使用,裁剪系统内部支持的网络协议栈。开发者采用构件的方法开发高效或者针对某特定领域的网络协议栈,可以方便地替换原有操作系统上的协议栈,使用构件化的方法开发的网络协议栈也可以推广至其他支持构件化界面的操作系统中。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出为本发明的基于微内核操作系统的构件化网络协议栈的实现方法流程示意图;
图2示出为本发明的构件化网络协议栈的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
实施例1
如图1和图2所示,本申请一方面,提出一种基于微内核操作系统的构件化网络协议栈的实现方法,包括如下步骤:
S100、预先设定网络协议栈接口;
S200、根据构件规范将网络协议栈构件化,得到协议栈构件,并划分所述协议栈构件的大小;且在将网络协议栈构件化时,将所述协议栈构件继承所述网络协议栈接口;
S300、根据微内核操作系统环境的使用要求选择所述协议栈构件对应的服务方式,并根据所述服务方式为用户进程提供服务。
本实施例中利用网络构件技术在微内核操作系统上实现了构件化的网络协议栈,整个构件隐藏了具体的实现,只通过通用网络协议栈接口提供服务,在不同层次上构件均可以将底层多个逻辑组合成高层次的更大的新构件。其中,整个网络协议栈可以看作一个大的构件,协议栈内部的协议可以看作一个小的构件模块,在符合预先设定的构件规范时,构件之间能够通过预先设定的接口进行数据传输和信息传递,并且构件的位置相互透明,可以在同一个或不同个的用户进程空间,不同的构件上用不同的编写语言,满足各类开发人员的需求。
需要说明的是,根据微内核嵌入式TCP/IP协议栈的特点,在实现嵌入式TCP/IP协议栈时常用的基本协议包括:TCP协议、UDP协议、ICMP协议、IP协议、ARP协议等。其余的链路层协议,如PPP协议需要在TCP/IP协议栈下面的设备驱动程序中实现,而应用层协议如HTTP、FTP协议则需要在协议栈上面的应用层中实现。
具体的,在微内核嵌入式系统中,采用面向对象构件化方法实现TCP/IP网络协议栈包括:通过步骤S100、预先设定网络协议栈接口。本申请为了能够实现构件的自由替换,需要预先设定网络协议栈接口,并保障所有的构件继承网络协议栈接口。其中,对于接口的设定原则为保持接口的通用性和简洁性,当有新的功能添加时,可以通过继承实现新的接口,方便加入原有的框架,从而实现软件的无缝升级。
作为本申请的一可选实施方案,可选地,所述网络协议栈接口包括通用网络API编程接口和协议栈内部固定调用接口,且所述通用网络API编程接口和所述协议栈内部固定调用接口均能够与协议栈构件化界面通信。
需要说明的是,本申请采用通用网络API编程接口和协议栈内部固定调用接口作为最终提供给用户或开发者使用的接口,从而使整个协议栈和协议栈内部多个协议具有统一的协议栈构件化界面,且接口和界面主要通过标准的POSIX接口,如bind(intsockfd,const struct sockaddr*myaddr,socklen_taddrlen)接口对应界面内的系统调用接口sys_bind(NULL,&uap,&retval)等。其中,通用网络API编程接口为通用的SOCKET API编程接口,是标准的通用posix规范接口,提供给用户的接口,所有操作系统都是统一的,所以继承性强,在网络应用编程中这部分接口基本一致。而协议栈内部固定调用接口是针对微内核操作系统网络组件与操作系统内核不在一个地址空间而自己封装的一层接口,继承性较弱,需要根据操作系统特点进行封装及做少部分接口调整,提供给用户或系统本身开发人员需开发或更新换新的协议栈时需做少部分改动,即主要目的是为了能提高开发效率而设计的构件接口。且作为本申请的一可选实施方案,可选地,所述协议栈内部固定调用接口的设定基于RFC协议编写实现,即协议栈内部协议模块均基于RFC协议来编写定义各构件的约定接口,即协议栈内部固定调用接口。
需要特别说明的是,本申请的通用网络API编程接口和所述协议栈内部固定调用接口均能够与协议栈构件化界面通信。其中,基于系统内部资源管理器封装实现socket库,即协议栈构件化界面,利用C编程语言实现,可独立于系统的一个进程内,且不依赖于内核的管理。Socket网络用户与协议栈的数据交互也是通过协议栈构件化界面层功能封装实现的,以消息传递IPC(Inter-Process Communication,进程间通信)方式进行数据交互,可灵活对构件软件升级,提高开发灵活度。
随后,通过步骤S200、根据构件规范将网络协议栈构件化,得到协议栈构件,并划分所述协议栈构件的大小;且在将网络协议栈构件化时,将所述协议栈构件继承所述网络协议栈接口。
本申请需要根据用户的需求决定来划分协议栈构件的大小。具体的,如果用户是开发一个新的协议栈,则可以采用大的构件划分方式,即将整个网络协议栈作为一个大的构件,继承预先定义的构件。例如,嵌入式开发中常用的轻量级lwip,较复杂的netbsd等TCP/IP协议栈,系统内部可以根据用户需求选择和使用不同的网络协议栈。需要说明的是,每个网络协议栈内部的实现可能会稍微有所差别,例如宏内核操作系统会和内核地址空间绑定在一起,而微内核操作系统和内核不在一个地址空间,导致协议栈内部的进程管理方式不同,但是协议栈内部本申请的TCP、IP、ICMP等基本协议都是遵循网络RFC协议的,因此在替换继承不同协议栈时,只关注协议栈提供给用户的系统调用接口,只需要把整个大的协议栈构件替换进去,无需关注整个协议栈实现细节,继承构件界面对应的系统调用函数即可。例如,sys_bind(NULL,&uap,&retval)在需要替换继承的网络协议栈内部都有自己实现的系统调用函数。为了提高开发人员的效率,只需调试整个协议栈内部的进程管理即可。如果是需要更新协议栈内部某个协议模块,则可以采用小的构件划分方式,在原有协议基础上进行改动,网络协议都要遵循RFC标准,只需要保持原有协议约定的接口。
具体的网络构件技术包括基于二进制目标代码的构件技术,或基于JAVA编写的中间件代码的构件技术,均能够将整体系统功能按模块划分。需要说明的是,构件技术主要是基于微内核操作系统用户和协议栈之间通信实现的“网络资源管理”界面,也就是用户和协议栈一个通道桥梁,需要基于POSIX标准接口完成用户到协议栈的数据处理方法。进一步的,在实现“网络资源管理”构件界面之后,界面对用户提供便准的SOCKET API接口(系统开关人员可见,便于提高发开效率,不提供用户)。更进一步的,用户应用作为独立的应用进程,网络构件和协议栈作为单独进程,都不和微内核操作系统运行在一个地址空间,所以开发过程中可把构件和协议栈程序独立编译成二进制模块,加载到微内核用户空间,既不影响系统其他模块运行功能,也可在开发过程中独立编译替换。
举例来说,如将原来操作系统内部的netbsd网络协议栈替换成用户需要的lwip轻量级(简单)协议栈,只要把lwip协议栈的内部接口和构件提供的接口对接即可,替换完成以后,将协议栈和界面绑定一起,调试编译完成以后生成相应的二进制文件,该文件可加载运行在系统内部的用户空间,由此完成协议栈的无缝衔接,开发人员只需要做调试即可。
进一步的,通过步骤S300、根据微内核操作系统环境的使用要求选择所述协议栈构件对应的服务方式,并根据所述服务方式为用户进程提供服务。
为了提高网络通信的效率,高效的通信协议满足如下要求:上下文切换和定时器的轻型完成、多个协议或整个协议栈模块具有统一的使用界面以及在网络设备,核心层和用户层之间有高效的缓冲机制,避免不必要的拷贝。
作为本申请的一可选实施方案,可选地,所述根据所述服务方式为用户进程提供服务,包括:
将所述协议栈构件作为用户态进程为用户进程提供服务;
将所述协议栈构件作为动态链接库链入用户进程地址空间为用户提供服务。
具体的,如果微内核操作系统的使用要求为操作系统提供了快捷的上下文切换及高效的进程间通信,则整个网络协议栈可以作为一个用户态进程对用户进程提供服务;如果进程上下文切换复杂,则整个网络协议栈可以作为动态链接库链入用户进程地址空间。其中,作为本申请的一可选实施方案,可选地,在将所述协议栈构件作为动态库链入用户进程地址空间为用户进程提供服务时,还包括:对多进程共享的数据加锁,进行同步访问控制。作为本申请的一可选实施方案,可选地,所述根据所述服务方式为用户进程提供服务,还包括:将所述协议栈构件装入内核空间为用户提供服务。即如果进程上下文切换复杂,可以将网络协议栈装入内核空间,避免频繁的进程上下文切换带来系统开销。
本申请采用通用的SOCKET API编程接口和协议栈内部固定调用接口作为最终提供给用户或开发者使用的接口,从而使整个协议栈和协议栈内部多个协议具有统一的协议栈构件化界面。同时,在新构建的网络协议栈构件中,各层协议之间的接口也是统一接口,为了避免大量数据的拷贝,需要设计良好的数据结构,同时采取“共享内存”的方法,在网络协议各层次间尽量以指针方式传递数据。
基于系统内部一套资源管理方式,网络协议栈作为该管理方式的socket用户到网络TCP/IP协议栈的“中间件”,即构件化界面,有利于提高在升级或替换网络协议栈的开发效率,只要网络协议栈内部有和socket标准的API接口即可,如网络协议栈内部系统调用函数接口,一般都是标准的,而协议栈下到与物理硬件驱动,上到与网络协议栈用于存放网络数据包的内存数据结构稍有更改,可利用图2内的构件化界面做为中间件,也便于协议栈与物理网卡适配升级,提高开发效率。
综上所述,本申请利用网络构件技术在微内核操作系统上实现了构件化的网络协议栈,该网络协议栈构件可以动态加载用户态,提供的构件界面可以继承新添加的网络协议栈,方便开发调试使用,裁剪系统内部支持的网络协议栈。开发者采用构件的方法开发高效或者针对某特定领域的网络协议栈,可以方便地替换原有操作系统上的协议栈,使用构件化的方法开发的网络协议栈也可以推广至其他支持构件化界面的操作系统中。
进一步的,本申请能够针对不同网络应用的需求,能最大限度地利用网络领域相关知识进行调整,提高性能。并且构件主要是利用面向对象的思想,底层构件可以在不影响顶层使用的情况下进行修改,有利于系统网络协议栈版本升级,提高开发效率。同时方便用户或系统开发者添加开发调试新的协议模块或协议栈。并且用户可根据使用需求动态加载和卸载系统支持的网络协议栈。
实施例2
进一步的,本申请另一方面提供一种装置,用于实现上述任一项所述的基于微内核操作系统的构件化网络协议栈的实现方法,包括:
接口构建模块,被配置为预先设定网络协议栈接口;
协议栈构件模块,被配置为根据构件规范将网络协议栈构件化,得到协议栈构件,并划分所述协议栈构件的大小;且在将网络协议栈构件化时,将所述协议栈构件继承所述网络协议栈接口;
服务提供模块,被配置为根据微内核操作系统环境的使用要求选择所述网络协议栈对应的服务方式,并根据所述服务方式为用户进程提供服务。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (7)

1.一种基于微内核操作系统的构件化网络协议栈的实现方法,其特征在于,包括如下步骤:
预先设定网络协议栈接口;
根据构件规范将网络协议栈构件化,得到协议栈构件,并划分所述协议栈构件的大小;且在将网络协议栈构件化时,将所述协议栈构件继承所述网络协议栈接口;
根据微内核操作系统环境的使用要求选择所述协议栈构件对应的服务方式,并根据所述服务方式为用户进程提供服务。
2.根据权利要求1所述的基于微内核操作系统的构件化网络协议栈的实现方法,其特征在于,所述网络协议栈接口包括通用网络API编程接口和协议栈内部固定调用接口,且所述通用网络API编程接口和所述协议栈内部固定调用接口均能够与协议栈构件化界面通信。
3.根据权利要求2所述的基于微内核操作系统的构件化网络协议栈的实现方法,其特征在于,所述协议栈内部固定调用接口的设定基于RFC协议编写实现。
4.根据权利要求1所述的基于微内核操作系统的构件化网络协议栈的实现方法,其特征在于,所述根据所述服务方式为用户进程提供服务,包括:
将所述协议栈构件作为用户态进程为用户进程提供服务;
将所述协议栈构件作为动态链接库链入用户进程地址空间为用户提供服务。
5.根据权利要求4所述的基于微内核操作系统的构件化网络协议栈的实现方法,其特征在于,在将所述协议栈构件作为动态库链入用户进程地址空间为用户进程提供服务时,还包括:
对多进程共享的数据加锁,进行同步访问控制。
6.根据权利要求4所述的基于微内核操作系统的构件化网络协议栈的实现方法,其特征在于,所述根据所述服务方式为用户进程提供服务,还包括:
将所述协议栈构件装入内核空间为用户提供服务。
7.一种装置,用于实现上述权利要求1至6任一项所述的基于微内核操作系统的构件化网络协议栈的实现方法,其特征在于,包括:
接口构建模块,被配置为预先设定网络协议栈接口;
协议栈构件模块,被配置为根据构件规范将网络协议栈构件化,得到协议栈构件,并划分所述协议栈构件的大小;且在将网络协议栈构件化时,将所述协议栈构件继承所述网络协议栈接口;
服务提供模块,被配置为根据微内核操作系统环境的使用要求选择所述网络协议栈对应的服务方式,并根据所述服务方式为用户进程提供服务。
CN202311819416.1A 2023-12-26 2023-12-26 基于微内核操作系统的构件化网络协议栈的实现方法及装置 Pending CN117793212A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311819416.1A CN117793212A (zh) 2023-12-26 2023-12-26 基于微内核操作系统的构件化网络协议栈的实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311819416.1A CN117793212A (zh) 2023-12-26 2023-12-26 基于微内核操作系统的构件化网络协议栈的实现方法及装置

Publications (1)

Publication Number Publication Date
CN117793212A true CN117793212A (zh) 2024-03-29

Family

ID=90399522

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311819416.1A Pending CN117793212A (zh) 2023-12-26 2023-12-26 基于微内核操作系统的构件化网络协议栈的实现方法及装置

Country Status (1)

Country Link
CN (1) CN117793212A (zh)

Similar Documents

Publication Publication Date Title
US7810105B2 (en) Method and apparatus for running different types of applications on a wireless mobile device
KR101026110B1 (ko) 미들웨어 서비스 계층을 포함하는 이동 단말기용 플랫폼 시스템
EP1571805A1 (en) Protocol stack with modification facility
US9612816B2 (en) Method for operating software defined radio application
EP1521428A1 (en) Flexible protocol stack
CA2568565A1 (en) System and method for implementing a general application program interface
WO2002084479A2 (en) Method and apparatus for performing online application upgrades in a java platform
US20080141270A1 (en) Middleware application environment
US20160198018A1 (en) Mobile device for executing radio application
US20050204351A1 (en) Dynamic addressing (DA) using a centralized DA Manager
JP2004503866A (ja) モジュラーコンピュータシステムおよび関連方法
US20220121566A1 (en) Methods, systems, articles of manufacture and apparatus for network service management
JP4724660B2 (ja) 組み込みシステムの中に統合されるソフトウェアコンポーネントを管理する方法
CN117793212A (zh) 基于微内核操作系统的构件化网络协议栈的实现方法及装置
EP4155938A2 (en) Methods and apparatus to increase resiliency in self-healing mechanisms
JP2006277204A (ja) 携帯通信端末装置
JP2000259417A (ja) データ処理装置、データ処理方法及びプログラム提供媒体
CN111294827A (zh) 一种应用程序的自适应网络通信方法及装置
Taconet et al. Context aware deployment for mobile users
US20050235350A1 (en) Configuration method
KR20210032295A (ko) 복수의 라디오 컴퓨터들을 구비한 재구성 가능한 라디오 장치에서 라디오 어플리케이션을 구성하는 기능 블록들의 동적 재구성 방법
US20050235262A1 (en) Configuration method
CN118152070A (zh) 用于开发和运行开源鸿蒙系统的Linux容器化镜像文件的方法
KR20210032293A (ko) 복수의 라디오 컴퓨터를 가진 재구성 가능한 라디오 장치에서 통합 라디오 어플리케이션의 분산 설치 방법
KR20200107754A (ko) 복수의 라디오 컴퓨터를 구비한 재구성 가능한 라디오 장치 및 이를 위한 동작 방법

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