一种数据转发方法、装置以及计算机可读存储介质与流程

文档序号:17003464发布日期:2019-03-02 01:54阅读:144来源:国知局
一种数据转发方法、装置以及计算机可读存储介质与流程

本发明涉及通讯领域,尤其涉及一种数据转发方法、装置以及计算机可读存储介质。



背景技术:

中继器通过多条链路与路由器桥接,在数据传输时,需解决如何选择链路才能充分发挥链路的性能、提高吞吐量的问题。

目前的一种实现方法是,通过监听中继器上传到路由器的数据流,记录下每一条数据流的传输链路,当路由器需要向中继器传输一条数据流时,检测是否有相应的反向流从中继器传输到路由器的记录,若有,则这条数据流就会从其反向流的接收链路转发出去,即当中继器调整一条流到指定链路之后,路由器也会跟随中继器调整,把这条流的反向流从指定的链路转发出去,路由器跟随中继器调流的行为称为followre。但作为一个中继器,在实际应用中,以下行流传输为主,则与路由器之间传输的数据,能自主调整的大多数都是tcp-ack流之类的小数据流,而路由器会通过哪条链路向中继器传输数据,并不由中继器决定,因此,要实现此方法,还需要路由器支持followre功能。当路由器不支持followre功能时,这种方法能起到的提高吞吐量效果很微弱,而且目前大多数路由器不支持followre功能。即使路由器支持followre功能,某些情况下也可能出现followre功能失效的情况,比如中继器和路由器之间无线使用三地址的桥接方式。

路由器在转发数据时,会考虑两个参数,arp表和fdb表。路由器会根据数据的目的ip地址查询arp表得到目的mac地址,然后通过目的mac地址查询fdb表,找到转发端口,并通过此端口转发数据。针对此方法,如果一个中继器上的客户端,在同时收发多条数据流,并且这些流在经过中继器转发到路由器时选择了不同的链路,会导致路由器生成不稳定的fdb表,从而造成路由器转发目的地址为此客户端的数据流时,选择的链路不确定的现象,而且如果中继器和路由器之间是通过三地址桥接的,还可能会造成路由器的arp表不稳定的现象。



技术实现要素:

本发明实施例提供一种数据转发方法、装置以及计算机可读存储介质,能有效解决现有技术上中继器的客户端数据从不同的链路转发至路由器且导致arp表和fdb表不稳定的问题,能有效提高吞吐量。

本发明一实施例提供一种数据转发方法,包括:

当接收到任一客户端传来的数据时,通过调用钩子函数判断所述数据所属的客户端;

根据所述客户端的信息指定唯一的转发端口号,根据所述转发端口号获取与所述客户端对应的唯一的转发端口,通过所述转发端口转发所述数据至路由器。

与现有技术相比,本发明实施例公开的数据转发方法,通过根据所述客户端的信息指定唯一的转发端口号,根据所述转发端口号获取与所述客户端对应的唯一的转发端口,通过所述转发端口转发所述数据至路由器,能有效指定任一客户端数据的转发端口,均衡链路负载,提高吞吐量。

作为上述方案的改进,当接收到任一客户端传来的数据时,通过调用钩子函数判断所述数据所属的客户端前,还包括步骤:

配置用于桥接路由器的端口为上行口,配置用于客户端访问的端口为下行口。

作为上述方案的改进,当接收到任一客户端传来的数据时,通过调用钩子函数判断所述数据所属的客户端前,还包括步骤:

通过内核模块注册或重定向钩子函数;其中,所述钩子函数包括netfilter。

作为上述方案的改进,根据所述客户端的信息指定唯一的转发端口号,根据所述转发端口号获取与所述客户端对应的唯一的转发端口,通过所述转发端口转发所述数据至路由器,具体为:

查询ha表中是否存在所述客户端对应的ha条目,当所述ha表中存在所述客户端对应的ha条目时,生成所述ha条目中的转发端口号;其中,所述ha表用于收集所述ha条目;所述ha条目用于标识所述数据并指定所述数据的转发端口;

当所述ha表中不存在所述客户端对应的ha条目时,查询fdb表中是否存在所述客户端对应的fdb条目;

当所述fdb表中存在所述客户端对应的fdb条目时,判断所述转发端口的属性;

