可配置的数据包解码系统及方法与流程

文档序号:14713991发布日期:2018-06-16 00:58阅读:403来源:国知局
可配置的数据包解码系统及方法与流程

本发明涉及数据处理技术领域,具体地,涉及一种可配置的数据包解码系统及方法。



背景技术:

当用户在使用某企业开发的解码应用的时候,用户往往希望自己也能够通过配置使用某种通俗易懂的语言来自我实现解码,以解析自定义的应用协议,而不需要请开发应用的企业做进一步的开发,增加沟通和开发上的成本。

目前常用的协议解码技术为插件技术,将协议的解码程序做成插件,当协议更新时,需要重新更改相应的协议解码插件程序。此种方法具有一定的灵活性,无需更改主程序,只需更新插件即可。但是每当协议更新时,都需重新修改插件程序,并对用户进行软件升级服务。除此以外,其缺陷还包括:

1、解码协议非可配置,而是固定支持的若干协议,如果用户主观上想要去除不关心的字段时,不能支持;

2、某些用户自定义的协议,不能提供接口给客户自行撰写;

3、有些解码软件还会受到平台限制,只能在windows下使用。

例如:公开号为CN104104680A的专利公开了一种采用形式化描述语言进行RapidIO协议解码的方法,只能用来解码RapidIO协议,不支持其他协议的解码;公开号为CN102075512A的专利公开了一种网络协议解码器和解码方法,虽然比前述专利能解码更多的协议,但是不能配置,更不支持自定义语言解码的功能。

如何设计一种形式化语言,简单明了,用户一看就能掌握,又可充分描述协议特征,让用户自己能方便的实现解码器去解码自定义的协议,实现用户自我维护是目前所面临的难题。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种可配置的数据包解码系统和方法。

根据本发明提供的一种可配置的数据包解码系统,包括:

转义模块:将xdl语言解析成java语言;

解码模块:解析java语言中的全部或部分业务信息到一个健值对数据集合中;

输出模块:将健值对数据集合输出。

优选的,还包括:

展示模块:将健值对数据集合进行展示。

优选的,所述输出模块将健值对数据集合通过ZMQ的方式发送到BPC平台。

优选的,所述xml标签包括:

buffer标签:获取当前buffer的信息,或对buffer进行操作;

core标签:包括与解码逻辑有关的方法;

流程控制标签:控制逻辑;

描述协议结构标签:描述协议结构;

调试打印日志标签:打印上下文变量,支持EL表达式,打印的内容记录在日志中;

自动检测标签:自动侦测协议或者在多种上层协议中找到匹配协议。

优选的,在所述转义模块中,将配置文件中xdl语言解析成java语言,其中,所述配置文件包括自定义的xdl语言,所述xdl语言由若干xml标签组成。

根据本发明提供的一种可配置的数据包解码方法,包括:

转义步骤:将xdl语言解析成java语言;

解码步骤:解析java语言中的全部或部分业务信息到一个健值对数据集合中;

输出步骤:将健值对数据集合输出。

优选的,还包括:

展示步骤:将健值对数据集合进行展示。

优选的,所述输出步骤将健值对数据集合通过ZMQ的方式发送到BPC平台。

优选的,所述xml标签包括:

buffer标签:获取当前buffer的信息,或对buffer进行操作;

core标签:包括与解码逻辑有关的方法;

流程控制标签:控制逻辑;

描述协议结构标签:描述协议结构;

调试打印日志标签:打印上下文变量,支持EL表达式,打印的内容记录在日志中;

自动检测标签:自动侦测协议或者在多种上层协议中找到匹配协议。

优选的,在所述转义步骤中,将配置文件中xdl语言解析成java语言,其中,所述配置文件包括自定义的xdl语言,所述xdl语言由若干xml标签组成。

与现有技术相比,本发明具有如下的有益效果:

1)底层实现使用java语言,不受平台限制;

2)方便与web集成,结合目前的codemirror在线代码编辑的技术,可以方便的让用户随时编写,即刻解码出数据,所见即所得的效果;

3)用户不再只是给多少协议解码器,就只能用多少的局面,对于某些简单的定长流量不用再苦求与应用供应方,自身就能通过配置中撰写自定义的语言即刻解码输出想要的关键数据;

4)采用动态加载机制,用户在解码过程中需要修改解码配置,不需要重启应用就能实现修改;

5)是一种简单易学的形式化语言,无需用户再去学习某些复杂难懂的高级语言。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明一个用户解码配置示意图;

图2为本发明的工作流程图;

图3为本发明的标签分类示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

本发明以BPC(Business Planning&Consolidation,前身是Outlooksoft)产品作为平台,通过底层的DCD解码模块实现配置解码,譬如目前已实现dsl解码器,我们可以通过在解码配置中配置我们自定义的XML语言标签结构,每个标签各自实现一种流程控制语言,通过组装这些标签便能够实现协议解码

