数据或报文转发的方法、节点和系统与流程

文档序号:17355810发布日期:2019-04-09 21:39阅读:441来源:国知局
数据或报文转发的方法、节点和系统与流程

本申请涉及数据通信领域,尤其涉及一种数据或报文转发的方法、节点和系统。



背景技术:

数据中心通常是指在一个物理空间内实现对数据信息的集中存储、处理、管理、传输和交换等功能,例如,a电商平台在b地点建立一个数据中心专门用于集中集中存储、处理、管理、传输和交换在a电商平台上进行交易的数据。为了能够实现上述功能,数据中心通常要包括存储节点、服务节点以及连接存储节点以及服务节点的组网网络三大部分。其中,存储节点用于实现数据的存储功能。服务节点用于实现数据的处理和管理功能。组网网络用于实现数据的传输和交换功能。

本领域的技术人员在长期研究中发现,如何提高组网网络的性能是一个尚未解决的问题。



技术实现要素:

本申请提供了一种数据或报文转发的方法、节点和系统,能够有效提高组网网络的性能。

第一方面,提供了一种转发节点,所述转发节点直接转发其它节点通过网络发送的报文或数据。所述转发节点包括:第一处理器、第一存储器以及网络适配卡,其中,所述网络适配卡包括第二处理器、第二存储器以及收发器,所述收发器包括第一端口和第二端口;

所述收发器用于通过所述第一端口接收广播报文,其中,所述广播报文携带源节点的第一地址信息,所述广播报文是所述源节点发送的用于查询目的节点第二地址信息的报文;

所述第二处理器用于在所述第二存储器中存储第一表项,其中,所述第一表项用于记录所述第一地址信息和所述第一端口的对应关系;

所述收发器用于通过所述第二端口发送所述广播报文;

所述收发器用于通过所述第二端口接收所述广播报文的响应报文,其中,所述响应报文携带第二地址信息,所述响应报文用于向所述源节点返回所述第二地址信息;

所述第二处理器用于根据所述第一地址信息查询所述第一表项确定所述第一端口;

所述收发器用于通过所述第一端口发送所述响应报文;

所述第二处理器用于在所述第二存储器中存储第二表项,其中,所述第二表项用于记录所述第二地址信息和所述第二端口的对应关系。

在上述方案中,转发节点通过位于数据链路层(二层)的第二处理器实现路径自学习的功能,不需要上报到位于网络层(三层)的第一处理器,能够提高有效地路径自学习的的效率,从而提高网络的性能。

在一些可能的设计中,所述响应报文还包括所述第一地址信息。

在一些可能的设计中,所述源节点的第一地址信息是所述源节点的媒体访问控制(mediaaccesscontroladdres,mac)地址,所述目的节点的第二地址信息是所述目的节点的mac地址。

在一些可能的设计中,所述收发器用于接收数据报文,其中,所述数据报文包含所述源节点发送给所述目的节点的数据和所述第二地址信息;所述第二处理器用于根据所述第二地址信息查询所述第二表项得到所述第二端口;所述收发器用于通过所述第二端口发送所述数据报文。

在一些可能的设计中,所述转发设备包括以下中的一种或者多种:

所述广播报文还包括第一转发次数,所述收发器还用于在确定所述第一转发次数大于转发阈值的情况下,丢弃所述广播报文,在确定所述第一转发次数没有大于转发阈值的情况下,将所述第一转发次数加一,并通过第二端口发送所述广播报文;或,

所述响应报文还包括第二转发次数,所述收发器还用于在确定所述第二转发次数大于转发阈值的情况下,丢弃所述响应报文,在确定所述第二转发次数没有大于转发阈值的情况下,将所述第二转发次数加一,并通过所述第一端口发送所述响应报文;或,

所述数据报文还包括第三转发次数,所述收发器还用于在确定所述第三转发次数大于转发阈值的情况下,丢弃所述数据报文,在确定所述第三转发次数没有大于转发阈值的情况下,将所述第三转发次数加一,并通过所述第二端口发送所述数据报文。

在上述方案中,转发节点在进行自学习的过程中,判断广播报文、响应报文以及数据报文中的一个或者多个的转发次数是否大于转发阈值,并在大于转发阈值的情况下,将对应的报文进行丢弃,在没有大于转发阈值的情况下,才将对应的报文进行转发,从而避免对应的报文一直在网络中循环,导致网络的资源被消耗。

在一些可能的设计中,所述收发器还用于在所述响应报文遭受到病毒攻击的情况下,确定所述第二转发次数大于转发阈值,确定所述第二转发次数大于转发阈值的情况下,丢弃所述响应报文,在确定所述第二转发次数没有大于转发阈值的情况下,将所述第二转发次数加一,并通过所述第一端口发送所述响应报文。

在一些可能的设计中,所述收发器还用于在所述数据报文遭受到病毒攻击的情况下,确定所述第三转发次数大于转发阈值,在确定所述第三转发次数大于转发阈值的情况下,丢弃所述数据报文,在确定所述第三转发次数没有大于转发阈值的情况下,将所述第三转发次数加一,并通过所述第二端口发送所述数据报文。

在一些可能的设计中,所述转发阈值是根据所述转发节点所在的网络的拓扑结构确定的。例如,所述转发阈值大于所述转发节点所在的网络的节点之间的最大转发跳数,其中,最大转发跳数为所述转发节点所在的网络中任意两个节点之间的转发跳数中数值最大的转发跳数。

在一些可能的设计中,在所述广播报文包括所述第一转发次数的情况下,所述第一转发次数承载于所述广播报文的虚拟局域网字段;

在所述响应报文包括所述第二转发次数的情况下,所述第二转发次数承载于所述响应报文的虚拟局域网字段;

在所述数据报文包括所述第三转发次数的情况下,所述第三转发次数承载于所述数据报文的虚拟局域网字段。

在一些可能的设计中,所述转发节点用于通过第一节点接收所述广播报文,并向第二节点发送所述广播报文;所述第一节点包括第三处理器和第三存储器,所述第二节点包括第四处理器和第四存储器;所述第三存储器和所述第四存储器用于存储通过所述转发节点转发或发送的数据。

在一些可能的设计中,所述转发节点还用于通过所述第一节点或所述第二节点接收数据,并将接收到的数据存储在所述第一存储器中。所述转发节点、所述第一节点和所述第二节点均不是交换机。所述转发节点所在的网络不需要通过交换机转发数据和报文。

在一些可能的设计中,所述第一节点为所述源节点,所述第二节点为所述目的节点。

第二方面,提供了一种转发方法,应用于转发节点,所述转发节点直接转发其它节点通过网络发送的报文或数据,转发节点包括:第一处理器、第一存储器以及网络适配卡,其中,所述网络适配卡包括第二处理器、第二存储器以及收发器,所述收发器包括第一端口和第二端口;

所述收发器通过所述第一端口接收广播报文,其中,所述广播报文携带源节点的第一地址信息,所述广播报文是所述源节点发送的用于查询目的节点第二地址信息的报文;

所述第二处理器在所述第二存储器中存储第一表项,其中,所述第一表项用于记录所述第一地址信息和所述第一端口的对应关系;

所述收发器通过所述第二端口发送所述广播报文;

所述收发器通过所述第二端口接收所述广播报文的响应报文,其中,所述响应报文携带第二地址信息,所述响应报文用于向所述源节点返回所述第二地址信息;

所述第二处理器根据所述第一地址信息查询所述第一表项确定所述第一端口;

所述收发器通过所述第一端口发送所述响应报文;

所述第二处理器在所述第二存储器中存储第二表项,其中,所述第二表项用于记录所述第二地址信息和所述第二端口的对应关系。

在一些可能的设计中,所述响应报文还包括所述第一地址信息。

在一些可能的设计中,所述源节点的第一地址信息是所述源节点的mac地址,所述目的节点的第二地址信息是所述目的节点的mac地址。

在一些可能的设计中,所述方法还包括:

所述收发器接收数据报文,其中,所述数据报文包含所述源节点发送给所述目的节点的数据和所述第二地址信息;所述第二处理器根据所述第二地址信息查询所述第二表项得到所述第二端口;所述收发器通过所述第二端口发送所述数据报文。

在一些可能的设计中,所述方法还包括以下中的一种或者多种:

所述广播报文还包括第一转发次数,所述收发器通过所述第二端口发送所述广播报文包括:所述收发器在确定所述第一转发次数大于转发阈值的情况下,丢弃所述广播报文,在确定所述第一转发次数没有大于转发阈值的情况下,将所述第一转发次数加一,并通过第二端口发送所述广播报文;或,

所述响应报文还包括第二转发次数,所述收发器通过所述第一端口发送所述响应报文包括:所述收发器在确定所述第二转发次数大于转发阈值的情况下,丢弃所述响应报文,在确定所述第二转发次数没有大于转发阈值的情况下,将所述第二转发次数加一,并通过所述第一端口发送所述响应报文;或,

所述数据报文还包括第三转发次数,所述收发器通过所述第二端口发送所述数据报文包括:所述收发器在确定所述第三转发次数大于转发阈值的情况下,丢弃所述数据报文,在确定所述第三转发次数没有大于转发阈值的情况下,将所述第三转发次数加一,并通过所述第二端口发送所述数据报文。

在一些可能的设计中,所述收发器还用于在所述响应报文遭受到病毒攻击的情况下,确定所述第二转发次数大于转发阈值,确定所述第二转发次数大于转发阈值的情况下,丢弃所述响应报文,在确定所述第二转发次数没有大于转发阈值的情况下,将所述第二转发次数加一,并通过所述第一端口发送所述响应报文。

在一些可能的设计中,所述收发器还用于在所述数据报文遭受到病毒攻击的情况下,确定所述第三转发次数大于转发阈值,在确定所述第三转发次数大于转发阈值的情况下,丢弃所述数据报文,在确定所述第三转发次数没有大于转发阈值的情况下,将所述第三转发次数加一,并通过所述第二端口发送所述数据报文。

在一些可能的设计中,所述转发阈值是根据所述转发节点所在的网络的网络结构确定的。例如,所述转发阈值大于所述转发节点所在的网络的节点之间的最大转发跳数,其中,最大转发跳数为所述转发节点所在的网络中任意两个节点之间的转发跳数中数值最大的转发跳数。

在一些可能的设计中,在所述广播报文包括所述第一转发次数的情况下,所述第一转发次数承载于所述广播报文的虚拟局域网字段;

在所述响应报文包括所述第二转发次数的情况下,所述第二转发次数承载于所述响应报文的虚拟局域网字段;

在所述数据报文包括所述第三转发次数的情况下,所述第三转发次数承载于所述数据报文的虚拟局域网字段。

在一些可能的设计中,所述转发节点直接转发其它节点通过网络发送的报文或数据包括:

所述转发节点通过第一节点接收所述广播报文,并向第二节点发送所述广播报文;所述第一节点包括第三处理器和第三存储器,所述第二节点包括第四处理器和第四存储器;所述第三存储器和所述第四存储器用于存储通过所述转发节点转发或发送的数据。

在一些可能的设计中,所述转发节点还用于通过所述第一节点或所述第二节点接收数据,并将接收到的数据存储在所述第一存储器中。所述转发节点、所述第一节点和所述第二节点均不是交换机。所述转发节点所在的网络不需要通过交换机转发数据和报文。

在一些可能的设计中,所述第一节点为所述源节点,所述第二节点为所述目的节点。

第三方面,提供了一种转发节点,包括:接收模块、第一处理模块、第二处理模块、发送模块和存储模块,所述接收模块包括第一端口,所述发送模块包括第二端口,

所述接收模块用于通过所述第一端口接收广播报文,其中,所述广播报文携带源节点的第一地址信息,所述广播报文是所述源节点发送的用于查询目的节点第二地址信息的报文;

