一种基于可编程网络技术的多宿主网络路由转发方法与流程

文档序号:17817514发布日期:2019-06-05 21:56
一种基于可编程网络技术的多宿主网络路由转发方法与流程

本发明涉及计算机网络技术,特别涉及一种基于可编程网络技术的多宿主网络路由转发方法。



背景技术:

当前用户的终端通常会处在多个宿主网络中,比如Wi-Fi和4G网络。用户可以通过多个宿主网络并行传输来提高传输的效率,同时也可以根据宿主网络的变化选择状态好的网络,提高传输可靠性。但是目前的4G方案是选择其中一种宿主进行通信,这就无法享受到多宿主带来的可靠性、加倍传输和根据网络状态选择较优的宿主等优点。所以,面对下一代5G网络,有必要实现多宿主功能。

目前的多宿主的实现方式主要有两种,一种是地址和标志符分离的方法,比如LISP,HIP,LIN6和SHIM6等,这些方案有希望解决移动性和多宿主,但代价是修改终端设备或者部署新的网络实体(映射系统或者专用的边缘设备)。另一种是传输层的方案,比如SCTP和MPTCP,这些方法支持并发多路径传输,但是对移动性的支持并不好。已有的方案主要是端到端的多宿主传输方案,这可以让用户可以同时使用多个宿主网络,提高了服务质量。但是,端到端的多宿主方案中端系统所知道的网络信息是有限的,不能够很好地根据网络的状态及时实现多宿主路径的切换。



技术实现要素:

本发明的目的在于解决传统的多宿主技术不能及时根据网络状态调整多宿主网络的问题,考虑到可编程网络设备能够实现协议独立转发,增加对数据包操作的灵活性的优势;提出了基于可编程网络设备的多目的地址的多宿主网络技术方案,多个目的地址可以让网络根据多个通往目的地址的路径的状态来选择链路状态好的链路进行传输,平衡网络中的流量,解决网络拥塞等问题。通过基于网络状态动态调整的多宿主网络路由转发方法,可以有效提高用户的通信质量。

为了解决上述问题,本发明提出了一种基于可编程网络技术的多宿主网络的路由转发方法,所述方法包括:所述多宿主网络包括控制器和可编程网络设备;所述控制器用于根据网络的状态对可编程网络设备中的信息进行维护,所述可编程网络设备用于维护了两张表:转发流表和链路信息表,并对数据包进行修改和转发;所述方法包括:

当进行数据包的路由转发时,根据转发流表地址匹配方法进行地址到端口的匹配,根据所匹配的端口对地址进行归类,使得每个端口都对应一个目的地址组,

基于链路信息表中的信息和端口选择函数,选择合适的端口和相应的目的地址组,裁剪掉其余端口对应的目的地址组;

利用地址过滤函数以及数据携带的前跳信息对剩下的目的地址组进行进一步裁剪;

对于目的地址组中剩余的地址,如果采用单一地址选取方法能够确定单一目的地址,则将其作为目的地址,采用通用路由转发方法将报文转发至目的地址,否则封装目的地址组,根据其对应的端口将数据包转发,采用单一地址选取方法逐跳确定单一目的地址,直至到达目的地址。

作为上述方法的一种改进,所述可编程网络设备为在SDN架构下具有处理自定义报文和协议无关转发能力的网络设备;所述可编程网络设备通过对Openflow协议扩展,在转发层实现转发流表对自定义报文的处理和控制;所述可编程网络设备为支持P4,POF或PIF技术的路由器或交换机。

作为上述方法的一种改进,所述转发流表为报文转发所使用的流表,记录数据报文到目的地的转发信息;所述控制器通过路由协议获得转发流表并下发到可编程网络设备;所述链路信息表记录可编程网络设备中的每个转发端口portk和对应相关链路的状态信息值statusk,1,statusk,2……,所述状态信息值包括下一跳或多跳的链路状态和可能的路径的链路状态,所述链路状态包括下一跳或者多跳的端口负载、链路带宽和延迟。

作为上述方法的一种改进,所述控制器是网络策略管控中心,管理着网络的路由和转发策略,由SDN控制器经扩展得到;所述控制器包括转发流表控制模块和链路信息表控制模块;

所述转发流表控制模块,用于根据路由规则向可编程网络设备下发对转发流表的表项进行创建、修改和删除的命令;

