CN108712459B - 协议报文跨层通信方法、装置及电子设备 - Google Patents
协议报文跨层通信方法、装置及电子设备 Download PDFInfo
- Publication number
- CN108712459B CN108712459B CN201810292638.5A CN201810292638A CN108712459B CN 108712459 B CN108712459 B CN 108712459B CN 201810292638 A CN201810292638 A CN 201810292638A CN 108712459 B CN108712459 B CN 108712459B
- Authority
- CN
- China
- Prior art keywords
- protocol
- socket
- message
- protocol message
- packet
- 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
Images
Classifications
-
- 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/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
-
- 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 Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种协议报文跨层通信方法、装置及电子设备,涉及通信技术领域,方法包括:接收由交换芯片上送CPU的协议报文;根据协议报文中的扩展信息,判断协议报文的协议类型,并根据协议类型,将协议报文存储于对应的预先创建的套接字的缓冲区中;预先创建的套接字中包括:套接字释放回调函数、收包处理回调函数;调用内核提供的复制函数,将从缓冲区中取出的协议报文转换至用户态空间;调用收包处理回调函数,读取转换至用户态空间的协议报文。本发明能够对接收到的协议报文进行分类,使其不会进入无必要的内核处理分支中,从而减少系统资源的浪费,当某种协议报文有突发流量时,不会影响到其他协议报文的跨层通信,提高了网络的安全可靠性。
Description
技术领域
本发明涉及跨层通信技术领域,尤其是涉及一种协议报文跨层通信方法、装置及电子设备。
背景技术
目前的交换机系统为了使得系统更加稳定、高效、安全。因此将其分为数据平面、控制平面、管理平面。其中控制平面用于控制和管理所有的网络协议的运行,提供数据平面数据处理转发所必须的各种网络信息和转发查询表项。这种将数据平面和控制平面分开的方式,其中的协议报文都需要从交换芯片通过PCI-E总线送到Linux内核中,然后再由Linux内核上送至Linux用户空间的协议模块。Linux用户空间的协议模块发送协议报文的时候又需要先送入Linux内核中,然后通过PCI-E总线接口传输至交换芯片进行发送。这种跨层(内核和用户空间)处理在传统技术一般有两种:
第一种是使用AF_PACKET二层抓包技术。先在内核中创建与交换机接口对应的虚拟接口,然后将交换机上送CPU的协议报文放入对应虚拟接口收包队列中,用户态协议通过二层抓包,直接将报文收走。协议处理程序发送报文的时候也通过二层发送,将报文发送至相应的内核虚拟接口,内核中注册钩子函数取出该协议报文进行发送。
第二种是使用内核和用户态通信的Netlink套接字。所有的内核和用户空间的协议报文收发都经过Netlink套接字来传输。
在传统的跨层方案中,第一种使用AF_PACKET方式,当报文被协议模块收取的时候需要自身去过滤其它报文,并且报文只是被拷贝了一份,然后被协议模块取走,但是报文还是会进入到内核的其他处理分支中处理。第二种则需要报文重新封装Netlink头,然后经内核协议栈送入用户态空间。
不管使用哪一种,都会造成计算资源的浪费,并且当有协议报文攻击的时候,某一种协议报文的大量涌入,会导致其他协议报文也会出现丢包的情况。
发明内容
有鉴于此,本发明的目的在于提供一种协议报文跨层通信方法、装置及电子设备,能够对接收到的协议报文进行分类,使其不会进入无必要的内核处理分支中,从而减少系统资源的浪费,当某种协议报文有突发流量时,不会影响到其他协议报文的跨层通信,提高了网络的安全可靠性。
第一方面,本发明实施例提供了一种协议报文跨层通信方法,方法包括:
接收由交换芯片上送CPU的协议报文;协议报文包括:报文数据信息及扩展信息;
根据扩展信息,判断协议报文的协议类型,并根据协议类型,将协议报文存储于对应的预先创建的套接字的缓冲区中;预先创建的套接字中包括:套接字释放回调函数、收包处理回调函数;
调用内核提供的复制函数,将从缓冲区中取出的协议报文转换至用户态空间;
调用收包处理回调函数,读取转换至用户态空间的协议报文。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,在接收由交换芯片上送CPU的协议报文之前,还包括:
判断是否有允许使用的原始套接字;
如果是,则判断是否创建原始套接字;
如果是,分配原始套接字的存储空间,并对原始套接字进行初始化;初始化包括:基本数据初始化、协议族号初始化、套接字释放回调函数初始化及收包处理回调函数初始化;
将初始化后的套接字加入协议族套接字链表中。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,根据扩展信息,判断协议报文的协议类型,具体包括:
从扩展信息中提取协议报文的二层头部数据;
根据二层头部数据的目的MAC和type字段,判断协议报文的协议类型。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,根据协议类型,将协议报文存储于预先创建的套接字的缓冲区中,具体包括:
根据协议类型,遍历协议族套接字链表,找到对应的目标套接字;
将协议报文的报文数据信息存储于目标套接字的第一缓冲区;第一缓冲区为报文数据部分;
将协议报文的扩展信息存储于目标套接字的第二缓冲区;第二缓冲区为地址选项部分。
结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,调用内核提供的复制函数,将从缓冲区中取出的协议报文转换至用户态空间,具体包括:
调用内核提供的复制函数,将协议报文的扩展信息拷贝至用户态空间;
判断协议报文的报文数据信息中,报文长度是否大于用户态空间的接收长度;
如果是,则将报文数据信息进行截断处理,并将截断处理后的报文数据信息拷贝至用户态空间;
如果否,则将报文数据信息拷贝至用户态空间。
结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,在将截断处理后的报文数据信息拷贝至用户态空间之后,或者在将报文数据信息拷贝至用户态空间之后,还包括:
为拷贝至用户态空间后的报文数据信息置上接收时间戳。
结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,调用收包处理回调函数,读取转换至用户态空间的协议报文,具体包括:
通过内核提供的套接字回调函数,调用收包处理回调函数;套接字回调函数的参数包括:协议族号、原始套接字;
利用收包回调函数中的select函数,监听事件触发,读取转换至用户态空间的协议报文。
第二方面,本发明实施例提供一种协议报文跨层通信装置,装置包括:
收包模块,用于接收由交换芯片所发送的协议报文;协议报文包括:报文数据信息及扩展信息;
协议分类模块,用于根据扩展信息,判断协议报文的协议类型,并根据协议类型,将协议报文存储于对应的预先创建的套接字的缓冲区中;预先创建的套接字中包括:套接字释放回调函数、收包处理回调函数;
协议族处理模块,用于调用套接字释放回调函数,将从缓冲区中取出的协议报文转换至用户态空间;
协议处理模块,用于调用收包处理回调函数,读取转换至用户态空间的协议报文。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器,存储器上存储有可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述第一方面所述的方法的步骤。
第四方面,本发明实施例提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行第一方面所述的方法。
本发明实施例带来了以下有益效果:
本发明实施例提供的协议报文跨层通信方法包括:接收由交换芯片上送CPU的协议报文;协议报文包括:报文数据信息及扩展信息;根据扩展信息,判断协议报文的协议类型,并根据协议类型,将协议报文存储于对应的预先创建的套接字的缓冲区中;预先创建的套接字中包括:套接字释放回调函数、收包处理回调函数;调用内核提供的复制函数,将从缓冲区中取出的协议报文转换至用户态空间;调用收包处理回调函数,读取转换至用户态空间的协议报文。本发明能够对接收到的协议报文进行分类,使其不会进入无必要的内核处理分支中,从而减少系统资源的浪费,当某种协议报文有突发流量时,不会影响到其他协议报文的跨层通信,提高了网络的安全可靠性。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种协议报文跨层通信方法的流程图;
图2为本发明实施例一提供的另一种协议报文跨层通信方法的流程图;
图3为本发明实施例一提供的另一种协议报文跨层通信方法的流程图;
图4为本发明实施例一提供的另一种协议报文跨层通信方法的流程图;
图5为本发明实施例一提供的另一种协议报文跨层通信方法的流程图;
图6为本发明实施例一提供的另一种协议报文跨层通信方法的流程图;
图7为本发明实施例一提供的另一种协议报文跨层通信方法的流程图;
图8为本发明实施例二提供的一种协议报文跨层通信装置的示意图;
图9为本发明实施例三提供的一种电子设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有的跨层通信方法,通常会造成计算资源的浪费,并且当有协议报文攻击的时候,某一种协议报文的大量涌入,会导致其他协议报文也会出现丢包的情况。
基于此,本发明实施例提供一种协议报文跨层通信方法、装置及电子设备,能够对接收到的协议报文进行分类,使其不会进入无必要的内核处理分支中,从而减少系统资源的浪费,当某种协议报文有突发流量时,不会影响到其他协议报文的跨层通信,提高了网络的安全可靠性。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种协议报文跨层通信方法进行详细介绍。
实施例一:
本发明实施例提供了一种协议报文跨层通信方法,参见图1所示,该方法包括:
S101:接收由交换芯片上送CPU的协议报文;协议报文包括:报文数据信息及扩展信息。
具体实现的时候,首先由内核中的收包模块接收由交换芯片通过PCIE上送CPU的协议报文。该协议报文包括数据信息和扩展信息两部分,其中扩展信息包括:二层头部、接口编号、VLAN ID等等。
S102:根据扩展信息,判断协议报文的协议类型,并根据协议类型,将协议报文存储于对应的预先创建的套接字的缓冲区中。
在接收由交换芯片上送CPU的协议报文之前,需要在内核中定义扩展的协议编号,即在内核中预先创建套接字,重新注册协议族,其中主要包括套接字释放回调函数、收包处理回调函数的注册,具体过程包括以下步骤,参见图2所示:
S201:判断是否有允许使用的原始套接字。
具体的,判断用户是否允许使用原始套接字,即原始套接字RAW SOCKET,用于安全控制。
如果是,则执行步骤S202:判断是否创建原始套接字。
如果否,则返回出错。
在判断是否创建原始套接字后,如果同意创建,则执行步骤S203:分配原始套接字的存储空间,并对原始套接字进行初始化;初始化包括:基本数据初始化、协议族号初始化、套接字释放回调函数初始化及收包处理回调函数初始化。
具体的,通过内核提供的函数void sock_init_data(struct socket*sock,struct sock*sk),初始化struct sock整个结构体,包含很多具体的基础数据,此外,还进行一系列协议族号、套接字释放回调函数及收包处理回调函数的初始化。在完成初始化过程之后,执行步骤S204:将初始化后的套接字加入协议族套接字链表中。
原始套接字,允许对较低层次的协议直接访问,比如IP、ICMP协议,它常用于检验新的协议实现,或者访问现有服务中配置的新设备,因为原始套接字可以自如地控制Windows下的多种协议,能够对网络底层的传输机制进行控制,所以可以应用原始套接字来操纵网络层和传输层应用。比如,可以通过RAW SOCKET来接收发向主机的ICMP、IGMP协议包,或者接收TCP/IP栈不能够处理的IP包,也可以用来发送一些自定包头或自定协议的IP包。
网络监听技术很大程度上依赖于RAW SOCKET,原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据包套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字。
上述步骤S102中:根据扩展信息,判断协议报文的协议类型,具体包括以下步骤,如图3所示:
S301:从扩展信息中提取协议报文的二层头部数据。
S302:根据二层头部数据的目的MAC和type字段,判断协议报文的协议类型。
上述步骤S102中:根据协议类型,将协议报文存储于预先创建的套接字的缓冲区中,具体包括以下步骤,参见图4所示:
S401:根据协议类型,遍历协议族套接字链表,找到对应的目标套接字。
S402:将协议报文的报文数据信息存储于目标套接字的第一缓冲区;第一缓冲区为报文数据部分。
S403:将协议报文的扩展信息存储于目标套接字的第二缓冲区;第二缓冲区为地址选项部分。
具体的,协议分类模块在收到收包模块送来的协议报文后,从该协议报文的扩展信息中提取出二层头部数据,进一步根据二层头部数据的目的MAC和type字段判断协议类型,并为该协议报文分配与其协议类型相应的原始套接字的缓冲区,把协议报文除去二层头部的数据,即报文数据信息放入缓冲区并且将协议计算所需的一些扩展信息(如二层头部、接口编号、VLAN ID…)放入接收套接字地址选项部分。根据不同的协议类型,遍历对应的协议族套接字链表,找到对应的目标套接字,将上述报文数据信息和扩展信息分别放入对应的套接字的第一缓存区和第二缓存区,然后将套接字缓存区放入所有的套接字接收队列中。
上述对接收到的协议报文进行分类及分类存储的过程,使得每一种协议报文的跨层通信都有独立的协议族支撑,都有不同的收发队列,避免了报文被攻击时其他协议报文跨层通信时出现丢包情况;解决了现有跨层技术中,当某种协议报文有突发流量时,影响到其他协议报文的跨层通信的问题,提高了网络的安全可靠性。另外,上述过程还解决了现有跨层通信中,报文进入无必要的内核处理分支中,造成系统资源不必要的浪费的问题。
S103:调用内核提供的复制函数,将从缓冲区中取出的协议报文转换至用户态空间。
具体的,用非阻塞的方式从收包队列中取出S102中放入队列中的协议报文,直接调用内核提供的复制函数skb_copy_datagram_iovec将从队列中取出的报文转换至用户态空间。具体转换过程包括以下步骤,参见图5所示:
S501:调用内核提供的复制函数,将协议报文的扩展信息拷贝至用户态空间。
S502:判断协议报文的报文数据信息中,报文长度是否大于用户态空间的接收长度。
如果是,则执行步骤S503:将报文数据信息进行截断处理,并将截断处理后的报文数据信息拷贝至用户态空间。
如果否,则执行步骤S504:将报文数据信息拷贝至用户态空间。
具体的,使用skb_recv_datagram非阻塞的方式从套接字的接收队列中取出上述协议报文,如果失败返回-EINVAL,将上述协议报文中的扩展信息,包括L2头部信息以及入口信息等扩展信息拷贝至用户空间;然后判断报文数据信息中的报文长度是否大于用户态接收地址长度,如果是,则需要对其进行截断处理,并置上MSG_TRUNC标志。然后将报文使用skb_copy_datagram_iovec从内核空间转换至用户空间。
在步骤S503:将截断处理后的报文数据信息拷贝至用户态空间之后,或者在步骤S504:将报文数据信息拷贝至用户态空间之后,还包括以下步骤,参见图6所示:
S601:为拷贝至用户态空间后的报文数据信息置上接收时间戳。
具体的,通过sock_recv_timestamp为上述报文置上接收时间戳。
进一步,通过用户态协议处理模块执行下述步骤:
S104:调用收包处理回调函数,读取转换至用户态空间的协议报文。
具体的读取协议报文的过程包括以下步骤,参见图7所示:
S701:通过内核提供的套接字回调函数,调用收包处理回调函数;套接字回调函数的参数包括:协议族号、原始套接字。
S702:利用收包回调函数中的select函数,监听事件触发,读取转换至用户态空间的协议报文。
用户态协议处理模块使用系统调用int socket(int domain,int type,intprotocol)创建,其中,domain参数为内核注册的协议族号,type使用SOCK_RAW,protocol为0,该函数最终会调用至内核中注册的收包处理回调函数,创建好对应协议族的套接字以后,使用select监听读取,监听事件触发,则读取转换至用户态空间的协议报文。其中数据部分为除去二层头部的数据部分。接收地址选项部分为内核接收回调部分注册的扩展信息部分。
本发明实施例,充分利用套接字通信原理,用户态的协议处理模块只需要简单的套接字创建,使用select监听并收发数据;并将内核中的收包处理回调函数重新实现,报文不再进行其他额外的不必要的处理,减少了内核的负担。
本发明实施例提供的协议报文跨层通信方法包括:接收由交换芯片上送CPU的协议报文;协议报文包括:报文数据信息及扩展信息;根据扩展信息,判断协议报文的协议类型,并根据协议类型,将协议报文存储于对应的预先创建的套接字的缓冲区中;预先创建的套接字中包括:套接字释放回调函数、收包处理回调函数;调用内核提供的复制函数,将从缓冲区中取出的协议报文转换至用户态空间;调用收包处理回调函数,读取转换至用户态空间的协议报文。本发明能够对接收到的协议报文进行分类,使其不会进入无必要的内核处理分支中,从而减少系统资源的浪费,当某种协议报文有突发流量时,不会影响到其他协议报文的跨层通信,提高了网络的安全可靠性。
实施例二:
本发明实施例提供一种协议报文跨层通信装置,参见图8所示,该装置包括:收包模块81、协议分类模块82、协议族处理模块83、协议处理模块84。
其中,收包模块81、协议分类模块82、协议族处理模块83均为内核态中的模块,协议处理模块84为用户态中的模块。收包模块81,用于接收由交换芯片所发送的协议报文;协议报文包括:报文数据信息及扩展信息;协议分类模块82,用于根据扩展信息,判断协议报文的协议类型,并根据协议类型,将协议报文存储于对应的预先创建的套接字的缓冲区中;预先创建的套接字中包括:套接字释放回调函数、收包处理回调函数;协议族处理模块83,用于调用套接字释放回调函数,将从缓冲区中取出的协议报文转换至用户态空间;协议处理模块84,用于调用收包处理回调函数,读取转换至用户态空间的协议报文。
本发明实施例所提供的协议报文跨层通信装置中,各个模块与前述协议报文跨层通信方法具有相同的技术特征,因此,同样可以实现上述功能。本装置中各个模块的具体工作过程参见上述方法实施例,在此不再赘述。
实施例三:
本发明实施例提供一种电子设备,参见图9所示,该电子设备包括:处理器90,存储器91,总线92和通信接口93,所述处理器90、通信接口93和存储器91通过总线92连接;处理器90用于执行存储器91中存储的可执行模块,例如计算机程序。处理器执行计算机程序时实现如方法实施例所述的方法的步骤。
其中,存储器91可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口93(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线92可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器91用于存储程序,所述处理器90在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器90中,或者由处理器90实现。
处理器90可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器90中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器90可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器91,处理器90读取存储器91中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的协议报文跨层通信方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置及电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
附图中的流程图和框图显示了根据本发明的多个实施例方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种协议报文跨层通信方法,其特征在于,所述方法包括:
接收由交换芯片上送CPU的协议报文;所述协议报文包括:报文数据信息及扩展信息;
根据所述扩展信息,判断所述协议报文的协议类型,并根据所述协议类型,将所述协议报文存储于预先创建的与所述协议类型相应的套接字的缓冲区中;所述预先创建的套接字中包括:套接字释放回调函数、收包处理回调函数;
调用内核提供的复制函数,将从所述缓冲区中取出的协议报文转换至用户态空间;
调用所述收包处理回调函数,读取所述转换至用户态空间的协议报文;
其中,在所述接收由交换芯片上送CPU的协议报文之前,还包括:
分配原始套接字的存储空间,并对原始套接字进行初始化;
将初始化后的套接字加入协议族套接字链表中,以基于协议族套接字链表确定与所述协议类型相应的套接字。
2.根据权利要求1所述的方法,其特征在于,在所述接收由交换芯片上送CPU的协议报文之前,还包括:
判断是否有允许使用的原始套接字;
如果是,则判断是否创建原始套接字;
如果是,分配所述原始套接字的存储空间,并对所述原始套接字进行初始化;所述初始化包括:基本数据初始化、协议族号初始化、套接字释放回调函数初始化及收包处理回调函数初始化;
将初始化后的套接字加入协议族套接字链表中。
3.根据权利要求1所述的方法,其特征在于,根据所述扩展信息,判断所述协议报文的协议类型,具体包括:
从所述扩展信息中提取所述协议报文的二层头部数据;
根据所述二层头部数据的目的MAC和type字段,判断所述协议报文的协议类型。
4.根据权利要求2所述的方法,其特征在于,所述根据所述协议类型,将所述协议报文存储于预先创建的套接字的缓冲区中,具体包括:
根据所述协议类型,遍历所述协议族套接字链表,找到对应的目标套接字;
将所述协议报文的报文数据信息存储于所述目标套接字的第一缓冲区;所述第一缓冲区为报文数据部分;
将所述协议报文的扩展信息存储于所述目标套接字的第二缓冲区;所述第二缓冲区为地址选项部分。
5.根据权利要求1所述的方法,其特征在于,所述调用内核提供的复制函数,将从所述缓冲区中取出的协议报文转换至用户态空间,具体包括:
调用内核提供的复制函数,将所述协议报文的扩展信息拷贝至用户态空间;
判断所述协议报文的报文数据信息中,报文长度是否大于所述用户态空间的接收长度;
如果是,则将所述报文数据信息进行截断处理,并将所述截断处理后的报文数据信息拷贝至所述用户态空间;
如果否,则将所述报文数据信息拷贝至所述用户态空间。
6.根据权利要求5所述的方法,其特征在于,在所述将所述截断处理后的报文数据信息拷贝至所述用户态空间之后,或者在所述将所述报文数据信息拷贝至所述用户态空间之后,还包括:
为所述拷贝至所述用户态空间后的报文数据信息置上接收时间戳。
7.根据权利要求2所述的方法,其特征在于,所述调用所述收包处理回调函数,读取所述转换至用户态空间的协议报文,具体包括:
通过内核提供的套接字回调函数,调用所述收包处理回调函数;所述套接字回调函数的参数包括:所述协议族号、所述原始套接字;
利用所述收包回调函数中的select函数,监听事件触发,读取所述转换至用户态空间的协议报文。
8.一种协议报文跨层通信装置,其特征在于,所述装置包括:
收包模块,用于接收由交换芯片所发送的协议报文;所述协议报文包括:报文数据信息及扩展信息;
协议分类模块,用于根据所述扩展信息,判断所述协议报文的协议类型,并根据所述协议类型,将所述协议报文存储于预先创建的与所述协议类型相应的套接字的缓冲区中;所述预先创建的套接字中包括:套接字释放回调函数、收包处理回调函数;
协议族处理模块,用于调用内核提供的复制函数,将从所述缓冲区中取出的协议报文转换至用户态空间;
协议处理模块,用于调用所述收包处理回调函数,读取所述转换至用户态空间的协议报文;
其中,收包模块还分配原始套接字的存储空间,并对原始套接字进行初始化,将初始化后的套接字加入协议族套接字链表中,协议分类模块基于协议族套接字链表确定与所述协议类型相应的套接字。
9.一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至7任一项所述的方法的步骤。
10.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810292638.5A CN108712459B (zh) | 2018-03-30 | 2018-03-30 | 协议报文跨层通信方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810292638.5A CN108712459B (zh) | 2018-03-30 | 2018-03-30 | 协议报文跨层通信方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108712459A CN108712459A (zh) | 2018-10-26 |
CN108712459B true CN108712459B (zh) | 2021-06-15 |
Family
ID=63867141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810292638.5A Active CN108712459B (zh) | 2018-03-30 | 2018-03-30 | 协议报文跨层通信方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108712459B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111182487B (zh) * | 2018-11-09 | 2022-06-03 | 杭州海康威视数字技术股份有限公司 | 一种数据发送方法、数据接收方法及装置 |
CN109274774A (zh) * | 2018-11-16 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种数据存储方法、装置和计算机可读存储介质 |
CN110061926A (zh) * | 2019-04-26 | 2019-07-26 | 武汉思创易控科技有限公司 | 一种多路复用的ping方法、存储介质、终端和服务器 |
CN111555950B (zh) * | 2020-03-26 | 2022-05-13 | 厦门网宿有限公司 | 报文处理方法、装置、服务器和存储介质 |
CN113536305B (zh) * | 2020-04-17 | 2022-09-09 | 武汉瓯越网视有限公司 | 检测采集行为的方法及装置 |
CN111586040B (zh) * | 2020-05-06 | 2021-02-09 | 北京中科海讯数字科技股份有限公司 | 高性能网络数据接收方法及其系统 |
CN111953568B (zh) * | 2020-08-19 | 2022-04-08 | 杭州迪普科技股份有限公司 | 丢包信息管理方法与装置 |
CN114281431A (zh) * | 2020-09-28 | 2022-04-05 | 阿里巴巴集团控股有限公司 | 函数调用方法、装置、介质及嵌入式设备和操作系统 |
CN112261094B (zh) * | 2020-10-10 | 2023-07-21 | 厦门网宿有限公司 | 一种报文处理方法及代理服务器 |
CN112769688B (zh) * | 2020-12-18 | 2022-07-29 | 南方电网科学研究院有限责任公司 | 协议栈适配的方法、装置、电子设备及存储介质 |
CN113382014B (zh) * | 2021-06-23 | 2022-12-06 | 中移(杭州)信息技术有限公司 | 协商处理方法、装置、终端设备以及存储介质 |
CN114928597B (zh) * | 2022-05-20 | 2023-07-25 | 中国联合网络通信集团有限公司 | 数据传输方法、装置及设备 |
CN114968893B (zh) * | 2022-07-27 | 2022-09-30 | 井芯微电子技术(天津)有限公司 | 基于时间戳的PCIe报文队列调度方法、系统及设备 |
CN116016702B (zh) * | 2022-12-26 | 2024-09-27 | 浪潮云信息技术股份公司 | 一种应用可观测数据采集处理方法、装置及介质 |
CN115857420B (zh) * | 2023-03-03 | 2023-05-12 | 深圳市综科智控科技开发有限公司 | 一种工控设备之间io互控的方法 |
CN117395329B (zh) * | 2023-12-13 | 2024-02-06 | 井芯微电子技术(天津)有限公司 | 收发以太二层协议报文的方法、装置及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1700664A (zh) * | 2005-06-10 | 2005-11-23 | 重庆邮电学院 | 基于Linux内核的高速网络流量测量器及流量测量方法 |
US8539089B2 (en) * | 2003-04-23 | 2013-09-17 | Oracle America, Inc. | System and method for vertical perimeter protection |
US9002970B2 (en) * | 2012-07-12 | 2015-04-07 | International Business Machines Corporation | Remote direct memory access socket aggregation |
CN104580124A (zh) * | 2013-10-29 | 2015-04-29 | 华为技术有限公司 | 协议栈选择方法、装置及设备 |
CN107172009A (zh) * | 2017-04-06 | 2017-09-15 | 烽火通信科技股份有限公司 | 通过socket上送VLAN信息至应用模块的方法 |
-
2018
- 2018-03-30 CN CN201810292638.5A patent/CN108712459B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8539089B2 (en) * | 2003-04-23 | 2013-09-17 | Oracle America, Inc. | System and method for vertical perimeter protection |
CN1700664A (zh) * | 2005-06-10 | 2005-11-23 | 重庆邮电学院 | 基于Linux内核的高速网络流量测量器及流量测量方法 |
US9002970B2 (en) * | 2012-07-12 | 2015-04-07 | International Business Machines Corporation | Remote direct memory access socket aggregation |
CN104580124A (zh) * | 2013-10-29 | 2015-04-29 | 华为技术有限公司 | 协议栈选择方法、装置及设备 |
CN107172009A (zh) * | 2017-04-06 | 2017-09-15 | 烽火通信科技股份有限公司 | 通过socket上送VLAN信息至应用模块的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108712459A (zh) | 2018-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108712459B (zh) | 协议报文跨层通信方法、装置及电子设备 | |
US8625431B2 (en) | Notifying network applications of receive overflow conditions | |
US9152593B2 (en) | Universal PCI express port | |
US9019978B2 (en) | Port mirroring at a network interface device | |
US10313380B2 (en) | System and method for centralized virtual interface card driver logging in a network environment | |
WO2019033857A1 (zh) | 报文控制方法及网络装置 | |
EP3275140B1 (en) | Technique for achieving low latency in data center network environments | |
CN103929334A (zh) | 网络异常通知方法和装置 | |
US7987307B2 (en) | Interrupt coalescing control scheme | |
CN108650295A (zh) | 协议报文跨层通信方法装置及电子设备 | |
JP5968841B2 (ja) | ネットワーク装置及びプロセッサの監視方法 | |
WO2021128927A1 (zh) | 报文的处理方法及装置、存储介质和电子装置 | |
US8509228B2 (en) | Method and apparatus for prioritizing source MAC address miss processing | |
JP5957318B2 (ja) | ネットワークシステム、情報中継装置、及びパケット配信方法 | |
WO2021109851A1 (zh) | 一种网络通信方法、装置、设备和存储介质 | |
US20080002586A1 (en) | End-point based tamper resistant congestion management | |
CN111970497A (zh) | 视频流处理方法、装置、sdn控制器及存储介质 | |
US10887282B1 (en) | Determining synchronization of filter rules (e.g., on iptable filter tables on Linux kernal) across firewall filter application restarts | |
CN108595270B (zh) | 一种内存资源的回收方法及装置 | |
TWI505675B (zh) | 網路交換器與資料更新方法 | |
CN110336759B (zh) | 基于rdma的协议报文转发方法及装置 | |
CN104811391B (zh) | 数据包的处理方法、装置及服务器 | |
CN113556345A (zh) | 一种报文处理方法、装置、设备及介质 | |
WO2018131550A1 (ja) | コネクション管理ユニット、およびコネクション管理方法 | |
US9160688B2 (en) | System and method for selective direct memory access |
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 |