当所述转发端口为下行口时,在所述ha表中生成所述客户端对应的ha条目,生成fdb查询的转发端口号;

当所述转发端口为上行口时,查询hc表中是否存在所述客户端对应的hc条目;其中,所述hc表用于收集所述hc条目;所述hc条目用于标识所述客户端并指定所述客户端的数据转发端口;

当所述hc表中存在所述客户端对应的hc条目时,在所述ha表中生成所述客户端对应的ha条目,并生成hc查询的转发端口号;

当所述hc表中不存在所述客户端对应的hc条目时,根据最优链路参数在所述hc表中生成所述客户端对应的hc条目,在所述ha表中生成所述客户端对应的ha条目,并生成hc查询的转发端口号。

作为上述方案的改进,最优链路参数用于指向当前时刻的最优链路,具体为:

周期性监听应用层中实时的链路状态,当任意时刻检测到超载链路时,通过netlink消息通知内核模块,修改hc条目,将超载链路上的部分客户端的数据调整到除所述超载链路外的其他链路上,并在最优链路参数中指定当前时刻的最优链路;其中,所述最优链路为负载最小的链路。

作为上述方案的改进,当所述fdb表中不存在所述客户端对应的fdb条目时,标记所述转发端口号为空,采用预设的转发规则指定所述数据的转发端口,通过所述转发规则指定的转发端口转发所述数据。

本发明另一实施例对应提供了一种数据转发装置,包括:

客户端信息获取模块,用于当接收到任一客户端传来的数据时,通过调用钩子函数判断所述数据所属的客户端;

数据转发模块,用于根据所述客户端的信息指定唯一的转发端口号,根据所述转发端口号获取与所述客户端对应的唯一的转发端口,通过所述转发端口转发所述数据至路由器。

与现有技术相比,本发明实施例公开的数据转发装置,通过客户端信息获取模块判断所述数据所属的客户端,再通过数据转发模块指定唯一的转发端口号,然后通过所述转发端口转发所述数据至路由器,能有效指定任一客户端数据的转发端口,均衡链路负载,提高吞吐量。

作为上述方案的改进,所述数据转发装置,还包括:

配置模块,用于配置用于桥接路由器的端口为上行口,配置用于客户端访问的端口为下行口;

函数模块,用于通过内核模块注册或重定向钩子函数;其中,所述钩子函数包括netfilter。

本发明另一实施例提供了一种数据转发装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述发明实施例所述的数据转发方法。

本发明另一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述发明实施例所述的数据转发方法。

附图说明

图1是本发明实施例1提供的一种数据转发方法的流程示意图。

图2是本发明实施例2提供的一种数据转发方法的流程示意图。

图3是本发明实施例3提供的一种数据转发装置的结构示意图。

图4是本发明实施例4提供的一种数据转发装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,是本发明实施例1提供的一种数据转发方法的流程示意图,包括:

s1、当接收到任一客户端传来的数据时,通过调用钩子函数判断所述数据所属的客户端;

其中,所述数据根据其数据类型确定其参数,所述数据包括tcp/ip流,一条tcp/ip流由源mac地址、目的mac地址、传输层协议类型、源ip地址、目的ip地址、源端口号和目的端口号等参数唯一确定;

s2、根据所述客户端的信息指定唯一的转发端口号,根据所述转发端口号获取与所述客户端对应的唯一的转发端口,通过所述转发端口转发所述数据至路由器。

与现有技术相比,本发明实施例公开的数据转发方法,通过根据所述客户端的信息指定唯一的转发端口号,根据所述转发端口号获取与所述客户端对应的唯一的转发端口,通过所述转发端口转发所述数据至路由器,能有效指定任一客户端数据的转发端口,均衡链路负载,提高吞吐量。

优选地,所述根据所述客户端的信息指定唯一的转发端口号,根据所述转发端口号获取与所述客户端对应的唯一的转发端口,通过所述转发端口转发所述数据至路由器,具体为:

查询ha表中是否存在所述客户端对应的ha条目,当所述ha表中存在所述客户端对应的ha条目时,生成所述ha条目中的转发端口号;其中,所述ha表用于收集所述ha条目;所述ha条目用于标识所述数据并指定所述数据的转发端口;

当所述ha表中不存在所述客户端对应的ha条目时,查询fdb表中是否存在所述客户端对应的fdb条目;