所述链路信息表控制模块,用于通过对网络状态信息进行获取、计算和学习后,向可编程网络设备下发对链路信息表的表项进行创建、修改和删除的命令。

作为上述方法的一种改进,所述单一地址选择方法为:如果只有一个地址或者只有一个地址满足目的地址匹配条件,则选择该地址为目的地址;如果当前有多个地址达到了目的地址匹配条件,则依据选择策略选择一个满足目的地址匹配条件的地址作为目的地址。

作为上述方法的一种改进,所述方法具体包括:

步骤1)每个数据包携带用户多个地址以及路由到当前地址的前k跳信息,若用户有n个宿主,则对应的多个地址的集合为{addr1,addr2,…,addrn};

步骤2)对数据包进行路由转发时,根据转发流表地址匹配方法进行地址到端口的匹配,根据所匹配的端口对地址进行归类,使得每个端口都对应一个目的地址组;

步骤3)查询所有端口在链路信息表中的信息,并通过端口选择函数选择状态好的端口作为下一跳的转发端口,裁剪掉没被选中的端口所对应的目的地址组;

步骤4)通过地址过滤函数及数据携带的前跳信息对剩下的目的地址组进行进一步裁剪;如果得到单一目的地址,转入步骤6);否则,转入步骤5);所述单一目的地址是指只有一个地址或者多个地址中只有一个地址满足目的地址匹配条件;

步骤5)如果有多个地址满足目的地址匹配条件,则依据选择策略选择一个满足目的地址匹配条件的地址作为的单一目的地址,转入步骤6);否则,封装地址组,根据对应端口将数据包转发,转入步骤3);

步骤6)将获取的单一目的地址作为目的地址,采用通用路由转发方法转发报文,直至到达目的地。

作为上述方法的一种改进,所述步骤2)具体包括:

步骤201)将包含多个地址数据包进行转发流表匹配,每个地址根据转发流表地址匹配方法匹配对应的转发端口,对有n个地址{addr1,addr2,…,addrn}的数据包和m个端口的可编程网络设备{port1,port2,…,portm}进行匹配,对于每个地址有映射关系Mapping(addri)=portj,其中,1≤i≤n,1≤j≤m,且portm为默认端口;则每个地址都会根据转发流表匹配到一个端口;

步骤202)对地址根据匹配到的转发端口进行归类;每个端口所对应的地址归类到一个地址组,其映射关系为{port1:[addr11,addr12,…],port2:[addr21,addr22,…],…,portm:[addrm1,addrm2,…]}。

作为上述方法的一种改进,所述转发流表地址匹配方法为:根据数据包的地址或标识匹配出对应的转发端口,不同路由机制有不同的匹配方法,包括:IP地址匹配和ICN中的名字匹配。

作为上述方法的一种改进,所述步骤3)的链路信息表的端口选择函数为portx=F(Z,pack)=F2(F1(Z,Pack)),其中,Z为链路信息表的端口与链路信息表之间的映射关系Z={port1:[status1,1,status1,2……],port2:[status2,1,status2,2……],…,portm:[statusm,1,statusm,2……]},Pack为报文内容,F(x)为基于状态信息的端口选择函数;

所述端口选择函数F(x),包含状态计算函数F1(x)和选择函数F2(x);所述状态计算F1(x)通过链路信息表中的某一项的值,或者根据多项的值计算,从而为每个候选端口计算状态值;所述选择函数F2(x)则是根据计算得到的状态值选择下一跳端口,选择状态值最高的端口作为下一跳转发端口。

作为上述方法的一种改进,所述步骤4)的地址过滤函数用于对端口选择函数所选出的端口porti对应的地址组ADDRi进行过滤,实现过程为:根据前k跳地址过滤信息,如果在k跳之内都没有地址删除,则以概率p删除u个ADDRi中的地址信息,在该过程中,保证ADDRi中至少要有一个地址。

作为上述方法的一种改进,所述目的地址匹配条件为:计算当前路由机制下地址匹配打分函数为G(x),其中x为地址,G(x)根据不同路由机制定义的不同匹配方法得到的得分,表示与目的地址的匹配程度;当G(x)>w时,w为预先设定或者动态设定的阈值,表明该地址x达到了目的地址匹配条件。