所述第二处理模块用于在存储模块中存储第一表项,其中,所述第一表项用于记录所述第一地址信息和所述第一端口的对应关系;

所述发送模块用于通过所述第二端口发送所述广播报文;

所述接收模块用于通过所述第二端口接收所述广播报文的响应报文,其中,所述响应报文携带第二地址信息,所述响应报文用于向所述源节点返回所述第二地址信息;

所述第二处理模块用于根据所述第一地址信息查询所述第一表项确定所述第一端口;

所述发送模块用于通过所述第一端口发送所述响应报文;

所述第二处理模块用于在所述存储模块中存储第二表项,其中,所述第二表项用于记录所述第二地址信息和所述第二端口的对应关系。

在一些可能的设计中,所述响应报文还包括所述第一地址信息。

在一些可能的设计中,所述源节点的第一地址信息是所述源节点的mac地址,所述目的节点的第二地址信息是所述目的节点的mac地址。

在一些可能的设计中,所述接收模块用于接收数据报文,其中,所述数据报文包含所述源节点发送给所述目的节点的数据和所述第二地址信息;所述第二处理模块用于根据所述第二地址信息查询所述第二表项得到所述第二端口;所述发送模块用于通过所述第二端口发送所述数据报文。

在一些可能的设计中,所述转发设备包括以下中的一种或者多种:

所述广播报文还包括第一转发次数,所述发送模块还用于在确定所述第一转发次数大于转发阈值的情况下,丢弃所述广播报文,在确定所述第一转发次数没有大于转发阈值的情况下,将所述第一转发次数加一,并通过第二端口发送所述广播报文;或,

所述响应报文还包括第二转发次数,所述发送模块还用于在确定所述第二转发次数大于转发阈值的情况下,丢弃所述响应报文,在确定所述第二转发次数没有大于转发阈值的情况下,将所述第二转发次数加一,并通过所述第一端口发送所述响应报文;或,

所述数据报文还包括第三转发次数,所述发送模块还用于在确定所述第三转发次数大于转发阈值的情况下,丢弃所述数据报文,在确定所述第三转发次数没有大于转发阈值的情况下,将所述第三转发次数加一,并通过所述第二端口发送所述数据报文。

在一些可能的设计中,所述发送模块还用于在所述响应报文遭受到病毒攻击的情况下,确定所述第二转发次数大于转发阈值,确定所述第二转发次数大于转发阈值的情况下,丢弃所述响应报文,在确定所述第二转发次数没有大于转发阈值的情况下,将所述第二转发次数加一,并通过所述第一端口发送所述响应报文。

在一些可能的设计中,所述发送模块还用于在所述数据报文遭受到病毒攻击的情况下,确定所述第三转发次数大于转发阈值,在确定所述第三转发次数大于转发阈值的情况下,丢弃所述数据报文,在确定所述第三转发次数没有大于转发阈值的情况下,将所述第三转发次数加一,并通过所述第二端口发送所述数据报文。

在一些可能的设计中,所述转发阈值是根据所述转发节点所在的网络的拓扑结构确定的。例如,所述转发阈值大于所述转发节点所在的网络的节点之间的最大转发跳数,其中,最大转发跳数为所述转发节点所在的网络中任意两个节点之间的转发跳数中数值最大的转发跳数。

在一些可能的设计中,在所述广播报文包括所述第一转发次数的情况下,所述第一转发次数承载于所述广播报文的虚拟局域网字段;

在所述响应报文包括所述第二转发次数的情况下,所述第二转发次数承载于所述响应报文的虚拟局域网字段;

在所述数据报文包括所述第三转发次数的情况下,所述第三转发次数承载于所述数据报文的虚拟局域网字段。

第四方面,提供了一种信息处理系统,其特征在于,包括多个转发节点;每个所述转发节点为如第一方面任一项所述的转发节点。

第五方面,提供了一种计算机非瞬态存储介质,包括计算机可读指令,当所述计算机可读指令在计算机设备上运行时,使得所述计算机设备执行如第二方面任一项所述的方法。

附图说明

为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。

图1是本申请实施例涉及的数据中心的组网示意图;

图2是本申请实施例提供的一种存储节点的结构示意图;

图3是本申请实施例涉及的交换机组网的结构示意图;

图4是本申请实施例涉及的免交换机组网的结构示意图;

图5是图4所示的免交换机组网的逻辑组网图;

图6是本申请提供的一种广播报文的结构示意图;

图7是本申请提供的一种转发节点的结构示意图;

图8是本申请提供的一种数据或报文转发的方法的流程示意图。

具体实施方式

如图1所示,数据中心的组网网络可以包括前端客户网络110和后端存储网络120两大部分。其中,前端客户网络110是指服务节点130与存储节点140之间互联的网络,用于实现服务节点130和存储节点140之间的数据通讯。后端存储网络120是指存储节点140与存储节点140之间互联的网络,用于实现存储节点140和存储节点140之间的数据通信。

存储节点140可以通过前端客户网络110从服务节点130接收电子文件(或者“文件”),并将文件进行存储。所述文件包括但不限于文本、图像、音频内容、视频内容或者其组合等数据形式。存储节点140接收文件时使用的协议可以是网络文件系统协议或者其他协议。存储节点140可以将在正常操作期间产生的服务日志等数据进行存储。存储节点140可以基于其他数据(例如,通过从高分辨率源图像产生小缩略图图像)创建数据并进行存储。此外,存储节点140还可以集成存储引擎,存储引擎用于确定文件的内容如何分布在多个存储节点上。

如图2所示,存储节点140通常包括第一处理器141、第一存储器142以及网络适配器143。

第一处理器141可以是一个或者多个通用处理器,其中,通用处理器可以是能够处理电子指令的任何类型的设备,包括中央处理器(centralprocessingunit,cpu)、微处理器、微控制器、主处理器、控制器以及专用集成电路(applicationspecificintegratedcircuit,asic)等等。第一处理器141执行各种类型的数字存储指令,例如存储在第一存储器142中的软件或者固件程序。在一具体的实施例中,第一处理器141可以是x86处理器等等。第一处理器141通过物理接口将命令发送给第一存储器142,以完成存储相关的任务,例如,第一处理器141可以提供的命令包括读取命令、写入命令、复制命令以及擦除命令等等。所述命令可以指定与第一存储器142的特定页和块有关的操作。作为一个示例,一个命令可以请求将数据写入到特定物理页,或者,另一个命令可以请求擦除特定物理块。

第一存储器142可以包括第一存储设备和第二存储设备。第一存储设备可以例如是随机存取存储器(randomaccessmemory,ram)、快闪存储器(flashmemory)等。第二存储设备可以是ram,只读存储器(read-onlymemory,rom)或者硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd)。第一存储设备存取数据的速度比第二存储设备快,但是第二存储设备通常具有比第一存储设备具有更大的存储容量。

网络适配器143,还被称为网络接口控制器、网络接口卡或者局域网(localareanetwork,lan)适配器。每块网络适配器143都有一个唯一的mac地址,是网络适配器143厂家在生产时烧入只读存储芯片中的。存储节点140通过网络适配器143连接到网络。

网络适配卡143包括第二处理器、第二存储器以及收发器。第二处理器与第一处理器相类似,但是,第二处理器的性能要求可以低于第一处理器的性能要求。在一具体的实施例中,第二处理器可以是arm处理器等等。第二存储器也可以是快闪存储器、hdd或者sdd,第二存储器的存储容量可以小于第一存储器的存储容量。收发器可以用于接收和发送报文,并将接收到的报文上传给第二处理器进行处理。网络适配卡143还可以包括多个端口,端口可以是粗缆接口、细缆接口和双绞线接口三种接口类型中的任意一种或者多种。

存储节点140之间的后端存储网络的的实现方式可以包括交换机组网以及免交换机组网:

如图3所示,交换机组网的一种实现方式可以是:存储节点1的端口1连接到交换机1的端口1,存储节点2的端口1连接到交换机的端口2,存储节点3的端口1连接到交换机1的端口3。存储节点1的端口2连接到交换机2的端口1,存储节点2的端口2连接到交换机的端口2,存储节点3的端口2连接到交换机2的端口3。也就是说,交换机1的不同端口分别连接存储节点1、存储节点2以及存储节点3的一个端口,交换机2的不同端口分别连接存储节点1、存储节点2以及存储节点3的另一个端口。其中,图3所示的交换机组网仅仅是一个具体的示例,不应构成具体限定。

交换机组网的特点为:存储节点之间的数据通信都必须经过交换机(也可以称为网桥),由交换机实现不同存储节点之间的数据通信。如图3所示,当存储节点1需要与存储节点2进行数据通信时,存储节点1可以通过交换机1将数据传输给存储节点2,当存储节点2需要与存储节点3进行数据通信时,存储节点2可以通过交换机1将数据传输给存储节点3,当存储节点1需要与存储节点3进行数据通信时,存储节点1可以通过交换机1将数据传输给存储节点3。为了保证数据传输的可靠性,图3所示的交换机组网方式还设置了交换机1的冗余备份交换机,即,交换机2,以确保在交换机1出现了故障的时候,交换机2可以接替交换机1进行工作。

如图4所示,免交换机组网的一实现方式可以是:存储节点a的端口1连接存储节点c的端口1,存储节点a的端口2连接存储节点d的端口1,存储节点a的端口3连接存储节点e的端口1,存储节点a的端口4连接存储节点f的端口1,存储节点b的端口1连接存储节点c的端口2,存储节点b的端口2连接存储节点d的端口2,存储节点b的端口3连接存储节点e的端口2,存储节点b的端口4连接存储节点f的端口2,存储节点c的端口3连接存储节点g的端口1,存储节点c的端口4连接存储节点h的端口1,存储节点d的端口3连接存储节点g的端口2,存储节点d的端口4连接存储节点h的端口2,存储节点e的端口3连接存储节点g的端口3,存储节点e的端口4连接存储节点h的端口3,存储节点f的端口3连接存储节点g的端口4,存储节点f的端口4连接存储节点h的端口4。其中,图4所示的交换机组网仅仅是一个具体的示例,不应构成具体限定。

免交换机组网的组网特点为:存储节点之间的数据通信不需要经过交换机,存储节点之间通过拓扑网络相互进行数据通信。如图4所示,当存储节点a需要与存储节点f进行数据通信时,存储节点a可以将数据传直接输给存储节点f;当存储节点a需要将数据传输给存储节点g时,存储节点a可以将数据传输给存储节点d,再由存储节点d传输给存储节点g;当存储节点a需要与存储节点h进行数据通信时,存储节点a可以将数据传输给存储节点c,再由存储节点c传输给存储节点h。为了保证数据传输的可靠性,图4所示的免交换机组网方式的拓扑网络需要保证任意两个存储节点之间至少存在两条数据通路,以确保在其中一条数据通路出现故障时,还可以通过另一条通路进行数据传输。例如,存储节点a和存储节点f之间至少存在两条数据通路:存储节点a->存储节点f的数据通路,存储节点a->存储节点d->存储节点g->存储节点f的数据通路。存储节点a和存储节点g之间至少存在两条数据通路:存储节点a->存储节点d->存储节点g的数据通路,存储节点a->存储节点f->存储节点g的数据通路。存储节点a和存储节点h之间至少存在两条数据通路:存储节点a->存储节点c->存储节点h的数据通路,存储节点a->存储节点f->存储节点h的数据通路。可以理解,其他的存储节点之间的链路,例如,存储节点b至存储节点c,存储节点b至存储节点d,存储节点b至存储节点e,存储节点b至存储节点f的链路也可以以此类推。

与交换机组网相比,免交换机组网可以不需要交换机进行组网,能有效降低组网所需要的成本,适用于企业级数据中心。但是,免交换组网方式存在转发表项配置复杂以及流量环路问题,极大地影响后端存储网络的性能。

