一种隧道报文的解析方法和装置的制造方法

文档序号:9791097阅读:816来源:国知局
一种隧道报文的解析方法和装置的制造方法
【技术领域】
[0001]本发明涉及通信领域,具体来说,涉及一种隧道报文的解析方法和装置。
【背景技术】
[0002]隧道报文是指利用一种网络协议来传输另一种网络协议的技术,该报文一般分为负载、内层、隧道层和外层。内层和负载是需要传输的原始数据,是一个完整的报文。隧道层用于对原始报文进行封装,根据隧道类型的不同,隧道层所使用的协议也不相同,隧道层主要包括GRE(Generic Routing Encapsulat1n,通用路由封装),GTP(GPRS TunnellingProtocol,GPRS隧道协议),L2TP(Layer 2 Tunneling Protocol,二层隧道协议)等。原始报文经隧道层封装后,还需要封装外层(网络层、传输层),以使报文能在网络中传输。其中,报文的解析是指提取出各种协议报文的关键信息的过程,如提取IP地址等。
[0003]随着计算机网络的飞速发展,传统的IPv4协议在地址资源、服务质量(QoS)、安全性、移动性等方面都面临着严峻的挑战,为此IETF(互联网工程任务组,InternetEngineering Task Force)设计了用于替代IPv4协议的下一代IP协议(IPv6)。然而,从IPv4过渡到IPv6是一个非常缓慢的过程,即目前正处于过渡期,网络中同时存在老的只支持IPv4的设备、新的支持I Pv4和I Pv6双栈的设备以及只支持IPv6的设备。支持不同协议类型的设备之间的互联往往使用隧道协议实现。目前常用的隧道协议包括:IPv4 over IPv6、IPv6 over IPv4、IPv4 in IPv4、IPv6 in IPv6、GRE、GTP、MIP、IPSec、L2TP、PPTP、Teredo、6to4等等。相对于单层的协议,这些隧道报文的识别解析非常耗时,严重影响系统的性能,并且由于隧道类型在不断增加,对隧道报文的识别解析扩展性要求很高。
[0004]传统基于软件的报文解析(如Wireshark等),增加协议相对容易,但其性能较差,难于满足10G链路的数据处理要求。基于软件的协议解析,能支持多种复杂协议的解析,但其性能受限于CPU的性能,一颗高性能的CPU解析复杂报文的速率远低于1Gbps。因此在高性能的网络设备中,通常需要硬件进行加速。FPGA(Field — ProgrammabIe Gate Array,现场可编程逻辑阵列)具有高性能、可编程等优点,很多高端网络流量处理系统都是基于FPGA实现的,适合作为协议解析加速器件。基于FPGA实现的隧道报文解析,可以提高解析的速率。为此,现有技术中设计了一种基于FPGA实现的隧道报文解析的方法,在满足性能要求的同时,增加了解析的扩展性。
[0005]现有的实现方案主要是基于状态机顺序跳转的协议解析,如图1所示,解析开始时,状态机处于初始IDLE状态,然后提取出最外层的协议类型,根据协议类型的不同,状态机跳转至相应的状态;新状态的操作类似,仍然是先提取下一层的协议类型,继续跳转,直到头部解析完成。
[0006]基于状态机的协议解析流程清晰,充分发挥了FPGA高性能的特点,能很好的满足简单协议解析的需求。然而,这种解析方法面临严重的扩展性问题,当需要支持的协议增加时,需要向状态机中增加新的状态。此外,隧道报文通常包含多层头,随着协议数量和协议中协议头层数的增加,状态机越来越复杂,导致FPGA电路实现困难。
[0007]针对相关技术中的问题,目前尚未提出有效的解决方案。

【发明内容】