作为上述方法的一种改进,所述步骤5)的选择策略为:随机选择、根据链路预测信息选择或子网负载选择。

本发明的优势在于:

本发明的系统及方法能够根据网络的动态变化及时调整数据包的传输路径,使用户能够充分享受到多宿主带来的可靠性、加倍传输和根据网络状态选择较优的宿主等优点。

附图说明

图1是本发明的基于可编程网络技术的多目的地址的多宿主网路的结构图;

图2是本发明的基于可编程网络技术的多宿主网络中交换机的结构图和处理多目的地址数据包的流程图。

具体实施方式

现结合附图以基于POF(Protocol-Oblivious Forwarding)的多目的IP地址为例对本发明作进一步描述。

本发明提出了一种基于可编程网络设备的多宿主网络的路由转发方法,在该方法中,发送端每个数据包携带多个IP地址,以及路由到当前地址的前k跳信息;而在可编程网络设备的维护信息中,维护了两张信息表,一个是基于IP路由转发机制得到的转发流表,另一个是链路信息表,其中链路信息表提供可编程网络设备中每个转发端口和对应相关链路的状态信息。当进行数据包的路由转发时,首先根据转发流表IP地址匹配方法进行地址到端口的匹配,根据所匹配的端口对地址进行归类,使得每个端口都对应一个目的地址组,基于状态表中的信息和端口选择函数,选择合适的端口和相应的目的地址组,裁剪掉对应其余端口的地址组;利用IP地址过滤函数以及数据携带的前跳信息对剩下的地址组进行进一步裁剪;根据地址组中的地址,判断是否达到了IP接入网络地址匹配条件,如果没达到,则封装地址组,根据对应端口将数据包转发,如果达到,则根据单一地址选择方法,选出一个地址作为目的地址,删除其它地址,封装数据包,并根据对应端口转发。上述过程在每一跳转发都需判断和执行,直至到达目的地。

所述可编程网络设备是指在SDN(软件定义网络)架构下,具有处理自定义报文和协议无关转发能力的网络设备。通过对Openflow协议扩展,在转发层实现流表对自定义报文的处理和控制。可编程网络设备包括但不限于支持P4,POF,PIF等技术的路由器、交换机。每个可编程网络设备可支持多地址。所述的可编程网络,是由可编程网络设备相互连接构成的网络。

如图1所示,所述多宿主网络是指终端通过多个接入网连接网络,每个终端可以通过多个网络发送数据,可以同时从多个网络接收数据,当终端作为接收端时,可以从不同接入网络接收到同一个终端所发送出来的数据。网络能够根据自身的状态为终端动态选择较优的接入网提供服务。多宿主网络基于SDN架构,主要由控制器和可编程网络设备构成。其中,控制器主要是根据网络的状态对可编程网络设备中的信息进行维护,而可编程网络设备主要负责完成对数据包的修改和转发。

所述转发流表IP地址匹配方法,是指根据数据包中的IP地址匹配出对应的转发端口,可用IP地址匹配方法进行匹配。

所述转发流表指的报文转发所使用的流表,流表即SDN中用于转发数据报文的表,其中维护着数据报文到目的地的转发信息,是控制器通过路由协议来获得并下发到可编程网络设备。所述链路信息表维护着链路的状态信息,其信息包含端口负载、当前链路状态,如带宽、延迟,以及与网络状态相关的量。

所述控制器是网络策略管控中心,管理着网络的路由和转发策略,可由SDN控制器经扩展而得到,控制器通过南向接口向可编程网络设备发送控制命令,可编程网络设备执行这些命令。其结构包括转发流表控制模块和链路信息表控制模块。转发流表控制模块主要根据获得的网络状态运行一些路由算法生成路由规则并通过南向接口向可编程网络设备下发对转发流表的流表项进行创建、修改和删除的命令;而链路信息表控制模块在对网络状态信息的获取、计算和学习后通过南向接口向可编程网络下发对链路信息表的表项进行创建、修改和删除的命令,如根据网络的动态变化和对以往网络状态的学习来获得和预测网络中链路的状态,从而对可编程网络设备中链路信息表进行维护。

