CN110875910B - 一种获取网络传输信息的方法、装置及系统 - Google Patents

一种获取网络传输信息的方法、装置及系统 Download PDF

Info

Publication number
CN110875910B
CN110875910B CN201811016911.8A CN201811016911A CN110875910B CN 110875910 B CN110875910 B CN 110875910B CN 201811016911 A CN201811016911 A CN 201811016911A CN 110875910 B CN110875910 B CN 110875910B
Authority
CN
China
Prior art keywords
network transmission
transmission information
user process
kernel
user
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
Application number
CN201811016911.8A
Other languages
English (en)
Other versions
CN110875910A (zh
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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201811016911.8A priority Critical patent/CN110875910B/zh
Publication of CN110875910A publication Critical patent/CN110875910A/zh
Application granted granted Critical
Publication of CN110875910B publication Critical patent/CN110875910B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供一种获取网络传输信息的方法、装置及系统。其中所述获取网络传输信息的方法,包括:用户进程构建用于获取网络传输信息的请求信息;所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息。采用本申请提供的方法,解决了现有技术中用户进程获取内核进程的网络传输信息效率低下的问题。

Description

一种获取网络传输信息的方法、装置及系统
技术领域
本发明涉及通信技术领域,具体涉及一种获取网络传输信息的方法、装置及系统。
背景技术
随着云计算的快速发展,云计算服务器的网卡设备和CPU等硬件性能日益提升,而受限于内核协议栈的瓶颈,应用程序无法充分发挥多核CPU和高带宽网卡的优势。为了满足用户在虚拟机部署应用时要求分布式系统的数据读写达到低时延、高吞吐,开发用户态协议栈是高性能系统研究的热点,在脱离内核的同时,应用程序需要在用户态做更多工作,其中TCP/IP协议在通信过程中频繁使用的route、arp、网卡状态等信息,用户态协议栈需要能实时管理这些信息。
如何高效处理route和arp表的添加、删除等操作,是用户态协议栈要考虑的重要因素
为了保证TCP/IP协议的正常运行,用户态协议栈必须能拿到可靠的route表和arp表信息。目前典型的用户态往内核转发的方法是KNI模式,通过内核模块构造了一个虚拟网络接口,并且通过先进先出队列和用户态的应用交换数据包。
直接读取文件的方法需要定时读取,每次都要处理所有内容,效率低下;在route和arp状态更新时不能实时反馈到内存中,特别是在新增arp消息时,协议栈未及时更新数据会造成网络数据包发送失败。在用户态协议栈实现arp协议逻辑可以满足协议栈自身的需求,但为了保证机器上其他进程的正常运行,在一台物理机上,如何让用户态和内核同时接收arp请求是个难题。用户态协议栈接管网卡的所有包,再通过类似KNI等模式转发给内核,缺点在于内核模块无法向上转发流量,数据包的转发增加用户态协议栈的维护代价,影响协议栈性能。
发明内容
本申请提供一种获取网络传输信息的方法、装置及系统,以解决现有技术中用户获取内核的网路传输信息效率低下的问题。
本申请提供的获取网络传输信息的方法,包括:
用户进程构建用于获取网络传输信息的请求信息;
所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;
所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息。
可选的,还包括:
所述用户进程将所述netlink文件描述符注册到监控线程;
所述用户进程获取所述监控线程发出的网络传输信息更新通知;
根据所述网络传输信息更新通知,获取更新的网络传输信息。
可选的,还包括:
在所述用户进程构建用于获取网络传输信息的请求信息之前,所述用户进程调用系统函数;
所述系统函数用于所述内核进程的网络传输信息的更新。
可选的,还包括:
所述用户进程获取所述netlink文件描述符;
所述用户进程将所述文件描述符的地址类型设置为第一地址类型;
所述用户进程将所述文件描述符的消息类型设置为第一消息类型。
可选的,所述用户进程构建用于获取网络传输信息的请求信息,包括:
所述用户进程将所述请求信息的属性标志设置为第一属性标志;
所述用户进程将所述请求信息的请求类型设置为第一请求类型。
可选的,所述网络传输信息包括route表、arp表中的至少一种。
可选的,所述用户进程将所述netlink文件描述符注册到监控线程,包括:
将所述netlink文件描述符的读事件注册到所述监控线程中的epoll驱动中,所述epoll驱动用于支持所述监控线程的并发处理。
本申请还提供一种获取网络传输信息的装置,包括:
构建单元,用于用户进程构建用于获取网络传输信息的请求信息;
发送单元,用于所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;
获取单元,用于所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息。
可选的,还包括:
注册单元,用于所述用户进程将所述netlink文件描述符注册到监控线程;
通知获取单元,用于所述用户进程获取所述监控线程发出的网络传输信息更新通知;
信息获取单元,用于根据所述网络传输信息更新通知,获取更新的网络传输信息。
可选的,还包括:
调用单元,用于在所述用户进程构建用于获取网络传输信息的请求信息之前,所述用户进程调用系统函数;
设置单元,用于设置所述系统函数,所述系统函数用于所述内核进程的网络传输信息的更新。
可选的,还包括:
获取单元,用于所述用户进程获取所述netlink文件描述符;
第一设置单元,用于所述用户进程将所述文件描述符的地址类型设置为第一地址类型;
第二设置单元,用于所述用户进程将所述文件描述符的消息类型设置为第一消息类型。
可选的,所述构建单元,具体用于:
所述用户进程将所述请求信息的属性标志设置为第一属性标志;
所述用户进程将所述请求信息的请求类型设置为第一请求类型。可选的,所述网络传输信息包括route表、arp表中的至少一种。
可选的,所述注册单元,具体用于:
将所述netlink文件描述符的读事件注册到所述监控线程中的epoll驱动中,所述epoll驱动用于支持所述监控线程的并发处理。
本申请提供
一种包括特定设备的装置,所述装置包括:
至少一个处理器;
存储器,其用于存储程序,所述处理器执行所述程序以用于:
用户进程构建用于获取网络传输信息的请求信息;
所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;
所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息。
本申请提供一种计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行时,实现以下步骤:
用户进程构建用于获取网络传输信息的请求信息;
所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;
所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息。
本申请提供一种计算设备通信系统,包括至少两个计算设备,其中至少一个计算设备用于运行至少一个用户进程和至少一个内核进程;
所述用户进程用于,构建用于获取网络传输信息的请求信息;将所述请求信息通过用于所述用户进程与所述内核进程通信的netlink文件描述符发送至所述内核进程;获取所述内核进程通过所述netlink文件描述符返回的网络传输信息;
所述内核进程用于,通过用于所述用户进程与所述内核进程通信的netlink文件描述符接收所述用户进程发送的请求信息;通过所述netlink文件描述符返回所述请求信息对应的网络传输信息。
可选的,所述用户进程还用于,将所述netlink文件描述符注册到监控线程;获取所述监控线程发出的网络传输信息更新通知;根据所述网络传输信息更新通知,获取更新的网络传输信息;
所述内核进程还用于,向所述监控线程通知所述内核进程的网络传输信息的更新;向所述用户进程提供更新的网络传输信息。
可选的,所述用户进程,还用于,在所述用户进程构建用于获取网络传输信息的请求信息之前,调用系统函数;所述系统函数用于所述内核进程的网络传输信息的更新;
所述内核进程还用于,根据所述用户进程调用的系统函数,更新所述内核进程的网络传输信息。
本申请还提供一种提供网络传输信息的方法,其特征在于,包括:
内核进程通过用于用户进程与所述内核进程通信的netlink文件描述符接收所述用户进程发送的获取网络传输信息的请求信息;
所述内核进程将所述网络传输信息通过所述netlink文件描述符提供给所述用户进程。
可选的,还包括:
所述内核进程将所述网络传输信息的更新通知监控线程;
所述内核进程将更新后的网络传输信息通过所述netlink文件描述符提供给所述用户进程。
可选的,还包括:
根据用户进程调用的系统函数,获取更新的网络传输信息;
将所述更新的网络传输信息通过所述netlink文件描述符提供给所述用户进程。
与现有技术相比,本申请具有如下优点:
本申请提供的获取网络传输信息的方法,包括:用户进程构建用于获取网络传输信息的请求信息;所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息。采用本申请提供的方法,通过netlink来获取内核的网络传输信息,用户既不用定时读取route表和arp表,也不用在用户态发送和接收arp表,从而解决了现有技术中用户进程获取内核进程的网络传输信息效率低下的问题。
附图说明
图1是本申请提供的一种获取网络传输信息的方法的第一实施例的流程图。
图2是本申请第一实施例涉及的读取并监控route表和arp表信息的一个应用实例的流程图
图3是本申请第一实施例涉及的结合netlink逻辑的IO线程组包的一个应用实例的流程图。
图4是本申请提供的一种获取网络传输信息的装置的第二实施例的流程图。
图5是本申请提供的一种提供网络传输信息的方法的第六实施例的流程图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请第一实施例提供一种获取网络传输信息的方法。请参看图1,该图为本申请第一实施例的流程图。以下结合图1对本申请第一实施例进行详细说明。所述方法的实施包括如下步骤:
步骤S101:用户进程构建用于获取网络传输信息的请求信息。
本步骤用于用户进程构建用于获取网络传输信息的请求信息,可以通过netlink来构建用于获取网络传输信息的请求信息。
netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC),也是网络应用程序与内核通信的最常用的接口。
netlink是一种特殊的socket,它是Linux所特有的,类似于BSD中的AF_ROUTE,但又远比它的功能强大,目前在Linux内核中使用netlink进行应用与内核通信的应用很多。
用户态应用中使用的netlink的socket API有sendto(),recvfrom(),sendmsg(),recvmsg等。
可以使用类似于如下的代码片段来创建用于用户进程和内核进程通信的netlink文件描述符,skfd即netlink文件描述符。
skfd=socket(AF_NETLINK,SOCK_RAW,NETLINK_TEST)。
所述网络传输信息包括route表、arp表中的至少一种。
所述arp表用于描述ip地址和mac之间的对应关系。
所述route表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。
所述获取网络传输信息的方法,还包括:
所述用户进程获取所述netlink文件描述符;
所述用户进程设置所述文件描述符的地址类型,将其设置为符合要求的某一地址类型;
所述用户进程设置所述文件描述符的消息类型,将其设置为符合要求的某一消息类型。
首先利用上面所述的socket函数来创建socket套接字,然后获取所述套接字的文件描述符skfd,然后将所述skfd的地址类型设置为符合要求的某一地址类型,将所述文件描述符的消息类型设置为符合要求的某一消息类型。该消息类型可以用来处理arp消息,或者处理route消息。
所述用户进程构建用于获取网络传输信息的请求信息,包括:
所述用户进程设置所述请求信息的属性标志,将其设置为符合要求的某一属性标志;
所述用户进程设置所述请求信息的请求类型,将其设置为符合要求的某一请求类型。
上述步骤用于构建获取route表信息的请求消息,请求类型分别获取路由表对应的请求类型,调用系统函数sendmsg往fd上发送该dump请求。
所述用户进程构建用于获取网络传输信息的请求信息,包括:
所述用户进程设置所述请求信息的属性标志,将其设置为符合要求的某一属性标志;
所述用户进程设置所述请求信息的请求类型,将其分别设置为符合要求的某一请求类型。
上述步骤用于构建获取arp表信息的请求消息,请求类型为获取arp表对应的请求类型,调用系统函数sendmsg往fd上发送该dump请求。
步骤S102:所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程。
本步骤用于将所述请求信息通过netlink套接字对应的文件描述符发送至内核进程。
可以使用如下的程序片段来将所述请求信息通过所述netlink文件描述符发送至内核进程。
ret=sendto(skfd,nlh,nlh->nlmsg_len,0,(struct sockaddr*)&daddr,sizeof(struct sockaddr_nl));
步骤S103:获取所述netlink文件描述符返回的网络传输信息。
本步骤用于获取所述netlink文件描述符返回的网络传输信息。
可以使用如下代码片段所示的recvfrom函数来获取所述netlink文件描述符返回的网络传输信息。
ret=recvfrom(skfd,&u_info,si,eof(user_msg_info),0,(structsockaddr*)&daddr,&len);
所述获取网络传输信息的方法,还包括:
所述用户进程将所述netlink文件描述符注册到监控线程;
所述用户进程获取所述监控线程发出的网络传输信息更新通知;
根据所述网络传输信息更新通知,获取更新的网络传输信息。
为了实时监控内核中网络传输信息的更新,创建了监控线程。用户首先要将所述netlink文件描述符向监控线程进行注册,在注册之后,一旦内核中网络传输信息发生了更新,就会向用户发送网络传输信息更新通知,用户收到这个通知后,就可以读取更新后的网络传输信息,从而获取更新的网络传输信息。
所述获取网络传输信息的方法,还包括:
在所述用户进程构建用于获取网络传输信息的请求信息之前,所述用户进程调用系统函数;
所述系统函数用于所述内核进程的网络传输信息的更新。
例如用户进程发现一个IP不在arp表中,则调用内核的接口,往该IP发送ICMP请求。内核协议栈在发送ICMP请求时,需要填充对端IP的物理地址,则会先发送arp请求获取对端的mac地址,并更新到arp表。内核在更新arp表时,会将此次更新数据发送给监控线程上注册的原生文件描述符fd,唤醒线程来读取该数据,并由应用层解析后更新到所述用户进程的内存arp表。
所述用户进程将所述netlink文件描述符注册到监控线程,包括:
将所述netlink文件描述符的读事件注册到所述监控线程中的epoll驱动中,所述epoll驱动用于支持所述监控线程的并发处理。
epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的水平触发(Level Triggered)外,还提供了边缘触发(Edge Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwait的调用,提高应用程序效率。
在linux没有实现epoll事件驱动机制之前,一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等应用场景,select和poll的使用越来越少,epoll的使用越来越多。
图2是采用本申提供的获取网络传输信息的方法的读取并监控内核进程中route表和arp表信息的一个应用实例的流程图。下面对于这个流程图进行说明。
用户进程启动后,创建监控线程,在线程上创建IO复用的epoll驱动,让线程等在epoll_wait上,提高线程的并发处理效率。
将原生文件描述符fd的读事件注册到epoll中,一旦fd上有数据可读时,epoll会唤醒线程来调用读事件的回调函数,应用层可在回调函数里读取fd上的数据。
构建获取route表信息的请求消息,调用系统函数sendmsg往fd上发送该dump请求。
内核处理dump请求后,会将route表里所有的item按照固定格式封装,然后发送给fd。epoll感知到fd有可读事件时,唤醒线程来读取fd上的数据。应用层读到数据后,对route信息进行解析,其中每个route item包括目的IP、掩码、网关、网卡名等,根据需要保存有用的item到内存上。
同理构建获取arp表信息的请求消息,调用系统函数sendmsg往fd上发送该dump请求。
解析arp item包括目的IP、目的MAC、网卡名、item的状态等。其中arp item的状态会因为一段时间未用被内核从可用状态切换为过期状态,因而需要在内存上记录其对应状态。
用户进程的初始化阶段,监控线程会dump route和arp表,完成后监控线程就回到epoll_wait,等待新的可读事件。当route表和arp表里出现新增或删除item时,内核会将更新信息发送给fd,监控线程会及时读取到。
图3是采用本申提供的获取网络传输信息方法的结合netlink逻辑的IO线程组包的一个应用实例的流程图。下面对于这个流程图进行说明。
IO线程在进行TCP/IP组包时,需要填充TCP/IP报文里的目的IP和目的物理地址,而目的IP不一定直接可达,则需要网关进行数据报文转发,此时报文里填充的目的物理地址是下一跳可达的物理地址。下一条的物理地址是在route表和arp表中做匹配而拿到的。
在内存里保存的route表中,根据目的IP做最长匹配选择下一跳可达的设备,若目的IP和源IP是同一网段,则直接可达,不用网关转发;否则下一跳为网关。
最长匹配拿到下一跳的IP后,在内存里保存的arp表中查询该IP是否存在,存在则可拿到对应的物理地址,作为目的MAC地址进行组包。
若下一跳IP不在arp表中,则调用内核的接口,往该IP发送ICMP请求。内核协议栈在发送ICMP请求时,需要填充对端IP的物理地址,则会先发送arp请求获取对端的mac地址,并更新到arp表。
内核在更新arp表时,会将此次更新数据发送给监控线程上注册的原生文件描述符fd,唤醒线程来读取该数据,并由应用层解析后更新到内存arp表。这样用户态协议栈就可以完成TCP/IP报文的组包。
在上述的实施例中,提供了一种获取网络传输信息的方法,与之相对应的,本申请还提供一种获取网络传输信息的装置。请参看图4,其为本申请的一种获取网络传输信息的装置实施例的流程图。由于本实施例,即第二实施例,基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种获取网络传输信息的装置,包括:
构建单元401,用于用户进程构建用于获取网络传输信息的请求信息;
发送单元402,用于所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;
获取单元403,用于所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息。
本实施例中,所述获取网络传输信息的装置,还包括:
注册单元,用于所述用户进程将所述netlink文件描述符注册到监控线程;
通知获取单元,用于所述用户进程获取所述监控线程发出的网络传输信息更新通知;
信息获取单元,用于根据所述网络传输信息更新通知,获取更新的网络传输信息。
本实施例中,所述获取网络传输信息的装置,还包括:
调用单元,用于在所述用户进程构建用于获取网络传输信息的请求信息之前,所述用户进程调用系统函数;
设置单元,用于设置所述系统函数用于所述内核进程的网络传输信息的更新。
本实施例中,所述获取网络传输信息的装置,还包括:
获取单元,用于所述用户进程获取所述netlink文件描述符;
第一设置单元,用于所述用户进程将所述文件描述符的地址类型设置为符合要求的某一地址类型;
第二设置单元,用于所述用户进程将所述文件描述符的消息类型设置为符合要求的某一消息类型。
本实施例中,所述构建单元,具体用于:
所述用户进程将所述请求信息的属性标志设置为符合要求的某一属性标志;
所述用户进程将所述请求信息的请求类型设置为符合要求的某一请求类型。本实施例中,所述构建单元,具体用于:
所述用户进程将所述请求信息的属性标志设置为符合要求的某一属性标志;
所述用户进程将所述请求信息的请求类型分别为符合要求的某一请求类型。
本实施例中,所述网络传输信息包括route表、arp表中的至少一种。
本实施例中,所述注册单元,具体用于:
将所述netlink文件描述符的读事件注册到所述监控线程中的epoll驱动中,所述epoll驱动用于支持所述监控线程的并发处理。
本申请第三实施例提供一种计算设备通信系统,该计算设备通信系统用于实现上述第一实施例提供的方法。
所述计算设备通信系统包括至少两个计算设备,其中至少一个计算设备用于运行至少一个用户进程和至少一个内核进程;
所述用户进程用于,构建用于获取网络传输信息的请求信息;将所述请求信息通过用于所述用户进程与所述内核进程通信的netlink文件描述符发送至所述内核进程;获取所述内核进程通过所述netlink文件描述符返回的网络传输信息;
所述内核进程用于,通过用于所述用户进程与所述内核进程通信的netlink文件描述符接收所述用户进程发送的请求信息;通过所述netlink文件描述符返回所述请求信息对应的网络传输信息。
本实施例中,所述用户进程还用于,将所述netlink文件描述符注册到监控线程;获取所述监控线程发出的网络传输信息更新通知;根据所述网络传输信息更新通知,获取更新的网络传输信息;
所述内核进程还用于,通知所述监控线程所述内核进程的网络传输信息的更新;向所述用户进程提供更新的网络传输信息。
本实施例中,所述用户进程,还用于,在所述用户进程构建用于获取网络传输信息的请求信息之前,调用系统函数;所述系统函数用于所述内核进程的网络传输信息的更新;
所述内核进程还用于,根据所述用户进程调用的系统函数,更新所述内核进程的网络传输信息。
本申请第四实施例提供一种包括特定设备的装置,所述装置包括:
至少一个处理器;
存储器,其用于存储程序,所述处理器执行所述程序以用于:
用户进程构建用于获取网络传输信息的请求信息;
所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;
所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息。
本申请第五实施例提供一种计算机可读取存储介质,其上存储有计算机程序,所述程序被处理器执行时,实现以下步骤:
用户进程构建用于获取网络传输信息的请求信息;
所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;
所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息。
本申请第六实施例提供一种提供网络传输信息的方法,请参看图5,该图为本申请第六实施例的流程图。以下结合图5对本申请第六实施例进行详细说明。所述方法包括如下步骤:
步骤S501,内核进程通过用于用户进程与所述内核进程通信的netlink文件描述符接收所述用户进程发送的获取网络传输信息的请求信息。
本步骤用于内核进程通过用于用户进程与所述内核进程通信的netlink文件描述符接收所述用户进程发送的获取网络传输信息的请求信息。
例如,用户进程在需要获得arp表信息时,可以通过netlink文件描述符向内核进程发送获取arp表信息的请求信息。
步骤S502,所述内核进程将所述网络传输信息通过所述netlink文件描述符提供给所述用户进程。
本步骤用于所述内核进程将所述网络传输信息通过所述netlink文件描述符提供给所述用户进程。
内核进程在接收到这个请求信息后,可以通过netlink文件描述符向所述用户进程提供arp表信息。
本实施例中,所述提供网络传输信息的方法,还包括:
所述内核进程将所述网络传输信息的更新通知监控线程;
所述内核进程将更新后的网络传输信息通过所述netlink文件描述符提供给所述用户进程。
在内核进程的网络传输信息,如arp表信息获得更新之后,可以将所述更新通知所述监控线程。监控线程将所述更新发送给用户进程,用户进程可以通过netlink文件描述符获取更新后的arp表信息。
本实施例中,所述提供网络传输信息的方法,还包括:
根据用户进程调用的系统函数,获取更新的网络传输信息;
将所述更新的网络传输信息通过所述netlink文件描述符提供给所述用户进程。
例如用户进程发现一个IP不在arp表中,则调用内核的接口,往该IP发送ICMP请求。内核协议栈在发送ICMP请求时,需要填充对端IP的物理地址,则会先发送arp请求获取对端的mac地址,并更新到arp表。内核在更新arp表时,会将此次更新数据发送给监控线程上注册的原生文件描述符fd,唤醒线程来读取该数据,并由应用层解析后更新到内存arp表。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (18)

1.一种获取网络传输信息的方法,其特征在于,包括:
用户进程构建用于获取网络传输信息的请求信息;
所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;
所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息;
所述方法还包括:
所述用户进程将所述netlink文件描述符注册到监控线程;
所述用户进程获取所述监控线程发出的网络传输信息更新通知,其中,由所述内核进程将所述网络传输信息的更新通知所述监控线程;
根据所述网络传输信息更新通知,获取更新的网络传输信息;
其中,如果所述用户进程发现一个IP不在所述用户进程的arp表中,则调用所述内核进程的接口,由所述内核进程发送ICMP请求,其中,由所述内核进程发送arp请求获取所述IP的MAC地址,所述IP的MAC地址用于填充到所述ICMP请求中,并由所述内核进程将所述IP的MAC地址更新至所述内核进程的arp表中,所述内核进程将所述内核进程的arp表的更新数据发送给在所述监控线程上注册的所述netlink文件描述符,唤醒所述监控线程读取所述更新数据,所述用户进程将所述更新数据更新到所述用户进程的arp表。
2.根据权利要求1所述的获取网络传输信息的方法,其特征在于,还包括:
在所述用户进程构建用于获取网络传输信息的请求信息之前,所述用户进程调用系统函数;
所述系统函数用于所述内核进程的网络传输信息的更新。
3.根据权利要求1所述的获取网络传输信息的方法,其特征在于,还包括:
所述用户进程获取所述netlink文件描述符;
所述用户进程将所述文件描述符的地址类型设置为第一地址类型;
所述用户进程将所述文件描述符的消息类型设置为第一消息类型。
4.根据权利要求1所述的获取网络传输信息的方法,其特征在于,所述用户进程构建用于获取网络传输信息的请求信息,包括:
所述用户进程将所述请求信息的属性标志设置为第一属性标志;
所述用户进程将所述请求信息的请求类型设置为第一请求类型。
5.根据权利要求1所述的获取网络传输信息的方法,其特征在于,所述网络传输信息包括route表、arp表中的至少一种。
6.根据权利要求1所述的获取网络传输信息的方法,其特征在于,所述用户进程将所述netlink文件描述符注册到监控线程,包括:
将所述netlink文件描述符的读事件注册到所述监控线程中的epoll驱动中,所述epoll驱动用于支持所述监控线程的并发处理。
7.一种获取网络传输信息的装置,其特征在于,包括:
构建单元,用于用户进程构建用于获取网络传输信息的请求信息;
发送单元,用于所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;
获取单元,用于所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息;
还包括:
注册单元,用于所述用户进程将所述netlink文件描述符注册到监控线程;
通知获取单元,用于所述用户进程获取所述监控线程发出的网络传输信息更新通知,其中,由所述内核进程将所述网络传输信息的更新通知所述监控线程;
信息获取单元,用于根据所述网络传输信息更新通知,获取更新的网络传输信息;
其中,如果所述用户进程发现一个IP不在所述用户进程的arp表中,则调用所述内核进程的接口,由所述内核进程发送ICMP请求,其中,由所述内核进程发送arp请求获取所述IP的MAC地址,所述IP的MAC地址用于填充到所述ICMP请求中,并由所述内核进程将所述IP的MAC地址更新至所述内核进程的arp表中,所述内核进程将所述内核进程的arp表的更新数据发送给在所述监控线程上注册的所述netlink文件描述符,唤醒所述监控线程读取所述更新数据,所述用户进程将所述更新数据更新到所述用户进程的arp表。
8.根据权利要求7所述的获取网络传输信息的装置,其特征在于,还包括:
调用单元,用于在所述用户进程构建用于获取网络传输信息的请求信息之前,所述用户进程调用系统函数;
设置单元,用于设置所述系统函数,所述系统函数用于所述内核进程的网络传输信息的更新。
9.根据权利要求7所述的获取网络传输信息的装置,其特征在于,还包括:
获取单元,用于所述用户进程获取所述netlink文件描述符;
第一设置单元,用于所述用户进程将所述文件描述符的地址类型设置为第一地址类型;
第二设置单元,用于所述用户进程将所述文件描述符的消息类型设置为第一消息类型。
10.根据权利要求7所述的获取网络传输信息的装置,其特征在于,所述构建单元,具体用于:
所述用户进程将所述请求信息的属性标志设置为第一属性标志;
所述用户进程将所述请求信息的请求类型设置为第一请求类型。
11.根据权利要求7所述的获取网络传输信息的装置,其特征在于,所述网络传输信息包括route表、arp表中的至少一种。
12.根据权利要求7所述的获取网络传输信息的装置,其特征在于,所述注册单元,具体用于:
将所述netlink文件描述符的读事件注册到所述监控线程中的epoll驱动中,所述epoll驱动用于支持所述监控线程的并发处理。
13.一种包括特定设备的装置,所述装置包括:
至少一个处理器;
存储器,其用于存储程序,所述处理器执行所述程序以用于:
用户进程构建用于获取网络传输信息的请求信息;
所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;
所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息
还包括:
所述用户进程将所述netlink文件描述符注册到监控线程;
所述用户进程获取所述监控线程发出的网络传输信息更新通知,其中,由所述内核进程将所述网络传输信息的更新通知所述监控线程;
根据所述网络传输信息更新通知,获取更新的网络传输信息;
其中,如果所述用户进程发现一个IP不在所述用户进程的arp表中,则调用所述内核进程的接口,由所述内核进程发送ICMP请求,其中,由所述内核进程发送arp请求获取所述IP的MAC地址,所述IP的MAC地址用于填充到所述ICMP请求中,并由所述内核进程将所述IP的MAC地址更新至所述内核进程的arp表中,所述内核进程将所述内核进程的arp表的更新数据发送给在所述监控线程上注册的所述netlink文件描述符,唤醒所述监控线程读取所述更新数据,所述用户进程将所述更新数据更新到所述用户进程的arp表。
14.一种计算机可读取存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现以下步骤:
用户进程构建用于获取网络传输信息的请求信息;
所述用户进程将所述请求信息通过用于所述用户进程与内核进程通信的netlink文件描述符发送至所述内核进程;
所述用户进程获取所述内核进程通过所述netlink文件描述符返回的网络传输信息
还包括:
所述用户进程将所述netlink文件描述符注册到监控线程;
所述用户进程获取所述监控线程发出的网络传输信息更新通知,其中,由所述内核进程将所述网络传输信息的更新通知所述监控线程;
根据所述网络传输信息更新通知,获取更新的网络传输信息;
其中,如果所述用户进程发现一个IP不在所述用户进程的arp表中,则调用所述内核进程的接口,由所述内核进程发送ICMP请求,其中,由所述内核进程发送arp请求获取所述IP的MAC地址,所述IP的MAC地址用于填充到所述ICMP请求中,并由所述内核进程将所述IP的MAC地址更新至所述内核进程的arp表中,所述内核进程将所述内核进程的arp表的更新数据发送给在所述监控线程上注册的所述netlink文件描述符,唤醒所述监控线程读取所述更新数据,所述用户进程将所述更新数据更新到所述用户进程的arp表。
15.一种计算设备通信系统,其特征在于,包括至少两个计算设备,其中至少一个计算设备用于运行至少一个用户进程和至少一个内核进程;
所述用户进程用于,构建用于获取网络传输信息的请求信息;将所述请求信息通过用于所述用户进程与所述内核进程通信的netlink文件描述符发送至所述内核进程;获取所述内核进程通过所述netlink文件描述符返回的网络传输信息;
所述内核进程用于,通过用于所述用户进程与所述内核进程通信的所述netlink文件描述符接收所述用户进程发送的请求信息;通过所述netlink文件描述符返回所述请求信息对应的网络传输信息;所述用户进程还用于,将所述netlink文件描述符注册到监控线程;获取所述监控线程发出的网络传输信息更新通知,其中,由所述内核进程将所述网络传输信息的更新通知所述监控线程;根据所述网络传输信息更新通知,获取更新的网络传输信息;
所述内核进程还用于,向所述监控线程通知所述内核进程的网络传输信息的更新;向所述用户进程提供所述更新的网络传输信息;
其中,如果所述用户进程发现一个IP不在所述用户进程的arp表中,则调用所述内核进程的接口,由所述内核进程发送ICMP请求,其中,由所述内核进程发送arp请求获取所述IP的MAC地址,所述IP的MAC地址用于填充到所述ICMP请求中,并由所述内核进程将所述IP的MAC地址更新至所述内核进程的arp表中,所述内核进程将所述内核进程的arp表的更新数据发送给在所述监控线程上注册的所述netlink文件描述符,唤醒所述监控线程读取所述更新数据,所述用户进程将所述更新数据更新到所述用户进程的arp表。
16.根据权利要求15所述的计算设备通信系统,其特征在于,所述用户进程,还用于,在所述用户进程构建用于获取网络传输信息的请求信息之前,调用系统函数;所述系统函数用于所述内核进程的网络传输信息的更新;
所述内核进程还用于,根据所述用户进程调用的系统函数,更新所述内核进程的网络传输信息。
17.一种提供网络传输信息的方法,其特征在于,包括:
内核进程通过用于用户进程与所述内核进程通信的netlink文件描述符接收所述用户进程发送的获取网络传输信息的请求信息;
所述内核进程将所述网络传输信息通过所述netlink文件描述符提供给所述用户进程;
所述方法还包括:
所述内核进程将所述网络传输信息的更新通知所述netlink文件描述符被注册到的监控线程,由所述监控线程将所述网络传输信息的更新通知给所述用户进程;
所述内核进程将更新后的网络传输信息通过所述netlink文件描述符提供给所述用户进程;
其中,如果所述用户进程发现一个IP不在所述用户进程的arp表中,则调用所述内核进程的接口,由所述内核进程发送ICMP请求,其中,由所述内核进程发送arp请求获取所述IP的MAC地址,所述IP的MAC地址用于填充到所述ICMP请求中,并由所述内核进程将所述IP的MAC地址更新至所述内核进程的arp表中,所述内核进程将所述内核进程的arp表的更新数据发送给在所述监控线程上注册的所述netlink文件描述符,唤醒所述监控线程读取所述更新数据,所述用户进程将所述更新数据更新到所述用户进程的arp表。
18.根据权利要求17所述的提供网络传输信息的方法,其特征在于,还包括:
根据用户进程调用的系统函数,获取更新的网络传输信息;
将所述更新的网络传输信息通过所述netlink文件描述符提供给所述用户进程。
CN201811016911.8A 2018-08-31 2018-08-31 一种获取网络传输信息的方法、装置及系统 Active CN110875910B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811016911.8A CN110875910B (zh) 2018-08-31 2018-08-31 一种获取网络传输信息的方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811016911.8A CN110875910B (zh) 2018-08-31 2018-08-31 一种获取网络传输信息的方法、装置及系统

Publications (2)

Publication Number Publication Date
CN110875910A CN110875910A (zh) 2020-03-10
CN110875910B true CN110875910B (zh) 2022-10-28

Family

ID=69716412

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811016911.8A Active CN110875910B (zh) 2018-08-31 2018-08-31 一种获取网络传输信息的方法、装置及系统

Country Status (1)

Country Link
CN (1) CN110875910B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114661492B (zh) * 2022-03-03 2023-04-07 深圳融安网络科技有限公司 进程通信方法、系统、终端设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1389377A2 (en) * 2001-04-11 2004-02-18 Firebridge Systems PTY Ltd Network security system
CN103019653A (zh) * 2012-11-27 2013-04-03 康佳集团股份有限公司 一种基于linux系统的内核消息分发方法
EP2985705A2 (en) * 2014-08-13 2016-02-17 Xiaomi Inc. Webpage access method and apparatus, and router
CN105939365A (zh) * 2015-06-29 2016-09-14 杭州迪普科技有限公司 主控板用户态从业务板内核态获取数据的方法及装置
CN107608852A (zh) * 2017-09-01 2018-01-19 清华大学 一种进程监控方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1389377A2 (en) * 2001-04-11 2004-02-18 Firebridge Systems PTY Ltd Network security system
CN103019653A (zh) * 2012-11-27 2013-04-03 康佳集团股份有限公司 一种基于linux系统的内核消息分发方法
EP2985705A2 (en) * 2014-08-13 2016-02-17 Xiaomi Inc. Webpage access method and apparatus, and router
CN105939365A (zh) * 2015-06-29 2016-09-14 杭州迪普科技有限公司 主控板用户态从业务板内核态获取数据的方法及装置
CN107608852A (zh) * 2017-09-01 2018-01-19 清华大学 一种进程监控方法及装置

Also Published As

Publication number Publication date
CN110875910A (zh) 2020-03-10

Similar Documents

Publication Publication Date Title
CN102339234B (zh) 一种协议栈运行装置和方法
CN107438060B (zh) 一种网络设备中的远程过程调用方法及网络设备
KR102341809B1 (ko) 트랜잭셔널 미들웨어 머신 환경에서 도메인 간 메시징을 위해 바이패스-도메인 모델 및 프록시 모델을 지원하고 서비스 정보를 갱신하는 시스템 및 방법
WO2020001442A1 (zh) 一种数据处理方法及相关设备
US10127091B1 (en) Intercepting socket metadata
US11212176B2 (en) Consistent processing of transport node network data in a physical sharding architecture
WO2017000593A1 (zh) 报文处理方法及装置
CN105993161B (zh) 用于解析地址的元件、方法、系统和计算机可读存储设备
US20240069977A1 (en) Data transmission method and data transmission server
CN113891396B (zh) 数据包的处理方法、装置、计算机设备和存储介质
US9621633B2 (en) Flow director-based low latency networking
CN115396528A (zh) 基于协议族的quic数据传输方法及装置
US11929926B2 (en) Traffic service threads for large pools of network addresses
US11809925B2 (en) Data processing method and apparatus
US11392402B1 (en) Coordinated migration of network-accessible services while maintaining service availability in prior environment
US20030149773A1 (en) Network abstraction of input/output devices
CN110875910B (zh) 一种获取网络传输信息的方法、装置及系统
US20240086236A1 (en) Computing node management method and system
US11307912B1 (en) Forward message compatibility safety in producer-consumer systems
CN114205848A (zh) 虚拟wifi上网方法、装置、计算机设备和存储介质
CN113746802B (zh) 网络功能虚拟化中的方法以及本地状态和远程状态全存储的vnf装置
US20240275635A1 (en) Multi-stage packet processing pipeline for a single tunnel interface
CN114928589B (zh) 数据传输方法、数据传输装置、计算机可读介质及设备
WO2024114645A1 (zh) 一种虚拟化网络功能vnf的实例化方法及装置
CN108519912B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40025542

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230606

Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province

Patentee after: Aliyun Computing Co.,Ltd.

Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK

Patentee before: ALIBABA GROUP HOLDING Ltd.