为了便于理解,下面将对免交换组网方式存在的转发表项配置复杂以及流量环路问题进行进一步的介绍。

一、转发表项配置复杂问题。

在图4中,以存储节点a(源节点)向存储节点h(目的节点)发送数据为例,具体的步骤包括:

(1)预先为存储节点a配置第一转发表项,其中,第一转发表项为将目的mac地址为存储节点h的mac地址的数据报文从存储节点a的端口2发送出去。

(2)预先为存储节点d配置第二转发表项,其中,第二转发表项为将目的mac地址为存储节点h的mac地址的数据报文从存储节点d的端口4发送出去。

(3)存储节点a生成第一数据报文,并根据第一转发表项将第一数据报文通过存储节点a的端口2发送出去,其中,第一数据报文携带的目的mac地址为存储节点h的mac地址的。

(4)存储节点d通过存储节点d的端口1接收到存储节点a发送的第一数据报文,根据第一数据报文中携带的目的mac地址确定存储节点d不是目的节点,并根据第二转发表项将第一数据报文通过存储节点d的端口4发送出去。

(5)存储节点h通过存储节点h的端口2接收到存储节点d发送的第一数据报文,根据第一数据报文中的目的mac地址确定存储节点h为目的节点。

可以理解,免交换机组网中包含了多个存储节点,并且,要保证每两个存储节点之间都必须能够进行数据传输,因此,需要为每个存储节点都要配置多个转发表项,如果通过手动的方式配置转发表项,将会导致工作量十分巨大。

二、流量环路问题。

图4所示的免交换机组网的拓扑图可以表示为图5所示的免交换机组网的逻辑组网图。要将图4所示的拓扑图转换为图5所示的逻辑组网图,需要遵循这样的原则:当图4中的存储节点和存储节点之间存在直接连接关系时,图5中对应的存储节点和存储节点之间通过实线连接来进行表示。图4的免交换机组网的拓扑图和图5的逻辑组网图之间的对应关系如下:

图4中存储节点a和存储节点c之间存在直接连接关系,可以对应表示为,图5中立方体的左面的存储节点a至存储节点c之间的边;

图4中存储节点a和存储节点d之间存在直接连接关系,可以对应表示为,图5中立方体的左面的存储节点a至存储节点d之间的斜对角线;

图4中存储节点a和存储节点e之间存在直接连接关系,可以对应表示为,图5中立方体的上面的存储节点a至存储节点e之间的边;

图4中存储节点a和存储节点f之间存在直接连接关系,可以对应表示为,图5中立方体的上面的存储节点a至存储节点f之间的斜对角线;

图4中存储节点b和存储节点c之间存在直接连接关系,可以对应表示为,图5中立方体的左面的存储节点b至存储节点c之间的斜对角线;

图4中存储节点b和存储节点d之间存在直接连接关系,可以对应表示为,图5中立方体的左面的存储节点b至存储节点d之间的边;

图4中存储节点b和存储节点e之间存在直接连接关系,可以对应表示为,图5中立方体的上面的存储节点b至存储节点e之间的斜对角线;

图4中存储节点b和存储节点f之间存在直接连接关系,可以对应表示为,图5中立方体的上面的存储节点b至存储节点f之间的边;

图4中存储节点c和存储节点g之间存在直接连接关系,可以对应表示为,图5中立方体的前面的存储节点c至存储节点g之间的边;

图4中存储节点c和存储节点h之间存在直接连接关系,可以对应表示为,图5中立方体的下面的存储节点c至存储节点h之间的斜对角线;

图4中存储节点d和存储节点g之间存在直接连接关系,可以对应表示为,图5中立方体的下面的存储节点d至存储节点g之间的斜对角线;

图4中存储节点d和存储节点h之间存在直接连接关系,可以对应表示为,图5中立方体的后面的存储节点d至存储节点h之间的边;

图4中存储节点e和存储节点g之间存在直接连接关系,可以对应表示为,图5中立方体的前面的存储节点e至存储节点g之间的边;

图4中存储节点e和存储节点h之间存在直接连接关系,可以对应表示为,图5中立方体的右面的存储节点e至存储节点h之间的斜对角线;

图4中存储节点f和存储节点g之间存在直接连接关系,可以对应表示为,图5中立方体的右面的存储节点f至存储节点g之间的斜对角线;

图4中存储节点f和存储节点h之间存在直接连接关系,可以对应表示为,图5中立方体的后面的存储节点f至存储节点h之间的边。

可以理解,尽管图5中的存储节点a和存储节点b之间、存储节点c和存储节点d之间、存储节点e和存储节点f之间以及存储节点g和存储节点h之间都通过虚线进行连接,但是,实际上,存储节点a和存储节点b之间、存储节点c和存储节点d之间、存储节点e和存储节点f之间以及存储节点g和存储节点h之间不存在直接的连接关系。

从图5所示的逻辑组网图可以看出,存储节点b、存储节点e、存储节点g以及存储节点d之间可能会构成流量环路。举个例子说明,假设存储节点a在免交换机组网中发送广播报文以查找存储节点h的mac地址时,如果存储节点d接收到存储节点a的广播报文之后,将广播报文发送给存储节点b,如果存储节点b接收到存储节点d的广播报文之后,将广播报文发送给存储节点e(如图5中箭头所示),存储节点e接收到存储节点b转发的广播报文之后,将广播报文发送给存储节点g,存储节点g接收到存储节点e转发的广播报文之后,将广播报文发送给存储节点d,存储节点d接收到存储节点g转发的广播报文之后,将广播报文发送给存储节点b,则存储节点b接收到存储节点d转发的广播报文之后,又会将广播报文发送给存储节点e,…。因此,广播报文会一直在流量环路中进行死循环,占据免交换机组网的大量资源,从而极大地影响免交换机组网的性能。应理解,上述流量环路仅仅是一个举例,在实际应用中,还可能出现其他的流量环路,例如,存储节点a、存储节点f、存储节点h以及存储节点g之间也可能会出现流量环路,此处不作具体限定。

为了解决上述的转发表项配置复杂问题,本申请的免交换机组网中在网络适配卡中实现了路径自学习机制,能够有效减少手工配置转发表项的复杂性,提高免交换机组网的性能。

以在图4所示的存储节点a(源节点)向存储节点h(目的节点)发送数据报文为例,路径自学习机制具体可以这样实现:

第一阶段:源节点向目的节点发送广播报文阶段。

(1)存储节点a中的第一处理器生成广播报文,并将广播报文发送给存储节点a中的第二处理器。存储节点a中的第二处理器指示存储节点a中的收发器通过存储节点a的指定端口(例如,端口2)发送广播报文,其中,广播报文携带源互联网协议(internetprotocol,ip)地址地址(存储节点a的ip地址)、源mac地址(存储节点a的mac地址)以及目的ip地址(存储节点h的ip地址)。存储节点h的ip地址可以是接收用户自行输入的ip地址等,此处不作具体限定。

(2)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的广播报文,并将广播报文发送给存储节点d的第二处理器。存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述广播报文中查找不到目的mac地址的情况下,存储节点d的第二处理器将广播报文发送给存储节点d的第一处理器。存储节点d的第一处理器从广播报文中获取目的ip地址(存储节点h的ip地址),将目的ip地址(存储节点h的ip地址)和存储节点d的ip地址进行比较,确定存储节点d不是目的节点,并将比较结果发送给存储节点d的第二处理器。然后,存储节点d的第二处理器将源mac地址(存储节点a的mac地址)和存储节点d的端口1作为表项关联存储在存储节点d的第二存储器中,并且,存储节点d的收发器向除了存储节点d的端口1之外的存储节点d的其他所有端口发送广播报文。

(3)存储节点h的收发器通过存储节点h的端口2接收存储节点d发送的广播报文,并将广播报文发送给存储节点h的第二处理器。存储节点h的第二处理器用于对数据链路层的mac地址进行处理,存储节点h的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点h的第二处理器在所述广播报文中查找不到目的mac地址的情况下,存储节点h的第二处理器将广播报文发送给存储节点h的第一处理器。存储节点h的第一处理器从广播报文中获取存储节点目的ip地址(存储节点h的ip地址),并确定存储节点h是目的节点。存储节点h的第一处理器将源mac地址(存储节点a的mac地址)和源ip地址(存储节点a的ip地址)关联关系存储在存储节点h的第一存储器中。

可以理解,在存储节点a向存储节点h发送广播报文的过程中,存储节点a和存储节点h分别是源节点和目标节点,不需要将源mac地址和端口的对应关系作为表项分别存储在存储节点a和存储节点h的第二存储器中,存储节点d是中间的转发节点,需要将源mac地址和端口的对应关系作为表项存储在存储节点d的第二存储器中。

第二阶段:目的节点向源节点返回响应报文阶段。

(4)在存储节点h需要向存储节点a返回响应报文的情况下,存储节点h的第一处理器查询第一存储器以获得存储节点a的ip地址以及存储节点a的mac地址,并生成所述广播报文的响应报文,并将响应报文发送给存储节点h的第二处理器,其中,所述响应报文包括目的mac地址(存储节点a的mac地址)以及源mac地址(存储节点h的mac地址)。

(5)存储节点h的第二处理器根据预先配置路由配置策略指示存储节点h的第二处理器将响应报文通过存储节点h的收发器的端口2发送出去。

(6)存储节点d的收发器通过存储节点d的端口4接收存储节点h发送的响应报文,并将响应报文发送给存储节点d的第二处理器。存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述响应报文中查找到目的mac地址的情况下,存储节点d的第二处理器从响应报文中获取目的mac地址(存储节点a的mac地址),将目的mac地址(存储节点a的mac地址)和存储节点d的mac地址进行比较,确定需要将响应报文转发出去,然后,存储节点d的第二处理器从存储节点d的第二存储器查找到表项,从而确定目的mac地址(存储节点a的mac地址)和存储节点d的端口1的对应关系,并且,存储节点d的收发器根据上述对应关系,将响应报文通过存储节点d的端口1发送出去。存储节点d的第二处理器将源mac地址(存储节点h的mac地址)和存储节点d的端口4的对应关系作为表项存储在存储节点d的第二存储器中。

(7)存储节点a的收发器通过存储节点a的端口2接收存储节点d发送的响应报文,并将响应报文发送给存储节点a的第二处理器。存储节点a的第二处理器用于对数据链路层的mac地址进行处理,存储节点a的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点a的第二处理器在所述响应报文中查找到目的mac地址的情况下,存储节点a的第二处理器从响应报文中获取得到目的mac地址(存储节点a的mac地址),将目的mac地址和存储节点a的mac地址进行比较,确定不需要再将响应报文进行转发,于是,存储节点的a的第二处理器将响应报文上报给存储节点a的第一处理器,存储节点a的第一处理器从响应报文中获取得到源mac地址(存储节点h的mac地址),并将源mac地址(存储节点h的mac地址)和存储节点h的ip地址的对应关系作为表项存储在存储节点a的第一存储器中。

可以理解,在存储节点h向存储节点a返回响应报文的过程中,存储节点h和存储节点a分别是源节点和目标节点,不需要将目的mac地址和端口的对应关系作为表项分别存储在存储节点h和存储节点a的第二存储器中,存储节点d是中间的转发节点,需要将目的mac地址和端口的对应关系作为表项存储在存储节点d的第二存储器中。

第三阶段:源节点向目的节点发送数据报文阶段。

(8)在存储节点a需要向存储节点h发送数据报文的情况下,存储节点a的第一处理器查询第一存储器以获得目的ip地址(存储节点h的ip地址)以及目的mac地址(存储节点h的mac地址),并生成数据报文,其中,数据报文携带了目的mac地址(存储节点h的mac地址)。

(9)存储节点a的第一处理器根据预先配置路由配置策略指示存储节点a的第二处理器将数据报文从存储节点a的收发器的端口2发送出去。

