一种报文转发方法及板卡与流程

文档序号:14351187阅读:174来源:国知局
一种报文转发方法及板卡与流程

本发明涉及数据通信技术,特别涉及ipv6报文向ipv4报文快速转换处理的技术。



背景技术:

随着ipv4公有地址耗尽,运营商可以用ipv6方式提供用户接入服务;但是目前internet上绝大多数业务仍是纯ipv4业务,为了在ipv4-ipv6迁移过程中,实现ipv6主机与ipv4服务器之间的通信,可以采用nat64方案进行部署。

nat64部署在路由器上,需要根据转换规则将ipv6报文转换为ipv4报文,在转换方式上,有如下几个已经实现的方案:

1、开源内核实现的nat64模块:开源内核只实现了ipv6地址向ipv4地址的转换,并没有做到端口复用,而且只是实现个人电脑级的应用,适用范围无法满足大规模网络部署要求。

2、迈普通信技术股份有限公司低端路由器上实现的nat64方案:该低端路由器是在转发平台的fwd_in阶段对ipv6报文查找转发规则并生成转换表项,后续同一条报文流的报文匹配转换表项进行转换即可加速处理。该方案的问题是:1)、转换表项包括了匹配和处理两部分数据,而且只能由nat64模块组织使用,在转发平台整体看来浪费了内存和转发效率;2)在跨卡场景下,转换表项固定生成在fwd_in接口所在的板卡上,回程的报文在其他板卡不能查找到转换表项,这就造成会出现转发故障,即该方案不支持跨卡,对于大规模部署场景有一定影响。



技术实现要素:

本发明的目的就是为了解决目前ipv6报文向ipv4报文转换处理技术不能跨卡从而影响大规模部署的问题,提供一种报文转发方法及板卡。

本发明解决其技术问题,采用的技术方案是,一种报文转发方法,包括以下步骤:

板卡接收到ipv6报文,且该ipv6报文不携带nat64标记时:

步骤a1、判断该ipv6报文是否为对应数据流的首报文,若是则进入步骤a2,否则进入步骤a3;

步骤a2、判断该ipv6报文是否需要跨卡传输,若是则将目的板卡信息写入为对应数据流建立的连接跟踪记录中,并将其发送给对应目的板卡,否则通过转发规则生成转换表项写入对应数据流的跟踪记录中,根据转换表项将该ipv6报文转换为ipv4报文,打上nat64处理完毕标记并继续ipv4转发处理;

步骤a3、根据对应数据流的连接跟踪记录判断是否需要跨卡传输,若是则将其发送给对应目的板卡,否则根据对应数据流的连接跟踪记录中的转换表项将该ipv6报文转换为ipv4报文,打上nat64处理完毕标记并继续ipv4转发处理;

板卡接收到ipv4报文,且该ipv4报文不携带nat64标记时:

步骤b1、判断该ipv4报文是否为对应数据流的首报文,若是则进入步骤b2,否则进入步骤b3;

步骤b2、通过转发规则生成转换表项写入对应数据流的连接跟踪记录中,根据转换表项将该ipv4报文转换为ipv6报文,打上nat64处理完毕标记并继续ipv6转发处理;

步骤b3、根据对应数据流的连接跟踪记录中的转换表项将该ipv4报文转换为ipv6报文,打上nat64处理完毕标记并继续ipv6转发处理。

具体的,步骤a2中,所述判断该ipv6报文是否需要跨卡传输的方法为:根据该ipv6报文目的地址提取转换后的ipv4报文目的地址,根据该转换后的ipv4报文目的地址查找到目的路由,根据目的路由判断是否需要跨卡传输。

进一步的,步骤a2及步骤b2中,所述转发规则为nat64规则。

具体的,步骤a2中,所述通过转发规则生成转换表项写入对应数据流的连接跟踪记录中,根据转换表项将该ipv6报文转换为ipv4报文并处理是指:根据nat64规则得到转换后的ipv4五元组,并将其写入对应数据流的连接跟踪记录中,生成ipv4连接跟踪记录,并将该ipv6报文转换为ipv4报文,且为其打上nat64处理完毕标记。

