CN108650295A - 协议报文跨层通信方法装置及电子设备 - Google Patents
协议报文跨层通信方法装置及电子设备 Download PDFInfo
- Publication number
- CN108650295A CN108650295A CN201810292682.6A CN201810292682A CN108650295A CN 108650295 A CN108650295 A CN 108650295A CN 201810292682 A CN201810292682 A CN 201810292682A CN 108650295 A CN108650295 A CN 108650295A
- Authority
- CN
- China
- Prior art keywords
- protocol massages
- kernel
- state space
- protocol
- socket
- 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
Links
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
Abstract
本发明提供一种协议报文跨层通信方法、装置及电子设备,涉及通信技术领域,方法包括:调用内核提供的发送函数,填充所需发送的协议报文的报文数据信息和扩展信息;调用内核中预先创建的套接字中的发包处理回调函数,将协议报文由用户态空间转换至内核态空间;对转换至内核态空间的协议报文进行封包处理,并根据扩展信息将封包处理后的协议报文发送至指定出接口。本发明实施例所提供的协议报文跨层通信方法,能够对待发送的协议报文进行相应的处理,使其进入相应的内核处理分支中,减少系统资源的浪费,当某种协议报文有突发流量时,不会影响到其他协议报文的跨层通信,提高了网络的安全可靠性。
Description
技术领域
本发明涉及跨层通信技术领域,尤其是涉及一种协议报文跨层通信方法、装置及电子设备。
背景技术
目前的交换机系统为了使得系统更加稳定、高效、安全。因此将其分为数据平面、控制平面、管理平面。其中控制平面用于控制和管理所有的网络协议的运行,提供数据平面数据处理转发所必须的各种网络信息和转发查询表项。这种将数据平面和控制平面分开的方式,其中的协议报文都需要从交换芯片通过PCI-E总线送到Linux内核中,然后再由Linux内核上送至Linux用户空间的协议模块。Linux用户空间的协议模块发送协议报文的时候又需要先送入Linux内核中,然后通过PCI-E总线接口传输至交换芯片进行发送。这种跨层(内核和用户空间)处理在传统技术一般有两种:
第一种是使用AF_PACKET二层抓包技术。先在内核中创建与交换机接口对应的虚拟接口,然后将交换机上送CPU的协议报文放入对应虚拟接口收包队列中,用户态协议通过二层抓包,直接将报文收走。协议处理程序发送报文的时候也通过二层发送,将报文发送至相应的内核虚拟接口,内核中注册钩子函数取出该协议报文进行发送。
第二种是使用内核和用户态通信的Netlink套接字。所有的内核和用户空间的协议报文收发都经过Netlink套接字来传输。
在传统的跨层方案中,第一种使用AF_PACKET方式,当报文被协议模块收取的时候需要自身去过滤其它报文,并且报文只是被拷贝了一份,然后被协议模块取走,但是报文还是会进入到内核的其他处理分支中处理。第二种则需要报文重新封装Netlink头,然后经内核协议栈送入用户态空间。
不管使用哪一种,都会造成计算资源的浪费,并且当有协议报文攻击的时候,某一种协议报文的大量涌入,会导致其他协议报文也会出现丢包的情况。
发明内容
有鉴于此,本发明的目的在于提供一种协议报文跨层通信方法、装置及电子设备,能够对待发送的协议报文进行相应的处理,使其进入相应的内核处理分支中,减少系统资源的浪费,当某种协议报文有突发流量时,不会影响到其他协议报文的跨层通信,提高了网络的安全可靠性。
第一方面,本发明实施例提供了一种协议报文跨层通信方法,方法包括:
调用内核提供的发送函数,填充所需发送的协议报文的报文数据信息和扩展信息;
调用内核中预先创建的套接字中的发包处理回调函数,将协议报文由用户态空间转换至内核态空间;
对转换至内核态空间的协议报文进行封包处理,并根据扩展信息将封包处理后的协议报文发送至指定出接口。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,在调用内核提供的发送函数之前,还包括:
判断是否有允许使用的原始套接字:
如果是,则判断是否创建原始套接字:
如果是,分配原始套接字的存储空间,并对原始套接字进行初始化;初始化包括:基本数据初始化、协议族号初始化、套接字释放回调函数初始化及发包处理回调函数初始化;
将初始化后的套接字加入协议族套接字链表中。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,调用内核中预先创建的套接字中的发包处理回调函数,将协议报文由用户态空间转换至内核态空间,具体包括:
调用发包处理回调函数中的拷贝函数,将协议报文中的报文数据信息从用户态空间拷贝至内核态空间的报文数据缓冲区;
将协议报文中的扩展信息拷贝至内核态空间的地址选项缓冲区。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,对转换至内核态空间的协议报文进行封包处理,具体包括:
将转换至内核态空间的协议报文的报文数据信息重新组装成标准以太帧。
结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,根据扩展信息将封包处理后的协议报文发送至指定出接口,具体包括:
从扩展信息中提取发送协议报文所需的接口信息;
判断接口信息是否正确;
如果是,则将接口信息作为指定出接口,并将封包处理后的协议报文发送至指定出接口。
第二方面,本发明实施例提供一种协议报文跨层通信装置,装置包括:
协议处理模块,用于调用内核提供的发送函数,填充所需发送的协议报文的报文数据信息和扩展信息;
协议族处理模块,用于调用内核中预先创建的套接字中的发包处理回调函数,将协议报文由用户态空间转换至内核态空间;
发包模块,用于对转换至内核态空间的协议报文进行封包处理,并根据扩展信息将封包处理后的协议报文发送至指定出接口。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,协议族处理模块,还用于调用发包处理回调函数中的拷贝函数,将协议报文中的报文数据信息从用户态空间拷贝至内核态空间的报文数据缓冲区;将协议报文中的扩展信息拷贝至内核态空间的地址选项缓冲区。
结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,发包模块,还用于从扩展信息中提取发送协议报文所需的接口信息;判断接口信息是否正确;如果是,则将接口信息作为指定出接口,并将封包处理后的协议报文发送至指定出接口。
第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器,存储器上存储有可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述第一方面所述的方法的步骤。
第四方面,本发明实施例还提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行第一方面所述的方法。
本发明实施例带来了以下有益效果:
在本发明实施例提供的协议报文跨层通信方法包括:调用内核提供的发送函数,填充所需发送的协议报文的报文数据信息和扩展信息;调用内核中预先创建的套接字中的发包处理回调函数,将协议报文由用户态空间转换至内核态空间;对转换至内核态空间的协议报文进行封包处理,并根据扩展信息将封包处理后的协议报文发送至指定出接口。本发明实施例所提供的协议报文跨层通信方法,能够对待发送的协议报文进行相应的处理,使其进入相应的内核处理分支中,减少系统资源的浪费,当某种协议报文有突发流量时,不会影响到其他协议报文的跨层通信,提高了网络的安全可靠性。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种协议报文跨层通信方法的流程图;
图2为本发明实施例一提供的另一种协议报文跨层通信方法的流程图;
图3为本发明实施例一提供的另一种协议报文跨层通信方法的流程图;
图4为本发明实施例一提供的另一种协议报文跨层通信方法的流程图;
图5为本发明实施例一提供的另一种协议报文跨层通信方法的流程图;
图6为本发明实施例二提供的一种协议报文跨层通信装置的示意图;
图7为本发明实施例三提供的一种电子设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有的跨层通信方法,通常会造成计算资源的浪费,并且当有协议报文攻击的时候,某一种协议报文的大量涌入,会导致其他协议报文也会出现丢包的情况。
基于此,本发明实施例提供一种协议报文跨层通信方法、装置及电子设备,能够对待发送的协议报文进行相应的处理,使其进入相应的内核处理分支中,减少系统资源的浪费,当某种协议报文有突发流量时,不会影响到其他协议报文的跨层通信,提高了网络的安全可靠性。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种协议报文跨层通信方法进行详细介绍。
实施例一:
本发明实施例提供了一种协议报文跨层通信方法,该方法的执行主体为已经进行收包处理的CPU,即该CPU已经接收到协议报文,并将该协议报文存入预先创建的套接字的缓冲区内。参见图1所示,该方法包括以下步骤:
S101:调用内核提供的发送函数,填充所需发送的协议报文的报文数据信息和扩展信息。
上述报文数据信息和扩展信息在收包过程中,存入了预先创建的套接字的缓冲区内,协议处理模块调用系统调用发送函数(sendto),填充需要发送的协议报文的数据,发包地址选项参数部分填充一些扩展信息(如二层头部,出接口编号…)。
在上述步骤S101之前,需要在内核中定义扩展的协议编号,即在内核中预先创建套接字,重新注册协议族,其中主要包括套接字释放回调函数、发包处理回调函数的注册,具体的过程包括以下步骤,参见图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:将协议报文中的扩展信息拷贝至内核态空间的地址选项缓冲区。
具体的,使用memcpy_fromiovec将协议报文的报文数据信息和扩展信息从用户态空间拷贝至内核态空间的数据发送缓冲区。
S103:对转换至内核态空间的协议报文进行封包处理,并根据扩展信息将封包处理后的协议报文发送至指定出接口。
其中,对转换至内核态空间的协议报文进行封包处理,具体包括以下步骤,参见图4所示:
S401:将转换至内核态空间的协议报文的报文数据信息重新组装成标准以太帧。
根据扩展信息将封包处理后的协议报文发送至指定出接口,具体包括以下步骤,参见图5所示:
S501:从扩展信息中提取发送协议报文所需的接口信息。
S502:判断接口信息是否正确。
如果是,则执行步骤S503:将接口信息作为指定出接口,并将封包处理后的协议报文发送至指定出接口。
具体的,直接从协议处理模块填入的扩展信息structmsghdr中取出msg_name解析出数据发送所需的一些扩展信息;根据扩展信息的出接口编号,做合法性判断,错误直接出错返回;如果正确,则将接口信息作为指定出接口,并将封包处理后的协议报文发送至指定出接口。
上述发送协议报文的过程中,每一种协议报文的跨层通信都有独立的协议族支撑,都有不同的收发队列,避免了报文被攻击时其他协议报文跨层通信时出现丢包情况;解决了现有跨层技术中,当某种协议报文有突发流量时,影响到其他协议报文的跨层通信的问题,提高了网络的安全可靠性。另外,上述过程还解决了现有跨层通信中,报文进入无必要的内核处理分支中,造成系统资源不必要的浪费的问题。
本发明实施例提供的协议报文跨层通信方法包括:调用内核提供的发送函数,填充所需发送的协议报文的报文数据信息和扩展信息;调用内核中预先创建的套接字中的发包处理回调函数,将协议报文由用户态空间转换至内核态空间;对转换至内核态空间的协议报文进行封包处理,并根据扩展信息将封包处理后的协议报文发送至指定出接口。本发明实施例所提供的协议报文跨层通信方法,能够对待发送的协议报文进行相应的处理,使其进入相应的内核处理分支中,减少系统资源的浪费,当某种协议报文有突发流量时,不会影响到其他协议报文的跨层通信,提高了网络的安全可靠性。
实施例二:
本发明实施例提供一种协议报文跨层通信装置,参见图6所示,该装置包括:协议处理模块61、协议族处理模块62、发包模块63。
其中,协议处理模块61为用户态中的模块,协议族处理模块62、发包模块63为内核态中的模块。协议处理模块61,用于调用内核提供的发送函数,填充所需发送的协议报文的报文数据信息和扩展信息;协议族处理模块62,用于调用内核中预先创建的套接字中的发包处理回调函数,将协议报文由用户态空间转换至内核态空间;发包模块63,用于对转换至内核态空间的协议报文进行封包处理,并根据扩展信息将封包处理后的协议报文发送至指定出接口。
此外,协议族处理模块62,还用于调用发包处理回调函数中的拷贝函数,将协议报文中的报文数据信息从用户态空间拷贝至内核态空间的报文数据缓冲区;将协议报文中的扩展信息拷贝至内核态空间的地址选项缓冲区。
发包模块63,还用于从扩展信息中提取发送协议报文所需的接口信息;判断接口信息是否正确;如果是,则将接口信息作为指定出接口,并将封包处理后的协议报文发送至指定出接口。
本发明实施例所提供的协议报文跨层通信装置中,各个模块与前述协议报文跨层通信方法具有相同的技术特征,因此,同样可以实现上述功能。本装置中各个模块的具体工作过程参见上述方法实施例,在此不再赘述。
实施例三:
本发明实施例提供一种电子设备,参见图7所示,该电子设备包括:处理器70,存储器71,总线72和通信接口73,所述处理器70、通信接口73和存储器71通过总线72连接;处理器70用于执行存储器71中存储的可执行模块,例如计算机程序。处理器执行计算机程序时实现如方法实施例所述的方法的步骤。
其中,存储器71可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口73(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线72可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器71用于存储程序,所述处理器70在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器70中,或者由处理器70实现。
处理器70可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器70中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器70可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器71,处理器70读取存储器71中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的协议报文跨层通信方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置及电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
附图中的流程图和框图显示了根据本发明的多个实施例方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种协议报文跨层通信方法,其特征在于,所述方法包括:
调用内核提供的发送函数,填充所需发送的协议报文的报文数据信息和扩展信息;
调用内核中预先创建的套接字中的发包处理回调函数,将所述协议报文由用户态空间转换至内核态空间;
对所述转换至内核态空间的协议报文进行封包处理,并根据所述扩展信息将所述封包处理后的协议报文发送至指定出接口。
2.根据权利要求1所述的方法,其特征在于,在所述调用内核提供的发送函数之前,还包括:
判断是否有允许使用的原始套接字:
如果是,则判断是否创建原始套接字:
如果是,分配所述原始套接字的存储空间,并对所述原始套接字进行初始化;所述初始化包括:基本数据初始化、协议族号初始化、套接字释放回调函数初始化及发包处理回调函数初始化;
将初始化后的套接字加入协议族套接字链表中。
3.根据权利要求1所述的方法,其特征在于,所述调用内核中预先创建的套接字中的发包处理回调函数,将所述协议报文由用户态空间转换至内核态空间,具体包括:
调用所述发包处理回调函数中的拷贝函数,将所述协议报文中的报文数据信息从所述用户态空间拷贝至所述内核态空间的报文数据缓冲区;
将所述协议报文中的扩展信息拷贝至所述内核态空间的地址选项缓冲区。
4.根据权利要求2所述的方法,其特征在于,所述对所述转换至内核态空间的协议报文进行封包处理,具体包括:
将所述转换至内核态空间的协议报文的报文数据信息重新组装成标准以太帧。
5.根据权利要求1所述的方法,其特征在于,所述根据所述扩展信息将所述封包处理后的协议报文发送至指定出接口,具体包括:
从所述扩展信息中提取发送所述协议报文所需的接口信息;
判断所述接口信息是否正确;
如果是,则将所述接口信息作为所述指定出接口,并将所述封包处理后的协议报文发送至所述指定出接口。
6.一种协议报文跨层通信装置,其特征在于,所述装置包括:
协议处理模块,用于调用内核提供的发送函数,填充所需发送的协议报文的报文数据信息和扩展信息;
协议族处理模块,用于调用内核中预先创建的套接字中的发包处理回调函数,将所述协议报文由用户态空间转换至内核态空间;
发包模块,用于对所述转换至内核态空间的协议报文进行封包处理,并根据所述扩展信息将所述封包处理后的协议报文发送至指定出接口。
7.根据权利要求6所述的装置,其特征在于,
所述协议族处理模块,还用于调用所述发包处理回调函数中的拷贝函数,将所述协议报文中的报文数据信息从所述用户态空间拷贝至所述内核态空间的报文数据缓冲区;将所述协议报文中的扩展信息拷贝至所述内核态空间的地址选项缓冲区。
8.根据权利要求6所述的装置,其特征在于,
所述发包模块,还用于从所述扩展信息中提取发送所述协议报文所需的接口信息;判断所述接口信息是否正确;如果是,则将所述接口信息作为所述指定出接口,并将所述封包处理后的协议报文发送至所述指定出接口。
9.一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至5任一项所述的方法的步骤。
10.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810292682.6A CN108650295A (zh) | 2018-03-30 | 2018-03-30 | 协议报文跨层通信方法装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810292682.6A CN108650295A (zh) | 2018-03-30 | 2018-03-30 | 协议报文跨层通信方法装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108650295A true CN108650295A (zh) | 2018-10-12 |
Family
ID=63745164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810292682.6A Pending CN108650295A (zh) | 2018-03-30 | 2018-03-30 | 协议报文跨层通信方法装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108650295A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377554A (zh) * | 2019-07-27 | 2019-10-25 | 北京永佳消防技术有限公司 | 一种基于串行通信的多协议数据集成通信装置及方法 |
CN110557319A (zh) * | 2019-08-28 | 2019-12-10 | 视联动力信息技术股份有限公司 | 一种基于视联网的报文处理方法及装置 |
CN110602225A (zh) * | 2019-09-19 | 2019-12-20 | 北京天地和兴科技有限公司 | 一种适用于工控环境的linux系统高效收发包方法 |
CN110851289A (zh) * | 2019-10-23 | 2020-02-28 | 新华三信息安全技术有限公司 | 协议报文处理方法及交换机 |
CN111399972A (zh) * | 2019-01-02 | 2020-07-10 | 中国移动通信有限公司研究院 | 一种虚拟机抓包的方法、装置及计算机可读存储介质 |
CN111654436A (zh) * | 2019-10-24 | 2020-09-11 | 北京大学 | 一种适用于高速移动环境的网络中继设备 |
CN111683109A (zh) * | 2020-08-17 | 2020-09-18 | 烽火通信科技股份有限公司 | 一种微服务架构 |
CN115412512A (zh) * | 2022-10-31 | 2022-11-29 | 浙江九州云信息科技有限公司 | 一种基于IPv6的多云跨网互通方法及装置 |
CN117395329A (zh) * | 2023-12-13 | 2024-01-12 | 井芯微电子技术(天津)有限公司 | 收发以太二层协议报文的方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402487A (zh) * | 2011-11-15 | 2012-04-04 | 北京天融信科技有限公司 | 一种零拷贝接收报文的方法和系统 |
CN104123229A (zh) * | 2014-07-21 | 2014-10-29 | 上海斐讯数据通信技术有限公司 | 能使报文高效地从内核态提交到用户态的方法及系统 |
US20160226957A1 (en) * | 2015-01-30 | 2016-08-04 | Nicira, Inc. | Edge datapath using user-kernel transports |
CN107172009A (zh) * | 2017-04-06 | 2017-09-15 | 烽火通信科技股份有限公司 | 通过socket上送VLAN信息至应用模块的方法 |
-
2018
- 2018-03-30 CN CN201810292682.6A patent/CN108650295A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402487A (zh) * | 2011-11-15 | 2012-04-04 | 北京天融信科技有限公司 | 一种零拷贝接收报文的方法和系统 |
CN104123229A (zh) * | 2014-07-21 | 2014-10-29 | 上海斐讯数据通信技术有限公司 | 能使报文高效地从内核态提交到用户态的方法及系统 |
US20160226957A1 (en) * | 2015-01-30 | 2016-08-04 | Nicira, Inc. | Edge datapath using user-kernel transports |
CN107172009A (zh) * | 2017-04-06 | 2017-09-15 | 烽火通信科技股份有限公司 | 通过socket上送VLAN信息至应用模块的方法 |
Non-Patent Citations (1)
Title |
---|
AISEED: "Linux用户态数据发送和接收", 《HTTPS://WWW.CNBLOGS.COM/YHP-SMARTHOME/P/7050928.HTML》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111399972B (zh) * | 2019-01-02 | 2023-05-09 | 中国移动通信有限公司研究院 | 一种虚拟机抓包的方法、装置及计算机可读存储介质 |
CN111399972A (zh) * | 2019-01-02 | 2020-07-10 | 中国移动通信有限公司研究院 | 一种虚拟机抓包的方法、装置及计算机可读存储介质 |
CN110377554A (zh) * | 2019-07-27 | 2019-10-25 | 北京永佳消防技术有限公司 | 一种基于串行通信的多协议数据集成通信装置及方法 |
CN110377554B (zh) * | 2019-07-27 | 2021-02-02 | 北京永佳消防技术有限公司 | 一种基于串行通信的多协议数据集成通信装置及方法 |
CN110557319B (zh) * | 2019-08-28 | 2020-11-13 | 视联动力信息技术股份有限公司 | 一种基于视联网的报文处理方法及装置 |
CN110557319A (zh) * | 2019-08-28 | 2019-12-10 | 视联动力信息技术股份有限公司 | 一种基于视联网的报文处理方法及装置 |
CN110602225A (zh) * | 2019-09-19 | 2019-12-20 | 北京天地和兴科技有限公司 | 一种适用于工控环境的linux系统高效收发包方法 |
CN110851289B (zh) * | 2019-10-23 | 2022-11-08 | 新华三信息安全技术有限公司 | 协议报文处理方法及交换机 |
CN110851289A (zh) * | 2019-10-23 | 2020-02-28 | 新华三信息安全技术有限公司 | 协议报文处理方法及交换机 |
CN111654436A (zh) * | 2019-10-24 | 2020-09-11 | 北京大学 | 一种适用于高速移动环境的网络中继设备 |
CN111683109A (zh) * | 2020-08-17 | 2020-09-18 | 烽火通信科技股份有限公司 | 一种微服务架构 |
CN115412512A (zh) * | 2022-10-31 | 2022-11-29 | 浙江九州云信息科技有限公司 | 一种基于IPv6的多云跨网互通方法及装置 |
CN115412512B (zh) * | 2022-10-31 | 2023-03-24 | 浙江九州云信息科技有限公司 | 一种基于IPv6的多云跨网互通方法及装置 |
CN117395329A (zh) * | 2023-12-13 | 2024-01-12 | 井芯微电子技术(天津)有限公司 | 收发以太二层协议报文的方法、装置及存储介质 |
CN117395329B (zh) * | 2023-12-13 | 2024-02-06 | 井芯微电子技术(天津)有限公司 | 收发以太二层协议报文的方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108650295A (zh) | 协议报文跨层通信方法装置及电子设备 | |
CN108712459A (zh) | 协议报文跨层通信方法、装置及电子设备 | |
CN104714905B (zh) | 用于执行失效转移操作的方法和系统 | |
CN105579987B (zh) | 通用pci express端口 | |
CN102648455B (zh) | 服务器和流控制程序 | |
CN110535813B (zh) | 内核态协议栈与用户态协议栈并存处理方法和装置 | |
US9479457B2 (en) | High-performance, scalable and drop-free data center switch fabric | |
US9294304B2 (en) | Host network accelerator for data center overlay network | |
US9703743B2 (en) | PCIe-based host network accelerators (HNAS) for data center overlay network | |
US10601735B2 (en) | Coalescing messages using a network interface controller | |
CN104753715A (zh) | 混合sdn控制器 | |
CN106020926B (zh) | 一种用于虚拟交换机技术中数据传输的方法及装置 | |
CN110380992A (zh) | 报文处理方法、装置及网络流量采集设备 | |
US9847937B2 (en) | Hardware acceleration for routing programs | |
US20150281120A1 (en) | Flow-control within a high-performance, scalable and drop-free data center switch fabric | |
WO2021128927A1 (zh) | 报文的处理方法及装置、存储介质和电子装置 | |
CN107995326B (zh) | 一种容器网络的管理方法及装置 | |
CN108683607A (zh) | 虚拟机流量控制方法、装置和服务器 | |
CN104683428A (zh) | 网络业务处理方法与装置 | |
CN109417507A (zh) | 部分延迟的报文访问 | |
CN106657279A (zh) | 一种网络业务加速方法和设备 | |
CN103795705B (zh) | 用于交换安全的数据包的时间锁定的网络和节点 | |
US20220166718A1 (en) | Systems and methods to prevent packet reordering when establishing a flow entry | |
CN109379269A (zh) | 虚拟交换设备数据转发方法、装置和计算机设备 | |
CN110389711A (zh) | 帮助端点设备实现sr-iov功能的方法、设备和计算机程序产品 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181012 |