(10)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的数据报文,并将数据报文发送给存储节点d的第二处理器。存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器从所述数据报文中查询得到目的mac地址(存储节点h的mac地址)的情况下,存储节点d的第二处理器从数据报文中获取得到目的mac地址(存储节点h的mac地址),并将目的mac地址(存储节点h的mac地址)和存储节点d的mac地址进行比较,确定存储节点d不是目的节点。于是,存储节点d的第二处理器从存储节点d的第二存储器查找到表项,从而确定目的mac地址(存储节点h的mac地址)和存储节点d的端口4的对应关系。存储节点d的收发器将数据报文通过存储节点d的端口4发送出去。

(11)存储节点h的收发器通过存储节点h的端口2接收存储节点d发送的数据报文,并将数据报文发送给存储节点h的第二处理器。存储节点h的第二处理器用于对数据链路层的mac地址进行处理,存储节点h的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点h的第二处理器从所述数据报文中查询得到目的mac地址(存储节点h的mac地址)的情况下,存储节点h的第二处理器根据数据报文携带的目的mac地址(存储节点h的mac地址)确定存储节点h即为目的节点,并将数据报文上报给存储节点h的第一处理器。

在第一阶段存储节点a向存储节点h发送广播报文的过程中,存储节点d学习到了如何将广播报文的响应报文返回给存储节点a。在第二阶段存储节点h向存储节点a返回响应报文的过程中,存储节点d学习到了如何将数据报文发送给存储节点h。经过上述两个学习过程,存储节点a就可以在第三阶段实现将数据报文经过存储节点d发送给存储节点h。

为了解决上述免交换机组网会出现流量环路的问题,本申请的免交换机组网在路径自学习机制的基础上结合了流量环路避免机制,能够有效地避免流量环路的形成,提高免交换机组网的性能。

根据在路径自学习机制的不同阶段结合流量环路避免机制,在路径自学习机制上结合流量环路避免机制至少可以包括三种不同的实现方式:

在第一种方式中,在第一阶段(源节点向目的节点发送广播报文的阶段)结合流量环路避免机制。

在图4中,以源节点为存储节点a、目的节点为存储节点h以及转发阈值为2为例,在源节点向目的节点发送广播报文的过程中结合流量环路避免机制可以通过如下方式实现:

第一阶段:源节点向目的节点发送广播报文阶段。

(1)存储节点a中的第一处理器生成广播报文,并将广播报文发送给存储节点a中的第二处理器。存储节点a中的第二处理器指示存储节点a中的收发器通过存储节点a的指定端口(例如,端口2)发送广播报文,其中,广播报文携带源ip地址(存储节点a的ip地址)、源mac地址(存储节点a的mac地址)、目的ip地址(存储节点h的ip地址)以及转发次数,转发次数的初始值为0。存储节点h的ip地址可以是用户自行输入的,此处不作具体限定。此外,所述广播报文还可以携带广播标识,所述广播标识用于表示是否需要判断所述广播报文的转发次数是否需要大于转发阈值。例如,在所述广播标识为1的情况下,需要判断所述广播报文的转发次数是否需要大于转发阈值,在所述广播标识为0的情况下,不需要判断所述广播报文的转发次数是否需要大于转发阈值。

(2)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的广播报文,并将广播报文发送给存储节点d的第二处理器。在存储节点d的第二处理器在确定所述广播报文中的广播标识为1的情况下,存储节点d的第二处理器将广播报文携带的转发次数修改为1。存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,存储节点d的第二处理器在所述广播报文中查找不到目的mac地址(存储节点h的mac地址)的情况下,存储节点d的第二处理器将广播报文发送给存储节点d的第一处理器。存储节点d的第一处理器从广播报文中获取目的ip地址(存储节点h的ip地址),将目的ip地址(存储节点h的ip地址)和存储节点d的ip地址进行比较,确定存储节点d不是目的节点,并将判断结果发送给存储节点d的第二处理器。然后,存储节点d的第二处理器判断转发次数没有大于转发阈值2,于是,存储节点d的第二处理器将源mac地址(存储节点a的mac地址)和存储节点d的端口1作为表项关联存储在存储节点d的第二存储器中。存储节点d的收发器通过除了存储节点d的端口1之外的存储节点d的其他所有端口发送广播报文。

(3)存储节点h的收发器通过存储节点h的端口2接收存储节点d发送的广播报文,并将广播报文发送给存储节点h的第二处理器。在存储节点h的第二处理器确定所述广播报文中的广播标识为1的情况下,存储节点h的第二处理器将将广播报文携带的转发次数修改为2。存储节点h的第二处理器用于对数据链路层的mac地址进行处理,存储节点h的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点h的第二处理器在所述广播报文中查找不到目的mac地址(存储节点h的mac地址)的情况下,存储节点h的第二处理器将广播报文发送给存储节点h的第一处理器。存储节点h的第一处理器从广播报文中获取目的ip地址(存储节点h的ip地址),根据目的ip地址(存储节点h的ip地址)确定存储节点h是目的节点,于是,存储节点h将源mac地址(存储节点a的mac地址)和源ip地址(存储节点a的ip地址)的对应关系作为表项存储在第一存储器中。

第二阶段:目的节点向源节点返回响应报文阶段。

(4)在存储节点h需要向存储节点a返回响应报文的情况下,存储节点h的第一处理器查询第一存储器以获得目的ip地址(存储节点a的ip地址)以及目的mac地址(存储节点a的mac地址),并生成所述广播报文的响应报文,并将响应报文发送给存储节点h的第二处理器,其中,所述响应报文包括目的mac地址(存储节点a的mac地址)以及源mac地址(存储节点h的mac地址)。此外,所述响应报文还可以携带响应标识,所述响应标识用于表示是否需要判断所述响应报文的转发次数是否需要大于转发阈值。例如,在所述响应标识为1的情况下,需要判断所述响应报文的转发次数是否需要大于转发阈值,在所述响应标识为0的情况下,不需要判断所述响应报文的转发次数是否需要大于转发阈值。

(5)存储节点h的第二处理器根据预先配置路由配置策略指示存储节点h的第二处理器将响应报文通过存储节点h的收发器的端口2发送出去。

(6)存储节点d的收发器通过存储节点d的端口4接收存储节点h发送的响应报文,并将响应报文发送给存储节点d的第二处理器。在存储节点d的第二处理器确定所述响应报文中的响应标识为0的情况下,存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述响应报文中查找到目的mac地址(存储节点a的mac地址)的情况下,第二处理器可以对数据链路层的目的mac地址进行处理,存储节点d的第二处理器从响应报文中获取目的mac地址(存储节点a的mac地址),将目的mac地址(存储节点a的mac地址)和存储节点d的mac地址进行比较,确定需要将响应报文转发出去,然后,存储节点d的第二处理器从存储节点d的第二存储器查找到表项,从而确定目的mac地址(存储节点a的mac地址)和存储节点d的端口1的对应关系,并且,存储节点d的第二处理器根据上述对应关系,通过收发器将响应报文通过存储节点d的端口1发送出去。存储节点d的第二处理器将源mac地址(存储节点h的mac地址)和存储节点d的端口4的对应关系作为表项存储在存储节点d的第二存储器中。

(7)存储节点a的收发器通过存储节点a的端口2接收存储节点d发送的响应报文,并将响应报文发送给存储节点a的第二处理器。在存储节点a的第二处理器确定所述响应报文中的响应标识为0的情况下,存储节点a的第二处理器用于对数据链路层的mac地址进行处理,存储节点a的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点a的第二处理器在所述响应报文中查找到目的mac地址(存储节点a的mac地址)的情况下,存储节点a的第二处理器从响应报文中获取得到目的mac地址(存储节点a的mac地址),根据目的mac地址(存储节点a的mac地址),确定不需要再将响应报文进行转发,于是,存储节点的a的第二处理器将响应报文上报给存储节点a的第一处理器,存储节点a的第一处理器从响应报文中获取得到(存储节点h的mac地址),并将(存储节点h的mac地址)和存储节点h的ip地址的对应关系作为表项存储在存储节点a的第一存储器中。

第三阶段:源节点向目的节点发送数据报文阶段。

(8)在存储节点a需要向存储节点h发送数据报文的情况下,存储节点a的第一处理器查询目的ip地址(存储节点h的ip地址)以及目的mac地址(存储节点h的mac地址),并生成数据报文,其中,数据报文携带了目的mac地址(存储节点h的mac地址)。此外,所述数据报文还可以携带数据标识,所述数据标识用于表示是否需要判断所述数据报文的转发次数是否需要大于转发阈值。例如,在所述数据标识为1的情况下,需要判断所述数据报文的转发次数是否需要大于转发阈值,在所述数据标识为0的情况下,不需要判断所述数据报文的转发次数是否需要大于转发阈值。

(9)存储节点a的第一处理器根据预先配置路由配置策略指示存储节点a的第二处理器将数据报文从存储节点a的收发器的端口2发送出去。

(10)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的数据报文,并将数据报文发送给存储节点d的第二处理器。在存储节点d的第二处理器确定所述数据报文中的数据标识为0的情况下,存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器从所述数据报文中查询得到目的mac地址(存储节点h的mac地址)的情况下,在存储节点d的第二处理器在所述数据报文中查找到目的mac地址(存储节点h的mac地址)的情况下,存储节点d的第二处理器从数据报文中获取得到目的mac地址(存储节点h的mac地址),并将目的mac地址(存储节点h的mac地址)和存储节点d的mac地址进行比较,确定存储节点d不是目的节点。于是,存储节点d的第二处理器从存储节点d的第二存储器查找到表项,从而确定目的mac地址(存储节点h的mac地址)和存储节点d的端口4的对应关系。存储节点d的收发器将数据报文通过存储节点d的端口4发送出去。

(11)存储节点h的收发器通过存储节点h的端口2接收存储节点d发送的数据报文,并将数据报文发送给存储节点h的第二处理器。在存储节点h的第二处理器确定所述数据报文中的数据标识为0的情况下,存储节点h的第二处理器用于对数据链路层的mac地址进行处理,存储节点h的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点h的第二处理器从所述数据报文中查询得到目的mac地址(存储节点h的mac地址)的情况下,在存储节点h的第二处理器在所述数据报文中查找到目的mac地址(存储节点h的mac地址)的情况下,存储节点h的第二处理器根据数据报文携带的目的mac地址(存储节点h的mac地址)确定存储节点h即为目的节点,并将数据报文上报给存储节点h的第一处理器。

在本实施例中,存储节点在检测到广播报文携带的广播标识为1(本实施例中响应报文携带的响应标识为0,数据报文携带的数据标识为0)的情况下,存储节点在第一阶段中确定广播报文的转发次数是否大于转发阈值,并在没有大于转发阈值的情况下,将广播报文发送给下一个存储节点。

在第二种方式中,在第二阶段(目的节点向源节点发送响应报文的阶段)结合流量环路避免机制。

在图4中,以源节点为存储节点a、目的节点为存储节点h以及转发阈值为2为例,在源节点向目的节点发送广播报文的过程中结合流量环路避免机制可以是这样实现:

第一阶段:源节点向目的节点发送广播报文阶段。

(1)存储节点a中的第一处理器生成广播报文,并将广播报文发送给存储节点a中的第二处理器。存储节点a中的第二处理器指示存储节点a中的收发器通过存储节点a的指定端口(例如,端口2)发送广播报文,其中,广播报文携带源mac地址(存储节点a的mac地址)以及目的ip地址(存储节点h的ip地址)。存储节点h的ip地址可以是用户自行输入的,此处不作具体限定。

