一种通用的针对应用层协议的IPv4/IPv6数据翻译网关及方法

文档序号:9690858阅读:1291来源:国知局
一种通用的针对应用层协议的IPv4/IPv6数据翻译网关及方法
【技术领域】
[0001] 本发明属于互联网技术领域,特别涉及一种通用的针对应用层协议的IPv4/IPv6 数据翻译网关及方法。
【背景技术】
[0002] 随着互联网的发展,IPv4地址资源已经枯竭,而下一代网络协议IPv6是互联网工 程任务组(Internet Engineering Task Force)建议的解决方案。但是IPv6不支持向后兼 容IPv4,所以IPv4向IPv6的过渡正在成为当今互联网发展的严峻挑战。而且,由于基础设施 的升级以及数据的迀移等多方面存在困难,对于互联网内容提供商(ICP)来说,向IPv6的转 换不能在较短的时间内完成。与此同时,绝大多数用户操作系统都已经支持IPv6协议,并且 IPv6用户数量在迅速上涨。因为IPv4地址严重短缺,一些互联网服务提供商(Internet Service Provider)的新建网络使用了IPv6单协议栈而不是IPv4/IPv6双协议栈。因此,弥 补IPv4与IPv6之间的隔阂是网络协议过渡时期的重要任务。
[0003] 为了给IPv6单栈用户提供IPv4网络服务,一种常见手段是建立IPv4/IPv6翻译网 关。现在已经有若干基于翻译原理的实现,比较常用的是由互联网工程任务组设计的 NAT64。它将收到的每一个IPv6报文的协议头替换成IPv4协议头,并转发;反之亦然。IPv4与 IPv6的转换映射关系记录在内部的动态映射表中。但很多应用层协议的数据中也包含IP地 址等信息,这些信息可能被用来建立新的连接或者发起新的请求,例如:HTTP协议中的一个 用于传输HTML页面的数据报文携带了一个带有IP地址形式的URL,如果这个地址没有被翻 译,那么用户将不能访问该URL指向的资源。而对于其他应用层协议来说,这样的错误可能 会导致应用程序崩溃。并且现有的翻译网关不能支持很多私有应用层协议,这也导致IPv4 向IPv6过渡困难。
[0004] 针对上述情况,一种有效的解决方法是实现一个应用层的翻译网关,即应用层网 关(Application Layer Gateway)。近年来,应用层网关已经成为解决应用层协议问题的重 要手段。但实际上,开发一个用于IPv4/IPv6翻译的应用层网关是很困难的,主要因为:其 一,应用层协议种类繁多,其对于协议格式的定义差别很大,针对每一种协议都设计一个翻 译网关代价巨大,甚至很多互联网内容提供商使用私有协议,无法为其设计翻译网关;其 二,正确性不易保证,同样的内容可能有不同的语义,比如HTTP协议中发现了一个IP地址, 但其可能仅是页面上显示的文本,并不用来请求其他页面,这使自动识别协议内容的实现 变得很困难;其三,翻译网关处理一个数据报文不仅要解析其内容格式,还要对相应的数据 进行修改,这对于性能提出了很高的要求,并且考虑到灵活性亦不能使用硬件实现。

【发明内容】