再进一步的,步骤b2中,所述通过转发规则生成转换表项写入对应数据流的连接跟踪记录中,根据转换表项将该ipv4报文转换为ipv6报文并处理是指:根据nat64规则得到转换后的ipv6五元组,并将其写入对应数据流的连接跟踪记录中,生成ipv6连接跟踪记录,并将该ipv4报文转换为ipv6报文,且为其打上nat64处理完毕标记。

一种报文转发的板卡,其特征在于,包括通讯模块、转换处理模块及判断处理模块,

所述通讯模块,用于接收ipv4报文及ipv6报文,并转发ipv4报文及ipv6报文;

所述转换处理模块,用于根据判断写入模块的控制通过转发规则生成转换表项将需要的ipv6报文转换为ipv4报文或将需要的ipv4报文转换为ipv6报文,或根据判断处理模块的控制从对应数据流的连接跟踪记录中获取转换表项将需要的ipv6报文转换为ipv4报文或将需要的ipv4报文转换为ipv6报文;

所述判断处理模块,用于当通讯模块接收到ipv6报文,且该ipv6报文不携带nat64标记时:判断该ipv6报文是否为对应数据流的首报文,当其为第一个报文时,继续判断其是否需要跨卡传输,若需要则将目的板卡信息写入为对应数据流建立的连接跟踪记录中,并通过通讯模块将其转发给对应目的板卡,若不需要则控制转换处理模块通过转发规则生成转换表项将该ipv6报文转换为ipv4报文,且将该转换表项写入到对应数据流的连接跟踪记录中,若不是第一个报文,则读取对应数据流的连接跟踪记录,根据对应数据流的连接跟踪记录判断是否需要跨卡传输,若需要则将其通过通讯模块将其转发给对应目的板卡,若不需要则控制转换处理模块从对应数据流的连接跟踪记录中获取转换表项将该ipv6报文转换为ipv4报文,且为其打上nat64处理完毕标记;

当通讯模块接收到ipv4报文,且该ipv4报文不携带nat64标记时:判断该ipv4报文是否为对应数据流的首报文,若是则控制转换处理模块通过转发规则生成转换表项将该ipv6报文转换为ipv4报文,且将该转换表项写入到对应数据流的连接跟踪记录中,否则控制转换处理模块从对应数据流的连接跟踪记录中获取转换表项将该ipv6报文转换为ipv4报文,且为其打上nat64处理完毕标记。

具体的,判断ipv6报文是否需要跨卡传输是指:根据该ipv6报文目的地址提取转换后的ipv4报文目的地址,根据该转换后的ipv4报文目的地址查找到目的路由,根据目的路由判断是否需要跨卡传输。

进一步的,所述转发规则为nat64规则。

具体的,所述通过转发规则生成转换表项将该ipv6报文转换为ipv4报文,且将该转换表项写入到对应数据流的连接跟踪记录中是指:根据nat64规则得到转换后的ipv4五元组,并将其写入对应数据流的连接跟踪记录中,生成ipv4连接跟踪记录,并将该ipv6报文转换为ipv4报文,且为其打上nat64处理完毕标记。

再进一步的,所述通过转发规则生成转换表项将该ipv6报文转换为ipv4报文,且将该转换表项写入到对应数据流的连接跟踪记录中是指:根据nat64规则得到转换后的ipv6五元组,并将其写入对应数据流的连接跟踪记录中,生成ipv6连接跟踪记录,并将该ipv4报文转换为ipv6报文,且为其打上nat64处理完毕标记。

本发明的有益效果是,通过上述报文转发方法及板卡,由于其仅在数据流的首报文时生成转换表项,并将其记录在对应数据流的连接跟踪记录中中,该报文流的后续报文直接从对应数据流的连接跟踪记录中中获取转换表项,大大提高了转发效率,且判断是否跨卡传输也仅在数据流的首报文中判断,并将目的板卡信息记录在对应数据流的连接跟踪记录中,该报文流的后续报文也不需要再次判断及查找目的路由,节省了路由查找的时间的同时,满足跨卡传输的要求。