(2)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的广播报文,并将广播报文发送给存储节点d的第二处理器。在存储节点d的第二处理器在确定所述广播报文中的广播标识为0的情况下,存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述广播报文中查找不到目的mac地址(存储节点h的mac地址)的情况下,存储节点d的第二处理器将广播报文发送给存储节点d的第一处理器。存储节点d的第一处理器从广播报文中获取目的ip地址(存储节点h的ip地址),将目的ip地址(存储节点h的ip地址)和存储节点d的ip地址进行比较,确定存储节点d不是目的节点,并将比较结果发送给存储节点d的第二处理器。然后,存储节点d的第二处理器将源mac地址(存储节点a的mac地址)和存储节点d的端口1作为表项关联存储在存储节点d的第二存储器中,并且,存储节点d的收发器向除了存储节点d的端口1之外的存储节点d的其他所有端口发送广播报文。

(3)存储节点h的收发器通过存储节点h的端口2接收存储节点d发送的广播报文,并将广播报文发送给存储节点h的第二处理器。在存储节点h的第二处理器确定所述广播报文中的广播标识为0的情况下,存储节点h的第二处理器用于对数据链路层的mac地址进行处理,存储节点h的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点h的第二处理器在所述广播报文中查找不到目的mac地址(存储节点h的mac地址)的情况下,存储节点h的第二处理器将广播报文发送给存储节点h的第一处理器。存储节点h的第一处理器从广播报文中获取目的ip地址(存储节点h的ip地址),根据目的ip地址(存储节点h的ip地址),确定存储节点h是目的节点。然后,存储节点h将源mac地址(存储节点a的mac地址)和源ip地址(存储节点a的ip地址的对应关系)的关联关系在第一存储器中。

可以理解,在存储节点a向存储节点h发送广播报文的过程中,存储节点a和存储节点h分别是源节点和目标节点,不需要将源mac地址和端口的对应关系作为表项分别存储在存储节点a和存储节点h的第二存储器中,存储节点d是中间的转发节点,需要将源mac地址和端口的对应关系作为表项存储在存储节点d的第二存储器中。

第二阶段:目的节点向源节点返回响应报文阶段。

(4)在存储节点h需要向存储节点a返回响应报文的情况下,存储节点h的第一处理器查询第一存储器以获得存储节点a的ip地址以及存储节点a的mac地址,并生成所述广播报文的响应报文,并将响应报文发送给存储节点h的第二处理器,其中,所述响应报文包括目的mac地址(存储节点a的mac地址)以及源mac地址(存储节点h的mac地址)以及转发次数,转发次数的初始值为零。

(5)存储节点h的第二处理器根据预先配置路由配置策略指示存储节点h的第二处理器将响应报文通过存储节点h的收发器的端口2发送出去。

(6)存储节点d的收发器通过存储节点d的端口4接收存储节点h发送的响应报文,并将响应报文发送给存储节点d的第二处理器。在存储节点d的第二处理器确定所述响应报文中的响应标识为1的情况下,存储节点d的第二处理器将响应报文中的转发次数设置为1。存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述响应报文中查找到目的mac地址(存储节点a的mac地址)的情况下,存储节点d的第二处理器从响应报文中获取目的mac地址(存储节点a的mac地址),将目的mac地址(存储节点a的mac地址)和存储节点d的mac地址进行比较,确定需要将响应报文转发出去。然后,存储节点d的第二处理器确定转发次数不大于转发阈值,于是,存储节点d的第二处理器从存储节点d的第二存储器查找到表项,从而确定目的mac地址(存储节点a的mac地址)和存储节点d的端口1的对应关系,并且,存储节点d的第二处理器根据上述对应关系,通过收发器将响应报文通过存储节点d的端口1发送出去。存储节点d的第二处理器将源mac地址(存储节点h的mac地址)和存储节点d的端口4的对应关系作为表项存储在存储节点d的第二存储器中。

(7)存储节点a的收发器通过存储节点a的端口2接收存储节点d发送的响应报文,并将响应报文发送给存储节点a的第二处理器。在存储节点a的第二处理器确定所述响应报文中的响应标识为1的情况下,存储节点a的第二处理器将响应报文中的转发次数设置为2。存储节点a的第二处理器用于对数据链路层的mac地址进行处理,存储节点a的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点a的第二处理器在所述响应报文中查找到目的mac地址(存储节点a的mac地址)的情况下,存储节点a的第二处理器从响应报文中获取得到目的mac地址(存储节点a的mac地址),根据目的mac地址(存储节点a的mac地址),确定不需要再将响应报文进行转发,于是,存储节点的a的第二处理器将响应报文上报给存储节点a的第一处理器,存储节点a的第一处理器确定转发次数不大于转发阈值,存储节点a的第一处理器从响应报文中获取得到源mac地址(存储节点h的mac地址),并将源mac地址(存储节点h的mac地址)和存储节点h的ip地址的对应关系作为表项存储在存储节点a的第一存储器中。

可以理解,在存储节点h向存储节点a返回响应报文的过程中,存储节点h和存储节点a分别是源节点和目标节点,不需要将目的mac地址和端口的对应关系作为表项分别存储在存储节点h和存储节点a的第二存储器中,存储节点d是中间的转发节点,需要将目的mac地址和端口的对应关系作为表项存储在存储节点d的第二存储器中。

第三阶段:源节点向目的节点发送数据报文阶段。

(8)在存储节点a需要向存储节点h发送数据报文的情况下,存储节点a的第一处理器查询第一存储器以获得目的ip地址(存储节点h的ip地址)以及目的mac地址(存储节点h的mac地址),并生成数据报文,其中,数据报文携带了目的mac地址(存储节点h的mac地址)。

(9)存储节点a的第一处理器根据预先配置路由配置策略指示存储节点a的第二处理器将数据报文从存储节点a的收发器的端口2发送出去。

(10)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的数据报文,并将数据报文发送给存储节点d的第二处理器。在存储节点d的第二处理器确定所述数据报文中的数据标识为0的情况下,存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述数据报文中查找到目的mac地址(存储节点h的mac地址)的情况下,存储节点d的第二处理器从数据报文中获取得到目的mac地址(存储节点h的mac地址),并将目的mac地址(存储节点h的mac地址)和存储节点d的mac地址进行比较,确定存储节点d不是目的节点。于是,存储节点d的第二处理器从存储节点d的第二存储器查找到表项,从而确定目的mac地址(存储节点h的mac地址)和存储节点d的端口4的对应关系。存储节点d的收发器将数据报文通过存储节点d的端口4发送出去。

(11)存储节点h的收发器通过存储节点h的端口2接收存储节点d发送的数据报文,并将数据报文发送给存储节点h的第二处理器。在存储节点h的第二处理器确定所述数据报文中的数据标识为0的情况下,存储节点h的第二处理器用于对数据链路层的mac地址进行处理,存储节点h的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点h的第二处理器在所述数据报文中查找到目的mac地址(存储节点h的mac地址)的情况下,存储节点h的第二处理器根据数据报文携带的目的mac地址(存储节点h的mac地址)确定存储节点h即为目的节点,并将数据报文上报给存储节点h的第一处理器。

在本实施例中,存储节点在检测到响应报文携带的响应标识为1(本实施例中广播报文携带的广播标识为0,数据报文携带的数据标识为0)的情况下,存储节点在第二阶段中确定响应报文的转发次数是否大于转发阈值,并在没有大于转发阈值的情况下,将响应报文发送给下一个存储节点。

在第三种方式中,在第三阶段(源节点向目的节点发送数据报文的阶段)结合流量环路避免机制。

在图4中,以源节点为存储节点a、目的节点为存储节点h以及转发阈值为2为例,此时,源mac地址(即存储节点a的mac地址)对应于权利要求中的第一地址信息,目的mac地址(即存储节点h的mac地址)对应于权利要求中的第二地址信息,在源节点向目的节点发送数据报文的阶段中结合流量环路避免机制可以通过如下方式实现:

第一阶段:源节点向目的节点发送广播报文阶段。

(1)存储节点a中的第一处理器生成广播报文,并将广播报文发送给存储节点a中的第二处理器。存储节点a中的第二处理器指示存储节点a中的收发器通过存储节点a的指定端口(例如,端口2)发送广播报文,其中,广播报文携带源ip地址(存储节点a的ip地址)、源mac地址(存储节点a的mac地址)以及目的ip地址(存储节点h的ip地址)。存储节点h的ip地址可以是用户自行输入的,此处不作具体限定。

(2)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的广播报文,并将广播报文发送给存储节点d的第二处理器。在存储节点d的第二处理器在确定所述广播报文中的广播标识为0的情况下,存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述广播报文中查找不到目的mac地址(存储节点h的mac地址)的情况下,存储节点d的第二处理器将广播报文发送给存储节点d的第一处理器。存储节点d的第一处理器从广播报文中获取目的ip地址(存储节点h的ip地址),将目的ip地址(存储节点h的ip地址)和存储节点d的ip地址进行比较,确定存储节点d不是目的节点,并将比较结果发送给存储节点d的第二处理器。然后,存储节点d的第二处理器将源mac地址(存储节点a的mac地址)和存储节点d的端口1作为表项关联存储在存储节点d的第二存储器中,并且,存储节点d的收发器向除了存储节点d的端口1之外的存储节点d的其他所有端口发送广播报文。

(3)存储节点h的收发器通过存储节点h的端口2接收存储节点d发送的广播报文,并将广播报文发送给存储节点h的第二处理器。在存储节点h的第二处理器确定所述广播报文中的广播标识为0的情况下,存储节点h的第二处理器用于对数据链路层的mac地址进行处理,存储节点h的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点h的第二处理器在所述广播报文中查找不到目的mac地址(存储节点h的mac地址)的情况下,存储节点h的第二处理器将广播报文发送给存储节点h的第一处理器。存储节点h的第一处理器从广播报文中获取目的ip地址(存储节点h的ip地址),根据目的ip地址(存储节点h的ip地址),确定存储节点h是目的节点。然后,存储节点h的第一处理器将源mac地址(存储节点a的mac地址)和存储节点a的ip地址表项关联存储在存储节点h的第二存储器中。

可以理解,在存储节点a向存储节点h发送广播报文的过程中,存储节点a和存储节点h分别是源节点和目标节点,不需要将源mac地址和端口的对应关系作为表项分别存储在存储节点a和存储节点h的第二存储器中,存储节点d是中间的转发节点,需要将源mac地址和端口的对应关系作为表项存储在存储节点d的第二存储器中。

第二阶段:目的节点向源节点返回响应报文阶段。

(4)在存储节点h需要向存储节点a返回响应报文的情况下,存储节点h的第一处理器查询第一存储器以获得存储节点a的ip地址以及存储节点a的mac地址,并生成所述广播报文的响应报文,并将响应报文发送给存储节点h的第二处理器,其中,所述响应报文包括目的mac地址(存储节点a的mac地址)以及源mac地址(存储节点h的mac地址)。

(5)存储节点h的第二处理器根据预先配置路由配置策略指示存储节点h的第二处理器将响应报文通过存储节点h的收发器的端口2发送出去。

(6)存储节点d的收发器通过存储节点d的端口4接收存储节点h发送的响应报文,并将响应报文发送给存储节点d的第二处理器。在存储节点d的第二处理器确定所述响应报文中的响应标识为0的情况下,存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述响应报文中查找到目的mac地址(存储节点a的mac地址)的情况下,存储节点d的第二处理器从响应报文中获取目的mac地址(存储节点a的mac地址),将目的mac地址(存储节点a的mac地址)和存储节点d的mac地址进行比较,确定需要将响应报文转发出去,然后,存储节点d的第二处理器从存储节点d的第二存储器查找到表项,从而确定目的mac地址(存储节点a的mac地址)和存储节点d的端口1的对应关系,并且,存储节点d的第二处理器根据上述对应关系,通过收发器将响应报文通过存储节点d的端口1发送出去。存储节点d的第二处理器将源mac地址(存储节点h的mac地址)和存储节点d的端口4的对应关系作为表项存储在存储节点d的第二存储器中。