当所述fdb表中存在所述客户端对应的fdb条目时,判断所述转发端口的属性;其中,所述fdb条目包含mac地址、mac地址关联的端口号、mac地址关联的vlan的名称、fdb地址表项的标志;

当所述转发端口为下行口时,在所述ha表中生成所述客户端对应的ha条目,生成fdb查询的转发端口号;

当所述转发端口为上行口时,查询hc表中是否存在所述客户端对应的hc条目;其中,所述hc表用于收集所述hc条目;所述hc条目用于标识所述客户端并指定所述客户端的数据转发端口;

当所述hc表中存在所述客户端对应的hc条目时,在所述ha表中生成所述客户端对应的ha条目,并生成hc查询的转发端口号;

当所述hc表中不存在所述客户端对应的hc条目时,根据最优链路参数在所述hc表中生成所述客户端对应的hc条目,在所述ha表中生成所述客户端对应的ha条目,并生成hc查询的转发端口号。

优选地,所述最优链路参数用于指向当前时刻的最优链路,具体为:

周期性监听应用层中实时的链路状态,当任意时刻检测到超载链路时,通过netlink消息通知内核模块,修改hc条目,将超载链路上的部分客户端的数据调整到除所述超载链路外的其他链路上,并在最优链路参数中指定当前时刻的最优链路;其中,所述最优链路为负载最小的链路。

优选地,当所述fdb表中不存在所述客户端对应的fdb条目时,标记所述转发端口号为空,采用预设的转发规则指定所述数据的转发端口,通过所述转发规则指定的转发端口转发所述数据。

优选地,所述预设的转发规则包括发送至除源端口外所述数据所属vlan的其他所有端口。

参见图2,是本发明实施例2提供的一种数据转发方法的流程示意图,在实施例1的基础上,还包括步骤:

s21、配置用于桥接路由器的端口为上行口,配置用于客户端访问的端口为下行口;

其中,被配置为下行口的端口,可以收发广播包;被配置成上行口的所有建立连接的端口中,有且仅有一个会被配置能接收广播报文的属性;

s22、通过内核模块注册或重定向钩子函数;其中,所述钩子函数包括netfilter;

其中,所述钩子函数可用于实现ha表和hc表的维护,指定单播报文的转发端口和广播报文的收发端口,向上行口转发的广播报文可由发送此广播报文的客户端所对应的hc条目指定的端口转发。

参见图3,是本发明实施例3提供的一种数据转发装置的结构示意图,包括:

客户端信息获取模块101,用于当接收到任一客户端传来的数据时,通过调用钩子函数判断所述数据所属的客户端;

数据转发模块102,用于根据所述客户端的信息指定唯一的转发端口号,根据所述转发端口号获取与所述客户端对应的唯一的转发端口,通过所述转发端口转发所述数据至路由器。

与现有技术相比,本发明实施例公开的数据转发装置,通过客户端信息获取模块判断所述数据所属的客户端,再通过数据转发模块指定唯一的转发端口号,然后通过所述转发端口转发所述数据至路由器,能有效指定任一客户端数据的转发端口,均衡链路负载,提高吞吐量。

参见图4,是本发明实施例4提供的一种数据转发装置的结构示意图,在实施例3的基础上,还包括:

配置模块201,用于配置用于桥接路由器的端口为上行口,配置用于客户端访问的端口为下行口;

函数模块202,用于通过内核模块注册或重定向钩子函数;其中,所述钩子函数包括netfilter。

本发明另一实施例提供了数据转发装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现以上任意一项所述的数据转发方法。

本发明另一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行以上任意一项所述的数据转发方法。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述数据转发装置的控制中心,利用各种接口和线路连接整个数据转发装置的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述数据转发装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,所述数据转发装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

综上,本发明提供了一种数据转发方法、装置以及计算机可读存储介质,通过内核模块中的钩子函数,判断需转发数据所属的客户端,并指定所述数据的转发端口,并将所述数据根据指定的转发端口转发出去。能有效将客户端的数据从指定端口转发至路由器,从而使路由器的arp表以及fdb表稳定,并使路由器在转发数据至客户端时的链路选择根据中继器的链路选择变化,即使在路由器不支持followre功能或者followre功能无法生效的情况下,本发明提供的方案能有效均衡链路负载,提高吞吐量。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

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