附图说明

图1是本发明实施例中报文转发方法中接收到ipv6报文,且该ipv6报文不携带nat64标记时的流程图;

图2是本发明实施例中报文转发方法中接收到ipv4报文,且该ipv4报文不携带nat64标记时的流程图;

图3是本发明实施例中报文转发的板卡的系统框图;

图4是本发明实施例中转发平台系统的系统框图。

具体实施方式

下面结合实施例及附图,详细描述本发明的技术方案。

本发明的报文转发方法,当板卡接收到ipv6报文,且该ipv6报文不携带nat64标记时:首先判断该ipv6报文是否为对应数据流的首报文,若是第一个报文则判断该ipv6报文是否需要跨卡传输,若需要跨卡传输则将目的板卡信息写入为对应数据流建立的连接跟踪记录中,并将其发送给对应目的板卡,否则通过转发规则生成转换表项写入对应数据流的连接跟踪记录中,根据转换表项将该ipv6报文转换为ipv4报文,打上nat64处理完毕标记并继续ipv4转发处理,若不是对应数据流的首报文则根据对应数据流的的连接跟踪记录判断是否需要跨卡传输,若是则将其发送给对应目的板卡,否则根据对应数据流的连接跟踪记录中的转换表项将该ipv6报文转换为ipv4报文,打上nat64处理完毕标记并继续ipv4转发处理;当板卡接收到ipv4报文,且该ipv4报文带有nat64标记时:首先判断该ipv4报文是否为该对应数据流的首报文,若是则通过转发规则生成转换表项写入对应数据流的连接跟踪记录中,根据转换表项将该ipv4报文转换为ipv6报文,打上nat64处理完毕标记并继续ipv6转发处理,否则根据对应数据流的连接跟踪记录中的转换表项将该ipv4报文转换为ipv6报文,打上nat64处理完毕标记并继续ipv6转发处理。

本发明的报文转发的板卡,包括通讯模块、转换处理模块及判断处理模块,通讯模块用于接收ipv4报文及ipv6报文,并转发ipv4报文及ipv6报文;转换处理模块用于根据判断写入模块的控制通过转发规则生成转换表项将需要的ipv6报文转换为ipv4报文或将需要的ipv4报文转换为ipv6报文,或根据判断处理模块的控制从对应数据流的连接跟踪记录中获取转换表项将需要的ipv6报文转换为ipv4报文或将需要的ipv4报文转换为ipv6报文;判断处理模块用于:当通讯模块接收到ipv6报文,且该ipv6报文不携带nat64标记时,首先判断该ipv6报文是否为对应数据流的首报文,当其为对应数据流的首报文时,继续判断其是否需要跨卡传输,若需要则将目的板卡信息写入对应数据流的连接跟踪记录中,并通过通讯模块将其转发给对应目的板卡,若不需要则控制转换处理模块通过转发规则生成转换表项将该ipv6报文转换为ipv4报文,且将该转换表项写入到对应数据流的连接跟踪记录中,若不是对应数据流的首报文,则读取对应数据流的连接跟踪记录,根据对应数据流的连接跟踪记录判断是否需要跨卡传输,若需要则将其通过通讯模块将其转发给对应目的板卡,若不需要则控制转换处理模块从对应数据流的连接跟踪记录中获取转换表项将该ipv6报文转换为ipv4报文,并打上nat64处理完毕标记;当通讯模块接收到ipv4报文,且该ipv4报文不携带nat64标记时:判断该ipv4报文是否为该对应数据流的首报文,若是则控制转换处理模块通过转发规则生成转换表项将该ipv6报文转换为ipv4报文,且将该转换表项写入到对应数据流的连接跟踪记录中,否则控制转换处理模块从对应数据流的连接跟踪记录中获取转换表项将该ipv6报文转换为ipv4报文,并打上nat64处理完毕标记。

实施例