(7)存储节点a的收发器通过存储节点a的端口2接收存储节点d发送的响应报文,并将响应报文发送给存储节点a的第二处理器。在存储节点a的第二处理器确定所述响应报文中的响应标识为0的情况下,存储节点a的第二处理器用于对数据链路层的mac地址进行处理,存储节点a的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点a的第二处理器在所述响应报文中查找到目的mac地址(存储节点a的mac地址)的情况下,存储节点a的第二处理器从响应报文中获取得到目的mac地址(存储节点a的mac地址),将目的mac地址(存储节点a的mac地址)和存储节点a的mac地址进行比较,确定不需要再将响应报文进行转发,于是,存储节点的a的第二处理器将响应报文上报给存储节点a的第一处理器,存储节点a的第一处理器从响应报文中获取得到源mac地址(存储节点h的mac地址),并将源mac地址(存储节点h的mac地址)和存储节点h的ip地址的对应关系作为表项存储在存储节点a的第一存储器中。

可以理解,在存储节点h向存储节点a返回响应报文的过程中,存储节点h和存储节点a分别是源节点和目标节点,不需要将目的mac地址和端口的对应关系作为表项分别存储在存储节点h和存储节点a的第二存储器中,存储节点d是中间的转发节点,需要将目的mac地址和端口的对应关系作为表项存储在存储节点d的第二存储器中。

第三阶段:源节点向目的节点发送数据报文阶段。

(8)在存储节点a需要向存储节点h发送数据报文的情况下,存储节点a的第一处理器查询第一存储器以获得目的ip地址(存储节点h的ip地址)以及目的mac地址(存储节点h的mac地址),并存储节点a的第一处理器查询第一存储器以根据目的ip地址(存储节点h的ip地址),查询得到目的mac地址(存储节点h的mac地址),并生成数据报文,其中,数据报文携带了目的mac地址(存储节点h的mac地址)以及转发次数,转发次数的初始值为0。

(9)存储节点a的第一处理器根据预先配置路由配置策略指示存储节点a的第二处理器将数据报文从存储节点a的收发器的端口2发送出去。

(10)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的数据报文,并将数据报文发送给存储节点d的第二处理器。在存储节点d的第二处理器确定所述数据报文中的数据标识为1的情况下,存储节点d的第二处理器将转发次数设置为1。存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述数据报文中查找到目的mac地址(存储节点h的mac地址)的情况下,存储节点d的第二处理器从数据报文中获取得到目的mac地址(存储节点h的mac地址),并将目的mac地址(存储节点h的mac地址)和存储节点d的mac地址进行比较,确定存储节点d不是目的节点。存储节点d的第二处理器确定转发次数不大于转发阈值,于是,存储节点d的第二处理器从存储节点d的第二存储器查找到表项,从而确定目的mac地址(存储节点h的mac地址)和存储节点d的端口4的对应关系。存储节点d的收发器将数据报文通过存储节点d的端口4发送出去。

(11)存储节点h的收发器通过存储节点h的端口2接收存储节点d发送的数据报文,并将数据报文发送给存储节点h的第二处理器。在存储节点d的第二处理器确定所述数据报文中的数据标识为1的情况下,存储节点h的第二处理器将转发次数设置为2,并确定转发次数不大于转发阈值。存储节点h的第二处理器用于对数据链路层的mac地址进行处理,存储节点h的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点h的第二处理器在所述数据报文中查找到目的mac地址(存储节点h的mac地址)的情况下,存储节点h的第二处理器根据数据报文携带的目的mac地址(存储节点h的mac地址)确定存储节点h即为目的节点,并将数据报文上报给存储节点h的第一处理器。

在本实施例中,存储节点在检测到数据报文携带的数据标识为1(本实施例中广播报文携带的广播标识为0,响应报文携带的响应标识为0)的情况下,存储节点在第三阶段中确定数据报文的转发次数是否大于转发阈值,并在没有大于转发阈值的情况下,将数据报文发送给下一个存储节点。

上述陈述中分别以第一种方式、第二种方式和第三种方式为例进行说明,但是,在实际应用中,可以将第一种方式、第二种方式以及第三种方式中的任意多种方式进行组合,例如,可以将第一种方式和第二种方式进行组合,将第一种方式和第三种方式进行组合,将第二种方式和第三种方式进行组合,将第一种方式、第二种方式和第三种方式进行组合,此处不作具体限定。

下面以第一种方式、第二种方式和第三种方式的组合为例,说明如何在路径自学习机制上结合流量环路避免机制。

在图4中,以源节点为存储节点a、目的节点为存储节点h以及转发阈值为2为例,在源节点向目的节点发送广播报文的过程中结合流量环路避免机制可以是这样实现:

第一阶段:源节点向目的节点发送广播报文阶段。

(1)存储节点a中的第一处理器生成广播报文,并将广播报文发送给存储节点a中的第二处理器。存储节点a中的第二处理器指示存储节点a中的收发器通过存储节点a的指定端口(例如,端口2)发送广播报文,其中,广播报文携带源ip地址(存储节点a的ip地址)、源mac地址(存储节点a的mac地址)、目的ip地址(存储节点h的ip地址)以及第一转发次数,第一转发次数的初始值为0。存储节点h的ip地址可以是用户自行输入的,此处不作具体限定。

(2)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的广播报文,并将广播报文发送给存储节点d的第二处理器。存储节点d的第二处理器将广播报文携带的第一转发次数修改为1。存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述广播报文中查找不到目的mac地址的情况下,在存储节点d的第二处理器在所述广播报文中查找不到目的mac地址(存储节点h的mac地址)的情况下,存储节点d的第二处理器将广播报文发送给存储节点d的第一处理器。存储节点d的第一处理器从广播报文中获取目的ip地址(存储节点h的ip地址),将目的ip地址(存储节点h的ip地址)和存储节点d的ip地址进行比较,确定存储节点d不是目的节点,并将判断结果发送给存储节点d的第二处理器。然后,存储节点d的第二处理器判断第一转发次数没有大于转发阈值2,于是,存储节点d的第二处理器将源mac地址(存储节点a的mac地址)和存储节点d的端口1作为表项关联存储在存储节点d的第二存储器中。存储节点d的收发器通过除了存储节点d的端口1之外的存储节点d的其他所有端口发送广播报文。

(3)存储节点h的收发器通过存储节点h的端口2接收存储节点d发送的广播报文,并将广播报文发送给存储节点h的第二处理器。存储节点h的第二处理器将将广播报文携带的第一转发次数修改为2,存储节点h的第二处理器用于对数据链路层的mac地址进行处理,存储节点h的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点h的第二处理器在所述广播报文中查找不到目的mac地址(存储节点h的mac地址)的情况下,存储节点h的第二处理器将广播报文发送给存储节点h的第一处理器。存储节点h的第一处理器从广播报文中获取目的ip地址(存储节点h的ip地址),根据目的ip地址(存储节点h的ip地址)确定存储节点h是目的节点,然后,存储节点h的第一处理器判断第一转发次数没有大于转发阈值,于是,存储节点h将源mac地址(存储节点a的mac地址)和存储节点a的ip地址的对应关系作为表项存储在第一存储器中。

可以理解,在存储节点a向存储节点h发送广播报文的过程中,存储节点a和存储节点h分别是源节点和目标节点,不需要将源mac地址和端口的对应关系作为表项分别存储在存储节点a和存储节点h的第二存储器中,存储节点d是中间的转发节点,需要将源mac地址和端口的对应关系作为表项存储在存储节点d的第二存储器中。

第二阶段:目的节点向源节点返回响应报文阶段。

(4)在存储节点h需要向存储节点a返回响应报文的情况下,存储节点h的第一处理器查询第一存储器以获得存储节点a的ip地址以及存储节点a的mac地址,并将响应报文发送给存储节点h的第二处理器,其中,所述响应报文包括目的mac地址(存储节点a的mac地址)以及源mac地址(存储节点h的mac地址)以及第二转发次数,第二转发次数的初始值为零。

(5)存储节点h的第二处理器根据预先配置路由配置策略指示存储节点h的第二处理器将响应报文通过存储节点h的收发器的端口2发送出去。

(6)存储节点d的收发器通过存储节点d的端口4接收存储节点h发送的响应报文,并将响应报文发送给存储节点d的第二处理器。存储节点d的第二处理器将响应报文中的第二转发次数设置为1,存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述响应报文中查找到目的mac地址(存储节点a的mac地址)的情况下,存储节点d的第二处理器从响应报文中获取目的mac地址(存储节点a的mac地址),将目的mac地址(存储节点a的mac地址)和存储节点d的mac地址进行比较,确定需要将响应报文转发出去。然后,存储节点d的第二处理器确定第二转发次数不大于转发阈值,于是,存储节点d的第二处理器从存储节点d的第二存储器查找到表项,从而确定目的mac地址(存储节点a的mac地址)和存储节点d的端口1的对应关系,并且,存储节点d的第二处理器根据上述对应关系,通过收发器将响应报文通过存储节点d的端口1发送出去。存储节点d的第二处理器将源mac地址(存储节点h的mac地址)和存储节点d的端口4的对应关系作为表项存储在存储节点d的第二存储器中。

(7)存储节点a的收发器通过存储节点a的端口2接收存储节点d发送的响应报文,并将响应报文发送给存储节点a的第二处理器。存储节点a的第二处理器将响应报文中的第二转发次数设置为2,存储节点a的第二处理器用于对数据链路层的mac地址进行处理,存储节点a的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点a的第二处理器在所述响应报文中查找到目的mac地址(存储节点a的mac地址)的情况下,存储节点a的第二处理器从响应报文中获取得到目的mac地址(存储节点a的mac地址),根据目的mac地址(存储节点a的mac地址),确定不需要再将响应报文进行转发,于是,存储节点的a的第二处理器将响应报文上报给存储节点a的第一处理器,存储节点a的第一处理器确定第二转发次数不大于转发阈值,存储节点a的第一处理器从响应报文中获取得到源mac地址(存储节点h的mac地址),并将源mac地址(存储节点h的mac地址)和存储节点h的ip地址的对应关系作为表项存储在存储节点a的第一存储器中。

可以理解,在存储节点h向存储节点a返回响应报文的过程中,存储节点h和存储节点a分别是源节点和目标节点,不需要将目的mac地址和端口的对应关系作为表项分别存储在存储节点h和存储节点a的第二存储器中,存储节点d是中间的转发节点,需要将目的mac地址和端口的对应关系作为表项存储在存储节点d的第二存储器中。

第三阶段:源节点向目的节点发送数据报文阶段。

(8)在存储节点a需要向存储节点h发送数据报文的情况下,存储节点a的第一处理器查询第一存储器以获得目的ip地址(存储节点h的ip地址)以及目的mac地址(存储节点h的mac地址),并生成数据报文,其中,数据报文携带了目的mac地址(存储节点h的mac地址)以及第三转发次数,第三转发次数的初始值为0。

(9)存储节点a的第一处理器根据预先配置路由配置策略指示存储节点a的第二处理器将数据报文从存储节点a的收发器的端口2发送出去。

(10)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的数据报文,并将数据报文发送给存储节点d的第二处理器。存储节点d的第二处理器将第三转发次数设置为1,存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述数据报文中查找到目的mac地址(存储节点h的mac地址)的情况下,存储节点d的第二处理器从数据报文中获取得到目的mac地址(存储节点h的mac地址),并将目的mac地址(存储节点h的mac地址)和存储节点d的mac地址进行比较,确定存储节点d不是目的节点。存储节点d的第二处理器确定第三转发次数不大于转发阈值,于是,存储节点d的第二处理器从存储节点d的第二存储器查找到表项,从而确定目的mac地址(存储节点h的mac地址)和存储节点d的端口4的对应关系。存储节点d的收发器将数据报文通过存储节点d的端口4发送出去。

