CN104919765A - 一种流表项的下发方法及装置 - Google Patents

一种流表项的下发方法及装置 Download PDF

Info

Publication number
CN104919765A
CN104919765A CN201380002433.4A CN201380002433A CN104919765A CN 104919765 A CN104919765 A CN 104919765A CN 201380002433 A CN201380002433 A CN 201380002433A CN 104919765 A CN104919765 A CN 104919765A
Authority
CN
China
Prior art keywords
interchanger
control instruction
path
flow table
table item
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380002433.4A
Other languages
English (en)
Other versions
CN104919765B (zh
Inventor
刘洪宽
沈伟锋
赵秀楚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN104919765A publication Critical patent/CN104919765A/zh
Application granted granted Critical
Publication of CN104919765B publication Critical patent/CN104919765B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/036Updating the topology between route computation elements, e.g. between OpenFlow controllers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/26Route discovery packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种流表项下发方法及装置。所述方法包括:控制器接收源交换机发送的数据包进入消息;根据所述数据包进入消息,确定转发路径;对于所述转发路径中的N个交换机,分别生成对应的流表项;对于所述转发路径中除所述源交换机之外的N-1个交换机,分别生成一个对应的控制指令;将生成的N个所述流表项和N-1个控制指令封装成第N个命令数据包;将所述第N个命令数据包发送至所述第N个交换机。采用本发明的方法或装置,可以确保在转发待转发数据时,各个交换机都具有与该待转发数据相对应的流表项,进而可以避免发送冗余消息,甚至出现逻辑错误,防止数据转发过程出错。

Description

一种流表项的下发方法及装置 技术领域
本发明涉及网络通信技术领域, 尤其涉及一种流表项的下发方法及装置。 背景技术
随着大数据时代的到来, 用户对于网络的数据传输能力有了更高的要求。 传统的数据传输网络中, 主要采用交换机(Switch ) 负责数据的转发。 交 换机接收到上一级设备发送的数据后,由该交换机自身确定对于该数据的转发 路径, 再按照该转发路径将该数据转发至下一级设备。 但是, 上述转发方式由 于每个交换机都需要执行对于转发路径的确定步骤,所以整个数据转发过程中 交换机需要处理的数据量较大。 此外, 由于各个交换机在确定转发路径时, 无 法获知网络的整体拓朴结构, 所以确定出来的转发路径也不是最优的转发路 径。
为此,现有技术中提出了一种开放数据流( Open Flow )技术。在 Open Flow 技术中,采用了一台控制器(Controller )对一个网络中的全部交换机进行控制。 交换机只负责数据的转发。转发路径由控制机确定。 由于控制机可以获知网络 的整体拓朴结构, 所以可以确定出更优的转发路径。 并且, 由于确定转发路径 的步骤由控制机执行, 所以可以减少交换机的工作量,提高交换机的数据转发 效率。
Open Flow技术中, 控制机在确定出数据的转发路径后, 需要将转发路径 以控制指令的方式下发给转发路径中所涉及到的交换机。图 1为现有技术中下 发控制指令的示意图。如图 1所示,当终端 40通过网络向终端 50发送数据时, 终端 40将需要发送的数据先发送至交换机 20; 交换机 20接收到终端 40发送 的数据后, 需要向控制机 10发送数据包进入(Packet in ) 消息 01 ; 控制机 10 收到 Packet in消息后, 为需要发送的数据确定转发路径后, 可以发送流表修 改命令 ( Flow mod )生成流表项, Flow mod中包含有转发路径信息;再将 Flow mod以数据包输出 (Packet out ) 消息的形式发送给在转发路径中涉及到的全 部交换机。 在图 1中, 转发路径中涉及到的全部交换机为交换机 01和交换机 02。控制机 10分别向交换机 20和交换机 30发送数据包输出消息 02和数据包 输出消息 03。 由于不同的网络连接之间, 通常存在不同的延时, 所以并不能 确保数据包输出消息 02和数据包输出消息 03同时发送到交换机 20和交换机 30。 当交换机 30与控制机 10之间的延时较高时, 交换机 30收到数据包输出 消息 03的时间会晚于交换机 20收到数据包输出消息 02的时间。 然而交换机 20只要接收到数据包输出消息 02, 就会立刻将数据发送给交换机 30。 此时, 由于交换机 30并没有接收到数据包输出消息 03 , 无法确定对于接收到的数据 的转发路径, 所以交换机 30还会向控制机 10发送数据包进入消息 04, 控制 机 10接收到数据包进入消息 04后, 还会再次向交换机 30发送一个数据包输 出消息 (图 1中未示出)。
由上述可知, 一旦控制机 10向交换机 30下发的数据包输出消息 03产生 延时, 则交换机 30需要额外发送一次数据包进入消息 04, 并且控制机 10还 会额外向交换机 30发送一个数据包输出消息。 这两条消息是冗余的, 会增加 控制机和交换机需要处理的数据量。此外,控制机 10额外向交换机 30发送的 数据包输出消息中的转发路径, 与经过延时后到达交换机 30的数据包输出消 息 03中的转发路径,还可能是不一致的。此时,交换机 30还会出现逻辑错误, 无法正确完成数据转发。
综上所述,现有技术中的转发路径中的流表项下发方法,一旦在下发过程 中出现延时, 则会导致相应的设备发送冗余消息, 甚至出现逻辑错误, 导致数 据转发过程出错。 发明内容
有鉴于此, 本发明提供一种流表项的下发方法及装置, 以解决在转发路径 中下发流表项的过程中出现延时导致设备发送冗余消息甚至数据转发过程出 错的问题。 其具体方案如下:
根据本申请的第一方面的第一种可能的实现方式,本申请提供一种流表项 下发方法, 所述方法包括:
控制器接收源交换机发送的数据包进入消息;
根据所述数据包进入消息, 确定转发路径;
对于所述转发路径中的 N个交换机, 分别生成对应的流表项, 其中, 所 述 N个交换机中的第 1个交换机为源交换机, 第 N个交换机为所述转发路径 的目标交换机,第 M个交换机为所述转发路径中的第 M跳交换机, 1 < M < N, 所述第 M个交换机对应的流表项为第 M个流表项;
对于所述转发路径中除所述源交换机之外的 N-1个交换机,分别生成一个 对应的控制指令, 所述第 M个交换机对应的控制指令为第 M个控制指令; 将生成的 N个所述流表项和 N-1个控制指令封装成第 N个命令数据包; 将所述第 N个命令数据包发送至所述第 N个交换机, 以使所述第 N个交 换机根据所述第 N个命令数据包中的所述第 N个控制指令完成所述转发路径 中所述 N个流表项的传递;
其中, 第 M个命令数据包中的第 M个控制指令用于指示第 M个交换机, 保存第 M个流表项, 并将所述第 M个命令数据包中除所述第 M个流表项和 所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个命令数据 包发送至第 M-1个交换机, 以使所述第 M-1个交换机根据所述第 M-1个命令 数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个流表项 的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交换机的前一跳 交换机。
结合第一方面的第二种可能的实现方式, 所述将所述第 N个命令数据包 发送至所述第 N个交换机, 具体包括:
当所述控制器与所述第 N个交换机之间存在控制信令传输链路时, 直接 将所述第 N个命令数据包发送至所述第 N个交换机;
当所述控制器与所述第 N个交换机之间不存在控制信令传输链路时, 通 过所述源交换机将所述第 N个命令数据包发送至所述第 N个交换机。
结合第一方面的两种可能的实现方式中的任意一种, 所述第 M个控制指 令生成的方法, 具体包括:
确定所述第 M-1个交换机;
确定所述第 M-1个交换机的地址信息;
确定所述第 M个交换机向所述第 M-1个交换机发送所述第 M个命令数据 包时采用的端口;
生成包括所述第 M-1 个交换机的地址信息以及所述端口的信息的所述第 M个控制指令, 以便所述第 M个交换机根据所述第 M个控制指令将所述第 M-1 个交换机的地址信息封装在所述第 M-1个命令数据包内, 通过所述端口 将所述第 M-1个命令数据包发送至所述第 M-1个交换机。 根据本申请的第二方面的第一种可能的实现方式,本申请提供一种流表项 下发方法, 所述方法包括:
第 M个交换机接收第 M个命令数据包, 所述第 M个命令数据包中至少 包括第 1个至第 M个共 M个流表项和第 2个至第 M个共 M-1个控制指令, 其中, 所述第 M个交换机为转发路径中的第 M跳交换机, 1 < M N, 所述转 发路径为控制器确定的用于转发待转发数据的路径, 所述转发路径中包括 N 个交换机, 所述第 M个交换机对应的控制指令为第 M个控制指令, 所述第 M 个交换机对应的流表项为第 M个流表项;
保存所述第 M个流表项;
执行所述第 M个控制指令, 将所述第 M个命令数据包中除所述第 M个 流表项和所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个 命令数据包发送至第 M-1个交换机,以使所述第 M-1个交换机根据所述第 M-1 个命令数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个 流表项的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交换机的 前一跳交换机。
结合第二方面的第二种可能的实现方式, 所述第 M个交换机接收第 M个 命令数据包, 具体包括:
当所述第 M个交换机为所述转发路径中的目标交换机时, 所述第 M个交 换机接收所述控制器发送的所述第 M个命令数据包;
当所述第 M个交换机不是所述转发路径中的目标交换机时, 所述第 M个 交换机接收第 M+1个交换机发送的所述第 M个数据包, 所述第 M+1个交换 机为所述转发路径中所述第 M个交换机的下一跳交换机。 根据本申请的第三方面的第一种可能的实现方式, 本申请提供一种控制 器, 所述控制器包括: 接收单元, 用于接收源交换机发送的数据包进入消息;
处理单元, 用于根据所述数据包进入消息, 确定转发路径;
所述处理单元, 还用于对于所述转发路径中的 Ν个交换机, 分别生成对 应的流表项, 其中, 所述 Ν个交换机中的第 1个交换机为源交换机, 第 Ν个 交换机为所述转发路径的目标交换机, 第 Μ个交换机为所述转发路径中的第 Μ跳交换机, 1 < Μ < Ν, 所述第 Μ个交换机对应的流表项为第 Μ 个流表项; 所述处理单元, 还用于对于所述转发路径中除所述源交换机之外的 N-1 个交换机, 分别生成一个对应的控制指令, 所述第 Μ个交换机对应的控制指 令为第 Μ个控制指令;
封装单元, 用于将生成的 Ν个所述流表项和 N-1个控制指令封装成第 Ν 个命令数据包;
发送单元, 用于将所述第 Ν个命令数据包发送至所述第 Ν个交换机; 其中, 第 Μ个命令数据包中的第 Μ个控制指令用于指示第 Μ个交换机 保存第 Μ个流表项, 并将所述第 Μ个命令数据包中除所述第 Μ个流表项和 所述第 Μ个控制指令之外的其他流表项和控制指令封装成第 M-1个命令数据 包发送至第 M-1个交换机, 以使所述第 M-1个交换机根据所述第 M-1个命令 数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个流表项 的传递, 所述第 M-1个交换机为所述转发路径中所述第 Μ个交换机的前一跳 交换机。
结合第三方面的第二种可能的实现方式, 所述发送单元, 具体包括: 第一发送子单元, 用于当所述控制器与所述第 Ν个交换机之间存在控制 信令传输链路时, 直接将所述第 Ν个命令数据包发送至所述第一转发路径中 的目标交换机;
第二发送子单元, 用于当所述控制器与所述第 Ν个交换机之间不存在控 制信令传输链路时, 通过所述源交换机将所述第 Ν个命令数据包发送至所述 第 Ν个交换机。
结合第三方面的两种可能的实现方式中的任意一种, 所述处理单元, 具体 包括:
第一确定子单元, 用于确定所述第 M-1个交换机; 第二确定子单元, 用于确定所述第 M-1个交换机的地址信息; 第三确定子单元, 用于确定所述第 M个交换机向所述第 M-1个交换机发 送所述第 M个命令数据包时采用的端口;
第一控制指令生成子单元, 用于生成包括所述第 M-1 个交换机的地址信 息以及所述端口的信息的所述第 M个控制指令, 以便所述第 M个交换机根据 所述第 M个控制指令将所述第 M-1个交换机的地址信息封装在所述第 M-1个 命令数据包内, 通过所述端口将所述第 M-1 个命令数据包发送至所述第 M-1 个交换机。 根据本申请的第四方面的第一种可能的实现方式, 本申请提供一种交换 机, 所述交换机包括:
接收单元, 用于接收第 M个命令数据包, 所述第 M个命令数据包中至少 包括第 1个至第 M个共 M个流表项和第 2个至第 M个共 M-1个控制指令, 其中, 所述交换机为第 M个交换机, 所述第 M个交换机为转发路径中的第 M 跳交换机, 1 < M < N,所述转发路径为控制器确定的用于转发待转发数据的路 径, 所述转发路径中包括 N个交换机, 所述第 M个交换机对应的控制指令为 第 M个控制指令, 所述第 M个交换机对应的流表项为第 M个流表项;
处理单元, 用于保存所述第 M个流表项;
发送单元, 用于执行所述第 M个控制指令, 将所述第 M个命令数据包中 除所述第 M个流表项和所述第 M个控制指令之外的其他流表项和控制指令封 装成第 M-1个命令数据包发送至第 M-1个交换机, 以使所述第 M-1个交换机 根据所述第 M-1个命令数据包中的所述第 M-1个控制指令完成所述转发路径 中剩余的 M-1个流表项的传递, 所述第 M-1个交换机为所述转发路径中所述 第 M个交换机的前一跳交换机。
结合第四方面的第二种可能的实现方式, 所述接收单元, 具体包括: 第一接收子单元, 用于当所述第 M个交换机为所述转发路径中的目标交 换机时, 所述第 M个交换机接收控制器发送的所述第 M个命令数据包;
第二接收子单元, 用于当所述第 M个交换机不是所述转发路径中的目标 交换机时, 所述第 M个交换机接收第 M+1个交换机发送的所述第 M个数据 包,所述第 M+l个交换机为所述转发路径中所述第 M个交换机的下一跳交换 机。 根据本申请的第五方面的第一种可能的实现方式,本申请提供一种计算节 点, 包括: 处理器, 通信接口, 存储器和总线;
所述处理器,所述通信接口,所述存储器通过所述总线完成相互间的通信; 所述处理器, 用于执行程序;
所述存储器, 用于存放所述程序;
当所述计算节点运行时, 所述处理器与所述存储器通信, 所述处理器执行 所述程序所述计算节点执行如下方法 :
接收源交换机发送的数据包进入消息;
根据所述数据包进入消息, 确定转发路径;
对于所述转发路径中的 N个交换机, 分别生成对应的流表项, 其中, 所 述 N个交换机中的第 1个交换机为源交换机, 第 N个交换机为所述转发路径 的目标交换机,第 M个交换机为所述转发路径中的第 M跳交换机, 1 < M < N, 所述第 M个交换机对应的流表项为第 M 个流表项;
对于所述转发路径中除所述源交换机之外的 N-1个交换机,分别生成一个 对应的控制指令, 所述第 M个交换机对应的控制指令为第 M 个控制指令; 将所述生成的 N个流表项和 N-1个控制指令封装成第 N个命令数据包; 将所述第 N个命令数据包发送至所述第 N个交换机, 以使所述第 N个交 换机根据所述第 N个命令数据包中的所述第 N个控制指令完成所述转发路径 中所述 N个流表项的传递;
其中, 第 M个命令数据包中的第 M个控制指令用于指示第 M个交换机, 保存第 M个流表项, 并将所述第 M个命令数据包中除所述第 M个流表项和 所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个命令数据 包发送至第 M-1个交换机, 以使所述第 M-1个交换机根据所述第 M-1个命令 数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个流表项 的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交换机的前一跳 交换机; 或者所述处理器执行所述程序所述计算节点执行如下方法 :
接收第 M个命令数据包, 所述第 M个命令数据包中至少包括第 1个至第
M个共 M个流表项和第 2个至第 M个共 M-1个控制指令, 其中, 所述第 M 个交换机为转发路径中的第 M跳交换机, 1 < M N, 所述转发路径为控制器 确定的用于转发待转发数据的路径, 所述转发路径中包括 N个交换机, 所述 第 M个交换机对应的控制指令为第 M个控制指令, 所述第 M个交换机对应 的流表项为第 M 个流表项;
保存所述第 M个流表项;
执行所述第 M个控制指令, 将所述第 M个命令数据包中除所述第 M个 流表项和所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个 命令数据包发送至第 M-1个交换机,以使所述第 M-1个交换机根据所述第 M-1 个命令数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个 流表项的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交换机的 前一跳交换机。 从上述的技术方案可以看出, 本申请实施例的流表项下发方法及装置, 通 过生成控制指令,控制相应的交换机识别并保存所接收的命令数据包中与自身 对应的流表项后,将命令数据包中与另外的交换机对应的流表项和控制指令封 装成新的命令数据包发送至转发路径中的前一跳交换机,可以将流表项以及对 应的控制指令按照待转发数据的转发顺序的相反顺序,依次发送至转发路径中 的各个交换机, 由于每个交换机在保存与自身对应的流表项后, 才会将命令数 据包中剩余的内容以新的命令数据包的方式发送到前一跳交换机, 因此, 可以 确保在转发待转发数据时, 各个交换机都具有与该待转发数据相对应的流表 项,进而可以避免发送冗余消息,甚至出现逻辑错误,防止数据转发过程出错。 附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施 例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地, 下面描述 中的附图仅仅是本发明的一些实施例, 对于本领域普通技术人员来讲,在不付 出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。
图 1为现有技术中下发控制指令的示意图;
图 2为本申请的流表项下发方法实施例 1的流程图;
图 3为本申请的流表项下发方法实施例 2的示意图;
图 4为本申请的流表项下发方法实施例 3的示意图;
图 5为本申请的流表项下发方法实施例 4的示意图;
图 6为本申请的另一种流表项下发方法实施例的流程图;
图 7为申请的控制机实施例的结构图;
图 8为申请的交换机实施例的结构图;
图 9为本申请的计算节点的结构图。 具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、 完整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是 全部的实施例。基于本发明中的实施例, 本领域普通技术人员在没有做出创造 性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。 图 2为本申请的流表项下发方法实施例 1的流程图。如图 2所示, 该方法 可以包括:
步骤 101 : 控制器接收源交换机发送的数据包进入消息;
所述源交换机在接收到终端 (host )发送的待转发数据后, 可以向控制器 发送数据包进入消息。所述数据包进入消息表示所述源交换机接收到了终端发 送的待转发数据, 需要控制器确定对于待转发数据的转发路径。
在 Open Flow技术中,所述数据包进入消息可以采用 packet in的格式封装。 步骤 102: 根据所述数据包进入消息, 确定转发路径;
所述转发路径可以是转发待转发数据的路由,后续网络中的交换机可以按 照该路由依次转发所述待转发数据。
所述转发路径包括待转发数据在转发过程中涉及到的交换机以及所述待 转发数据在所述交换机之间进行转发的第一顺序; 确定转发路径的方式可以采用现有技术, 此处不再贅述。
步骤 103: 对于所述转发路径中的 N个交换机, 分别生成对应的流表项, 其中, 所述 N个交换机中的第 1个交换机为源交换机, 第 N个交换机为所述 转发路径的目标交换机, 第 M个交换机为所述转发路径中的第 M跳交换机, 1 < M < N, 所述第 M个交换机对应的流表项为第 M个流表项;
所述流表项用于指示对应的交换机在转发所述待转发数据时采用的端口。 在 Open Flow技术中,控制器可以为所述转发路径中的各个交换机, 分别 生成对应的流表项 ( flow mod )。 交换机接收到所述流表项后, 可以将所述流 表项添加到对应的流表( flow table )中。 后续该交换机在接收到前一跳交换机 发送的待转发数据后, 可以根据所述流表项,确定采用哪个端口将待转发数据 发送出去。 因为不同的端口与不同的交换机相连, 所以采用流表项中指定的端 口可以将待转发数据发送到转发路径中对应的交换机。各个交换机按照自身存 储的流表项转发所述待转发数据 ,最终可以将所述待转发数据按照转发路径发 送到目标终端。
步骤 104: 对于所述转发路径中除所述源交换机之外的 N-1个交换机, 分 别生成一个对应的控制指令, 所述第 M个交换机对应的控制指令为第 M个控 制指令;
具体的,全部流表项以及控制指令在步骤 105中可以整体被封装成一个命 令数据包。
其中, 第 M个命令数据包中的第 M个控制指令用于指示第 M个交换机, 保存第 M个流表项, 并将所述第 M个命令数据包中除所述第 M个流表项和 所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个命令数据 包发送至第 M-1个交换机, 以使所述第 M-1个交换机根据所述第 M-1个命令 数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个流表项 的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交换机的前一跳 交换机
所述控制指令可以包含对应的交换机的地址信息。所述地址信息具体可以 是 IP信息。 假设交换机 A接收到第一数据包后, 可以从全部的控制指令中识 别出与自身的 IP地址相同的第一控制指令, 并执行。 执行该第一控制指令的 过程具体可以包括:
将与交换机 A对应的流表项, 添加到对应的流表中进行保存。 从所述第 一数据包中将交换机 A执行过的第一控制指令以及对应的流表项删除, 将剩 余的与另外的交换机对应的所述流表项和所述第一控制指令封装成第二数据 包发送至下一个交换机(即第三交换机)。
结合上述内容, 可以明确所述生成第 M个控制指令, 具体可以包括: 确定所述第 M-1个交换机;
确定所述第 M-1个交换机的地址信息;
确定所述第 M个交换机向所述第 M-1个交换机发送所述第 M个命令数据 包时采用的端口;
生成包括所述第 M-1 个交换机的地址信息以及所述端口的信息的所述第 M个控制指令, 以便所述第 M个交换机根据所述第 M个控制指令将所述第 M-1 个交换机的地址信息封装在所述第 M-1个命令数据包内, 通过所述端口 将所述第 M-1个命令数据包发送至所述第 M-1个交换机。
需要说明的是, 所述命令数据包在交换机中的传输顺序, 与待转发数据在 交换机中的传输顺序是相反的。
步骤 105: 将所述生成的 N个流表项和 N-1个控制指令封装成第 N个命 令数据包;
在 Open Flow技术中, 所述命令数据包可以采用 packet out的格式封装。 步骤 106: 将第 N个所述命令数据包发送至所述第 N个交换机, 以使所 述第 N个交换机根据所述第 N个命令数据包中的所述第 N个控制指令完成所 述转发路径中所述 N个流表项的传递;
由于所述命令数据包在交换机之间的转发顺序与待转发数据在所述转发 路径中的转发顺序相反。 因此, 控制器需要将所述第 N个命令数据包发送至 所述转发路径中的目标交换机。所述目标交换机即待转发数据在所述转发路径 中按照转发顺序被发送到的最后一个交换机。
实际应用中,所述控制器与所述目标交换机之间可能存在控制信令传输链 路, 也可能不存在控制信令传输链路。
当所述控制器与所述目标交换机之间存在控制信令传输链路时,可以直接 将所述数据包发送至所述转发路径中的目标交换机;
当所述控制器与所述目标交换机之间不存在控制信令传输链路时,可以通 过所述源交换机将所述数据包发送至所述转发路径中的目标交换机。
具体的,通过所述源交换机将所述数据包发送至所述转发路径中的目标交 换机可以采用下述方式: 所述源交换机将所述第 N个命令数据包发送至所述 转发路径中所述源交换机的下一跳交换机,所述下一跳交换机在接收到该命令 数据包后,再将该命令数据包转发到再下一跳的交换机, 直至转发至所述目标 交换机为止。
综上所述, 本实施例中, 通过生成控制指令, 控制相应的交换机识别并保 存所接收的命令数据包中与自身对应的流表项后,将命令数据包中与另外的交 换机对应的流表项和控制指令封装成新的命令数据包发送至转发路径中的前 一跳交换机,可以将流表项以及对应的控制指令按照待转发数据的转发顺序的 相反顺序,依次发送至转发路径中的各个交换机, 由于每个交换机在保存与自 身对应的流表项后,才会将命令数据包中剩余的内容以新的命令数据包的方式 发送到前一跳交换机, 因此, 可以确保在转发待转发数据时, 各个交换机都具 有与该待转发数据相对应的流表项, 进而可以避免发送冗余消息,甚至出现逻 辑错误, 防止数据转发过程出错。
另一方面,由于转发路径中除去起始交换机的各个交换机在接收到待转发 数据时,都具有与该待转发数据相对应的流表项, 因此不会触发交换机向控制 器发送数据包进入消息,也就避免了在转发路径下发过程中出现延时导致设备 发送冗余消息的问题。 图 3为本申请的流表项下发方法实施例 2的示意图。图 3中的网络结构与 图 1相同。采用本申请的流表项下发方法后, 网络中的各个设备之间的信令交 互过程如图 3所示, 包括:
步骤 301 : 交换机 20向控制器 10发送数据包进入消息;
步骤 302: 控制器 10生成包括多个流表项和第一控制指令的第一数据包, 将所述第一数据包发送至转发路径中的目标交换机 30; 步骤 303: 交换机 30接收到第一数据包后, 从中解析出与交换机 30的 IP 地址相对应的流表项和控制指令, 保存所述流表项; 将剩余的交换机 20的流 表项和第一控制指令封装成第二数据包, 发送至交换机 20。
交换机 20收到第二数据包后,识别并保存与自身的 IP地址相对应的流表 项后, 就可以对待转发数据进行转发。
可以看出, 本实施例中, 由于交换机 20在获取到对应的流表项之前, 不 会转发所述待转发数据,所以即使控制器 10向交换机 30发送第一数据包时有 延时, 也不会导致交换机 20发送的待转发数据到达交换机 30时, 交换机 30 还没有接收到对应的流表项的情况出现, 因此, 可以确保数据转发过程有序进 行。 图 4为本申请的流表项下发方法实施例 3的示意图。图 4中的转发路径涉 及 3个交换机。 在实际应用中, 转发路径涉及的交换机的数目还可以更多, 本 实施例中只是以 3个交换机的情况进行举例说明。本实施例中,待转发数据仍 然需要从终端 40发送至终端 50。 与终端 40直接相连的仍然是交换机 20, 与 终端 50直接相连的仍然是交换机 30。 采用本申请的流表项下发方法后,网络中的各个设备之间的信令交互过程 如图 4所示, 包括:
步骤 401: 交换机 20向交换机 60发送数据包进入消息;
由于交换机 20与控制器 10之间不存在控制信令传输链路,所以需要将数 据包进入消息发送给交换机 60。 再由交换机 60将数据包进入消息发送给控制 器 10。
步骤 402: 交换机 60向控制器 10转发所述数据包进入消息;
步骤 403: 控制器 10生成包括多个流表项和第一控制指令的第一数据包, 将所述第一数据包发送至转发路径中的目标交换机 30;
步骤 404: 交换机 30接收到第一数据包后, 从中解析出与交换机 30的 IP 地址相对应的流表项和控制指令, 保存所述流表项; 将剩余的交换机 20和 60 的流表项和第一控制指令封装成第二数据包, 发送至交换机 60。
步骤 405: 交换机 60收到第二数据包后, 识别出于自身的 IP地址相对应 的流表项后,将剩余的交换机 20的流表项和第一控制指令封装成第二数据包, 发送至交换机 20。
交换机 20收到第二数据包后,识别并保存与自身的 IP地址相对应的流表 项后, 就可以对待转发数据进行转发。
本实施例中, 由于交换机 30与控制器 10之间存在控制信令传输链路, 所 以步骤 404中, 控制器 10可以将第一数据包直接发送至目标交换机 30。 图 5为本申请的流表项下发方法实施例 4的示意图。图 5与图 4的网络结 构基本相同,区别在于图 5中交换机 30与控制器 10之间不存在控制信令传输 链路。 采用本申请的流表项下发方法后,网络中的各个设备之间的信令交互过程 如图 5所示, 包括:
步骤 501: 交换机 20向交换机 60发送数据包进入消息;
由于交换机 20与控制器 10之间不存在控制信令传输链路,所以需要将数 据包进入消息发送给交换机 60。 再由交换机 60将数据包进入消息发送给控制 器 10。
步骤 502: 交换机 60向控制器 10转发所述数据包进入消息;
步骤 503: 控制器 10生成包括多个流表项和第一控制指令的第一数据包, 将所述第一数据包发送至交换机 60, 以便通过交换机 60发送至转发路径中的 目标交换机 30;
步骤 504: 交换机 60接收到所述第一数据包后, 将所述第一数据包转发 至交换机 30;
步骤 505: 交换机 30接收到第一数据包后, 从中解析出与交换机 30的 IP 地址相对应的流表项和控制指令, 保存所述流表项; 将剩余的交换机 20和 60 的流表项和第一控制指令封装成第二数据包, 发送至交换机 60。
步骤 506: 交换机 60收到第二数据包后, 识别出于自身的 IP地址相对应 的流表项后,将剩余的交换机 20的流表项和第一控制指令封装成第二数据包, 发送至交换机 20。
交换机 20收到第二数据包后,识别并保存与自身的 IP地址相对应的流表 项后, 就可以对待转发数据进行转发。
本实施例中, 由于交换机 30与控制器 10之间不存在控制信令传输链路, 所以步骤 503中, 控制器 10可以将第一数据包发送至交换机 60, 以便通过交 换机 60发送至目标交换机 30。 与前述流表项下发方法相对应, 本申请还公开了另一种流表项下发方法。 该方法的执行主体为转发路径中的交换机。图 6为本申请的另一种流表项下发 方法实施例的流程图。 如图 6所示, 该方法可以包括:
步骤 601 : 第 M个交换机接收第 M个命令数据包, 所述第 M个命令数据 包中至少包括第 1个至第 M个共 M个流表项和第 2个至第 M个共 M-1个控 制指令,其中,所述第 M个交换机为转发路径中的第 M跳交换机, 1 < M N, 所述转发路径为控制器确定的用于转发待转发数据的路径,所述转发路径中包 括 N个交换机, 所述第 M个交换机对应的控制指令为第 M个控制指令, 所述 第 M个交换机对应的流表项为第 M个流表项;
步骤 602: 保存所述第 M个流表项;
步骤 603: 执行所述第 M个控制指令, 将所述第 M个命令数据包中除所 述第 M个流表项和所述第 M个控制指令之外的其他流表项和控制指令封装成 第 M-1个命令数据包发送至第 M-1个交换机, 以使所述第 M-1个交换机根据 所述第 M-1个命令数据包中的所述第 M-1个控制指令完成所述转发路径中剩 余的 M-1个流表项的传递, 所述第 M-1个交换机为所述转发路径中所述第 M 个交换机的前一跳交换机。
其中, 所述转发路径为控制器确定的用于转发待转发数据的路径。 本申请还公开了一种控制器。 图 7为申请的控制器实施例的结构图。如图 7所示, 该控制器可以包括:
接收单元 701 , 用于接收源交换机发送的数据包进入消息;
处理单元 702, 用于根据所述数据包进入消息, 确定转发路径;
所述处理单元 702,还用于对于所述转发路径中的 N个交换机, 分别生成 对应的流表项, 其中, 所述 N个交换机中的第 1个交换机为源交换机, 第 N 个交换机为所述转发路径的目标交换机, 第 M个交换机为所述转发路径中的 第 M跳交换机, 1 < M < N, 所述第 M个交换机对应的流表项为第 M 个流表 项;
所述处理单元 702, 还用于对于所述转发路径中除所述源交换机之外的 N-1 个交换机, 分别生成一个对应的控制指令, 所述第 M个交换机对应的控 制指令为第 M个控制指令;
封装单元 703 ,用于将生成的 N个所述流表项和 N-1个控制指令封装成第
N个命令数据包;
发送单元 704, 用于将所述第 N个命令数据包发送至所述第 N个交换机; 其中, 第 M个命令数据包中的第 M个控制指令用于指示第 M个交换机 保存第 M个流表项, 并将所述第 M个命令数据包中除所述第 M个流表项和 所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个命令数据 包发送至第 M-1个交换机, 以使所述第 M-1个交换机根据所述第 M-1个命令 数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个流表项 的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交换机的前一跳 交换机。
采用本实施例中的控制器, 可以确保在转发待转发数据时,各个交换机都 具有与该待转发数据相对应的流表项, 进而可以避免相应的设备发送冗余消 息, 甚至出现逻辑错误, 防止数据转发过程出错。
实际应用中, 所述发送单元 704, 具体可以包括:
第一发送子单元, 用于当所述控制器与所述第 N个交换机之间存在控制 信令传输链路时, 直接将所述第 N个命令数据包发送至所述第一转发路径中 的目标交换机;
第二发送子单元, 用于当所述控制器与所述第 N个交换机之间不存在控 制信令传输链路时, 通过所述源交换机将所述第 N个命令数据包发送至所述 第 N个交换机。
所述处理单元 702, 具体可以包括:
第一确定子单元, 用于确定所述第 M-1个交换机;
第二确定子单元, 用于确定所述第 M-1个交换机的地址信息;
第三确定子单元, 用于确定所述第 M个交换机向所述第 M-1个交换机发 送所述第 M个命令数据包时采用的端口; 第一控制指令生成子单元, 用于生成包括所述第 M-1 个交换机的地址信 息以及所述端口的信息的所述第 M个控制指令, 以便所述第 M个交换机根据 所述第 M个控制指令将所述第 M-1个交换机的地址信息封装在所述第 M-1个 命令数据包内, 通过所述端口将所述第 M-1 个命令数据包发送至所述第 M-1 个交换机。 本申请还公开了一种交换机。 图 8为申请的交换机实施例的结构图。如图 8所示, 该交换机可以包括:
接收单元 801 , 用于接收第 M个命令数据包, 所述第 M个命令数据包中 至少包括第 1个至第 M个共 M个流表项和第 2个至第 M个共 M-1个控制指 令, 其中, 所述交换机为第 M个交换机, 所述第 M个交换机为转发路径中的 第 M跳交换机, 1 < M N, 所述转发路径为控制器确定的用于转发待转发数 据的路径, 所述转发路径中包括 N个交换机, 所述第 M个交换机对应的控制 指令为第 M个控制指令, 所述第 M个交换机对应的流表项为第 M个流表项; 处理单元 802, 用于保存所述第 M个流表项;
发送单元 803 , 用于执行所述第 M个控制指令, 将所述第 M个命令数据 包中除所述第 M个流表项和所述第 M个控制指令之外的其他流表项和控制指 令封装成第 M-1个命令数据包发送至第 M-1个交换机, 以使所述第 M-1个交 换机根据所述第 M-1个命令数据包中的所述第 M-1个控制指令完成所述转发 路径中剩余的 M-1个流表项的传递, 所述第 M-1个交换机为所述转发路径中 所述第 M个交换机的前一跳交换机;
其中, 所述转发路径为控制器确定的用于转发待转发数据的路径。
采用本实施例中的交换机, 可以确保在转发待转发数据时,各个交换机都 具有与该待转发数据相对应的流表项, 进而可以避免相应的设备发送冗余消 息, 甚至出现逻辑错误, 防止数据转发过程出错。
实际应用中, 所述接收单元 801 , 具体可以包括:
第一接收子单元, 用于当所述第 M个交换机为所述转发路径中的目标交 换机时, 所述第 M个交换机接收控制器发送的所述第 M个命令数据包;
第二接收子单元, 用于当所述第 M个交换机不是所述转发路径中的目标 交换机时, 所述第 M个交换机接收第 M+1个交换机发送的所述第 M个数据 包,所述第 M+1个交换机为所述转发路径中所述第 M个交换机的下一跳交换 机。 另外, 本申请实施例还提供了一种计算节点,计算节点可能是包含计算能 力的主机服务器, 或者是个人计算机 PC, 或者是可携带的便携式计算机或终 端等等, 本申请具体实施例并不对计算节点的具体实现做限定。
图 9为本申请的计算节点的结构图。 如图 9所示, 计算节点 700包括: 处理器(processor ) 710, 通信接口 ( Communications Interface ) 720, 存 储器(memory ) 730, 总线 740。
处理器 710,通信接口 720,存储器 730通过总线 740完成相互间的通信。 处理器 710, 用于执行程序 732。
具体地,程序 732可以包括程序代码,所述程序代码包括计算机操作指令。 处理器 710 可能是一个中央处理器 CPU , 或者是特定集成电路 ASIC ( Application Specific Integrated Circuit ),或者是被配置成实施本申请实施例的 一个或多个集成电路。
存储器 730,用于存放程序 732。存储器 730可能包含高速 RAM存储器, 也可能还包括非易失性存储器( non-volatile memory ), 例如至少一个磁盘存储 哭口。
当计算节点运行时, 处理器 710, 与存储器 730之间通信, 处理器 710 执行程序 732使得计算节点执行如下方法:
接收源交换机发送的数据包进入消息;
根据所述数据包进入消息, 确定转发路径;
对于所述转发路径中的 N个交换机, 分别生成对应的流表项, 其 中, 所述 N个交换机中的第 1 个交换机为源交换机, 第 N个交换机为 所述转发路径的目标交换机, 第 M个交换机为所述转发路径中的第 M 跳交换机 , 1 < M < N , 所述第 M个交换机对应的流表项为第 M 个流表 项;
对于所述转发路径中除所述源交换机之外的 N- 1 个交换机, 分别 生成一个对应的控制指令, 所述第 M个交换机对应的控制指令为第 M 个控制指令;
将所述生成的 N个流表项和 N-1个控制指令封装成第 N个命令数 据包;
将所述第 N个命令数据包发送至所述第 N个交换机, 以使所述第
N个交换机根据所述第 N个命令数据包中的所述第 N个控制指令完成所 述转发路径中所述 N个流表项的传递;
其中, 第 M个命令数据包中的第 M个控制指令用于指示第 M个 交换机, 保存第 M个流表项, 并将所述第 M个命令数据包中除所述第 M个流表项和所述第 M个控制指令之外的其他流表项和控制指令封装 成第 M-1个命令数据包发送至第 M-1个交换机, 以使所述第 M-1个交 换机根据所述第 M-1 个命令数据包中的所述第 M-1 个控制指令完成所 述转发路径中剩余的 M-1 个流表项的传递, 所述第 M-1 个交换机为所 述转发路径中所述第 M个交换机的前一跳交换机。
或者处理器 710执行程序 732使得计算节点执行如下方法 : 接收第 M个命令数据包, 所述第 M个命令数据包中至少包括第 1个至第 M个共 M个流表项和第 2个至第 M个共 M-1个控制指令, 其中, 所述第 M 个交换机为转发路径中的第 M跳交换机, 1 < M N, 所述转发路径为控制器 确定的用于转发待转发数据的路径, 所述转发路径中包括 N个交换机, 所述 第 M个交换机对应的控制指令为第 M个控制指令, 所述第 M个交换机对应 的流表项为第 M个流表项;
保存所述第 M个流表项;
执行所述第 M个控制指令, 将所述第 M个命令数据包中除所述第 M个 流表项和所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个 命令数据包发送至第 M-1 个交换机, 以使所述第 M-1 个交换机根据所述第 M-1 个命令数据包中的所述第 M-1 个控制指令完成所述转发路径中剩余的 M-1个流表项的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交 换机的前一跳交换机。 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是 与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于 实施例公开的装置而言, 由于其与实施例公开的方法相对应, 所以描述的比较 简单, 相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例 的单元及算法步骤,能够以电子硬件或者电子硬件与计算机软件相结合的方式 来实现。 为了清楚地说明部分硬件和软件的可互换性,在上述说明中已经按照 功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软硬件结 合的方式来执行,取决于技术方案的特定应用和设计约束条件。 专业技术人员 应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处 理器执行的软件模块, 或者二者的结合来实施。软件模块可以置于随机存储器 ( RAM )、内存、只读存储器 ( ROM )、电可编程 ROM、电可擦除可编程 ROM, 寄存器、 硬盘、 可移动磁盘、 CD-ROM, 或技术领域内所公知的任意其它形式 的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本 发明。 对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见 的, 本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下, 在 其它实施例中实现。 因此, 本发明将不会被限制于本文所示的这些实施例, 而 是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

  1. 权 利 要 求
    1、 一种流表项下发方法, 其特征在于, 所述方法包括:
    控制器接收源交换机发送的数据包进入消息;
    根据所述数据包进入消息, 确定转发路径;
    对于所述转发路径中的 N个交换机, 分别生成对应的流表项, 其中, 所 述 N个交换机中的第 1个交换机为源交换机, 第 N个交换机为所述转发路径 的目标交换机,第 M个交换机为所述转发路径中的第 M跳交换机, 1 < M < N, 所述第 M个交换机对应的流表项为第 M个流表项;
    对于所述转发路径中除所述源交换机之外的 N-1个交换机,分别生成一个 对应的控制指令, 所述第 M个交换机对应的控制指令为第 M个控制指令; 将生成的 N个所述流表项和 N-1个控制指令封装成第 N个命令数据包; 将所述第 N个命令数据包发送至所述第 N个交换机, 以使所述第 N个交 换机根据所述第 N个命令数据包中的所述第 N个控制指令完成所述转发路径 中所述 N个流表项的传递;
    其中, 第 M个命令数据包中的第 M个控制指令用于指示第 M个交换机, 保存第 M个流表项, 并将所述第 M个命令数据包中除所述第 M个流表项和 所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个命令数据 包发送至第 M-1个交换机, 以使所述第 M-1个交换机根据所述第 M-1个命令 数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个流表项 的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交换机的前一跳 交换机。
  2. 2、 根据权利要求 1所述的方法, 其特征在于, 所述将所述第 N个命令数 据包发送至所述第 N个交换机, 具体包括:
    当所述控制器与所述第 N个交换机之间存在控制信令传输链路时, 直接 将所述第 N个命令数据包发送至所述第 N个交换机;
    当所述控制器与所述第 N个交换机之间不存在控制信令传输链路时, 通 过所述源交换机将所述第 N个命令数据包发送至所述第 N个交换机。
  3. 3、 根据权利要求 1或 2所述的方法, 其特征在于, 所述第 M个控制指令 生成的方法, 具体包括: 确定所述第 M-l个交换机;
    确定所述第 M-1个交换机的地址信息;
    确定所述第 M个交换机向所述第 M-1个交换机发送所述第 M个命令数据 包时采用的端口;
    生成包括所述第 M-1 个交换机的地址信息以及所述端口的信息的所述第
    M个控制指令, 以便所述第 M个交换机根据所述第 M个控制指令将所述第 M-1 个交换机的地址信息封装在所述第 M-1个命令数据包内, 通过所述端口 将所述第 M-1个命令数据包发送至所述第 M-1个交换机。
  4. 4、 一种流表项下发方法, 其特征在于, 所述方法包括:
    第 M个交换机接收第 M个命令数据包, 所述第 M个命令数据包中至少 包括第 1个至第 M个共 M个流表项和第 2个至第 M个共 M-1个控制指令, 其中, 所述第 M个交换机为转发路径中的第 M跳交换机, 1 < M N, 所述转 发路径为控制器确定的用于转发待转发数据的路径, 所述转发路径中包括 N 个交换机, 所述第 M个交换机对应的控制指令为第 M个控制指令, 所述第 M 个交换机对应的流表项为第 M个流表项;
    保存所述第 M个流表项;
    执行所述第 M个控制指令, 将所述第 M个命令数据包中除所述第 M个 流表项和所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个 命令数据包发送至第 M-1个交换机,以使所述第 M-1个交换机根据所述第 M-1 个命令数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个 流表项的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交换机的 前一跳交换机。
  5. 5、 根据权利要求 4所述的方法, 其特征在于, 所述第 M个交换机接收第 M个命令数据包, 具体包括:
    当所述第 M个交换机为所述转发路径中的目标交换机时, 所述第 M个交 换机接收所述控制器发送的所述第 M个命令数据包;
    当所述第 M个交换机不是所述转发路径中的目标交换机时, 所述第 M个 交换机接收第 M+1个交换机发送的所述第 M个数据包, 所述第 M+1个交换 机为所述转发路径中所述第 M个交换机的下一跳交换机。 6、 一种控制器, 其特征在于, 所述控制器包括:
    接收单元, 用于接收源交换机发送的数据包进入消息;
    处理单元, 用于根据所述数据包进入消息, 确定转发路径;
    所述处理单元, 还用于对于所述转发路径中的 N个交换机, 分别生成对 应的流表项, 其中, 所述 N个交换机中的第 1个交换机为源交换机, 第 N个 交换机为所述转发路径的目标交换机, 第 M个交换机为所述转发路径中的第
    M跳交换机, 1 < M < N, 所述第 M个交换机对应的流表项为第 M 个流表项; 所述处理单元, 还用于对于所述转发路径中除所述源交换机之外的 N-1 个交换机, 分别生成一个对应的控制指令, 所述第 M个交换机对应的控制指 令为第 M个控制指令;
    封装单元, 用于将生成的 N个所述流表项和 N-1个控制指令封装成第 N 个命令数据包;
    发送单元, 用于将所述第 N个命令数据包发送至所述第 N个交换机; 其中, 第 M个命令数据包中的第 M个控制指令用于指示第 M个交换机 保存第 M个流表项, 并将所述第 M个命令数据包中除所述第 M个流表项和 所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个命令数据 包发送至第 M-1个交换机, 以使所述第 M-1个交换机根据所述第 M-1个命令 数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个流表项 的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交换机的前一跳 交换机。
  6. 7、 根据权利要求 6所述的控制器, 其特征在于, 所述发送单元, 具体包 括:
    第一发送子单元, 用于当所述控制器与所述第 N个交换机之间存在控制 信令传输链路时, 直接将所述第 N个命令数据包发送至所述第一转发路径中 的目标交换机;
    第二发送子单元, 用于当所述控制器与所述第 N个交换机之间不存在控 制信令传输链路时, 通过所述源交换机将所述第 N个命令数据包发送至所述 第 N个交换机。
  7. 8、 根据权利要求 6或 7所述的控制器, 其特征在于, 所述处理单元, 具 体包括:
    第一确定子单元, 用于确定所述第 M-1个交换机;
    第二确定子单元, 用于确定所述第 M-1个交换机的地址信息;
    第三确定子单元, 用于确定所述第 M个交换机向所述第 M-1个交换机发 送所述第 M个命令数据包时采用的端口;
    第一控制指令生成子单元, 用于生成包括所述第 M-1 个交换机的地址信 息以及所述端口的信息的所述第 M个控制指令, 以便所述第 M个交换机根据 所述第 M个控制指令将所述第 M-1个交换机的地址信息封装在所述第 M-1个 命令数据包内, 通过所述端口将所述第 M-1 个命令数据包发送至所述第 M-1 个交换机。
  8. 9、 一种交换机, 其特征在于, 所述交换机包括:
    接收单元, 用于接收第 M个命令数据包, 所述第 M个命令数据包中至少 包括第 1个至第 M个共 M个流表项和第 2个至第 M个共 M-1个控制指令, 其中, 所述交换机为第 M个交换机, 所述第 M个交换机为转发路径中的第 M 跳交换机, 1 < M < N,所述转发路径为控制器确定的用于转发待转发数据的路 径, 所述转发路径中包括 N个交换机, 所述第 M个交换机对应的控制指令为 第 M个控制指令, 所述第 M个交换机对应的流表项为第 M个流表项;
    处理单元, 用于保存所述第 M个流表项;
    发送单元, 用于执行所述第 M个控制指令, 将所述第 M个命令数据包中 除所述第 M个流表项和所述第 M个控制指令之外的其他流表项和控制指令封 装成第 M-1个命令数据包发送至第 M-1个交换机, 以使所述第 M-1个交换机 根据所述第 M-1个命令数据包中的所述第 M-1个控制指令完成所述转发路径 中剩余的 M-1个流表项的传递, 所述第 M-1个交换机为所述转发路径中所述 第 M个交换机的前一跳交换机。
  9. 10、 根据权利要求 9所述的交换机, 其特征在于, 所述接收单元, 具体包 括:
    第一接收子单元, 用于当所述第 M个交换机为所述转发路径中的目标交 换机时, 所述第 M个交换机接收控制器发送的所述第 M个命令数据包;
    第二接收子单元, 用于当所述第 M个交换机不是所述转发路径中的目标 交换机时, 所述第 M个交换机接收第 M+1个交换机发送的所述第 M个数据 包,所述第 M+1个交换机为所述转发路径中所述第 M个交换机的下一跳交换 机。
  10. 11、 一种计算节点, 包括: 处理器, 通信接口, 存储器和总线;
    所述处理器,所述通信接口,所述存储器通过所述总线完成相互间的通信; 所述处理器, 用于执行程序;
    所述存储器, 用于存放所述程序;
    当所述计算节点运行时, 所述处理器与所述存储器通信, 其特征在于, 所 述处理器执行所述程序所述计算节点执行如下方法 :
    接收源交换机发送的数据包进入消息;
    根据所述数据包进入消息, 确定转发路径;
    对于所述转发路径中的 N个交换机, 分别生成对应的流表项, 其中, 所 述 N个交换机中的第 1个交换机为源交换机, 第 N个交换机为所述转发路径 的目标交换机,第 M个交换机为所述转发路径中的第 M跳交换机, 1 < M < N, 所述第 M个交换机对应的流表项为第 M 个流表项;
    对于所述转发路径中除所述源交换机之外的 N-1个交换机,分别生成一个 对应的控制指令, 所述第 M个交换机对应的控制指令为第 M 个控制指令; 将所述生成的 N个流表项和 N-1个控制指令封装成第 N个命令数据包; 将所述第 N个命令数据包发送至所述第 N个交换机, 以使所述第 N个交 换机根据所述第 N个命令数据包中的所述第 N个控制指令完成所述转发路径 中所述 N个流表项的传递;
    其中, 第 M个命令数据包中的第 M个控制指令用于指示第 M个交换机, 保存第 M个流表项, 并将所述第 M个命令数据包中除所述第 M个流表项和 所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个命令数据 包发送至第 M-1个交换机, 以使所述第 M-1个交换机根据所述第 M-1个命令 数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个流表项 的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交换机的前一跳 交换机;
    或者所述处理器执行所述程序所述计算节点执行如下方法 : 接收第 M个命令数据包, 所述第 M个命令数据包中至少包括第 1个至第 M个共 M个流表项和第 2个至第 M个共 M-1个控制指令, 其中, 所述第 M 个交换机为转发路径中的第 M跳交换机, 1 < M N, 所述转发路径为控制器 确定的用于转发待转发数据的路径, 所述转发路径中包括 N个交换机, 所述 第 M个交换机对应的控制指令为第 M个控制指令, 所述第 M个交换机对应 的流表项为第 M 个流表项;
    保存所述第 M个流表项;
    执行所述第 M个控制指令, 将所述第 M个命令数据包中除所述第 M个 流表项和所述第 M个控制指令之外的其他流表项和控制指令封装成第 M-1个 命令数据包发送至第 M-1个交换机,以使所述第 M-1个交换机根据所述第 M-1 个命令数据包中的所述第 M-1个控制指令完成所述转发路径中剩余的 M-1个 流表项的传递, 所述第 M-1个交换机为所述转发路径中所述第 M个交换机的 前一跳交换机。
CN201380002433.4A 2013-11-29 2013-11-29 一种流表项的下发方法及装置 Expired - Fee Related CN104919765B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/088140 WO2015077976A1 (zh) 2013-11-29 2013-11-29 一种流表项的下发方法及装置

Publications (2)

Publication Number Publication Date
CN104919765A true CN104919765A (zh) 2015-09-16
CN104919765B CN104919765B (zh) 2018-01-23

Family

ID=53198221

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380002433.4A Expired - Fee Related CN104919765B (zh) 2013-11-29 2013-11-29 一种流表项的下发方法及装置

Country Status (4)

Country Link
US (1) US10009252B2 (zh)
EP (1) EP3065351B1 (zh)
CN (1) CN104919765B (zh)
WO (1) WO2015077976A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018165866A1 (zh) * 2017-03-14 2018-09-20 华为技术有限公司 一种sdn及其报文转发的方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110317559A1 (en) * 2010-06-25 2011-12-29 Kern Andras Notifying a Controller of a Change to a Packet Forwarding Configuration of a Network Element Over a Communication Channel
CN102938794A (zh) * 2012-11-14 2013-02-20 华为技术有限公司 地址解析协议arp消息转发方法、交换机和控制器
CN103036653A (zh) * 2012-12-26 2013-04-10 华中科技大学 一种对OpenFlow网络进行网络编码的方法
WO2013099080A1 (en) * 2011-12-27 2013-07-04 Nec Corporation Communication system, controller, communication method, and program
CN103346969A (zh) * 2013-07-05 2013-10-09 中国科学院计算机网络信息中心 基于OpenFlow实现动态组播生成树路径调整的方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5652400B2 (ja) * 2009-10-06 2015-01-14 日本電気株式会社 ネットワークシステムとコントローラ、方法とプログラム
US8676980B2 (en) * 2011-03-22 2014-03-18 Cisco Technology, Inc. Distributed load balancer in a virtual machine environment
JP5994851B2 (ja) * 2011-10-21 2016-09-21 日本電気株式会社 転送装置の制御装置、転送装置の制御方法、通信システムおよびプログラム
EP2788871B1 (en) * 2011-12-07 2021-08-04 Citrix Systems, Inc. Controlling a network interface using virtual switch proxying
CN102685006A (zh) * 2012-05-03 2012-09-19 中兴通讯股份有限公司 一种转发数据报文的方法及装置
US9379973B2 (en) * 2013-02-11 2016-06-28 Cisco Technology, Inc. Binary compatible extension architecture in an openflow compliant network environment
CN103401726B (zh) * 2013-07-19 2016-12-07 华为技术有限公司 网络路径探测方法及装置、系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110317559A1 (en) * 2010-06-25 2011-12-29 Kern Andras Notifying a Controller of a Change to a Packet Forwarding Configuration of a Network Element Over a Communication Channel
WO2013099080A1 (en) * 2011-12-27 2013-07-04 Nec Corporation Communication system, controller, communication method, and program
CN102938794A (zh) * 2012-11-14 2013-02-20 华为技术有限公司 地址解析协议arp消息转发方法、交换机和控制器
CN103036653A (zh) * 2012-12-26 2013-04-10 华中科技大学 一种对OpenFlow网络进行网络编码的方法
CN103346969A (zh) * 2013-07-05 2013-10-09 中国科学院计算机网络信息中心 基于OpenFlow实现动态组播生成树路径调整的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
OPENFLOW: "OpenFlow Switch Specication", 《OPEN NETWORKING FOUNDATION》 *

Also Published As

Publication number Publication date
CN104919765B (zh) 2018-01-23
EP3065351B1 (en) 2018-05-16
EP3065351A1 (en) 2016-09-07
EP3065351A4 (en) 2016-11-30
US10009252B2 (en) 2018-06-26
US20160277280A1 (en) 2016-09-22
WO2015077976A1 (zh) 2015-06-04

Similar Documents

Publication Publication Date Title
CN109561021A (zh) 一种报文转发的方法及网络设备
US10419333B2 (en) Method and apparatus for compressing label stack, and method and apparatus for decompressing label stack
US7616562B1 (en) Systems and methods for handling packet fragmentation
CN101047714B (zh) 一种处理网络数据的方法及系统
WO2016187813A1 (zh) 一种光电混合网络的数据传输方法及装置
US8085780B1 (en) Optimized buffer loading for packet header processing
CN105075216A (zh) 识别原始ip地址以及客户端端口连接
CN106685826B (zh) 交换机堆叠系统、从设备、交换芯片及处理协议报文方法
CN101692647B (zh) 路由器中采用IPv6头封装IPv4包的隧道转发系统
CN109218200A (zh) 一种报文处理方法及装置
WO2018006304A1 (zh) 发送数据的方法和转发设备
CN104639440A (zh) 一种在网络中实现三层转发并封装协议信息的方法和装置
CN101848155A (zh) 标签交换路径的检测方法及标签交换路由器
US20170300231A1 (en) Storage system, method, and apparatus for processing operation request
CN105814843A (zh) 一种流表的生成方法和装置
EP1297665A2 (en) Apparatus and method for efficient hashing in networks
US7360142B1 (en) Methods, architectures, circuits, software and systems for CRC determination
US7239630B1 (en) Dedicated processing resources for packet header generation
CN104919765A (zh) 一种流表项的下发方法及装置
US7180893B1 (en) Parallel layer 2 and layer 3 processing components in a network router
CN104780106B (zh) 多实例实现方法及装置
CN106230740A (zh) 一种vxlan中的报文转发方法及装置
CN111404705B (zh) 一种sdn的优化方法、装置及计算机可读存储介质
CN106302258A (zh) 一种报文转发方法及装置
WO2014183525A1 (zh) 报文的处理方法和级联芯片

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180123