链路信息表的信息是控制器将信息维护策略下发给可编程网络设备,可编程网络设备通过统计信息、网络的测量以及对网络动态变化的情况学习等方式获得相关信息并维护,链路信息表反映网络的链路动态变化。其中,端口portk对应状态信息为statusk,1,statusk,2……,其值包括但不限于下一跳或多跳的链路状态、可能的路径的链路状态等,例如:下一跳或者多跳的端口负载、链路带宽、延迟或其他网络相关信息,可通过测量、预测等方法获得。

如图2所示,所述路由转发方法具体包括以下流程:

步骤1)每个数据包携带用户多个地址,这些地址是用户所在的宿主网络所分配,假设用户有n个宿主,则对应的多个地址的集合为{IP1,IP2,…,IPn}。

步骤2)将包含多个地址数据包进行转发流表匹配,每个地址根据转发流表地址匹配方法匹配对应的转发端口,对有n个地址{IP1,IP2,…,IPn}的数据包和m个端口的可编程网络设备{port1,port2,…,portm}进行匹配,对于每个地址有映射关系Mapping(IPi)=portj,其中,1≤i≤n,1≤j≤m,且portm为默认端口。则每个地址都会根据转发流表匹配到一个端口。

步骤3)对地址根据匹配到的转发端口进行归类;每个端口所对应的地址归类到一个地址组,其映射关系为{port1:[IP11,IP12,…],port2:[IP21,IP22,…],…,portm:[IPm1,IPm2,…]}。

步骤4)查询所有端口在链路信息表中的信息,并通过端口选择函数选择状态好的端口作为下一跳的转发端口,删除没被选中的端口所对应的地址组;同时,考虑路由过程中前k跳的地址过滤信息,通过地址过滤函数,将所选择转发端口所对应的目的地址组进行地进一步目的地址过滤,裁剪掉没被选中的端口所对应的目的地址组;

基于链路信息表的端口选择函数为portx=F(Z,pack)=F2(F1(Z,Pack)),其中Z为链路信息表的端口与链路信息表之间的映射关系Z={port1:[status1,1,status1,2……],port2:[status2,1,status2,2……],…,portm:[statusm,1,statusm,2……]},Pack为报文内容,F(x)为基于状态信息的端口选择函数。状态值的计算函数为F1(x),这里为对应端口的历史负载,输出为根据所定义的函数计算得到的状态值。通过F2(x)选择得到合适转发端口portx,用于下一跳转发。

所述的端口选择函数F(x),包含状态计算F1(x)和选择F2(x)两个步骤。状态值的计算函数为y=F1(x)=load(x),表示对应端口x的历史负载。选择步骤F2(y)则是根据F1计算得到的状态值y选择下一跳端口,这里F2的计算方法为根据F1(x)状态值由高到低对端口进行排序,选择状态值最高的端口作为下一跳转发端口。

所述地址过滤函数,其步骤包括:对端口选择函数所选出的端口porti对应的地址组ADDRi进行判断,其方法为:根据前k跳IP地址过滤信息,如果在k跳之内都没有IP地址删除,则以概率p删除u个ADDRi中的IP地址信息,在该过程中,保证ADDRi中至少要有一个IP地址。

步骤5)对于目的地址组中剩余的地址,如果采用单一地址选取方法能够确定单一目的地址,则将其作为目的地址,采用通用路由转发方法将报文转发至目的地址,否则,封装目的地址组,根据其对应的端口将数据包转发,采用单一地址选取方法逐跳确定单一目的地址,直至到达目的地址。

所述单一地址选择方法,其步骤包括:如果只有一个IP地址或者只有一个地址满足目的地址匹配条件,则选择该地址为目的地址;如果当前有多个地址达到了目的地址匹配条件,则依据选择策略选择一个满足目的地址匹配条件的地址作为目的地址。所述选择策略为:随机选择、根据链路预测信息选择或子网负载选择。

所述的目的地址匹配条件是指:定义当前路由机制下地址匹配打分函数为G(x),其中x为IP地址,G(x)为IP地址匹配长度;当G(x)>L时,L为预先设定的匹配长度阈值,则说明该地址x达到了接入目的地址匹配条件,也即数据报文到达了边缘的接入网络。

当采用单一地址选取方法不能够确定单一目的地址,也就是当前有多个地址,但是多个地址都不满足地址匹配条件,则只能封装目的地址组,根据其对应的端口将数据包转发,在下一个端口利用单一地址选取方法继续寻找目的地址。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

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