[0008]针对相关技术中的问题,本发明提出一种,能够一种隧道报文的解析方法和装置,能很好的支持多种隧道协议,并且对隧道报文的层数无限制。在保证高性能的前提下,提高了隧道报文解析的扩展性,能方便地添加解析的协议。
[0009]本发明的技术方案是这样实现的:
[0010]根据本发明的一个方面,提供了一种隧道报文的解析方法。
[0011]该方法包括:
[0012]S1:获取隧道报文当前层的协议类型信息;
[0013]S2:根据协议类型信息查询协议类别编码表和当前层头长度表,获取下一层协议的类型及其起始位置;
[0014]S3:重复步骤SI和S2,直到隧道报文解析完成。
[0015]优选地,当前层的协议类型信息至少包括:
[0016]当前层的协议类型、当前层的头长度字段和下一层协议的类型字段。
[0017]优选地,输入协议类别编码表的信息包括当前层的协议类型和下一层协议的类型字段,输出协议类别编码表的信息为下一层的协议类型。
[0018]优选地,输入当前层头长度表的信息包括当前层的协议类型和当前层的头长度字段,输出当前层头长度表为下一层协议的起始位置。
[0019]优选地,当隧道报文中增加新类型协议时,在协议类别编码表和当前层头长度表中增加新类型协议的表项。
[0020]根据本发明的另一方面,提供了一种隧道报文的解析装置。
[0021]该装置包括:
[0022]获取模块,用于获取隧道报文当前层的协议类型信息;
[0023]查询模块,用于根据协议类型信息查询协议类别编码表和当前层头长度表,获取下一层协议的类型及其起始位置;
[0024]重复模块,用于重复获取模块和查询模块的操作,直到隧道报文解析完成。
[0025]优选地,当前层的协议类型信息至少包括:
[0026]当前层的协议类型、当前层的头长度字段和下一层协议的类型字段。
[0027]优选地,查询模块,进一步用于输入协议类别编码表的信息包括当前层的协议类型和下一层协议的类型字段,输出协议类别编码表的信息为下一层的协议类型。
[0028]优选地,查询模块,进一步用于输入当前层头长度表的信息包括当前层的协议类型和当前层的头长度字段,输出当前层头长度表为下一层协议的起始位置。
[0029]优选地,增加模块,用于当隧道报文中增加新类型协议时,在协议类别编码表和当前层头长度表中增加新类型协议的表项。
[0030]本发明通过在报文解析过程中,利用协议类型编码表和当前层头长度表,将不同协议的解析过程统一为信息提取和查表两个阶段。当需要增加新的协议时,只需要在两张表中添加对应的表项即可支持,因此,能很好的支持多种隧道协议,并且对隧道报文的层数无限制。在保证高性能的前提下,提高了隧道报文解析的扩展性,能方便地添加解析的协议。
【附图说明】
[0031]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032]图1是现有技术中基于状态机的协议解析的流程图;
[0033]图2是典型的隧道报文的结构图;
[0034]图3根据本发明实施例的隧道报文的解析方法的流程图;
[0035]图4根据本发明实施例的隧道报文解析的流程图;
[0036]图5根据本发明实施例的隧道报文的解析装置的框图。
【具体实施方式】
[0037]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0038]如图2所示,一个典型的隧道报文包括7层,要完成隧道报文的解析需要逐层对协议进行识别并提取相应的信息。每一层的解析需要得到当前层的头长度字段(协议头中表示协议头长度的字段)和下一层的协议类型字段(协议头中表示下一层协议类型的字段),并由此推算出下一层协议的起始位置和协议类型。由于每一层均可能有多种分支,传统基于状态机的方法不适合对隧道报文进行解析。对典型的隧道报文协议进行分析后发现以下特点:
[0039]1、隧道报文的内层协议和外层协议均包含三层协议和四层协议,可以通过重复查找共用相关的资源,其中,三层协议指的是IP协议,四层协议指的是TCP/UDP协议;
[0040]2、一般来讲,下一层协议的类型可以根据当前层的类型及当前层的协议类型字段查找得到。例如在IPv4协
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1