[0005] 为了克服上述现有技术的缺点,本发明的目的在于提供一种通用的针对应用层协 议的IPv4/IPv6数据翻译网关及方法,通过应用层翻译器对不同IP协议的报文进行翻译,允 许IPv6用户访问基于IPv4的服务,提供高效的IPv6与IPv4的互联。
[0006] 为了实现上述目的,本发明采用的技术方案是:
[0007] 一种通用的针对应用层协议的IPv4/IPv6数据翻译网关,部署于ICP侧,将上行 IPv6数据报文翻译成IPv4数据报文,将下行IPv4数据报文翻译成IPv6数据报文,其翻译内 容包括IP数据报文头部以及下行IPv4数据报文中包含的用于建立数据连接的IPv4地址。
[0008] 其中:网关体系中包括如下模块:
[0009] 分类器,决定接收到的数据报文的应用层协议类型:当一个新的数据报文到来时, 分类器根据传输层协议及端口来决定该数据报文的应用层协议类型,然后调用对应的解析 器来解析该数据报文,如果根据上述条件有多个协议同时匹配成功,则轮流调用对应的解 析器,直到有一个协议的解析器接受该数据报文;如果分类器判定该数据报文不需要处理 跨协议的翻译,则跳过应用层处理;
[0010] 解析器,分析应用层数据并根据翻译规则产生将会应用于该数据报文的翻译操 作;
[0011] 数据报文修改模块,执行解析器生成的翻译操作;
[0012] TCP 管理器;
[0013] 流状态管理器:与上述其它各模块交互来获取、提供以及更新各种状态信息。
[0014] 所述解析器包括由生成引擎根据协议描述语言生成可执行的应用层协议解析程 序,其输入为对于某应用层协议格式的描述,输出为能够被数据报文处理引擎调用的可执 行程序代码,该代码中包括处理引擎应当对该协议的数据报文做出的翻译操作。
[0015] IPv4的地址为IPx,端口为PORTx,所述翻译规则为:IPx,P0RTx->IPy,P0RTy;
[0016] 当解析器找到了 IPv4的地址IPx和端口 PORTx,然后调用流管理器查找到用于替换 的IPv6的地址IPy和端口 PORTy,则根据翻译规则产生相应的操作,将IPx替换成IPy,将 PORTx 替换成 PORTy。
[0017] 所述数据报文处理引擎包含三个功能模块:解析器、数据报文修改模块以及TCP管 理器,数据报文处理引擎采用基于报文的数据处理机制,利用所述解析器对相应协议数据 报文进行解析,找到所有需要翻译操作的字段,包括其位置、长度,并执行相应的翻译操作。
[0018] 所述协议描述语言结合了词法分析和语法分析功能,并提供如下额外特性:自动 生成终结符的正则表达式,进而转换成具体的可执行代码;提供常用的翻译操作接口,使得 仅用一行命令来代表原来多行代码才能实现的翻译操作;以及自动添加异常处理操作,来 支持一定程度上的自动异常恢复。
[0019] 所述数据报文修改模块中,所有的翻译操作最终均转换成文本替换操作。
[0020] 在所述数据报文修改模块中,采用如下算法来加速修改操作的执行过程:
[0021] 首先,将操作集根据操作开始位置升序排序,对于每个目标位置,判断是应该选择 来自操作的结果还是原始的文本,如果某一个操作的结果被选取了,新的数据将被拷贝到 目标位置,同时原始文本的遍历指针将跳至该操作数据的结尾。
[0022] 所述TCP管理器,一方面跟踪更新TCP序号和ACK序号,以处理TCP报文的无序接收; 另一方面提供缓存能力,以处理TCP重传和跨越数据报文的应用层协议字段。
[0023] 本发明还提供了一种基于所述通用的针对应用层协议的IPv4/IPv6数据翻译网关 的方法,包括如下步骤:
[0024] 步骤1:用户使用协议描述语言对其使用的应用层协议进行代码描述,包括协议头 部格式及内容格式,标记出需要执行翻译操作的字段,并指定在该字段上执行的操作;
[0025] 步骤2 :根据步骤1中用户的代码描述,生成可执行的解析器子程序;首先,自动补 全代码描述中缺失的规则,包括终结符的正则表达式以及将预定义的操作接口展开为C++ 代码,补全后的代码作为中间代码;然后,将中间代码分离为词法规则和语法规则,分别送 往对应的分析程序;最后,生成解析器的C++代码,并集成到翻译网关中供其他模块调用;
[0026] 步骤3:当一个报文到来时,首先被分类器接收并进行分类;分类是根据传输层协 议及端口号,如果能够匹配某个应用层协议的解析器,则调用该解析器执行后续操作;如果 匹配到多个应用层协议,则轮流调用其对应的解析器,直到存在某解析器表示接受该数据 报文的格式;如果分类器判定该数据报文不需要处理跨协议的翻译,则跳过应用层处理;
[0027] 步骤4:由步骤3调用的解析器对传入的数据报文的应用层数据进行分析,找到所 有需要被翻译的协议字段,包括其位置和长度,并查询流管理器来获取翻译之后的值,并将 这些信息传递给数据报文修改模块;
[0028] 其中,对于一个数据流的不同方向,将创建两个独立的解析器分别处理,当一个报 文处理完毕而数据流未结束时,则解析器状态被保存,等待下一个该数据流的报文到来之 后,再恢复运行;
[0029] 步骤5:数据报文修改模块接收步骤4中解析器所传递的参数,并执行其中包含的 操作;
[0030]步骤6:将修改之后的报文重新封装并转发,并在每接收到一个新的数据报文时重 复步骤3-6。
[0031] 本发明使得IPv6单栈用户能够访问原有IPv4服务,并能够方便地支持多种应用层 协议,从而有效实现IPv4与IPv6的互联。与现有技术相比,本发明的有益效果是:
[0032] 1、可以使用经过特殊设计的语言来定义应用层协议的格式,从而支持多种应用层 协议,并且此语言简单方便,降低了实际部署的复杂程度。
[0033] 2、针对每个单独的数据报文进行解析和翻译,并应用了更高效的修改算法,相比 于针对数据流的操作在性能上有所提升。
【附图说明】
[0034] 图1是本发明通用的针对应用层协议的IPv4/IPv6数据翻译网关宏观示意图。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1