(11)存储节点h的收发器通过存储节点h的端口2接收存储节点d发送的数据报文,并将数据报文发送给存储节点h的第二处理器。存储节点h的第二处理器将第三转发次数设置为2,并确定第三转发次数不大于转发阈值。存储节点h的第二处理器用于对数据链路层的mac地址进行处理,存储节点h的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点h的第二处理器在所述数据报文中查找到目的mac地址(存储节点h的mac地址)的情况下,存储节点h的第二处理器根据数据报文携带的目的mac地址(存储节点h的mac地址)确定存储节点h即为目的节点,并将数据报文上报给存储节点h的第一处理器。

在上述实施例中,存储节点在第一阶段、第二阶段以及第三阶段中只有在确定第一转发次数、第二转发次数以及第三转发次数均不大于转发阈值的情况下,才会将广播报文、响应报文以及数据报文发送给下一个存储节点。

上述各个例子中,均以转发节点确定报文(包括广播报文、响应报文以及数据报文)的转发次数不大于转发阈值为例进行说明,在实际应用中,如果存储节点确定报文的转发次数大于转发阈值,则会将报文进行丢弃。

一、转发节点确定广播报文的转发次数大于转发阈值,将广播报文进行丢弃。

第一阶段:源节点向目的节点发送广播报文阶段。以上述在第一阶段(源节点向目的节点发送广播报文的阶段)结合流量环路避免机制的例子为例,源节点(存储节点a)向目的节点(存储节点h)发送广播报文以查找存储节点h的mac地址的过程中,除了沿着上述例子中的存储节点a->存储节点d->存储节点h的路径发送广播报文之外,还可能沿着以下的路径进行转发:

(1)存储节点a中的第一处理器生成广播报文,并将广播报文发送给存储节点a中的第二处理器。存储节点a中的第二处理器指示存储节点a中的收发器通过存储节点a的指定端口(例如,端口2)发送广播报文,其中,广播报文携带源ip地址(存储节点a的ip地址)、源mac地址(存储节点a的mac地址)、目的ip地址(存储节点h的ip地址)以及转发次数,转发次数的初始值为0。存储节点h的ip地址可以是用户自行输入的,此处不作具体限定。

(2)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的广播报文,并将广播报文发送给存储节点d的第二处理器。在存储节点d的第二处理器在确定所述广播报文中的广播标识为1的情况下,存储节点d的第二处理器将广播报文携带的转发次数修改为1。存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述广播报文中查找不到目的mac地址(存储节点h的mac地址)的情况下,存储节点d的第二处理器将广播报文发送给存储节点d的第一处理器。存储节点d的第一处理器从广播报文中获取目的ip地址(存储节点h的ip地址),将目的ip地址(存储节点h的ip地址)和存储节点d的ip地址进行比较,确定存储节点d不是目的节点,并将判断结果发送给存储节点d的第二处理器。然后,存储节点d的第二处理器判断转发次数没有大于转发阈值2,于是,存储节点d的第二处理器将源mac地址(存储节点a的mac地址)和存储节点d的端口1作为表项关联存储在存储节点d的第二存储器中。存储节点d的收发器通过除了存储节点d的端口1之外的存储节点d的其他所有端口发送广播报文。

(3)存储节点b的收发器通过存储节点b的端口2接收存储节点d发送的广播报文,并将广播报文发送给存储节点b的第二处理器。在存储节点b的第二处理器在确定所述广播报文中的广播标识为1的情况下,存储节点b的第二处理器将广播报文携带的转发次数修改为2。存储节点b的第二处理器用于对数据链路层的mac地址进行处理,存储节点b的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点b的第二处理器在所述广播报文中查找不到目的mac地址(存储节点h的mac地址)的情况下,存储节点b的第二处理器将广播报文发送给存储节点b的第一处理器。存储节点b的第一处理器从广播报文中获取目的ip地址(存储节点h的ip地址),将目的ip地址(存储节点h的ip地址)和存储节点b的ip地址进行比较,确定存储节点b不是目的节点,并将判断结果发送给存储节点b的第二处理器。然后,存储节点b的第二处理器判断转发次数没有大于转发阈值2,于是,存储节点b的第二处理器将源mac地址(存储节点a的mac地址)和存储节点b的端口2作为表项关联存储在存储节点b的第二存储器中。存储节点b的收发器通过除了存储节点b的端口2之外的存储节点b的其他所有端口发送广播报文。

(4)存储节点e的收发器通过存储节点e的端口2接收存储节点b发送的广播报文,并将广播报文发送给存储节点e的第二处理器。在存储节点e的第二处理器在确定所述广播报文中的广播标识为1的情况下,存储节点e的第二处理器将将广播报文携带的转发次数修改为3,明显地,转发次数大于了转发阈值,于是,存储节点e的第二处理器将广播报文进行丢弃。

可以理解,如果没有在第一阶段加入上述的流量环路避免机制,则存储节点a的广播报文可能会按照存储节点a->存储节点d->存储节点b->存储节点e->存储节点g->存储节点d->存储节点b…的方式在免交换组网中无限循环,但是,加入上述的流量环路避免机制之后,存储节点a广播的广播报文被转发至存储节点e的时候就被丢弃了,不会在免交换组网中无限循环,从而避免了免交换组网的资源被消耗,进而提高免交换组网的效率。

二、转发节点确定响应报文的转发次数大于转发阈值,将响应报文进行丢弃。

第二阶段:目的节点向源节点返回响应报文阶段。以上述在第二阶段(目的节点向源节点发送响应报文的阶段)结合流量环路避免机制的例子为例,在正常状态下,上述例子中的响应报文应该沿着存储节点h->存储节点d->存储节点a的路径返回,但是,当响应报文被病毒攻击的情况下,响应报文也可能沿着以下的路径进行传输:

(1)在存储节点h需要向存储节点a返回响应报文的情况下,存储节点h的第一处理器查询第一存储器以获得存储节点a的ip地址以及存储节点a的mac地址,并生成所述广播报文的响应报文。其中,所述响应报文包括目的mac地址(存储节点a的mac地址)、目的ip地址(存储节点a的ip地址)以及源mac地址(存储节点h的mac地址)以及转发次数,转发次数的初始值为零。但是,当响应报文遭受病毒攻击时,响应报文中的目的mac地址(存储节点a的mac地址)可能被修改为一个不存在的mac地址,响应报文中的目的ip地址(存储节点a的ip地址)可能被修改为一个不存在的ip地址。存储节点h的第一处理器将被修改后的响应报文发送给存储节点h的第二处理器,存储节点h的第二处理器依然根据预先配置路由配置策略指示存储节点h的第二处理器将响应报文通过存储节点h的收发器的端口2发送出去。

(2)存储节点d的收发器通过存储节点d的端口4接收存储节点h发送的被修改后的响应报文,并将被修改后的响应报文发送给存储节点d的第二处理器。在存储节点d的第二处理器确定所述被修改的响应报文中的响应标识为1的情况下,存储节点d的第二处理器将被修改的响应报文中的转发次数设置为1。存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在所述被修改的响应报文中查找到目的mac地址(不存在的mac地址)的情况下,存储节点d的第二处理器从被修改的响应报文中获取目的mac地址(不存在的mac地址),将目的mac地址(不存在的mac地址)和存储节点d的mac地址进行比较,确定需要将被修改的响应报文转发出去。然后,存储节点d的第二处理器确定转发次数不大于转发阈值,从存储节点d的第二存储器查找表项。由于查找不到对应的表项,存储节点d的第二处理器指示收发器将被修改的响应报文通过除了接收端口(端口4)之外的端口(例如,端口2)发送出去。

(3)存储节点b的收发器通过存储节点b的端口2接收存储节点d发送的被修改的响应报文,并将被修改的响应报文发送给存储节点b的第二处理器。在存储节点b的第二处理器确定所述被修改的响应报文中的响应标识为1的情况下,存储节点b的第二处理器将被修改的响应报文中的转发次数设置为2。存储节点b的第二处理器用于对数据链路层的mac地址进行处理,存储节点b的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点b的第二处理器在被修改的响应报文中查找到目的mac地址(不存在的mac地址)的情况下,存储节点b的第二处理器从被修改的响应报文中获取目的mac地址(不存在的mac地址),将目的mac地址(不存在的mac地址)和存储节点b的mac地址进行比较,确定需要将被修改的响应报文转发出去。然后,存储节点b的第二处理器确定转发次数不大于转发阈值,于是,从存储节点b的第二存储器查找表项。由于查找不到对应的表项,存储节点b的第二处理器指示收发器将被修改的响应报文通过除了接收端口(端口2)之外的端口(例如,端口3)发送出去。

(4)存储节点e的收发器通过存储节点e的端口2接收存储节点b发送的被修改的响应报文,并将被修改的响应报文发送给存储节点e的第二处理器。在存储节点e的第二处理器确定所述被修改的响应报文中的响应标识为1的情况下,存储节点e的第二处理器将被修改的响应报文中的转发次数设置为3。因为转发次数大于转发阈值,存储节点e的第二处理器丢弃被修改的响应报文。

可以理解,如果没有在第二阶段加入上述的流量环路避免机制,则被修改的响应报文可能会按照存储节点h->存储节点d->存储节点b->存储节点e->存储节点g->存储节点d->存储节点b…的方式在免交换组网中无限循环,但是,加入上述的流量环路避免机制之后,被修改的响应报文被转发至存储节点e的时候就被丢弃了,不会在免交换组网中无限循环,从而避免了免交换组网的资源被消耗,进而提高免交换组网的效率。

三、转发节点确定数据报文的转发次数大于转发阈值,将数据报文进行丢弃。

第一阶段:源节点向目的节点发送数据报文阶段。以上述在第三阶段(源节点向目的节点发送数据报文的阶段)结合流量环路避免机制的例子为例,在正常状态下,上述例子中的数据报文应该按照存储节点a->存储节点d->存储节点h的路径发送给存储节点h,但是,当数据报文被病毒攻击时,数据报文也可能沿着以下的路径进行传输:

(1)存储节点a中的第一处理器生成数据报文,并将数据报文发送给存储节点a中的第二处理器。其中,广播报文携带源ip地址(存储节点a的ip地址)、源mac地址(存储节点a的mac地址)、目的ip地址(存储节点h的ip地址)、目的mac地址(存储节点h)以及转发次数,转发次数的初始值为0。存储节点h的ip地址可以是用户自行输入的,此处不作具体限定。当数据报文被病毒攻击,并且,数据报文的目的ip地址(存储节点h的ip地址)被修改为不存在的ip地址时,数据报文的目的mac地址(存储节点h的mac地址)被修改为不存在的mac地址。存储节点a中的第二处理器根据预先配置路由配置策略的指示存储节点a中的收发器通过存储节点a的端口2发送被修改的数据报文。

(2)存储节点d的收发器通过存储节点d的端口1接收存储节点a发送的被修改的数据报文,并将被修改的数据报文发送给存储节点d的第二处理器。在存储节点d的第二处理器在确定被修改的数据报文中的数据标识为1的情况下,存储节点d的第二处理器将被修改的数据报文携带的转发次数修改为1。存储节点d的第二处理器用于对数据链路层的mac地址进行处理,存储节点d的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点d的第二处理器在被修改的数据报文中查找到目的mac地址(不存在的mac地址)的情况下,存储节点d的第二处理器从存储节点d的第二存储器查找表项。由于查找不到对应的表项,存储节点d的第二处理器指示收发器将被修改的数据报文通过除了接收端口之外的端口(例如,端口2)发送出去。