如图1所示,给出的一个简单的可配置的自定义语言解码配置,其中协议名为dsl。<![CDATA[节点之间的内容为xdl语言,它主要是由若干xml标签组成,用于控制执行流程,输出解码字段等许多功能,会在后文中详解。由于其中xdl语言部分是用户自由撰写的,所以当有用户自定义的协议或有协议的规范发生改变时,可以自由改动配置中xdl语言内容实现解码,不用再向开发方提出需求。而且即使是提出了需求,开发方给出新的安装包后还要进行软件升级,重启服务有许多啰嗦的事情。不如配置中协议解码语言代码一改就能立即生效。

如图2所示的从数据产生到最后看到解码输出效果的工作流程图:

一、数据源,配置文件

数据源在运行模式下就是网口上监听的真实流量,在文件模式下是以pcap文件形式存在,配置文件是BPC在初始化创建时自动生成的,唯一需要修改的是监听的当前捕获点的协议配置。如果当前协议是json则可以配置json协议,如果是安装包已支持的协议还可以通过现有的自动检测功能进行检测自动配置。但如果是用户自己定义的一些协议,比如是个有规范说明的定长协议,不在安装包中支持的新的协议,此时用户可以在配置中撰写xdl语言实现协议解码,此解码语言已经对字节解码的各种形式编码输出做了一层封装,用户无需有高级语言基础,在花2个小时左右阅读xdl语言解码使用手册后,就能对大部分的简单的定长协议进行完美的解码,至于是稍微复杂的8583协议,分隔符协议也只需再稍微深入了解一些标签特性也能实现解码,而更复杂的报文则需要进行一定的培训也能实现解码。使用的广为熟知的xml标签,内部的一些解码字节的复杂逻辑已经内部封装掉了,对外暴露的都是很简单通俗易懂的xml标签,学习成本大大降低。

二、转义模块

将xdl中自定义的标签语法,流程控制语句解析成java语言。上文有提到是对内部的高级语言复杂逻辑进行封装,所以在解析xdl语言的时候会将标签先转义成高级语言解码协议的方式。

三、解码模块

结合我们现有的解码模块通过转义后的语言解析报文中有价值的业务信息到一个键值对数据集合中,此集合中包含的就是用户最关心的业务信息,关联字段,返回码等。

四、输出模块

将这个集合通过ZMQ(ZeroMQ)的方式发送到BPC中。

五、BPC页面展示

将数据集合在BPC平台的页面做展示,用户就能所见即所得的获取大数据解析后的结果。

如图3所示的是标签分类示意图:

一、buffer标签

xdl定义了一系列关于buffer的操作,可用于获取当前buffer的信息,或对buffer进行操作。

特别声明的是目前buffer标签已支持检索,解压缩,反序列化功能。

比如举例<buf:uncompress type="zlib">可以对任意buffer进行解压,例子中使用的是zlib解压缩,如果是gzip解压,则type类型填写gzip即可。

二、core标签

core主要包括一些与内部解码逻辑有关的方法,缓存记录或者设置请求响应rra等。

比如<core:setSameSideFlowValues key="transcode"value="10032"/>,可以将当前交易代码缓存在当前一侧(比如请求侧)的缓存中,然后通过<core:getPeerSideFlowValues...>标签取出在对侧(比如响应侧)进行处理

三、流程控制标签

用于控制逻辑的tag,如:if、else、while等。

比如<for var="i"begin="0"end="3">,指的是循环遍历3次,begin是遍历开始位置,end是遍历结束位置,var是存放值的变量。

四、描述协议结构标签

用于描述协议结构的tag,如:field、bitmap等。

<field name="TransType">

<L>4</L>

</field>

描述的就是输出4字节ASCII编码的字符串。

还有如bitmap标签主要是用于解析8583协议结构,8583协议有个位图128个域概念,需要输出哪些域由位图决定,此标签就是为了解决这个需求应运而生。

五、调试打印日志标签log

用于打印上下文变量,支持el表达式,打印的内容记录在日志中。

六、自动检测标签

如autodetect标签,自动检测功能用于自动侦测协议或者在多种上层协议中找到匹配协议。

六、EL表达式,函数支持

最简单比如用于字符串操作,想做拼接,截断,匹配,转成大小写等皆可。

由于本发明本身已经是一个被实现的解码方案,所以提供有详细的说明书和web调试平台还有样例,使用者可以根据说明书在调式平台上一边学习标签的用法,一边调式现有的样例做更深入的学习和认知。

本发明的具体实施如下:

1、部署BPC系统;

2、在协议配置文件中配置dsl协议,在<![CDATA[节点之间撰写xdl语言,撰写规则会提供相应的说明手册。简单举例可以参考附图中的图1,主要是由若干流程控制标签组成,其中核心的field标签用于流式读入二进制字节解析转换成人肉可读的文本内容,用于输出业务上核心字段并可将其用作交易字段关联;

3、然后就是由BPC监控有业务数据流量的端口,对相应的端口进行解码,输出的结果会显示在BPC系统平台页面上,然后就可以做交易关联,计算响应率和成功率了。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1