骨干网的数据处理方法及装置与流程

文档序号:14504161阅读:269来源:国知局
本发明涉及通信领域,尤其涉及一种骨干网的数据处理方法及装置。
背景技术
::骨干网是连接多个区域网的网络,可以用于多个区域网之间数据交互的中转。例如,骨干网连接多个区域网,所述区域网包括区域网a和区域网b,区域网a需要通过骨干网向区域网b发送数据,或从骨干网接收区域网a发送的数据。在现有的骨干网流量控制方案总体来说技术比较简单,容易实现,但是却不够灵活,虽然可以保证一些关键业务的传输质量,但是不能全局协调,不能精细控制。目前软件定义网络(softwaredefinitionnetwork,sdn)在跨数据中心广域网中较成功的研究是谷歌google和微软microsoft提出的基于业务类型的流量调度方法。在google和microsoft的调度方案中,所调度的流量是内部数据中心之间的流量,因此能够较容易的获取或者规定业务流的优先等级,并且能够获得业务流大小。但是,在骨干网中,业务流的数目非常多,无法实时快速获取到每条业务流的信息,没有很明显特征的业务流,因此,google和microsoft中基于业务特性流量调度方案不能直接应用于网络协议(internetprotocol,ip)骨干网。技术实现要素:有鉴于此,本发明实施例期望提供一种骨干网的数据处理方法及装置,可用于更好的调控骨干网的数据流量。为达到上述目的,本发明的技术方案是这样实现的:本发明实施例第一方面提供一种骨干网的数据处理方法,应用于边缘路由器中,包括:确定进入所述边缘路由器的数据包的入端口;判断所述入端口是否为第一类端口,其中,所述第一类端口为数据包从区域网进入到骨干网的端口;当所述入端口是所述第一类端口时,确定所述数据包的地址对对应的隧道标识;其中,所述地址对包括所述数据包的源地址和目的地址;将所述隧道标签添加到所述数据包中;根据所述数据包的隧道标签转发所述数据包。基于上述方案,所述判断所述入端口为第一类端口,包括:查询第一流表,确定所述入端口是否位于所述第一流表中;所述当所述入端口是所述第一类端口时,确定所述数据包的地址对对应的隧道标识,包括:当所述入端口为所述第一类端口时,根据所述地址对查询第二流表;确定所述第二流表中与所述地址对对应的所述隧道标签。基于上述方案,所述根据所述数据包的隧道标签转发所述数据包,包括:查询所述第一流表和/或所述第二流表,确定与所述数据包中携带的隧道标签对应的出端口;利用所述出端口转发所述数据包。基于上述方案,所述方法还包括:当所述入端口的所述第一类端口时,统计每一个所述地址对所对应的发起流量,形成统计结果;所述发起流量为通过所述第一类端口进入到所述边缘路由器的数据流量;将所述统计结果,发送给控制器;其中,所述统计结果,用于所述控制器调整所述地址对与所述隧道标签的对应关系。本发明实施例第二方面提供一种骨干网的数据处理方法,应用于控制器中,包括:接收边缘路由器发送的统计结果;其中,所述统计结果是数据包通过第一类端口进入所述边缘路由器,所述边缘路由器根据所述数据包的地址对统计的数据流量;所述地址对包括所述数据包的源地址和目的地址;根据所述统计结果,确定所述地址对与隧道标签的对应关系;将所述对应关系发送给所述边缘路由器;其中,所述对应关系,用于所述边缘路由器对从所述边缘路由器的第一类端口进入的数据包中添加转发所述数据包的隧道标签和/或根据所述隧道标签转发所述数据包。基于上述方案,所述根据所述统计结果,确定所述地址对与隧道标签的对应关系,包括:根据所述统计结果,确定第一地址对对应的数据流量占传输链路的总容量的第一比例;当所述第一比例大于拆分阈值时,将所述第一地址对进行n次拆分;其中,所述n为不小于1的整数;将所述第一地址对拆分成多个第二地址对;分别建立多个所述第二地址对与隧道标签的对应关系。基于上述方案,所述方法还包括:确定拆分粒度n。基于上述方案,所述确定拆分粒度n,包括:利用拆分函数计算所述n;其中,所述cr表示所述第一地址对对应的带宽需求;所述lri表示所述第一地址对对应的路由r的第i条链路的链路带宽;所述a表示所述第一地址对能够占用一条链路容量的最大比例;所述rj表示所述第一地址对对应的第j条备选链路剩余带宽。基于上述方案,所述根据所述统计结果,确定所述地址对与隧道标签的对应关系,包括:根据所述统计结果,确定第三地址对对应的数据流量占传输链路的总容量的第二比例;当所述第二比例小于汇聚阈值时,将所述第三地址对与第四地址对合并形成第五地址对;其中,所述第三地址对和所述第四地址对的地址掩码相同;建立所述第五地址对与隧道标签的对应关系。本发明实施例第三方面提供种骨干网的数据处理装置,应用于边缘路由器中,包括:第一确定单元,用于确定进入所述边缘路由器的数据包的入端口;判断单元,用于判断所述入端口是否为第一类端口,其中,所述第一类端口为数据包从区域网进入到骨干网的端口;第二确定单元,用于当所述入端口是所述第一类端口时,确定所述数据包的地址对对应的隧道标识;其中,所述地址对包括所述数据包的源地址和目的地址;添加单元,用于将所述隧道标签添加到所述数据包中;转发单元,用于根据所述数据包的隧道标签转发所述数据包。基于上述方案,所述判断单元,具体用于查询第一流表,确定所述入端口是否位于所述第一流表中;所述第二确定单元,具体用于当所述入端口为所述第一类端口时,根据所述地址对查询第二流表;确定所述第二流表中与所述地址对对应的所述隧道标签。基于上述方案,所述转发单元,具体用于查询所述第一流表和/或所述第二流表,确定与所述数据包中携带的隧道标签对应的出端口;利用所述出端口转发所述数据包。基于上述方案,所述装置还包括:统计单元,用于当所述入端口的所述第一类端口时,统计每一个所述地址对所对应的发起流量,形成统计结果;所述发起流量为通过所述第一类端口进入到所述边缘路由器的数据流量;第一发送单元,用于将所述统计结果,发送给控制器;其中,所述统计结果,用于所述控制器调整所述地址对与所述隧道标签的对应关系。本发明实施例第四方面提供一种骨干网的数据处理装置,应用于控制器中,包括:接收单元,用于接收边缘路由器发送的统计结果;其中,所述统计结果是数据包通过第一类端口进入所述边缘路由器,所述边缘路由器根据所述数据包的地址对统计的数据流量;所述地址对包括所述数据包的源地址和目的地址;第三确定单元,用于根据所述统计结果,确定所述地址对与隧道标签的对应关系;第二发送单元,用于将所述对应关系发送给所述边缘路由器;其中,所述对应关系,用于所述边缘路由器对从所述边缘路由器的第一类端口进入的数据包中添加转发所述数据包的隧道标签和/或根据所述隧道标签转发所述数据包。基于上述方案,所述第三确定单元,用于根据所述统计结果,确定第一地址对对应的数据流量占传输链路的总容量的第一比例;当所述第一比例大于拆分阈值时,将所述第一地址对进行n次拆分;其中,所述n为不小于1的整数;将所述第一地址对拆分成多个第二地址对;分别建立多个所述第二地址对与隧道标签的对应关系。基于上述方案,所述第三确定单元,还用于确定拆分粒度n。基于上述方案,所述第三确定单元,用于根据所述统计结果,确定第三地址对对应的数据流量占传输链路的总容量的第二比例;当所述第二比例小于汇聚阈值时,将所述第三地址对与第四地址对合并形成第五地址对;其中,所述第三地址对和所述第四地址对的地址掩码相同;建立所述第五地址对与隧道标签的对应关系。本发明实施例提供的骨干网的数据处理方法及装置,边缘路由器当接收到一个数据包之后,会根据该数据包进入该边缘路由器的入端口,确定是否是从区域网进入到骨干网的数据包,若是则会根据该数据包的地址对在该数据包中添加隧道标签,利用该隧道标签对应的传输隧道传输该数据包,结合了数据包的入端口和地址对,确定数据包的传输链路,可以很好的控制数据包的传输,以实现数据包传输的负载均衡。附图说明图1为本发明实施例提供的第一种骨干网的数据处理方法的流程示意图;图2为本发明实施例提供的一种添加了隧道标签的包头的示意图;图3为本发明实施例提供的第二种骨干网的数据处理方法的流程示意图;图4为本发明实施例提供的一种骨干网的数据处理装置的结构示意图;图5为本发明实施例提供的另一种骨干网的数据处理装置的结构示意图;图6为本发明实施例提供的第三种骨干网的数据处理方法的流程示意图;图7为本发明实施例提供的第四种骨干网的数据处理方法的流程示意图;图8为本发明实施例提供的第五种骨干网的数据处理方法的流程示意图;图9为本发明实施例中地址对与隧道标签的对应关系的变更示意图;图10为本发明实施例提供的第六种骨干网的数据处理方法的流程示意图。具体实施方式以下结合说明书附图及具体实施例对本发明的技术方案做进一步的详细阐述。如图1所示,本实施例提供一种骨干网的数据处理方法,应用于边缘路由器中,包括:步骤s110:确定进入所述边缘路由器的数据包的入端口;步骤s120:判断所述入端口是否为第一类端口,其中,所述第一类端口为数据包从区域网进入到骨干网的端口;步骤s130:当所述入端口是所述第一类端口时,确定所述数据包的地址对对应的隧道标识;其中,所述地址对包括所述数据包的源地址和目的地址;步骤s140:将所述隧道标签添加到所述数据包中;步骤s150:根据所述数据包的隧道标签转发所述数据包。本实施例中所述的方法可为应用于边缘路由器中的方法。所述骨干网为多个区域网之间连接的中间网络。例,所述区域网可为省网络,而所述骨干网络可为连接两个或两个以上区网络之间的省际网络。当然,若所述区域网为国家网,则所述骨干网可为连接多个国家网的国际网。所述边缘路由器为区域网的数据流进入到骨干网的通信节点。在本实施例中所述边缘路由器,将记录每一个数据包进入到其内部的进入端口,即所述入端口。在步骤s120中将会判断所述入端口是否为第一类端口。这里的第一类端口为数据流从区域网进入到骨干网的端口。在本实施例中所述边缘路由器的入端口分为第一类端口和第二类端口;第二类端口可为可供数据流从骨干网进入到区域网的端口或流量在骨干网中的中转端口。所述第一类端口的端口标识可被记录在所述边缘路由器,这样的话,在步骤s120中,可将步骤s110中确定的入端口和第一类端口进行匹配,若匹配成功,则可认为该数据包是从区域网进入到骨干网的数据包,其入端口为所述第一类端口。这里的入端口和第一类端口的匹配,可为端口标识的匹配。所述端口标识可包括端口号。若一个数据包的入端口为第一类端口,则确定该数据包对应的隧道标签。在本实施例中将根据数据包的源地址和目的地址确定所述隧道标签。所述源地址可为发送所述数据包的发送端的网络协议(internetprotocol,ip)地址;所述目的地址可为接收包的接收端的ip地址。所述源地址和目的地址可以大致确定该数据包的传输路径。在本实施例中会根据地址对确定该数据包的隧道标签。在本实施例中所述隧道标签为传输隧道的标签。这里的传输隧道可对应于两个传输端点之间的传输路径。在本实施例中确定任意两个通信节点之间,k跳之内的传输路径;为每一条传输路径或多条有很大相似性传输路径定义为一个传输隧道,并为该传输隧道分配一个隧道标签。例如,节点a和节点b之间有m条传输路径,则可以建立m条传输隧道,且得到m个传输标签,在本实施例中所述隧道标签可称之为tunnelid,每一个所述隧道标签可以在骨干网内为全局唯一标识,以达到唯一标识的作用。在确定该数据包的地址对对应的隧道标签之后,在该数据包内插入所述隧道标签。所述步骤s140可包括:在所述数据包的包头的保留字段内插入所述隧道标签,或在所述数据包的包头设置的专用字段内写入所述隧道标签。图2所示的为所述数据包的包头中插入了隧道标签之后的示意图。在所述图2所示的包头中包括20个比特的隧道标签(tunnelid),3个比特的服务级别(classofservice,)、1个比特的标识位s和8个比特的生命周期(timetolive,ttl)。所述tunnelid对应的20比特为第0比特到第19比特。所述cos对应的3比特为所述第20比特到第22比特,所述s对应的1个比特为所述23比特;所述ttl对应的8个比特为第25到第31比特。在完成所述隧道标签的插入之后,所述边缘路由节点将根据隧道标签转发所述数据包。例如,每一个所述隧道标签都对应于一个传输隧道,在步骤s150中,会利用该传输隧道传输所述数据包。显然采用这种方式处理骨干网的数据传输,可以通过地址对和隧道标签的对应关系的改变,从而简便的控制骨干网络内各个传输隧道的负载,更便捷的实现负载均衡和/或控制数据流在各个传输隧道上的传输流量。在一些实施例中,所述步骤s120可包括:查询第一流表,确定所述入端口是否位于所述第一流表中;所述步骤s130可包括:当所述入端口为所述第一类端口时,根据所述地址对查询第二流表;确定所述第二流表中与所述地址对对应的所述隧道标签。在本实施例中引入了第一流表和第二流表。在所述第一流表中记录了第一类端口。在所述第二地址对中记录了地址对和隧道标签之间的关系。这样的话,当需要改变地址对和隧道标签之间的对应关系时,上游的控制节点或其他路由节点需更新第二流表即可,第一流表可以由路由节点根据接收到第二流表自行更新即可,从而可以减少交换机和/或路由器等网关节点之间交互的流表的信息量。作为本实施例的进一步改进,所述步骤s150可包括:查询所述第一流表和/或所述第二流表,确定与所述数据包中携带的隧道标签对应的出端口;利用所述出端口转发所述数据包。在本实施例中,所述第一流表还包括隧道标签和所述边缘路由器的出端口的对应关系。这里的对应关系可为数据包从该边缘路由器进入到骨干网或区域网的端口或流量在骨干网中经此路由器进行中转时离开此路由器的端口。当然,所述第二流表中也包括隧道标签和出端口的对应关系。若所述数据包是从第一类端口进入,根据所述第二流表的内容,在数据包内插入隧道标签,同时在向数据包插入隧道标签的边缘路由器中,为了简化边缘路由器的查表操作,可直接根据第二流表中隧道标签和出端口的对应关系,确定转发该数据包的出端口。以所述数据包的隧道标签为查询依据,查询所述第一流表,从而将确定出所述隧道标签对应的出端口,一旦确定出端口,就将该数据利用该端口传输到对应的传输隧道。所述第一流表(table0)和第二流表(table1)的组成形成有多种,以下分别提供所述table0和table1的可选示例。table0的示例匹配项执行操作入端口a查询table1隧道标签a1出端口b1隧道标签a2出端口b2…………以下table1的示例:所述边缘路由器在执行上述方法时,首先会根据一个数据包的入端口,将该入端口与第一流表,即所述第table0中的第1行元素,及所述入端口a进行比较匹配,若匹配的上,则执行操作“查询table1”,边缘路由器,则会根据该数据包的地址对,查询第二流表,查找到该数据包的地址对对应的隧道标签,并该将隧道标签写入到该数据包中。当写入到数据包之后,通过查询所述第一流表,再确定出所述出端口,利用确定的出端口发送所述数据包。此外,在所述第二流表中不仅包括地址对与隧道标签的对应关系,还包括与对应的出端口的对应关系。当第二流表更新了之后,改变了地址对与隧道标签的对应关系,这样第一流表无需进行任何修改即可实现路由更新。当所述第二流表中的隧道标签和出端口之间的对应关系发送了改变时,边缘路由器,根据第二流表,自动更新所述第一流表中所述隧道标签与出端口之间的对应关系,实现流表的自动学习。若一个数据包是从第一类端口进入到边缘路由器中,在根据第二流表向数据包写入隧道标签的同时,也可以直接根据第二流表中记录的隧道标签和出端口或出端口与源地址之间的对应关系,直接确定出所述出端口,再利用该出端口转发该数据包。当然以上仅是第一流表和第二流表的简单示例,在具体实现时不局限于上述示例。当然在所述隧道标签与出端口之间的对应关系和第一类端口都直接写在一个流表中,而不是分为两个流表。当一个数据包插入隧道标签之后,在后续传输过程中,其他通信节点就知道根据隧道标签进行数据包的转发。值得注意的是,在具体实现时,可能存在着两个地址对对应于同一个隧道标签的情况。一个所述地址对对应于一个传输路径。多条传输路径可对视为一个传输隧道,对应于一个隧道标签。以下提供一个统一流表的示例:在本实施例中所述方法同样可包括:当所述入端口不是所述第一类端口(例如,为所述第二类端口)时,根据所述数据包的隧道标签,转发所述数据包。例如,提取所述数据包内的隧道标签,查询该隧道标签对应的出端口,利用该出端口转发该数据包。在有些实施例中,所述方法还包括:当所述入端口的所述第一类端口时,统计每一个所述地址对所对应的发起流量,形成统计结果;所述发起流量为通过所述第一类端口进入到所述边缘路由器的数据流量;将所述统计结果,发送给控制器;其中,所述统计结果,用于所述控制器调整所述地址对与所述隧道标签的对应关系。在具体实现时,可能有多个地址对对应于同一个隧道标签。在本实施例中会统计从第一类端口进入的数据包的流量,这种流量在本实施例中称之为发起流量。再比如,若一个数据包从所述第二类端口进入所述边缘路由器,则这种数据包的流量称之为转发流量。在本实施例中将统计每一个地址对对应的数据流量。一个所述地址对对应于一条传输路径。若一个地址对的对应的数据流量过大,则可能利用该地址对对应的传输路径的传输数据量过大,很有可能导致传输拥堵的现象。若一个地址对的传输流量很小,为了减少流表的内容,减少流表在下发过程中的传输和同步流量,在本实施例中可以将满足一定关系的地址对合并成一个地址对,从而调整地址对与隧道标签之间的对应关系,从而实现数据流量的传输分布状况。如图3所示,本实施例提供一种骨干网的数据处理方法,应用于控制器中,包括:步骤s210:接收边缘路由器发送的统计结果;其中,所述统计结果是数据包通过第一类端口进入所述边缘路由器,所述边缘路由器根据所述数据包的地址对统计的数据流量;所述地址对包括所述数据包的源地址和目的地址;步骤s220:根据所述统计结果,确定所述地址对与隧道标签的对应关系;步骤s230:将所述对应关系发送给所述边缘路由器;其中,所述对应关系,用于所述边缘路由器对从所述边缘路由器的第一类端口进入的数据包中添加转发所述数据包的隧道标签和/或根据所述隧道标签转发所述数据包。在本实施例中所述方法为应用于控制边缘路由器的控制器中。在步骤s210中会接收边缘路由器上报的统计结果,该统计结果可指示出每一个地址对对应的传输的路径的传输流量。若传输流量过大,则可能需要进行传输路径的拆分,以避免过于拥堵,若传输流量过小,则可能需要进行传输路径合并,减少下发给路由器中流表的内容。在步骤s220中将根据所述统计结果,确定所述地址对与隧道标签的对应关系。在步骤s230会将该所述对应关系发送给边缘路由器,通常会以流表的形式发送给边缘路由器。当然,一个所述隧道标签标识了一条传输隧道,一条传输隧道在一个边缘路由器中至少对应于一个传输端口,该传输端口通常为数据包离开该边缘路由器的出端口。例如,所述方法还可包括:确定所述隧道标签还可对应于一个出端口,隧道标签与出端口之间的对应关系可用于所述边缘路由器,确定从哪个端口转发所述数据包。在本实施例中所述控制器,可以通过所述地址对与隧道标签的对应关系的建立,简便的控制数据流量在各个传输路径上的传输,更便捷的实现负载均衡。在一些实施例中,所述步骤s220可包括:根据所述统计结果,确定第一地址对对应的数据流量占传输链路的总容量的第一比例;当所述第一比例大于拆分阈值时,将所述第一地址对拆分进行n次拆分;其中,所述n为不小于1的整数;将所述第一地址对拆分为多个第二地址对,例如,将所述第一地址对拆分成2n个第二地址对;分别建立多个所述第二地址对与隧道标签的对应关系,例如,分别建立2n个所述第二地址对与隧道标签的对应关系。在本实施例中,所述第一比例的确定,可以反映出当前每一个地址对对应的传输路径的拥堵状况。在本实施例中若第一比例大于拆分阈值,则会将一个第一地址对拆分多个(例如,2n)个第二地址对,再分别建立这些地址对与隧道标签之间的对应关系。这样的话,就实现了利用不同地址对对应的传输链路分担第一地址对对应的传输链路的数据流量,从而可以减少拥堵现象。在将所述第一地址对拆分成多个第二地址对时,可以按照静态设定值n进行拆分,也可以随机拆成两个以上的第二地址对。然后通过反复根据统计流量的统计,反复拆分可以通过一次或多次拆分,实现将每一个地址对对应的传输链路上的传输流量都不大于所述拆分阈值的状态。但是在本实施例中为了减少拆分操作的繁琐度,所述方法还包括:确定拆分粒度n。例如,利用拆分函数关系,计算出所述n,以下提供一种可选的拆分函数。所述a%为拆分阈值,可根据实际网络需求设置,在本实施例中设置为链路容量的40%,所述cr表示所述第一地址对对应的带宽需求;所述lri表示所述第一地址对对应的路由r的第i条链路的链路带宽;所述a表示所述第一地址对能够占用一条链路容量的最大比例;所述rj表示所述第一地址对对应的第j条备选链路剩余带宽,表示向上取整符号。所述拆分粒度又可称之为拆分粒度。在将所述第一对峙对拆分成2n个第二地址对时,具体的拆分方法可包括:根据拆分粒度n,将第一地址对的ip掩码地址等分拆分;将按照第一地址对的ip掩码范围从大到小进行等分拆分,直到所有需要拆分的地址对全部拆分完,或者达到物理网络设备预设的表项数上限m,在本实施例中m设置为表项容量的90%、当然这里的90%为一个设定的值,具体实现时也可以取值为80%或85%等。在本实施例中所述等分拆分的意思可包括:从一个第一地址对拆分出的任意两个第二地址对对应的掩码对应的ip地址数相同。若两个或多个有关联关系的地址对的数据流量都很小,为了减少流表中的地址对的个数,简化流表,在本实施例中可以进行两个或两个以上的地址对的合并,从而调整地址对与隧道标签之间的对应关系。所述步骤s220可包括:根据所述统计结果,确定第三地址对对应的数据流量占传输链路的总容量的第二比例;当所述第二比例小于汇聚阈值时,将所述第三地址对与第四地址对合并形成第五地址对;其中,所述第一地址对和所述第四地址对的地址掩码相同;建立所述第五地址对与隧道标签的对应关系。通常情况下,所述第三地址对和第四地址对,一般情况下是对应于同一个隧道标签,且两个用相同的掩码形式表示,例如,可满足如下公式。l为掩码长度,ip1与ip2为所述第三地址对和所述第四地址对的源ip地址值或者目的ip地址值,(i=sip,j=dip)||(i=dip,j=sip)表示i为源ip地址且j为目的ip地址或i为目的ip地址且j为源ip地址。若(i=sip,j=dip),则l1,i表示汇聚流1的源ip地址的掩码长度,ip1,j表示汇聚流1的目的ip地址;例如,设第三地址对与第四地址对的源ip相同,均为202.1.11.0/24,目的ip分别为119.3.1.0/24和119.3.0.0/24,则第三地址对和第四地址对可以进行聚合,聚合后源ip不变,目的ip变为119.3.0.0/23。如图4所示,本实施例提供一种骨干网的数据处理装置,应用于边缘路由器中,包括:第一确定单元110,用于确定进入所述边缘路由器的数据包的入端口;判断单元120,用于判断所述入端口是否为第一类端口,其中,所述第一类端口为数据包从区域网进入到骨干网的端口;第二确定单元130,用于当所述入端口是所述第一类端口时,确定所述数据包的地址对对应的隧道标识;其中,所述地址对包括所述数据包的源地址和目的地址;添加单元140,用于将所述隧道标签添加到所述数据包中;转发单元150,用于根据所述数据包的隧道标签转发所述数据包。本实施例所述装置可为应用于边缘路由器中的结构。所述第一确定单元110、判断单元120、第二确定单元130、添加单元140及所述转发单元150都可以对应于所述边缘路由器内的处理器或处理电路。所述处理器可为中央处理器cpu、微处理器mcu、数字信号处理器dsp、应用处理器ap或可编程阵列等。所述处理电路可为专用集成电路。所述处理器或处理电路可通过预定代码的执行,实现上述各个单元的功能。所述第一确定单元110、判断单元120、第二确定单元130、添加单元140及所述转发单元150可分别对应于不同的处理器或处理电路,也可以是其中任意两个或两个以上的单元共同对应于同一个处理器或处理电路。所述转发单元150还可对应于通信接口,可用于所述数据包的转发,例如,具体可对应于所述边缘路由器的出端口。总之,在本实施例中进行所述数据包的转发时,若一个数据包是从第一类端口进入的,则在该数据包添加与该数据包的地址对对应的隧道标签,最后根据隧道标签进行数据包的转发,从而实现数据包传输路径或传输隧道的控制,进而可以通过调整隧道标签与地址对的对应关系,实现传输负载均衡,避免有的链路过于拥堵,而有的链路没有数据流量传输的问题。在一些实施例中,所述判断单元120,具体用于查询第一流表,确定所述入端口是否位于所述第一流表中;所述第二确定单元130,具体用于当所述入端口为所述第一类端口时,根据所述地址对查询第二流表;确定所述第二流表中与所述地址对对应的所述隧道标签。在本实施例中所述装置或所述边缘路由器包括存储介质,所述存储介质用于存储所述第一流表和所述第二流表,在本实施例中所述判断单元120通过查询所述第一流表,判断所述入端口是否位于第一流表中,第二确定单元130,通过查询第二流表,确定所述隧道标签。这样的话,如需要调整各个传输隧道的传输流量,可以通过调整第二流表来实现。所述第一流表和所述第二流表的具体内容可以参见前述实施例的对应部分,在此就不再重复了。在有些实施例中,所述转发单元150,具体用于查询所述第一流表和/或第二流表,确定与所述数据包中携带的隧道标签对应的出端口;利用所述出端口转发所述数据包。在本实施例中,所述转发单元150通过查询第一流表中隧道标签与出端口之间的对应关系,利用查询到的出端口发送所述数据包。在一些实施例中,所述装置还包括:统计单元,用于当所述入端口的所述第一类端口时,统计每一个所述地址对所对应的发起流量,形成统计结果;所述发起流量为通过所述第一类端口进入到所述边缘路由器的数据流量;第一发送单元,用于将所述统计结果,发送给控制器;其中,所述统计结果,用于所述控制器调整所述地址对与所述隧道标签的对应关系。所述统计单元对应的物理结构,同样可为处理器或处理电路,将统计各个地址对对应的发起流量,从而获得各个地址对对应的数据流量,该数据流由对应于通信接口的第一发送单元,发送给控制器,用于控制器调整地址对与隧道标签之间的对应关系,相当于实现更新所述第二流表。如图5所示,本实施例提供一种骨干网的数据处理装置,应用于控制器中,包括:接收单元210,用于接收边缘路由器发送的统计结果;其中,所述统计结果是数据包通过第一类端口进入所述边缘路由器,所述边缘路由器根据所述数据包的地址对统计的数据流量;所述地址对包括所述数据包的源地址和目的地址;第三确定单元220,用于根据所述统计结果,确定所述地址对与隧道标签的对应关系;第二发送单元230,用于将所述对应关系发送给所述边缘路由器;其中,所述对应关系,用于所述边缘路由器对从所述边缘路由器的第一类端口进入的数据包中添加转发所述数据包的隧道标签和/或根据所述隧道标签转发所述数据包。本实施例所述装置可为应用于与边缘路由器连接,且管理边缘路由器的工作的控制器中。所述接收单元210可对应于各种接收接口,能够从边缘路由器接收统计结果。所述第三确定单元220可对应于处理器或处理电路。这里的处理器或处理电路可参见前述实施例,可用于根据统计结果,确定地址对与隧道标签的对应关系,例如,调整地址对与隧道标签之间的对应关系,生成一个新的隧道标签,并建立该隧道标签与地址对之间的对应关系。所述第二发送单元230同样可对应于通信接口,可用于向边缘路由器发送所述对应关系,以方便边缘路由器在发起流量中添加隧道标签,并根据隧道标签转发数据包。在有些实施例中,所述第三确定单元220,用于根据所述统计结果,确定第一地址对对应的数据流量占传输链路的总容量的第一比例;当所述第一比例大于拆分阈值时,将所述第一地址对进行n次拆分;其中,所述n为不小于1的整数;将所述第一地址对拆分成多个第二地址对;分别建立多个所述第二地址对与隧道标签的对应关系。这里的n的取值可为2、3、4或5等各种功能静态取值,也可以为根据预设函数动态确定的值,例如,所述第三确定单元220,还用于确定拆分粒度n。具体如何确定所述n,可以参见前述实施例中,利用所述拆分函数进行确定。在一些实施中,所述第三确定单元220,用于根据所述统计结果,确定第三地址对对应的数据流量占传输链路的总容量的第二比例;当所述第二比例小于汇聚阈值时,将所述第三地址对与第四地址对合并形成第五地址对;其中,所述第三地址对和所述第四地址对的地址掩码相同;建立所述第五地址对与隧道标签的对应关系。总之,本实施例中所述第三确定单元220确定地址对与隧道标签之间的对应关系,可包括一个地址对到多个地址对的拆分,也可以包括多个地址对到一个地址对的合并,从而形成新的地址对与隧道标签之间的对应关系,从而通过对应关系的建立和/或更新,实现各个传输链路的传输流量的控制和均衡,避免过于拥堵以及资源闲置的问题,同时方便对各种业务的数据流量的统计。以下结合具体上述任意实施例提供一个具体示例:本示例提供的方法,可为面向骨干网的数据传输和/或处理方法。骨干网是用来连接多个区域或地区的高速网络,具体如,骨干网用来连接多个省网,每个路由器都连接到独立的省网,可以看成是将多个自治域通过核心自治域连接起来。在本示例中骨干网可视为一个自治域,边缘路由器则连接到各个省网自治域。骨干网自治域有以下几个特点:骨干网上每个路由器都是与一个自治域相连,不会与具体的某个主机或者服务器直接相连;骨干网是实现整个网络的互联互通,业务数量庞大,不能实现对每条业务流进行监视和信息获取;骨干网连接的省网个数一般在几十这个数量级,即当对省网进行抽象为节点,节点一般为几十个。本示例中的骨干网可为ip骨干网,所述ip骨干网可为基于ip地址进行数据传输的传输中心网络。首先,本示例提供一种控制边缘路由器进行数据转发的的流表,如图6所示,可包括:步骤s101:初始化,控制器手机网络信息,例如,网络拓扑和/或流量信息;步骤s102:控制器计算没对边缘路由器k跳内的所有备选路径,建立隧道tunnel并设置隧道标签tunnelid;步骤s103:初始化路由器的流表(table0,table1),这里的table0对应于前述的第一流表;所述table1对应于第二流表。table0中表项分为两部分,分别处理本地业务和转发业务的转发,对本地业务和转发业务采用不同的匹配方式和动作:第一部分中匹配项为与此路由器直接相连的省网的入端口,对应动作初始化为转到table1;第二部分匹配项为tunnelid,对应动作为从控制器计算好的特定端口转发。这里的本地业务即为从区域网进入到骨干网的发起流量对应的业务,所述转发业务可为从骨干网进入到区域网或在骨干网中进行中转的转发流量对应的业务。所述转发流量又可称之为中转流量,因为当前数据包所经过的路由器为该数据包的中转节点。控制器根据每个边缘路由器的源/目的地址段分布情况,把地址段分成一项或若干项,每项所对应的源/目的地址段分配一个tunnelid,以此来建立边缘路由器上table1的表项内容,并将其下发到路由器流表中。table1中的匹配项为源ip地址段和目的ip地址段,对应动作为添加控制器计算好的tunnelid号并转发数据包。图7提供的为本示例中边缘路由器转发数据包的流程,可包括:步骤s201:数据包达到路由器。步骤s202:查询table0(对应于第一流表),数据包的入端口是否为预定端口(即为所前述的第一类端口),若是,进入步骤s203,若否,进入步骤s204。步骤s203:发起流量转到table1进行匹配,进入步骤s205。步骤s204:中转流量匹配tunnelid并转发;根据该tunnelid进行数据包的转发。步骤s205:判断在table1中是否匹配?若是,进入步骤s206,若否,进入步骤s207。在本步骤中,转到table1进行基于地址对的匹配,若匹配成功就可以确定该数据包的tunnelid。步骤s206:为发起流量添加tunnelid并转发。步骤s207:路由器向控制器上报数据包的地址对及流量大小,转到步骤s208。步骤s208:控制器向路由器下发表项更新信息,表项包括地址对、tunnelid和出端口。在本示例中所述地址对可包括数据包的源地址和目的地址。所述表项可用于更新所述table1。总之,当有数据包到达路由器时,路由器根据流表进项匹配,如果匹配不到表项则将数据包信息发送给控制器,控制器根据数据信息及网络情况为其分配相应的tunnelid,并将分配信息以路由表项更新的方式下发到路由器,路由器根据流表内的表项信息对数据包执行相应操作。为避免流量过大容易造成网络拥塞且发生拥塞时难以进行调度的情况,对过大的汇聚流进行拆分以降低其粒度;同时,为了保证路由器表项不会过多,对于流量过小的汇聚流进行汇聚,以减少路由器表项数目。在本实施例中可认为一个地址对对应于一个汇聚流,这里的汇聚流可为传输路径的业务流。例如,本示例中该,骨干网中出现链路负载过重的情况,通过将部分流调度到其他链路,避开负载较重的链路,实现网络负载均衡化。要实现部分流的调度,首先需要获得流的需求大小,才能够进行正确的调度。由于骨干网不会与业务流直接接触,无法获知业务流信息。为获得业务信息实现流调度,本示例中为避免因采用第三方工具而导致交换机和控制器负担加重的情况,利用openflow表项中已有的字段counter,通过统计一段时间表项匹配的字节数及该时长来得到在该段时间内匹配到该表项流带宽大小。由于每个路由器所处理的业务分为两类:由该路由器发起的发起业务和由其他路由器转发过来的中转业务。在本示例中,只需统计每个路由器上发起业务的流大小信息,就可以获得全网业务流大小情况。为了区分业务是否为本地发起的,可以根据入接口不同划分为本地发起的入口表项和非本地发起的中间表项。由骨干网上每个路由器与省网单独直接相连的特点可以得出,业务都会分别有一个流入和一个流出骨干网的端口,在每个路由器上进入骨干网是通过一个或多个特定端口,即从特定端口进入的业务流都是刚开始流入骨干网的发起流量,只要监听特定入端口流,就可以获得所有穿过骨干网的业务流。根据这个特点,设计了用于匹配发起流量的table1。该表的匹配项包括目的ip地址前缀,源ip地址前缀。table0中第一个表项用于匹配刚进入该表所在交换机的入端口号的发起流量,匹配此条的发起流量将转到table1,table1根据发起流量的源目地址给该流量添加tunnelid并从相应端口转发出去。table0中除第一个表项外,其余表项匹配的是在ip骨干网中通过此交换机进行中转的中转流量,当这些表项匹配成功时,直接根据tunnelid进行转发;当数据包是要离开骨干网,则执行tunnelid弹出的行动并指定出端口,这样就能够实现用户透明转发。table1用来给发起流量加tunnelid,并监听进入发起流量大小信息。table0对发起流量与中转流量进行区分,将发起流量转到table1进行处理;中转流量则根据其tunnelid进行中转。这样只需要统计交换机中table1的发起流量信息并传递给控制器,就能实现流信息采集。由于骨干网中流量分布较广,如果对每一条业务流都计算其路由路径,控制器需要大量的计算开销,而且控制器需要下发的流表项多,路由器可能无法容纳这些流表项。此外,由于骨干网中控制器难以获知具体业务流信息的特点,对每一条业务量进行处理也是不合适的。因此,本示例根据骨干网中只有几十个节点这个特点,即骨干网有上千个节点对,若每个节点对之间有10到20条备选路由,则整个骨干网也就只有上万条路由,采取了先计算出每个节点对之间的k跳之内备选路径,并为每条路由分配全局唯一的tunnelid。这里的k的取值可为10、20、15、6、8或11等取值。在本示例中,进行处理的流都是由相同源目ip地址段汇聚而成的汇聚流,汇聚流的粒度在通过表项粒度来体现,路由器可以直接通过openflow表项中counter字段来得到表项所表示的汇聚流需求大小,如果汇聚流的需求太大,极有可能造成网络流量拥塞。同时,如果大流造成网络中流量拥塞,不易进行流量迁移。为了尽可能避免网络中因为大流造成的网络拥塞,同时为了便于在网络发生拥塞时能够快速进行重路由,当流量进入骨干网时,分析其流量大小需求,对流量需求较大的汇聚流,调整table1将其所对应的流粒度进行拆分,降低其流量需求。控制器根据每个边缘路由器的源/目的地址段分布情况,把地址段分成若干项,并为每项所对应的源/目的地址段指派一个tunnelid控制器把源/目的地址段跟tunnelid的对应关系下发给边缘路由器的table1表项。当数据包达到时,边缘路由器根据table1的表项信息,为每个数据包根据其源/目的地址在table1表找到匹配的源/目的地址段的tunnelid,并在ip头部添加唯一的tunnelid。中间路由器只需要查找table0的表项进行转发,根据数据包的tunnelid决定转发行为。采用本示例中,源目的地址段和tunnelid转发机制的好处在于:1)便于实现负载均衡,通过调整源目的地址段跟tunnelid的映射关系,即可改变流量转发路径,调整骨干网中链路的负载量,从而达到链路负载均衡。2)有效减少中间节点的表项数目。由于一条tunnel可以被多条流量共同使用,通过使用tunnelid,中间路由器table0只需要匹配tunnelid转发,无需对每一条流量配置一个匹配项,有效减少了表项数目。3)便于实现重路由:由于数据包中的tunnelid是在边缘路由器中的table1添加的,因此,当数据包的路由路径变化时,只需要在边缘路由器的table1中进行操作,改变table1中匹配表项添加的tunnelid号,就能完成重路由的功能。并且在table1中对表项进行调整,即拆分聚合,不会影响到table0中的表项,减少了表项的变动,从而减少了控制器与交换机之间的表项下发信息。此外,由于重路由只需要对边缘路由器上的table1进行修改而中间路由器不变,保证了路由的一致性。本示例中的tunnelid可采用多协议标记交换(multiprotocollabelswitching,mpls)的标签头部。如图2,利用mpls的标签投标能够表示100万个tunnel,足够骨干网中所有节点对的tunnelid。本示例之所以使用mpls标签头部格式,原因在于openflow协议中支持mpls标签转发,可以使用这一特点,可以不需要添加新的openflow协议功能而实现我们基于tunnelid的流转发。图8所示的为一种汇聚流的拆分方法,包括:步骤s301:控制器周期性获取边缘路由器上包的表项信息,例如,源目的地址段、tunnelid及流量大小。步骤s302:判断表项流量是否过大,若是进入步骤s304,若否进入步骤s303。步骤s303:判断表项流量是否过小,若是进入步骤s305,若否返回步骤s301;步骤s304:控制器根据拆分算法进行流量拆分。这里的拆分算法可以参见前述实施例中的拆分函数。步骤s305:控制器根据聚合算法进行流量聚合。步骤s306:控制器向路由器下发表项更新信息,删除用于拆分、聚合的表项,添加拆分、聚合后的新表项。对于聚合表项可如下:i、判断汇聚流需求大小所占链路容量的比例是否低于流经过的链路最小带宽容量的拆分阈值d%,若超过则将此流标记为改变汇聚流,拆分阈值d%也可根据实际网络需求设置,在本实施例中设置为10%;ii、遍历每条改变汇聚流,为每条改变汇聚流寻找可汇聚流,且每条改变流最多拥有两条可汇聚流。如图9和图10所示,设一个省网为一个b类ip地址范围,与另一个省网一个b类ip地址范围进行数据交换,每条汇聚流的源目ip地址范围表示为一个矩形,其中,横坐标表示其源ip(sip)地址,纵坐标表示其目的ip(dip)地址,矩形中的字母标识不同的汇聚流,数字表示tunnelid,每个矩形不会出现交叠,并且所有矩形覆盖了整个源目的ip地址范围,此处假设图中所有流均为改变汇聚流。在本实施例中,如图9的(1)所示,对于改变流c、d、e、f、g和h,找不到满足汇聚条件的流,不能进行汇聚。若寻找到一条可汇聚流,则按照汇聚流聚合算法将此可汇聚流和该条改变汇聚流进行聚合,再判断聚合后的汇聚流的带宽是否低于链路带宽占用率阈值,如果低于链路带宽占用率阈值,则将该聚合后的汇聚流标记为改变汇聚流;在本实施例中,如图9中(1)所示,为改变汇聚流a寻找到一条可汇聚流b,则将汇聚流a与汇聚流b进行聚合,得到如图9中(2)所示的tunnelid和目的ip地址不变,而源ip地址由流a源ip地址与流b源ip地址共同组成的新的汇聚流m。若寻找到两条可汇聚流,则寻找其满足汇聚条件的汇聚流是否有另外一条可汇聚流,若有,则将找到的所有可汇聚流连同该条改变汇聚流一起聚合为一条新的汇聚流,若聚合后带宽低于链路带宽占用率阈值,将其标记为改变汇聚流;若没有,则选择其所有可汇聚流中带宽需求最大的流进行聚合,若聚合后带宽低于链路带宽占用率阈值,将其标记为改变汇聚流。在本示例中,如图9中(1)所示,改变汇聚流i寻找到两条可汇聚流j和k,再为可汇聚流j和k寻找另外一条满足汇聚条件的流,由于j和k为汇聚流i的可汇聚流,因此只要找到j和k其中一条可汇聚流即同时为满足j和k的汇聚条件的流,图(1)中能够找到的j和k的另外一条可汇聚流为汇聚流l,因此将汇聚流i、j、k和l进行聚合,得到图9中(2)中所示的汇聚流n。而在如图9中(3)所示的改变汇聚流i,能够寻找到两条可汇聚流j和k,但找不到j和k的另外一条可汇聚流,因此对于汇聚流i选取满足汇聚条件的流j和k中带宽需求大的进行聚合,此处假设汇聚流j的流量需求大于汇聚流k,故选取流j与流i进行聚合,得到如图9中的(4)中所示的汇聚流n。图10所示的为一种汇聚流的拆分和聚合方法,包括:步骤s401:控制器周期获取边缘路由器上表项信息,包括表项流量的源目ip地址段(即源ip地址及目的ip地址的地址段)、tunnelid及流量大小。步骤s402:控制器根据tunnelid得到流量拆分阈值,比对流量大小判断是否需要拆分,若是进入步骤s404,若否进入步骤s403。步骤s403:控制器根据tunnelid得到流量聚合阈值码,比对流量大小判断是否需要聚合,若是进入步骤s405,若否返回步骤s401。步骤s404:控制器根据拆分算法进行流量拆分。步骤s405:控制器根据聚合算法进行流量聚合。步骤s406:完成拆分后,控制器向路由器下发table的表项更新系,删除用于拆分的流量表项,添加拆分后的新表项、包括源目ip地址段、tunnelid及转发端口号(即所述出端口的端口号)。步骤s407:完成聚合后,控制器向路由器下发table1的表项更新信息,删除用于聚合的流量表项,添加聚合后的新表项内、包括源目ip地址段、tunnelid及转发端口号。在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1