(3)存储节点b的收发器通过存储节点b的端口2接收存储节点d发送的被修改的数据报文,并将被修改的数据报文发送给存储节点b的第二处理器。在存储节点b的第二处理器在确定被修改的数据报文中的数据标识为1的情况下,存储节点b的第二处理器将数据报文携带的转发次数修改为2。存储节点b的第二处理器用于对数据链路层的mac地址进行处理,存储节点b的第一处理器用于对网络层的ip地址进行处理,因此,在存储节点b的第二处理器在被修改的数据报文中查找到目的mac地址(不存在的mac地址)的情况下,存储节点b的第二处理器从存储节点b的第二存储器查找表项。由于查找不到对应的表项,存储节点b的第二处理器指示收发器将被修改的数据报文通过除了接收端口之外的端口(例如,端口3)发送出去。

(4)存储节点e的收发器通过存储节点e的端口2接收存储节点b发送的被修改的数据报文,并将被修改的数据报文发送给存储节点e的第二处理器。在存储节点e的第二处理器在确定所述被修改的数据报文中的数据标识为1的情况下,存储节点e的第二处理器将被修改的数据报文携带的转发次数修改为3,明显地,转发次数大于了转发阈值,于是,存储节点e的第二处理器将被修改的数据报文进行丢弃。

可以理解,如果没有在第三阶段加入上述的流量环路避免机制,则被修改的数据报文可能会按照存储节点a->存储节点d->存储节点b->存储节点e->存储节点g->存储节点d->存储节点b…的方式在免交换组网中无限循环,但是,加入上述的流量环路避免机制之后,被修改的数据报文被转发至存储节点b的时候就被丢弃了,不会在免交换组网中无限循环,从而避免了免交换组网的资源被消耗,进而提高免交换组网的效率。

上述各个例子中,转发阈值可以根据免交换机组网的网络拓扑图决定,例如,图4所示的免交换机组网的网络拓扑结构中存储节点和存储节点之间最多经过2跳就可以实现数据通信,因此,可以将转发阈值设置为2。可以理解,上述转发阈值的数值的设置仅仅是作为一种举例,在其他的实施方式中,还可以是3、4、5或者更多。而且,转发阈值的设置除了可以根据网络拓扑结构进行设置之外,还可以根据网络转发的时延以及链路质量如丢包率等等因素进行设置,此处不作具体限定。

在上述各例子中,转发次数可以承载于报文的标签协议标识(tagcontrolinformation,tci)字段中。由于本申请中的广播报文、响应报文以及数据报文这三种报文的结构大体相同,下面将以广播报文为例进行说明。

如图6所示,广播报文通常包括6字节的目的mac地址字段、6字节的源mac地址字段、2字节的标签协议标识(tagprotocolidentifier,tpid)、2字节的tci字段、2字节的类型、46至1500字节的净荷(payload)字节以及4字节的循环冗余校验(cyclicredundancycheck,crc)。其中,tci字段可以包括3比特的用户优先权字节(userpriority)、1比特的规范标识位(canonicalformatindicator,cfi)以及12比特的虚拟局域网标识(virtuallocalareanetworkidentifier,vlanid)字段。

在应用中,可以使用虚拟局域网标识的高位比特来承载转发次数,低位比特来承载vlanid,例如,可以使用虚拟局域网标识的最高位标识承载转发次数,其余的11位低位比特来承载vlanid;也可以使用虚拟局域网标识的低位比特来承载转发次数,高位比特来承载vlanid,例如,可以使用虚拟局域网标识的最低位标识承载转发次数,其余的11位高位比特来承载vlanid。

此外,还可以在广播报文的保留字段(图中未示)中承载广播标识。当然,广播标识还可以以显式或隐式承载在广播报文的现有字段中,此处不作具体限定。响应报文和数据报文也同样可以分别承载响应标识以及数据标识,此处不在具体描述。

可以理解,上述示例中仅仅使用了单个比特来承载转发次数,在实际应用中,也可以采用更多的比特来承载转发次数,此处不作具体限定。另外,上述示例中是以虚拟局域网标识字段包括的比特数为12比特为例进行说明,在实际应用中,虚拟局域网标识字段包括的比特数可以是更少或者更多,此处不作具体限定。

参阅图7,图7是本申请提供的一种转发节点的结构示意图。其中,转发节点直接转发其它节点通过网络发送的报文或数据。也就是说,所述转发节点通过所述第一节点或所述第二节点接收数据,并将接收到的数据存储在所述第一存储器中。所述转发节点、所述第一节点和所述第二节点均不是交换机。所述网络不需要通过交换机转发数据和报文。在一具体实施例中,所述第一节点、所述转发节点以及所述第二节点均为图4中的存储节点,其中,所述存储节点用于存储电子文件,所述电子文件包括文本、图像、音频以及视频中的一种或者多种。在一更具体的实施例中,第一节点可以是源节点,第二节点可以是目的节点。

所述转发节点与所述其他节点均属于免交换机组网中的节点。所述免交换机组网是去中心化的组网方式,即,所述免交换机组网中的各个节点的地位相当,或者,所述免交换机组网中不包括转发中心(例如交换机),所述组网中的各个节点除了承担自身的职能(例如,存储数据的职能)之外,还需要承担数据转发的职能。在一可行的实施例中,所述转发节点可以是图4中的存储节点,例如,上述在路径自学习机制上结合流量环路避免机制的第一种方式至第三种方式以及它们之间的结合中的存储节点d,此处不作具体限定。如图7所示,本申请的转发节点包括:接收模块210、第一处理模块230、第二处理模块220、发送模块240和存储模块250,所述接收模块210包括第一端口211,所述发送模块240包括第二端口241。

接收模块210用于通过第一端口211接收广播报文,其中,所述广播报文携带源节点的第一地址信息,所述广播报文是所述源节点发送的用于查询目的节点第二地址信息的报文。

第二处理模块220用于在存储模块250中存储第一表项,其中,所述第一表项用于记录所述第一地址信息和所述第一端口211的对应关系;

发送模块240用于通过第二端口241发送所述广播报文;

接收模块210用于通过所述第二端口241接收所述广播报文的响应报文,其中,所述响应报文携带第二地址信息,所述响应报文用于向所述源节点返回所述第二地址信息;

第二处理模块220用于根据所述第一地址信息查询所述第一表项确定所述第一端口211;

发送模块240用于通过所述第一端口211发送所述响应报文;

第二处理模块220用于在所述存储模块250中存储第二表项,其中,所述第二表项用于记录所述第二地址信息和所述第二端口241的对应关系。

具体地,第一处理模块230可以是处理速度较快以及运算能力比较强的处理器,例如,图2中的第一处理器。

具体地,第二处理模块220可以是处理速度较慢以及运算能力较弱的处理器,例如,图2中的第二处理器。

具体地,接收模块210和发送模块240可以是单独设置的,也可以是集成在一起的,此处不作具体限定。当两者集成在一起时,可以是图2中的收发器。

转发节点在通过广播报文和响应报文学习到第二地址信息和第二端口241的对应关系之后,就可以根据第二地址信息和第二端口241的对应关系转发数据报文。其中,数据报文携带了第二地址信息。具体地,接收模块210用于接收数据报文,其中,所述数据报文用于承载所述源节点发送给所述目的节点的数据和所述第二地址信息;第二处理模块220用于根据所述第二地址信息查询所述第二表项得到所述第二端口241;发送模块240用于通过所述第二端口241发送所述数据报文。

为了避免流量环路的形成,转发节点还可以在发送广播报文、接收响应报文和发送数据报文中的一个或者多个的过程中结合流量环路避免机制,即,只有在广播报文、接收响应报文和发送数据报文的转发次数没有大于转发阈值的情况下,才转发广播报文、接收响应报文和发送数据报文,如果转发系数大于转发阈值,则将广播报文、接收响应报文和发送数据报文进行丢弃。其中,所述转发阈值是根据所述转发节点所在的网络的拓扑结构确定的。例如,所述广播报文还包括第一转发次数,发送模块240还用于在确定所述第一转发次数大于转发阈值的情况下,丢弃所述广播报文,在确定所述第一转发次数没有大于转发阈值的情况下,将所述第一转发次数加一,并通过第二端口发送所述广播报文;或,

所述响应报文还包括第二转发次数,发送模块240还用于在确定所述第二转发次数大于转发阈值的情况下,丢弃所述响应报文,在确定所述第二转发次数没有大于转发阈值的情况下,将所述第二转发次数加一,并通过所述第一端口发送所述响应报文;或,

所述数据报文还包括第三转发次数,发送模块240还用于在确定所述第三转发次数大于转发阈值的情况下,丢弃所述数据报文,在确定所述第三转发次数没有大于转发阈值的情况下,将所述第三转发次数加一,并通过所述第二端口发送所述数据报文。

为了简便起见,此处不对图7所示的转发节点展开描述,具体请参见上述在路径自学习机制上结合流量环路避免机制的第一种方式至第三种方式以及它们之间的结合。

参阅图8,图8是本申请提供的一种数据或报文转发的方法的流程示意图。所述转发节点直接转发其它节点通过网络发送的报文或数据,转发节点包括:第一处理器、第一存储器以及网络适配卡,其中,所述网络适配卡包括第二处理器、第二存储器以及收发器,所述收发器包括第一端口和第二端口;本申请的数据或报文转发的方法包括如下步骤:

s101:所述收发器通过所述第一端口接收广播报文,其中,所述广播报文携带源节点的第一地址信息,所述广播报文是所述源节点发送的用于查询目的节点第二地址信息的报文。

s102:所述第二处理器在所述第二存储器中存储第一表项,其中,所述第一表项用于记录所述第一地址信息和所述第一端口的对应关系。

s103:所述收发器通过所述第二端口发送所述广播报文。

s104:所述收发器通过所述第二端口接收所述广播报文的响应报文,其中,所述响应报文携带第二地址信息,所述响应报文用于向所述源节点返回所述第二地址信息;

s105:所述第二处理器根据所述第一地址信息查询所述第一表项确定所述第一端口;

s106:所述收发器通过所述第一端口发送所述响应报文;

s107:所述第二处理器在所述第二存储器中存储第二表项,其中,所述第二表项用于记录所述第二地址信息和所述第二端口的对应关系。

在本实施例中,源节点的第一地址信息可以是源节点的mac地址信息,目的节点的第二地址信息可以是目的节点的mac地址信息,此处不作具体限定。以图4为例,假设源节点为存储节点a,目的节点为存储节点h,转发节点为存储节点d,则源节点的第一地址信息为存储节点a的mac地址,目的节点的第二地址信息为存储节点h的mac地址信息,第一端口为存储节点d的端口2,第二端口为存储节点d的端口4。

为了简便起见,此处不对图8所示的数据或报文转发的方法展开描述,具体请参见上述在路径自学习机制上结合流量环路避免机制的第一种方式至第三种方式以及它们之间的结合。

本申请提供的一种信息处理系统。本申请的信息处理系统包括:所述转发节点直接转发其它节点通过网络发送的报文或数据。也就是说,所述转发节点通过第一节点接收所述广播报文,并向第二节点发送所述广播报文;所述第一节点包括第三处理器和第三存储器,所述第二节点包括第四处理器和第四存储器;所述第三存储器和所述第四存储器用于存储通过所述转发节点转发或发送的数据。更具体地,所述转发节点通过所述第一节点或所述第二节点接收数据,并将接收到的数据存储在所述第一存储器中。所述转发节点与所述第一节点之间通过通信网络连接,所述转发节点与所述第二节点之间也通过通信网络连接,其中,所述通信网络可以是网状通道(fibrechannel,fc)网络等等。

在一具体实施例中,所述信息处理系统可以是如图4所示的免组网网络构成的信息处理系统。其中,第一节点可以是图4中的存储节点a,转发节点可以是图4中的存储节点d,第二节点可以是图4中的存储节点h。另外,所述转发节点可以是采用如图2所示的存储节点的结构,并且,所述转发节点可以执行上述在路径自学习机制上结合流量环路避免机制的第一种方式至第三种方式以及它们之间的结合中存储节点d执行的步骤,此处不再展开描述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态存储盘solidstatedisk(ssd))等。

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