本发明实施例涉及通信领域,特别涉及通信领域中的传输报文的系统和方法。
背景技术:
网络中按五元组(源地址,目的地址,源端口,目的端口,协议号)标识一条有方向(从源到目的)的流。方向相反(源地址和目的地址互反、源端口和目的端口互反)的两条流组成一条连接,网络中的两点通过连接进行通信。连接跟踪(conntrack)模块会记录每一条连接的状态,是防火墙的状态监测的基础。Linux内核中的conntrack模块实现了连接跟踪功能,记录了所有连接的状态,conntrack为每一个经过的报文查找对应的连接,并返回连接状态。
应用层网关(Application Layer Gateway,简称“ALG”)模块是连接跟踪的增强功能,Linux内核里ALG模块实现了应用层网关的功能,conntrack和ALG共同实现了Linux内核中的连接跟踪功能。开放虚拟交换模块(Open Virtual Switch,简称“OVS”)和数据平面开发套件(Data Plane Development Kit,简称“DPDK”)运行在Linux用户态,目前用户态已经实现了conntrack功能,但是用户态没有实现ALG模块的功能,现有技术中为了在用户态实现ALG模块的功能,OVS在用户态收到报文,将报文发送到内核态,经过内核态的conntrack模块和ALG模块处理后,将报文的连接信息返回给用户态的OVS,但是,报文需要经过两次用户态和内核态的切换,使得报文在用户态和内核态报文之间的通信损耗较大,造成系统性能下降。
技术实现要素:
本发明实施例提供的传输报文的系统和方法,可以提高系统性能。
第一方面,提供了一种传输报文的方法,应用于传输报文的系统,该系统包括开放虚拟交换模块和连接模块,该开放虚拟交换模块和该连接模块工作在用户态下,该方法包括:该开放虚拟交换模块接收数据报文;该开放虚拟交换模块向该连接模块发送该数据报文,该连接模块保存有与该数据报文的连接信息的相关的第一信息,其中,该第一信息是通过与该数据报文的连接信息相关的控制报文的应用层信息得到的;该连接模块接收该开放虚拟交换模块发送的该数据报文,并根据保存的该第一信息确定该数据报文的连接信息;该连接模块将该数据报文的连接信息发送给该开放虚拟交换模块。
在本发明实施例中,用户态下可以根据连接模块保存的与数据报文的连接信息相关的第一信息确定数据报文的连接信息,不需要在内核态下的应用层网关模块分析数据报文的连接信息,可以降低数据态与内核态之间的通信损耗,能够提高系统性能。
可选地,第一信息可以是与控制报文的应用层信息相关的信息,例如,该第一信息可以是内核态下的应用层网关模块解析控制报文的应用层信息得到的,并且应用层网关模块将第一信息发送给连接模块。
进一步地,连接模块可以是现有技术中的conntrack模块,开放虚拟交换模块可以是现有技术中的OVS。
在某些实现方式中,该系统还包括应用层网关模块,该应用层网关模块工作在内核态下;在该连接模块接收该开放虚拟交换模块发送的该数据报文之前,该方法还包括:该应用层网关模块根据该控制报文的应用层信息确定该第一信息;该应用层网关模块向该连接模块发送该第一信息;该连接模块还接收该应用层网关模块发送的该第一信息。
即在连接模块保存的第一信息可以是应用层网关模块根据控制报文确定的,然后将确定的第一信息发送给连接模块,连接模块进行保存。
在本发明实施例中,通过内核态下的应用层网关模块的根据控制报文分析出的第一信息,并将第一信息发送到用户态下的连接模块,连接模块将第一信息进行保存,当开放虚拟交换模块接收到数据报文时,根据连接模块保存的第一信息,确定数据报文的连接信息,而不是将数据报文也发送到内核态下的应用层网关模块进行分析,直接利用控制报文的应用层信息与数据报文的连接信息之间的相关性,该相关性可以用第一信息表征,确定数据报文的连接信息,降低数据态与内核态之间的通信损耗,能够提高系统性能。
在某些实现方式中,该连接模块包括连接跟踪子模块和报文期望子模块,其中,该连接模块接收该应用层网关模块发送的该第一信息,包括:该报文期望子模块接收该应用层网关模块发送的该第一信息;
该连接模块接收该开放虚拟交换模块发送的该数据报文,包括:
该连接跟踪子模块接收该开放虚拟交换模块发送的数据报文;
在该连接跟踪子模块接收该开放虚拟交换模块发送的数据报文之后,该方法还包括:该连接跟踪子模块确定该数据报文是否为数据通道的首包;若该连接跟踪子模块确定该数据报文为该数据通道的首包,则向该报文期望子模块发送该数据报文;该报文期望子模块接收该连接跟踪子模块发送的该数据报文,并根据该数据报文向该连接跟踪子模块发送该第一信息;该连接跟踪子模块接收该报文期望子模块发送的该第一信息并保存。
进一步地,报文期望子模块中可以保存多个数据报文的连接信息的相关信息,第一信息属于多个数据报文的连接信息的相关信息中的一个信息,当连接跟踪子模块接收到数据报文后,确定该数据报文是数据通道的首包时,将该数据报文发送给报文期望子模块,报文期望子模块在多个数据报文的连接信息的相关信息中确定第一信息,例如,多个数据报文的连接信息中可以有多个数据报文的五元组,报文期望子模块通过匹配多个数据报文的五元组确定接收到该数据报文的第一信息。
在本发明实施例中,前述的连接模块可以包括连接跟踪子模块和报文期望子模块,连接跟踪子模块接收到数据报文时,首先连接跟踪子模块判断数据报文是否为数据通道的首包,例如,根据该数据报文的报文头的五元组(源地址,目的地址,源端口,目的端口,协议号)确定该数据报文是否为数据通道的首包,连接跟踪子模块接收到数据报文时,发现该数据报文的五元组没有解析过,则认为该数据报文是数据通道的首包,则将该数据报文发送给报文期望子模块,报文期望子模块中保存有第一信息,报文期望子模块将该第一信息发送给连接跟踪子模块,当连接跟踪子模块接收到数据通道上的非首包,即后续数据报文时,连接跟踪子模块分析数据报文的报文头中的五元组,若连接跟踪子模块发现该报文头中的五元组之前分析过,则认为是一个后续数据报文,对于后续包的处理,直接根据连接跟踪子模块中保存的第一信息,确定后续数据报文的连接信息,将确定的后续数据报文的连接信息发送给开放虚拟交换模块。
进一步地,当数据报文是首包时,则前述的连接模块可以分为连接跟踪子模块和报文期望子模块,连接跟踪子模块用来判断数据报文是首包还是后续包,若为首包,则将首包发送给报文期望子模块,根据首包在报文期望子模块中确定与首包相关的第一信息;当数据报文是后续包时,则数据报文就仅在前述的连接模块保存的第一信息,确定该数据报文的连接信息。
在某些实现方式中,在该应用层网关模块根据该控制报文的应用层信息确定该第一信息之前,该方法还包括:该开放虚拟交换模块接收该控制报文,并将该控制报文发送给该连接跟踪子模块;该连接跟踪子模块接收该开放虚拟交换模块发送的该控制报文;该连接跟踪子模块向该应用层网关模块发送该控制报文;该应用层网关模块接收该连接跟踪子模块发送的该控制报文;
其中,该应用层网关模块根据该控制报文的应用层信息确定该第一信息,包括:该应用层网关模块在接收到该控制报文之后,解析该控制报文的应用层信息得到该第一信息;该应用层网关模块将该第一信息发送给该报文期望子模块。
在某些实现方式中,该系统包括:解析模块,该解析模块工作在用户态下;其中,在该连接跟踪子模块向该应用层网关模块发送该控制报文之前,该方法还包括:该连接跟踪子模块确定该控制报文是否为控制通道的首包;若该控制报文为该控制通道的首包,则该连接跟踪子模块向该解析模块发送该控制报文;该解析模块接收该控制报文,并确定是否需要解析该控制报文的应用层信息;若该解析模块确定需要解析该控制报文的应用层信息,则向该连接跟踪子模块发送指示信息,该指示信息用于指示需要解析该控制报文的应用层信息;该连接跟踪子模块向该应用层网关模块发送该控制报文,包括:该连接跟踪子模块接收该指示信息,并根据该指示信息将向该应用层网关模块发送该控制报文。
在本发明实施例中,开放虚拟交换模块在接收到控制报文后,可以将控制报文发送给连接跟踪子模块,首先连接跟踪子模块判断控制报文是否为控制通道的首包,例如,根据该控制报文的报文头的五元组(源地址,目的地址,源端口,目的端口,协议号)确定该控制报文是否为控制通道的首包,连接跟踪子模块接收到控制报文时,发送给控制报文的的五元组没有解析过,则认为该控制报文是控制通道的首包,则将该控制报文发送给解析模块,该解析模块确定是否需要解析该控制报文的应用层信息,例如,解析模块根据端口号判断连接是都需要ALG分析,文件传输协议(File Transfer Protocol,简称“FTP”)控制通道连接的端口号为21,如果解析模块解析到控制报文的报文头中端口号为21,则认为是FTP协议,则FTP协议中需要进行ALG分析,因此,解析模块可以向连接跟踪子模块发送指示信息,来指示连接跟踪子模块需要当前的控制报文需要进行ALG分析,连接跟踪子模块就可以向应用层网关模块发送控制报文,应用层网关模块解析控制报文的应用层信息得到第一信息,然后将第一信息发送给报文期望子模块,报文期望子模块保存第一信息,当然,应用层网关模块可能解析出与该控制报文的应用层信息相关的还是控制报文,则应用层网关模块继续解析与控制报文的应用层信息,直到解析出与该控制报文的应用层信息相关的数据报文的连接信息,将相关信息,如第一信息发送给报文期望子模块,报文期望子模块保存。
若连接跟踪子模块确定控制报文不是控制通道的首包,则将认为该控制通道上的后续的控制报文都需要进行ALG分析,则连接跟踪子模块根将后续的控制报文直接发送给应用层网关模块,应用层网关模块解析该控制报文的应用层信息,解析出与该控制报文的应用层信息相关的数据报文的连接信息,将相关信息,例如第一信息发送给报文期望子模块。
进一步地,连接跟踪子模块在接收到自身不能识别的报文时,例如连接跟踪子模块之前并没有接收到的报文的五元组,则认为是一个陌生的报文,因此,连接跟踪子模块首先将该报文发送给解析模块,若该报文是控制报文则解析模块可以解析,若该报文是数据报文则解析模块并不能解析该报文,因此将该报文发送给报文期望子模块,若是数据报文,则报文期望模块可以识别该数据报文,也即连接跟踪子模块只要接收到首包时就会发送给报文期望子模块或解析模块,解析模块解析报文之后,向连接跟踪子模块发送指示信息,当连接跟踪子模块接收到指示信息时,则认为是该报文是控制报文的首包,连接跟踪子模块可以记录该控制报文的五元组,后续的接收到控制报文时,就不需要向解析模块发送了,而是向应用层网关模块发送;报文期望子模块解析报文之后,向连接跟踪子模块返回该报文的连接信息的相关信息,如第一信息,连接跟踪子模块接收到第一信息时,则认为该报文是数据报文的首包,连接跟踪子模块可以记录该数据报文的五元组,后续接收到的数据把我摁时,就不需要向报文希望模块发送了,而是根据自身保存的第一信息确定后续数据报文的连接信息。
在本发明实施例中,数据报文是指在数据通道上发送的报文,控制报文是指在控制通道上发送的报文;应理解,本发明实施例提到的首数据报文与后续数据报文同属于一个连接,首控制报文与后续控制报文同属于一个连接,正因为首数据报文与后续数据报文同属于一个连接,后续的数据报文才可以利用首包的分析结果;也因为首控制报文与后续控制报文同属于一个连接,后续的报文才可以利用首包的分析结果。
在某些实现方式中,该系统还包括:适配模块,其中,该连接跟踪子模块向该应用层网关模块发送该控制报文,包括:该连接跟踪子模块向该适配模块发送该控制报文;该适配模块接收该连接模块发送的该控制报文,并将该控制报文的在用户态下的格式转换为该控制报文在内核态下的格式;其中,该应用层网关模块接收该连接跟踪子模块发送的该控制报文,包括:该应用层网关模块接收该适配模块发送的该控制报文。
在本发明实施例中,有可能用户态下的连接跟踪子模块发送的控制报文的格式不是内核态下的格式,因此,需要适配模块将用户态下的控制报文的格式转换为内核态下的控制报文。
可选地,该适配模块可以工作在内核态下,也可以工作在用户态下。
第二方面,提供了一种传输报文的系统,该系统包括开放虚拟交换模块和连接模块,该开放虚拟交换模块和该连接模块工作在用户态下;
该开放虚拟交换模块用于接收数据报文;该开放虚拟交换模块还用于向该连接模块发送该数据报文;该连接模块用于存储与该数据报文的连接信息相关的第一信息,其中,该第一信息是通过与该数据报文的连接信息相关的控制报文的应用层信息得到的;该连接模块还用于接收该开放虚拟交换模块发送的该数据报文,并根据存储的该第一信息确定该数据报文的连接信息;该连接模块还用于将该数据报文的连接信息发送给该开放虚拟交换模块。
在某些实现方式中,该系统还包括应用层网关模块,该应用层网关模块工作在内核态下;该应用层网关模块用于:在该连接模块接收该开放虚拟交换模块发送的该数据报文之前,根据该控制报文的应用层信息确定该第一信息;该应用层网关模块还用于向该连接模块发送该第一信息;该连接模块还用于接收该应用层网关模块发送的该第一信息。
在某些实现方式中,该连接模块包括连接跟踪子模块和报文期望子模块,该报文期望子模块用于接收该应用层网关模块发送的该第一信息;
该报文期望子模块用于存储该第一信息;
该连接跟踪子模块用于接收该开放虚拟交换模块发送的数据报文;
该连接跟踪子模块还用于确定该数据报文是否为数据通道的首包;
该连接跟踪子模块还用于若该连接跟踪子模块确定该数据报文为该数据通道的首包,向该报文期望子模块发送该数据报文;
该报文期望子模块还用于接收该连接跟踪子模块发送的该数据报文,并根据该数据报文向该连接跟踪子模块发送该第一信息;
该连接跟踪子模块还用于接收该报文期望子模块发送的该第一信息。
在某些实现方式中,该开放虚拟交换模块还用于:在该应用层网关模块根据该控制报文的应用层信息确定该第一信息之前,接收该控制报文,并将该控制报文发送给该连接跟踪子模块;
该连接跟踪子模块还用于接收该开放虚拟交换模块发送的该控制报文;
该连接跟踪子模块还用于向该应用层网关模块发送该第一控制报文;
该应用层网关模块还用于接收该连接跟踪子模块发送的该控制报文;
该应用层网关模块还用于在接收到该控制报文之后,解析该控制报文的应用层信息得到该第一信息,并将该第一信息发送给该报文期望子模块。
在某些实现方式中,该系统包括:解析模块,该解析模块工作在用户态下;
该连接跟踪子模块用于确定该控制报文是否为控制通道的首包;
该连接跟踪子模块还用于若该控制报文为该控制通道的首包,向该解析模块发送该控制报文;
该解析模块用于接收该控制报文,并确定是否需要解析该控制报文的应用层信息;
该解析模块还用于若该确定需要解析该控制报文的应用层信息,则向该连接跟踪子模块发送指示信息,该指示信息用于指示需要解析该控制报文的应用层信息;
该连接跟踪子模块用于接收该指示信息,并根据该指示信息将向该应用层网关模块发送该控制报文。
在某些实现方式中,该系统还包括:适配模块,
该连接跟踪子模块还用于向该适配模块发送该控制报文;
该适配模块用于接收该连接跟踪子模块发送的该控制报文,并将该控制报文的在用户态下的格式转换为该控制报文在内核态下的格式;
该应用层网关模块还用于接收该适配模块发送的该控制报文。
第三方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
附图说明
图1是根据本发明实施例的应用场景示意图。
图2是根据本发明实施例的传输报文的方法示意图。
图3是根据本发明实施例的另一传输报文的方法示意性框图。
图4是根据本发明实施例的又一传输报文的方法示意性框图。
图5是根据本发明实施例的另一传输报文的方法示意性框图。
图6是根据本发明实施例的又一传输报文的方法示意性框图。
图7是根据本发明实施例的传输报文的系统示意性框图。
具体实施方式
应理解,本发明实施例的技术方案可以应用于各种通信系统,例如:全球移动通讯(Global System of Mobile communication,简称为“GSM”)系统、码分多址(Code Division Multiple Access,简称为“CDMA”)系统、宽带码分多址(Wideband Code Division Multiple Access,简称为“WCDMA”)系统、通用分组无线业务(General Packet Radio Service,简称为“GPRS”)、长期演进(Long Term Evolution,简称为“LTE”)系统、LTE频分双工(Frequency Division Duplex,简称为“FDD”)系统、LTE时分双工(Time Division Duplex,简称为“TDD”)、通用移动通信系统(Universal Mobile Telecommunication System,简称为“UMTS”)、全球互联微波接入(Worldwide Interoperability for Microwave Access,简称为“WiMAX”)通信系统、无线局域网(Wireless Local Area Network,简称“WLAN”)或未来第五代无线通信系统(the fifth Generation,简称“5G”)等。
下面对本发明实施例用到的名词进行解释:
内核态,当一个任务(进程)执行系统调用而陷入内核代码中执行时,就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。在内核态下CPU可执行任何指令,当CPU处于内核态,可以随意进入用户态。
用户态,当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有些类似。在用户态下CPU只能执行非特权指令。用户从用户态切换到内核态只有在系统调用和中断两种情况下发生,一般程序一开始都是运行于用户态,当程序需要使用系统资源时,就必须通过调用软中断进入内核态。运行在用户态的程序不能访问操作系统内核数据结构中的程序。当我们在系统中执行一个程序时,大部分时间是运行在用户态下的。在其需要操作系统帮助完成某些它没有权力和能力完成的工作时就会切换到内核态。
图1示出了本发明实施例的应用场景示意图100,包括:
开放虚拟交换模块110,用于接收报文,例如,接收控制通道的控制报文或者接收数据通道的数据报文,并将接收到的报文发送给连接跟踪子模块120。开放虚拟交换模块110可以接收与开放虚拟交换模块连接的设备发送的报文。开放虚拟交换模块110还用于将数据报文的连接信息返回给需要数据报文的连接信息的设备,并且开放虚拟交换模块110可以工作在用户态,例如,开放虚拟交换模块110可以是现有技术中的OVS。
连接跟踪子模块120,用于接收开放虚拟交换模块110发送的报文,若报文是首包,则将该报文发送给解析模块130或者报文期望子模块140,若报文非首包,若该报文是控制报文则将该控制报文发送给适配模块,该链接跟踪子模块工作在用户态,例如连接跟踪子模块120可以是现有技术中conntrack模块。
解析模块130,用于接收链接跟踪子模块120发送的每一条连接的首包,并确定是否需要分析报文的连接信息,若解析模块130确定需要分析报文的连接信息,则向连接跟踪子模块120发送指示信息,来指示连接跟踪子模块120需要分析该连接上的报文。
报文期望子模块140,用于接收适配模块150或者是应用层网关模块160发送的数据报文的连接的相关信息,并保存,数据报文的连接的相关信息例如第一信息,也可以保存多个数据报文的连接的相关信息,当连接跟踪子模块120接收到首包时,可以将首包发送给报文期望子模块140,报文期望子模块140接收连接跟踪子模块发送的首包,报文期望子模块140根据自身保存的报文的连接的相关信息,查找与首包的连接相关信息,更具体,报文期望子模块140可以接收数据报文的首包。可选地,该报文期望子模块140工作在用户态下。
适配模块150,用于接收连接跟踪子模块120发送的控制报文,并将连接跟踪子模块120发送的控制报文在用户态的格式转化为在内核态下的格式,然后将转换格式后的控制报文发送给应用层网关模块160,适配模块150可以工作在内核态下,也可以工作在用户态下,本发明实施例不限于此。
应用层网关模块160,用于接收适配模块150发送的控制报文,或者应用层网关模块160也可以直接接收连接跟踪子模块120发送的控制报文,应用层网关模块160解析接收到的控制报文的应用层信息,得到与控制报文的应用层信息相关的数据报文的连接信息,将解析到的相关信息,例如第一信息发送给适配模块150,或者直接发送给报文期望子模块140。例如,应用层网关模块160可以是现有技术中而定ALG模块。应用层网关模块160工作在内核态下。
应理解,开放虚拟交换模块110、连接跟踪子模块120、解析模块130、报文期望子模块、适配模块150和应用层网关模块160可以集成在一个设备中,例如可以集成在云计算网络中的计算节点或网络节点等。
应用层协议的控制通道和数据通道有可能是分开的,控制通道是固定的知名端口,数据通道可能是通信双发利用控制通道报文协商出来的,不是固定的,连接跟踪子模块120需要知道控制通道和数据通道之间的相关性,从而使防火墙能够进行统一管理。应用层网关模块160通过分析控制通道报文的应用层信息,得到数据通道的端口信息,可以协助连接跟踪子模块120识别应用层协议控制通道和数据通道连接之间的相关性,本发明实施例中,利用控制通道的报文在内核态下进行应用层分析,将分析结果保存在用户态下的报文期望子模块140中,当数据报文到来时,不需要下内核态分析,只需要利用报文期望子模块140得到的分析结果,就可以得到数据报文的连接信息,可以降低数据态与内核态之间的通信损耗,可以提高系统性能。
应理解,在本发明实施例中,在数据通道上的同一连接上的多个报文中的首包的处理与后续包的处理不同;在控制通道上的同一连接上的多个报文中的首包的处理与后续包的处理不同。
图2示出了本发明实施例提供的传输报文的方法200,该方法200应用于传输报文的系统,该系统包括开放虚拟交换模块110和连接模块,可选地,该连接模块可以是前述的连接跟踪子模块120,可选地,该连接模块也可以包括前述的连接跟踪子模块120和报文期望子模块140;该开放虚拟交换模块110和该连接模块工作在用户态下,该方法200包括:
S210,该开放虚拟交换模块110接收数据报文;
S220,该开放虚拟交换模块110向该连接模块发送该数据报文,该连接模块保存有与该数据报文的连接信息的相关的第一信息,其中,该第一信息是通过与该数据报文的连接信息相关的控制报文的应用层信息得到的;
S230,该连接模块接收该开放虚拟交换模块110发送的该数据报文,并根据保存的该第一信息确定该数据报文的连接信息;
S240,该连接模块将该数据报文的连接信息发送给该开放虚拟交换模块110。
因此,用户态下可以根据连接模块保存的与数据报文的连接信息相关的第一信息确定数据报文的连接信息,不需要在内核态下的应用层网关模块分析数据报文的连接信息,降低数据态与内核态之间的通信损耗,能够提高系统性能。
作为一个可选实施例,在S210之前,该方法200还包括:虚拟交换模块110接收报文,虚拟交换模块110将接收到的报文发送给连接跟踪子模块120,连接跟踪子模块120判断接收到的报文是否为首包,具体,连接跟踪子模块120可以通过报文的五元组判断接收到的报文是否为首包,例如,判断接收到的报文的五元组是否是前面接收到的报文的五元组,如果是,则认为不是首包,如果接收到的报文的五元组不是前面接收到的报文的五元组,则认为接收到的报文不是首包,如果是首包的情况可以有以下两种处理方式:
第一种处理方式,将该首包发送给解析模块130,若解析模块130能确定该报文是控制报文,则可以通过解析该控制报文的报文头确定是否需要将该控制报文发送到内核态下的应用层网关模块160解析;例如解析该报文头中的端口号,当解析到该控制报文的目的端口号为21时,则认为该报文是FTP报文,需要发送到内核态下的应用层网关模块160解析。因此,解析模块130需要向连接跟踪子模块120发送指示信息,该指示信息用于指示需要解析该控制报文的应用层信息,连接跟踪子模块120接收到指示信息之后,将该控制报文直接发送给应用层网关模块160,也可以通过适配模块150将控制报文发送给应用层网关模块160,应用层网关模块160解析该控制报文的应用层信息,解析与该控制报文的应用层信息相关的数据报文的连接信息,例如将相关信息用第一信息表示,将第一信息直接发送给报文期望子模块140,或者,可选地,应用层网关模块160将第一信息发送给适配模块150,该适配模块150再将该第一信息发送而给报文期望子模块140,该报文期望子模块140保存第一信息。
第二种处理方式,将该首包发送给解析模块130之后,解析模块130解析不出该报文,则没有向连接跟踪子模块120返回任何信息,则连接跟踪子模块120向报文期望子模块140发送该首包,可能该首包是数据报文,报文期望子模块140在接收到该首包时,在保存的信息中确定与该数据报文相关的信息,例如是第一信息,报文期望子模块140将该第一信息发送给连接跟踪子模块120,连接跟踪子模块120该第一信息。
即,只要连接跟踪子模块120接收到非首包就会发送解析模块130或报文期望子模块140,解析模块130用于解析控制报文,确定是否需要进行下内核处理;报文期望子模块140用于解析数据报文,获取与该数据报文的连接信息相关的信息,例如第一信息。
作为一个可选实施例,当连接跟踪子模块120确定收到的报文不是首包,则可能是后续的数据报文或者是后续的控制报文,连接跟踪子模块120根据控制报文的首包的五元组确定该后续报文是后续报文是控制报文时,将该控制报文发送给适配模块150,适配模块150将该控制报文的格式从用户态下转换为内核态下,适配模块150将转换格式后的控制报文发送给应用层网关模块160。或者是连接跟踪子模块120将该控制报文直接发送给应用层网关模块160,应用层网关模块160解析该控制报文的应用层信息,得到与该控制报文的应用层信息相关的数据报文的连接信息,将相关信息,如用第一信息表征,发送给报文期望子模块140,或者是通过适配模块150发送给报文期望子模块140,报文期望子模块报文第一信息。
当连接跟踪子模块120确定报文不是首包时,如果是控制报文则将该控制报文进行下内核处理,如果是数据报文则根据连接跟踪子模块120保存的相关信息,确定该数据报文的连接信息。只要是控制报文则需要进行下内核处理,只是控制报文是首包时,需要解析模块的解析处理。
因此,只要连接跟踪子模块120接收到控制报文进行下内核处理,应用层网关模块160将解析到与控制报文的应用层信息相关信息发送到报文期望子模块140,这样报文期望子模块140可以保存有多个相关信息,该多个相关信息包括第一信息,当报文期望子模块140接收到数据通道的首个数据报文时,根据保存的多个相关信息确定接收的数据报文的相关信息,例如第一信息,将该第一信息发送给连接跟踪子模块120,连接跟踪字模块120后续再接到数据报文时,直接利用保存的相关信息确定后续数据报文的连接信息,并将数据报文的连接信息发送给开放虚拟交换模块110,这样数据报文就不需要下内核处理,提高数据的处理能力,降低数据态与内核态之间的通信损耗,能够提高系统性能。
下面结合图3至图6举例描述本发明的实施例。
图3示出了本发明实施例提供的控制通道的控制报文的首包的处理方法300,包括:
S301,开放虚拟交换模块110接收报文;
S302,开放虚拟交换模块110将接收到的报文发送给连接跟踪子模块120;
S303,连接跟踪子模块120接收到报文时,当判断该报文是控制报文的首包时,向解析模块130发送报文;
S304,解析模块130接收该报文,并解析,当确定该报文需要下内核处理时,解析模块130向连接跟踪子模块120发送指示信息,该指示信息指示控制报文所属连接上的所有的报文都进行下内核处理。
S305,连接跟踪子模块120接收指示信息,并向适配模块150发送该报文;
S306,适配模块150接收该报文,并将该报文的格式从用户态转换为内核态,向应用层网关模块160发送转换后的报文;
S307,应用层网关模块160接收该报文并解析该报文的连接信息,得到与该报文相关的数据报文的连接信息,并将相关信息,例如用第一信息表征,发送给适配模块150;
S308,适配模块150接收应用层网关模块160发送的第一信息,并将该第一信息发送给报文期望子模块140,报文期望子模块140将第一信息保存,以备后续的数据报文利用第一信息得到数据报文的连接信息。
可选地,连接跟踪子模块120可以将报文直接发送给应用层网关模块160,应用层网关模块160也可以将第一信息直接发送给报文期望子模块140。
图4示出了本发明实施例提供的控制通道的控制报文的后续包的处理方法400,包括:
S401,开放虚拟交换模块110接收报文;
S402,开放虚拟交换模块110将接收到的报文发送给连接跟踪子模块120;
S403,当连接跟踪子模块120判断,接收到的报文的控制通道的后续包时,例如可以利用控制报文的五元组判断,将控制报文发送给适配模块150;
S404,适配模块150接收该报文,并将该报文的格式从用户态转换为内核态,向应用层网关模块160发送转换后的报文;
S405,应用层网关模块160接收该报文并解析该报文的连接信息,得到与该报文相关的数据报文的连接信息,并将相关信息,例如用第一信息表征,发送给适配模块150;
S406,适配模块150接收应用层网关模块160发送的第一信息,并将该第一信息发送给报文期望子模块140,报文期望子模块140将第一信息保存,以备后续的数据报文利用第一信息得到数据报文的连接信息。
若连接跟踪子模块120接收到的是首报文则将首报文发送给解析模块130或报文期望子模块140,解析模块可以解析控制报文的首包,报文期望子模块140可以匹配数据报文的首包;若连接跟踪子模块120接收到该首包控制报文所在的连接上的其他控制报文时,直接将该连接上的后续控制报文发送给适配模块150,进行下内核处理。这样,报文期望子模块140可以得到多个相关信息,多个相关信息用于表示控制报文的应用层信息与数据报文的连接信息之间的关系,该多个相关信息可以报文本发明实施例中的第一信息,这样连接跟踪子模块120接收到数据报文时,将该数据报文的连接信息可以通过报文期望子模块140中相关信息得到,数据报文就可以避免进行下内核处理,降低数据态与内核态之间的通信损耗,可以提高系统性能。
图5示出了本发明实施例提供的控制通道的数据报文的首包的处理过程,包括:
S501,开放虚拟交换模块110接收报文;
S502,开放虚拟交换模块110将接收到的报文发送给连接跟踪子模块120;
S503,连接跟踪子模块120若判断该报文是首包,则将该报文发送给报文期望子模块140;
S504,报文期望子模块140根据报文的相关信息,确定与该报文的连接信息相关的相关信息,例如第一信息;报文期望子模块140将第一信息发送给连接跟踪子模块120;
S505,连接跟踪子模块120接收第一信息,并保存,根据该第一信息确定报文的连接信息,并将该报文的连接信息发送给开放虚拟交换模块110;
S506,开放虚拟交换模块11欧接收该报文的连接信息,并将该报文的连接信息返回,例如发送给需要的设备,或者该报文的连接信息可以实现防火墙的统一管理。
图6示出了本发明实施例提供的控制通道的数据报文的后续包的处理过程,包括:
S601,开放虚拟交换模块110接收报文;
S602,开放虚拟交换模块110将接收到的报文发送给连接跟踪子模块120;
S603,当该连接跟踪子模块120判断接收到的报文是首包数据报文所属的连接的后续包时,则直接根据报文的相关信息,确定该数据报文的连接信息,并将该数据报文的连接信息发送给开放虚拟交换模块110;
S604,开放虚拟交换模块110接收该数据报文的连接信息,并将该数据报文的连接信息返回,例如发送给需要的设备,或者该报文的连接信息可以实现防火墙的统一管理。
图7示出了本发明实施例提供的传输报文的系统700,该系统700包括:开放虚拟交换模块110和连接模块710,该开放虚拟交换模块110和该连接模块710工作在用户态下;
该开放虚拟交换模块110用于接收数据报文;
该开放虚拟交换模块110还用于向该连接模块710发送该数据报文;
该连接模块710用于存储与该数据报文的连接信息相关的第一信息,其中,该第一信息是通过与该数据报文的连接信息相关的控制报文的应用层信息得到的;
该连接模块710还用于接收该开放虚拟交换模块发送的该数据报文,并根据存储的该第一信息确定该数据报文的连接信息;
该连接模块710还用于将该数据报文的连接信息发送给该开放虚拟交换模块110。
作为一个可选实施例,该系统还包括应用层网关模块160,该应用层网关模块160工作在内核态下;
该应用层网关模块160用于:在该连接模块710接收该开放虚拟交换模块110发送的该数据报文之前,根据该控制报文的应用层信息确定该第一信息;
该应用层网关模块160还用于向该连接模块710发送该第一信息;
该连接模块710还用于接收该应用层网关模块160发送的该第一信息。
作为一个可选实施例,该连接模块710包括连接跟踪子模块120和报文期望子模140块,
该报文期望子模块140用于接收该应用层网关模块160发送的该第一信息;
该报文期望子模块140用于存储该第一信息;
该连接跟踪子模块120用于接收该开放虚拟交换模块110发送的数据报文;
该连接跟踪子模块120还用于确定该数据报文是否为数据通道的首包;
该连接跟踪子模块120还用于若该连接跟踪子模块120确定该数据报文为该数据通道的首包,向该报文期望子模块140发送该数据报文;
该报文期望子模块140还用于接收该连接跟踪子模块120发送的该数据报文,并根据该数据报文向该连接跟踪子模块120发送该第一信息;
该连接跟踪子模块120还用于接收该报文期望子模块140发送的该第一信息。
作为一个可选实施例,该开放虚拟交换模块110还用于:
在该应用层网关模块160根据该控制报文的应用层信息确定该第一信息之前,接收该控制报文,并将该控制报文发送给该连接跟踪子模块120;
该连接跟踪子模块120还用于接收该开放虚拟交换模块110发送的该控制报文;
该连接跟踪子模块120还用于向该应用层网关模块发送该第一控制报文;
该应用层网关模块160还用于接收该连接跟踪子模块120发送的该控制报文;
该应用层网关模块160还用于在接收到该控制报文之后,解析该控制报文的应用层信息得到该第一信息,并将该第一信息发送给该报文期望子模块140。
作为一个可选实施例,解析模块130,该解析模块130工作在用户态下;
该连接跟踪子模块120用于确定该控制报文是否为控制通道的首包;
该连接跟踪子模块120还用于若该控制报文为该控制通道的首包,向该解析模块130发送该控制报文;
该解析模块130用于接收该控制报文,并确定是否需要解析该控制报文的应用层信息;
该解析模块130还用于若该确定需要解析该控制报文的应用层信息,则向该连接跟踪子模块120发送指示信息,该指示信息用于指示需要解析该控制报文的应用层信息;
该连接跟踪子模块120用于接收该指示信息,并根据该指示信息将向该应用层网关模块160发送该控制报文。
作为一个可选实施例,该系统700还包括:适配模块150,该连接跟踪子模块120还用于向该适配模块150发送该控制报文;该适配模块150用于接收该连接跟踪子模块120发送的该控制报文,并将该控制报文的在用户态下的格式转换为该控制报文在内核态下的格式;该应用层网关模块160还用于接收该适配模块150发送的该控制报文。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称为“ROM”)、随机存取存储器(Random Access Memory,简称为“RAM”)、磁碟或者光盘等各种可以存储程序代码的介质。
以上该,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。