用户态网络栈调用、用户态接口设置方法和装置制造方法及图纸

技术编号:36933046 阅读:79 留言:0更新日期:2023-03-22 18:55
本发明专利技术实施例提供了一种用户态网络栈调用、用户态接口设置方法和装置,涉及操作系统技术领域;包括获取原始用户态和可移植操作系统接口套接字转换库,可移植操作系统接口套接字转换库包括可移植操作系统接口套接字转换函数;识别原始用户态的应用程序编程接口;将应用程序编程接口的套接字调用函数转换为可移植操作系统接口套接字转换函数,以更新应用程序编程接口;在更新应用程序编程接口后的原始用户态上加载可移植操作系统接口套接字转换库,生成更新用户态;响应于用户态网络栈调用指令,调用更新用户态与用户态网络栈进行数据交互。通过本发明专利技术实施例可以实现在原始用户态不改变源代码的情况下直接调用用户态网络栈。栈。栈。

【技术实现步骤摘要】
用户态网络栈调用、用户态接口设置方法和装置


[0001]本专利技术涉及操作系统
,特别是涉及一种用户态网络栈调用方法、一种用户态接口设置方法、一种用户态网络栈调用装置、一种电子设备和一种存储介质。

技术介绍

[0002]DPDK(Data Plane Development Kit,数据平面开发套件)是一个Linux(操作系统)基金会的开源项目,它通过将Linux内核网络栈旁路、直接在用户态收发网卡报文的方式,提升数据平面的性能。DPDK为用户态网络栈已经在业界得到了非常广泛的应用。DPDK的主要定位是驱动和支撑功能,它不带有L3(Layer 3,网络栈中的三层功能)、L4(Layer 4,网络栈中的四层功能)、UDP(User Datagram Protocol,用户数据报协议)、TCP(Transmission Control Protocol,传输控制协议)、socket(套接字)等网络全栈功能。但是在原始的Linux用户态中,其报文是发送至Linux内核态,而并不能发送至用户态网络栈。为了用户态可以调用用户态网络栈,在相关技术中,本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种用户态网络栈调用方法,其特征在于,应用于用户态,所述方法包括:获取原始用户态和可移植操作系统接口套接字转换库,所述可移植操作系统接口套接字转换库包括可移植操作系统接口套接字转换函数;识别所述原始用户态的应用程序编程接口;将所述应用程序编程接口的套接字调用函数转换为所述可移植操作系统接口套接字转换函数,以更新所述应用程序编程接口;在更新应用程序编程接口后的原始用户态上加载所述可移植操作系统接口套接字转换库,生成更新用户态;响应于用户态网络栈调用指令,调用所述更新用户态与用户态网络栈进行数据交互。2.根据权利要求1所述的方法,其特征在于,所述原始用户态包括多个动态库,所述动态库对应有第一应用程序编程接口,所述识别所述原始用户态的应用程序编程接口,包括:获取定义符号表,所述定义符号表包括未定义符号;采用所述未定义符号与所述动态库进行匹配,从所述第一应用程序编程接口中,确定目标应用程序编程接口;确定所述目标应用程序编程接口为所述原始用户态的应用程序编程接口。3.根据权利要求2所述的方法,其特征在于,所述未定义符号为多个;所述识别所述原始用户态的应用程序编程接口,还包括:从所述定义符号表逐一确定目标未定义符号,采用所述目标未定义符号,执行所述采用所述未定义符号与所述动态库进行匹配,从所述第一应用程序编程接口中,确定目标应用程序编程接口的步骤;将所述目标未定义符号从所述定义符号表删除。4.根据权利要求2或3所述的方法,其特征在于,所述采用所述未定义符号与所述动态库进行匹配,从所述第一应用程序编程接口中,确定目标应用程序编程接口,包括:按照预设查询顺序,针对任一动态库,判断所述任一动态库中是否包含所述未定义符号;当所述任一动态库包含所述未定义符号时,确定所述任一动态库为目标动态库;确定所述目标动态库对应的第一应用程序编程接口为目标应用程序编程接口。5.根据权利要求4所述的方法,其特征在于,所述采用所述未定义符号与所述动态库进行匹配,从所述第一应用程序编程接口中,确定目标应用程序编程接口,还包括:当所述目标动态库的数量为单个时,执行所述确定所述目标动态库对应的第一应用程序编程接口为目标应用程序编程接口的步骤;当所述目标动态库的数量为多个时,依据所述预设查询顺序确定多个目标动态库中靠前的目标动态库,并采用所述靠前的目标动态库执行所述确定所述目标动态库对应的第一应用程序编程接口为目标应用程序编程接口的步骤。6.根据权利要求1所述的方法,其特征在于,所述可移植操作系统接口套接字转换函数包括构造函数和套接字函数,所述将所述应用程序编程接口的套接字调用函数转换为所述可移植操作系统接口套接字转换函数,包括:采用所述构造函数和所述套接字函数替换所述应用程序编程接口的套接字调用函数。7.根据权利要求6所述的方法,其特征在于,所述采用所述构造函数和所述套接字函数
替换所述应用程序编程接口的套接字调用函数,包括:确定所述应用程序编程接口的套接字调用函数的调用位置;在所述调用位置调用所述构造函数和所述套接字函数。8.根据权利要求7所述的方法,其特征在于,所述在所述调用位置调用所述构造函数和所述套接字函数,包括:在所述调用位置调用所述构造函数,将所述套接字函数对应的地址存入预设函数指针中;采用所述预设函数指针映射所述用户态网络栈,生成共享内存池;打开所述用户态网络栈对应的全局套接字控制队列;调用所述套接字函数,控制所述共享内存池和所述全局套接字控制队列。9.根据权利要求8所述的方法,其特征在于,所述调用所述套接字函数,控制所述共享内存池和所述全局套接字控制队列,包括:调用所述套接字函数,判断所述套接字函数的调用参数是否进入预设内核态;当所述套接字函数的调用参数进入所述预设内核态时,调用预设内核态进程将所述调用参数传递至所述预设内核态;当所述套接字函数的调用参数进入所述用户态网络栈时,采用所述共享内存池和所述全局套接字控制队列将所述调用参数传递至所述用户态网络栈。10.根据权利要求9所述的方法,其特征在于,所述采用所述共享内存池和所述全局套接字控...

【专利技术属性】
技术研发人员:刘富海陈翔
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1