本发明实施例中报文转发方法,包括以下步骤:

板卡接收到ipv6报文,且该ipv6报文不携带nat64标记时,其流程图参见图1:

步骤a1、判断该ipv6报文是否为对应数据流的首报文,若是则进入步骤a2,否则进入步骤a3。

步骤a2、判断该ipv6报文是否需要跨卡传输,若是则将目的板卡信息写入为对应数据流建立的连接跟踪记录中,并将其发送给对应目的板卡,否则通过转发规则生成转换表项写入对应数据流的连接跟踪记录中,根据转换表项将该ipv6报文转换为ipv4报文,打上nat64处理完毕标记并继续ipv4转发处理。本步骤中,可以目的板卡信息写入为对应数据流建立的连接跟踪记录的某个标识字段中。

本步骤中,判断该ipv6报文是否需要跨卡传输的方法可以为:根据该ipv6报文目的地址提取转换后的ipv4报文目的地址,根据该转换后的ipv4报文目的地址查找到目的路由,根据目的路由判断是否需要跨卡传输。

且其中的转发规则优选为nat64规则,则通过转发规则生成转换表项写入对应数据流的连接跟踪记录中,根据转换表项将该ipv6报文转换为ipv4报文并处理可以为以下具体步骤:

根据nat64规则得到转换后的ipv4五元组,并将其写入对应数据流的连接跟踪记录中,生成ipv4连接跟踪记录,并将该ipv6报文转换为ipv4报文,且为其打上nat64处理完毕标记。

步骤a3、根据对应数据流的连接跟踪记录判断是否需要跨卡传输,若是则将其发送给对应目的板卡,否则根据对应数据流的连接跟踪记录中的转换表项将该ipv6报文转换为ipv4报文,打上nat64处理完毕标记并继续ipv4转发处理。

板卡接收到ipv4报文,且该ipv4报文带有nat64标记时,其流程图参加图2:

步骤b1、判断该ipv4报文是否为对应数据流的首报文,若是则进入步骤b2,否则进入步骤ba3。

步骤b2、通过转发规则生成转换表项写入为对应数据流建立的连接跟踪记录中,根据转换表项将该ipv4报文转换为ipv6报文,打上nat64处理完毕标记并继续ipv6转发处理。

本步骤中,转发规则优选为nat64规则,则通过转发规则生成转换表项写入对应数据流的连接跟踪记录中,根据转换表项将该ipv4报文转换为ipv6报文,打上nat64处理完毕标记并继续ipv6转发处理可以为以下具体步骤:

根据nat64规则得到转换后的ipv6五元组,并将其写入对应数据流的连接跟踪记录中,生成ipv6连接跟踪记录,并将该ipv4报文转换为ipv6报文,且为其打上nat64处理完毕标记。

步骤b3、根据对应数据流的连接跟踪记录中的转换表项将该ipv4报文转换为ipv6报文并处理。

本发明实施例中的报文转发的板卡,其系统框图参见图3,包括通讯模块、转换处理模块及判断处理模块。

通讯模块,用于接收ipv4报文及ipv6报文,并转发ipv4报文及ipv6报文。

转换处理模块,用于根据判断写入模块的控制通过转发规则生成转换表项将需要的ipv6报文转换为ipv4报文或将需要的ipv4报文转换为ipv6报文,或根据判断处理模块的控制从对应数据流的连接跟踪记录中获取转换表项将需要的ipv6报文转换为ipv4报文或将需要的ipv4报文转换为ipv6报文。

这里,转发规则优选为nat64规则,则通过转发规则生成转换表项将该ipv6报文转换为ipv4报文,且将该转换表项写入到对应数据流的连接跟踪记录中的具体步骤可以为:根据nat64规则得到转换后的ipv4五元组,并将其写入对应数据流的连接跟踪记录中,生成ipv4连接跟踪记录,并将该ipv6报文转换为ipv4报文,且为其打上nat64处理完毕标记;同理,通过转发规则生成转换表项将该ipv6报文转换为ipv4报文,且将该转换表项写入到对应数据流的连接跟踪记录中的具体步骤也可以为:根据nat64规则得到转换后的ipv6五元组,并将其写入对应数据流的连接跟踪记录中,生成ipv6连接跟踪记录,并将该ipv4报文转换为ipv6报文,且为其打上nat64处理完毕标记。

判断处理模块,用于:

当通讯模块接收到ipv6报文,且该ipv6报文不携带nat64标记时:

判断该ipv6报文是否为该对应数据流的首报文,当其为对应数据流的首报文时,继续判断其是否需要跨卡传输,若需要则将目的板卡信息写入为对应数据流建立的连接跟踪记录中,并通过通讯模块将其转发给对应目的板卡,若不需要则控制转换处理模块通过转发规则生成转换表项将该ipv6报文转换为ipv4报文,且将该转换表项写入到对应数据流的首连接跟踪记录中,若不是第一个报文,则读取对应数据流的首连接跟踪记录,根据对应数据流的首连接跟踪记录判断是否需要跨卡传输,若需要则将其通过通讯模块将其转发给对应目的板卡,若不需要则控制转换处理模块从对应数据流的首连接跟踪记录中获取转换表项将该ipv6报文转换为ipv4报文;

这里,判断ipv6报文是否需要跨卡传输的具体方法可以为:根据该ipv6报文目的地址提取转换后的ipv4报文目的地址,根据该转换后的ipv4报文目的地址查找到目的路由,根据目的路由判断是否需要跨卡传输。

当通讯模块接收到ipv4报文,且该ipv4报文不携带nat64标记时:

判断该ipv4报文是否为对应数据流的首报文,若是则控制转换处理模块通过转发规则生成转换表项将该ipv6报文转换为ipv4报文,且将该转换表项写入到为对应数据流建立的连接跟踪记录中,否则控制转换处理模块从对应数据流的连接跟踪记录中获取转换表项将该ipv6报文转换为ipv4报文。

本发明实施例中,以将上述两个报文转发的板卡与ipv6主机及ipv4主机一起组成转发平台系统为例进行说明,其系统框图参见图4,两个报文转发的板卡分别定为板卡1与板卡2,则ipv6主机与板卡1连接,ipv4主机与板卡2连接,板卡1与板卡2连接。

则按照上述方法或报文转发的板卡的处理方式可得:ipv6主机发送的ipv6报文必然需要板卡1发送给板卡2,由板卡2将转换得到的ipv4报文发送给ipv4主机,而ipv4主机发送的ipv4报文在板卡2中转换为ipv6报文后通过板卡1发送给ipv6主机。

从该转发平台系统整体看来,报文的匹配识别由连接跟踪管理(判断处理模块及转换处理模块的相应功能)实现,而不是现有技术中各转发业务自行匹配识别,而且本发明实施例中各业务(报文)的转换表项也记录在对应数据流的连接跟踪记录中,相比较现有技术中各转发业务独立记录匹配信息和转换表项,节省了匹配信息的多份内存复制,而且可以做到只匹配一次报文,后续业务使用连接跟踪管理的匹配结果,直接进行本业务处理,这样就提升了转发性能。

而其跨卡功能体现为:ipv6报文处理时根据该ipv6报文目的地址提取转换后的ipv4报文目的地址,根据该转换后的ipv4报文目的地址查找到目的路由,根据目的路由判断是否需要跨卡传输,若需要跨卡传输则将路由目的板卡信息记录在对应数据流的连接跟踪记录中,然后跨卡发送到目的板卡处理,在目的板卡上会重新生成对应数据流的连接跟踪记录,在这个板卡上新的连接跟踪记录才是转换表项,这样ipv4侧报文返回时可以通过转换表项修改为ipv6报文正确转发。本发明实施例中对跨卡场景的加速处理体现在跨卡路由作为对应数据流的连接跟踪记录信息记录在板卡1上,报文流的后续报文可以查找对应数据流的连接跟踪记录直接发送到目的板卡2,从而节省路由查找时间。

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