在网络控制器和交换机之间控制数据的传输的方法和系统的制作方法
【专利摘要】本发明提供一种用于在网络交换机和交换机控制器之间的控制数据的传输的方法。该方法包括:通过所述交换机控制器配置多个控制数据分组,其中配置包括在所述多个控制数据分组的每个中布置序列号,指示数据分组传输的顺序;将所述多个控制数据分组存储在与所述交换机控制器通信的重放缓冲器中;在所述交换机控制器和所述网络交换机之间的安全链路上,将所述多个控制数据分组传输到所述网络交换机;以及响应于确定一个或更多控制数据分组未被所述网络交换机接收,从所述重放缓冲器取回所述一个或更多控制数据分组,并且将所述一个或更多控制数据分组重新传输到所述网络交换机。
【专利说明】在网络控制器和交换机之间控制数据的传输的方法和系统
【技术领域】
[0001] 本发明涉及计算机网络,并且更具体地涉及计算机网络中交换机和交换机控制器 之间网络交换和寻址链路的控制。
【背景技术】
[0002] 在包括多个网络交换机的局域网(LAN)中典型地采用以太网网络。已经开发多个 通信协议,并且继续演化以提高对于各种环境的以太网网络性能。例如,对于以太网的增强 (所谓数据中心桥接(DCB)、融合增强型以太网(CEE)或数据中心以太网(DCE))支持LAN与 存储区域网(SAN)的融合。可以与以太网结合在数据中心环境中使用的其他协议包括例如 以太网光纤通道(FCoE)、互联网广域远程直接内存访问协议(iWARP)、聚合以太网远程直 接内存访问(RoCE)。
[0003] 在OpenFlow网络环境中,交换机经由安全链路连接到各个控制器,以便控制交换 机配置和路由。这样的控制器典型地经由在安全链路上发送的控制数据分组,提供这样的 控制,这保持比传统以太网结构更高的数据完整性水平。
[0004] 比特错误由于丢失或受损的数据分组而出现,并且这样的误码率可能随着网络大 小和复杂性的增加而提升。例如,更大的数据中心网络(例如,具有5000-10000的10G以太 网,完全供应的)典型地要求更多交换机,这意味着每个分组需要穿过更多链路,因此使得 每个分组更易受链路比特错误影响。此外,链路数据速率的增加可能增加依赖数据速率的 噪声并且提升比特误码率。
【发明内容】
[0005] 根据一个实施例,提供一种用于在网络交换机和交换机控制器之间的控制数据的 传输的方法。所述方法包括:通过所述交换机控制器配置多个控制数据分组,其中配置包括 在所述多个控制数据分组的每个中布置序列号,指示数据分组传输的顺序;将所述多个控 制数据分组存储在与所述交换机控制器通信的重放缓冲器中;在所述交换机控制器和所述 网络交换机之间的安全链路上,将所述多个控制数据分组传输到所述网络交换机;以及响 应于确定一个或更多控制数据分组未被所述网络交换机接收,从所述重放缓冲器取回所述 一个或更多控制数据分组,并且将所述一个或更多控制数据分组重新传输到所述网络交换 机。
[0006] 根据另一实施例,提供一种用于在网络交换机和交换机控制器之间的控制数据的 传输的计算机程序产品。所述计算机程序产品包括由处理电路可读的有形存储介质,其存 储用于由处理电路执行的指令,用于执行一种方法,所述方法包括:通过所述交换机控制器 配置多个控制数据分组,其中配置包括在所述多个控制数据分组的每个中布置序列号,指 示数据分组传输的顺序;将所述多个控制数据分组存储在与所述交换机控制器通信的重放 缓冲器中;在所述交换机控制器和所述网络交换机之间的安全链路上,将所述多个控制数 据分组传输到所述网络交换机;以及响应于确定一个或更多控制数据分组未被所述网络交 换机接收,从所述重放缓冲器取回所述一个或更多控制数据分组,并且将所述一个或更多 控制数据分组重新传输到所述网络交换机。
[0007] 根据又一实施例,提供一种用于在网络交换机和交换机控制器之间的控制数据的 传输的计算机程序产品。所述计算机程序产品包括由处理电路可读的有形存储介质,其存 储用于由处理电路执行的指令,用于执行一种方法,所述方法包括:在所述交换机控制器和 所述网络交换机之间的安全链路上,由所述网络交换机从所述交换机控制器接收一个或更 多所述多个控制数据分组,至少一个控制数据分组包括与具有数据分组传输的顺序的一组 控制数据分组相关联的序列号;检查一个或更多控制数据分组的每个的序列号,并且确定 是否任何组的控制数据分组丢失;以及响应于确定任何组的控制数据分组丢失,发送应答 到所述交换机控制器,指示与每个丢失的控制数据分组相关联的至少一个序列号。
[0008] 根据再一实施例,提供一种用于在网络交换机和交换机控制器之间的控制数据的 传输的系统。所述系统包括:服务器;包括通过网络中的链路耦合到所述服务器的端口的 交换机;以及通过安全链路耦合到所述交换机的交换机控制器。所述交换机控制器包括配 置为执行一种方法的控制逻辑,所述方法包括:通过所述交换机控制器配置多个控制数据 分组,其中配置包括在所述多个控制数据分组的每个中布置序列号,指示数据分组传输的 顺序;将所述多个控制数据分组存储在与所述交换机控制器通信的重放缓冲器中;在所述 交换机控制器和所述网络交换机之间的安全链路上,将所述多个控制数据分组传输到所述 网络交换机;以及响应于确定一个或更多控制数据分组未被所述网络交换机接收,从所述 重放缓冲器取回所述一个或更多控制数据分组,并且将所述一个或更多控制数据分组重新 传输到所述网络交换机。
[0009] 根据再一实施例,提供一种用于网络中控制数据的传输的装置。所述装置包括:耦 合到网络交换机的交换机控制器,所述交换机控制器包括控制逻辑,配置为执行:通过所述 交换机控制器配置多个控制数据分组,其中配置包括在所述多个控制数据分组的每个中布 置序列号,指示数据分组传输的顺序;将所述多个控制数据分组存储在与所述交换机控制 器通信的重放缓冲器中;在所述交换机控制器和所述网络交换机之间的安全链路上,将所 述多个控制数据分组传输到所述网络交换机;以及响应于确定一个或更多控制数据分组未 被所述网络交换机接收,从所述重放缓冲器取回所述一个或更多控制数据分组,并且将所 述一个或更多控制数据分组重新传输到所述网络交换机。
[0010] 通过本发明的技术实现额外特征和优点。在此详细描述本发明的其他实施例和方 面,并且视为要求保护的发明的一部分。为了具有该优点和特征的本发明的更好理解,参照 描述和附图。
【专利附图】
【附图说明】
[0011] 被视为本发明的主题在权利要求中具体指出并且明确要求保护。本发明的前述和 其他特征以及优点将从结合附图进行的以下详细描述中显而易见,附图中:
[0012] 图1描绘可以根据实施例实施的包括具有OpenFlow-capable交换机的网络的系 统的框图;
[0013] 图2描绘根据实施例的OpenFlow-capable交换机的框图;
[0014] 图3描绘可以在实施例中使用的OpenFlow流交换定义的示例;
[0015] 图4描绘包括网络交换机和交换机控制器的网络的一部分的示例性实施例;
[0016] 图5描绘从图4的控制器发送到交换机的控制数据分组的示例;
[0017] 图6是示出控制器和网络交换机之间的通信方法的流程图;以及
[0018] 图7是图示图6的方法的实施例的框图。
【具体实施方式】
[0019] 示例性实施例涉及在网络交换机和网络交换机控制器之间发送的控制数据分组 的链路级错误检验和恢复。网络的实施例包括一个或多个交换机,每个连接到配置为控制 交换机的网络控制器或交换机控制器。在一个实施例中,控制器发送控制数据分组到交换 机,以影响各种配置和路由功能。在一个实施例中,控制器包括存储传输的数据分组的副本 的重放数据缓冲器。
[0020] 示例性控制数据分组包括指示控制数据分组相对于控制器发送的其他分组的顺 序的序列号,并且还可以包括分组组或优先级组标识。包括序列号的信息包括在控制器和 交换机之间的链路层。方法的实施例包括发送多个控制分组到网络交换机,每个控制分组 至少包括例如数据分组的报头部分中的序列号。方法包括通过控制器确定是否接收控制数 据分组。如果没有接收一个或多个控制数据分组,则控制器重发丢失的分组。在一个实施例 中,交换机包括配置为检查每个控制数据分组的序列号并且确定是否任何丢失的逻辑。如 果控制分组丢失,则交换机返回应答消息,指示丢失分组的序列号。响应于该应答消息,控 制器重发与指示的序列号相关联的分组。
[0021] 现在转到图1,现在将更加具体地描述包括支持OpenFlow的网络101的系 统100的示例。在图1中描述的示例中,系统100是数据中心环境,其包括配置为使用 OpenFlow-capable的交换机106在网络101上通信的多个服务器102和客户端系统104。 在示例性实施例中,也称为主机或主机系统的服务器102是高速处理设备(例如,大型计算 机、桌面型计算机、膝上型计算机、手持设备、嵌入式和计算设备等),其包括能够读取和执 行指令并且处理与系统100的各种组件的交互的至少一个处理电路(例如,计算机处理器/ CPU)。服务器102可以是存储系统服务器,配置为访问和存储大量数据到一个或多个数据 存储系统108。
[0022] 客户端系统104可以包括多种桌面型、膝上型、通用计算机设备、移动计算设备、 和/或具有处理电路和输入/输出(I/O)接口(诸如键/按钮、触摸屏、音频输入、显示设备 和音频输出)的联网设备。客户端系统104可以直接或通过一个或多个无线接入点110无 线地链接到一个或多个交换机106。
[0023] 数据存储系统108指任何类型的计算机可读存储介质,并且可以包括一个或多个 辅助存储元件,例如硬盘驱动器(HDD)、固态存储器、带、或服务器102内部或外部的存储子 系统。可以存储在数据存储系统108中的数据的类型例如包括各种文件和数据库。可能存 在由可以分布在系统100的各种位置的每个服务器102利用的多个数据存储系统108。
[0024] 系统100还包括网络控制器112,其作为配置为进行网络101内的路由决定的中心 软件定义的网络控制器。网络控制器112建立一个或多个安全链路103以配置交换机106, 并且建立交换机106之间链路105的通信属性。例如,网络控制器112可以配置交换机106 以控制服务器102和客户端系统104之间数据流的分组路由路径,以及一个或多个防火墙 114和一个或多个负载平衡器116。一个或多个防火墙114限制网络101和一个或多个外 部网络118之间网络通信量的存取和流动。一个或多个负载平衡器116可以跨越诸如服务 器102之间的多个计算机分布工作负载。
[0025] 服务器102、客户端系统104和网络控制器112可以包括现有技术中已知的各种计 算机/通信硬件和软件技术,诸如一个或多个处理单元或电路、包括可移除介质的易失性 和非易失性存储器、电源、网络接口、支持电路、操作系统等。尽管网络控制器112描述为分 离组件,但是将理解的是网络配置功能可以可替代地以独立或分布式方式在一个或多个服 务器102或客户端系统104中实施。
[0026] 网络101包括无线、有线和/或光纤链路的组合。如图1所描述的网络101代表为 了说明目的的简化示例。网络101的实施例可以包括多个交换机1〇6(例如,几百),其中每 个交换机106许多端口和链路。网络101可以支持允许数据在服务器102、客户端系统104、 交换机106、网络控制器112、防火墙114和负载平衡器116之间传输的多种已知通信标 准。通信协议典型地在一个或多个层(诸如物理层(层-1 )、链路层(层-2)、网络层(层-3)、 传输层(层-4)和应用层(层-5))中实施。在示例性实施例中,网络101支持OpenFlow作 为层-2协议。交换机106可以是还支持层-2和层-3以太网的专用OpenFlow交换机或 OpenFlow-enabled 通用交换机。
[0027] 图2描绘支持OpenFlow的图1的交换机106的框图。交换机106包括交换机逻 辑202、安全信道204、协议支持205、流动表206、缓冲器208a-208n以及端口 210a-210n。 交换机逻辑202可以在一个或多个处理电路中实施,其中计算机可读存储介质配置为保持 用于交换机逻辑202的指令,以及用于支持交换机106的操作的各种变量和常数。交换机 逻辑202在端口 210a-210n之前转发分组,如由图1的网络控制器112定义的流。
[0028] 安全信道204将交换机106连接到图1的网络控制器112。安全信道204允许命 令和分组经由OpenFlow协议在网络控制器112和交换机106之间通信。安全信道204可 以以软件实施,如在交换机106内存储的可执行指令。用于建立对于OpenFlow和其他协议 的实施的协议定义的协议细节可以存储在协议支持205中。协议支持205可以体现在例如 闪速存储器的计算机可读存储介质中,该计算机可读存储介质配置为保持用于由交换机逻 辑202执行的指令。将协议支持205实施为软件使得能够对于协议的新版本或变体现场更 新,并且可以提供OpenFlow作为对于现有传统路由器或交换机的提升。
[0029] 流动表206定义与特定地址、虚拟局域网或交换机端口相关联的支持连接类型。 流动可以定义为匹配特定报头格式的所有分组。流动表206中的每个条目211可以包括与 特定流动相关联的一个或多个规则212、动作214和统计216。规则212定义每个流动,并 且可以由分组报头确定。动作214定义如何处理分组。统计216追踪诸如每个流动的大 小(例如,字节的数目)、每个流动的分组的数目、以及自从流动的最后匹配分组或连接时间 起的时间的信息。动作的示例包括用于转发流动的分组到一个或多个特定端口 210a-210η (例如,单播或多播)、封装并且转发流动的分组到图1的网络控制器112、以及丢弃流动的分 组的指令。流动表206中的条目211可以经由安全信道204由图1的网络控制器112添加 或移除。图1的网络控制器112可以预先填充流动表206中的条目211。此外,交换机106 可以在接收流动时在没有流动表206中的对应条目211的情况下请求从网络控制器112创 建条目211。
[0030] 在分组在端口 210a-210n之间发送时,缓冲器208a-208n提供用于流动的队列中 的临时存储。在无损配置中,不是在存在网络拥挤时丢弃分组,缓冲器208a-208n临时存储 分组直到图1中的相关联端口 210a-210n和链路105可用。缓冲器208a-208n的每个可以 与特定端口、流动或子网络相关联。缓冲器208a-208n的每个时逻辑分离的,但是不需要物 理上独立。因此,当缓冲器208a-208n之一满时,不会不利地影响交换机106中其他缓冲器 208a-208n 的性能。
[0031] 图3描绘可以在实施例中使用的OpenFlow流动交换定义300的示例。OpenFlow 流动交换定义300是定义流动的分组报头,并且包括多个字段。在该示例中,交换定义300 是包括多至11个元组或字段的流动报头;然而,不是所有元组需要依赖于特定流动定义。 在图3的示例中,OpenFlow流动交换定义300包括用于标识进入端口 302、以太网目的地 地址304、以太网源地址306、以太网类型308、虚拟局域网(VLAN)优先级310、VLAN标识符 312、因特网协议(IP)源地址314、IP目的地地址316、IP协议318、传输控制协议(TCP)/ 用户数据报协议(UDP)源端口 320以及TCP/UDP目的地端口 322的元组。以太网目的地地 址304可以代表在传统交换和路由中使用的层-2以太网硬件地址或介质存取控制(MAC)地 址。IP目的地地址316可以代表在传统交换和路由中使用的层-3IP地址。在用作密钥的 元组的特定组合的情况下,以对于OpenFlow流动交换定义300中的元组的任何组合定义流 动交换。例如,通过对于聚合MAC-子网、IP-子网、端口、VLAN标识符等的精确匹配或通配 符匹配,可以在图2的规则212中定义流动。
[0032] 图4描绘网络部分400的框图。服务器402通过链路404耦合到交换机406。示 例性服务器402是图1的服务器102,并且示例性交换机406是图1的交换机106。控制 器408 (例如,网络控制器)通过例如安全链路410链接到交换机406。在一个实施例中,在 OpenFlow-capable环境下,控制器是诸如图1的网络控制器112的网络控制器。在其他实 施例中,对于非OpenFlow环境,控制器408的功能可以集成到诸如服务器402或服务器102 的其他网络实体中。
[0033] 如图4所示,交换机406连接到服务器402,服务器402包括至少一个端口 412和 各种逻辑组件,诸如模式选择逻辑414、等待脉冲重复时间416和操作配置的协议和模式 418。在此描述的逻辑组件可以以存储在计算机可读存储介质用于由处理电路执行的指令 或以硬件电路实施,并且可以配置为发送诸如链路初始化帧和数据分组的帧。交换机406、 服务器402和控制器408可以支持多种操作模式,包括但不限于、光纤信道、以太网光纤通 道(FCoE )、互联网广域远程直接内存访问协议(iWARP )以及聚合以太网远程直接内存访问 (RoCE)〇
[0034] 交换机406包括交换机逻辑420、流动表422、协议支持424、端口配置和重置逻辑 425和多个端口,诸如用于与服务器402通信的端口 426和用于与诸如其他交换机或服务器 的其他网络实体通信的端口 428。端口可以是物理端口、由交换机定义的虚拟端口和/或 由OpenFlow协议定义的虚拟端口。当实施为OpenFlow交换机时,交换机406还包括用于 在安全链路410上与网络控制器408通信的安全信道430。
[0035] 网络控制器408包括动作表432,其保持用于交换机406的端口和协议信息,以及 用于通过交换机406和诸如图1的交换机106的其他交换机的流动的规则、动作和统计。网 络控制器408还包括流动控制逻辑434,其可以以存储在计算机可读存储介质用于由处理 电路执行的指令或以硬件电路实施。网络控制器408可以管理交换机406中流动表422的 更新。基于流动表422的更新,更新网络控制器408的动作表432中的端口和协议信息以 反映变化。
[0036] 如上所述,网络控制器408经由使用指定端口(诸如在物理网络控制器112或诸如 服务器102或客户端系统104的其他处理器中实施的控制器中的端口)建立的安全链路410 与交换机406通信。网络控制器408与交换机406通信,以配置和管理交换机,从交换机接 收事件并且将分组发送出交换机。各种消息类型可以在交换机和控制器之间发送,以完成 这样的功能,包括控制器到交换机、异步和对称消息。
[0037] 控制器到交换机消息由控制器408发起,并且可能或可能不要求来自交换机406 的应答。特征消息用于请求交换机406的性能(例如,在建立安全链接时),响应于此交换机 406应该返回说明交换机406的性能的特征应答。由控制器408发送配置消息,以设置并且 询问交换机406中的配置参数。交换机406仅响应于来自控制器408的询问。修改状态消 息由控制器408发送以管理关于交换机的状态,例如,添加/删除和/或修改流动表422中 的流动/组,以及设置交换机性能。读取状态消息由控制器用于从交换机收集统计。分组 发出消息由控制器用于在交换机上的指定端口发出分组,并且转发经由分组进入消息接收 的分组。分组发出消息包含整个分组或参照交换机中存储的分组的缓冲器ID。分组发出消 息还包含要以它们指定的顺序施加的动作的列表;空动作列表丢弃该分组。
[0038] 在控制器408没有请求它们的情况下从交换机406发送异步消息。交换机406发 送异步消息到控制器408,以便例如表示分组到达、交换机状态改变或错误。分组进入事件 消息可以对于不具有匹配流动条目的分组从交换机406发送到控制器408,并且可以对于 转发到控制器408的分组从控制器408发送到交换机406。移除流动的消息可以用于指示 流动条目已经由于例如流动条目的不活动或过期被移除。响应于端口配置状态的改变和端 口状态事件,发送端口状态消息。错误消息可以由交换机406用于将问题通知控制器408。
[0039] 在任一方向在没有请求的情况下发送对称消息。在连接开始时,可以在交换机406 和控制器408之间交换Hello消息。回送请求/应答消息可以从交换机406或控制器408 发送,并且可以用于测量控制器-交换机连接的延迟或带宽,以及验证其活性。实验者消息 为交换机406提供一种提供OpenFlow消息类型空间中的额外功能的方式。
[0040] 控制器408包括链路层可靠性或链路层重试(LLR)性能,其提供来在控制器480和 交换机406之间的链路410 (物理层)处保持数据完整性。该特征通过例如在端口和协议 信息432中包括控制分组格式信息来实施,该控制分组格式信息包括用于分配给发送到交 换机406的每个控制分组的序列号。控制器408包括配置来分配序列号给每个数据分组的 LLR逻辑436,并且可以将多个数据分组分组到诸如公共通信量类的组中。通信量类可以分 配由交换机406识别的优先级。控制器408还可以配置为提供LLR响应代码或格式。LLR 可以以现有硬件结构和链路协议实施。例如,对于CEE实施例,LLR可以经由增强传输选择 (ETS)流动控制实施。
[0041] 控制器408还包括重放缓冲器438,其存储要传输到交换机406的序列数据分组。 控制数据分组组分配序列号,并且还可以分配通信量或优先级类,并且存储在重放缓冲器 中。该组然后以由序列号定义的传输顺序发送到交换机406。
[0042] 在一个实施例中,重放缓冲器大小配置为包含链路410的长度、在链路410两端的 应答(例如,Ack/Nck)处理时间、以及最大传输和接收次数(整个分组由交换机接收以检错 并且验证控制分组,并且因此发送Ack/Nck分组可能必须等待控制分组)。例如,对于10G 数据链路具有100米长度,估计报头开销要求大约9K字节;对于更长距离,长度可能增加, 例如,可能扩展到32K字节。
[0043] 在一个实施例中,重放缓冲器438独立于其他缓冲器实施。例如,重放缓冲器438 的实施独立于虚拟通道(VL)缓冲,并且避免与VL缓冲相交。VL缓冲典型地在入站路径(从 交换机到控制器)中实施,并且唯一地用于流动控制。LLR提供分离的出站重放缓冲器,其 能够重新传输丢失的分组,包括那些从未到达VL缓冲器的。因此,可以不依赖于VL或其他 流动缓冲器,确保链路可靠性。
[0044] OpenFlow控制通信可以比交换机流动控制更快地运行,如果交换机缓冲器溢出则 导致控制分组丢失。因此,在一个实施例中,控制器408利用背压流动控制。该背压流动控 制通过在发送数据之前使得网关验证下一个网关具有足够缓冲器空间可用,实现无丢失传 输。
[0045] 交换机406配置为检查LLR性能,验证分组和分组序列,并且基于验证返回LLR应 答。该配置可以例如在交换机逻辑420中提现。交换机406可以检查LLR性能,并且验证 序列号以确定是否数据分组丢失。
[0046] 例如,当交换机406从控制器406接收一组控制数据分组时。交换机406识别通 信量类(如果分配一个),并且验证考虑了所有数据分组序列号。如果如此,则交换机406发 送确收(Ack)应答,指示成功接收该组分组。如果确定序列号丢失(例如,序列中的号码丢 失),则交换机406发送否确收(Nak)应答,指示没有接收序列号(例如,在超时时段内)。控 制器408然后可以从指示的序列号确定丢失的数据分组,并且从重放缓冲器438将丢失的 数据分组重新发送到交换机406。
[0047] LLR系统在控制分组丢失的情况下,提供迅速的端对端恢复,并且提供一种机制, 交换机可以通过该机制迅速识别丢失分组、发送通知并且发起丢失分组的重试而不请求完 全端对端重试。
[0048] 图5描绘用于在控制器408和交换机406之间发送数据的控制数据帧或控制数据 分组500的实施例。控制数据帧可以由控制器408用于与交换机406通信,以便例如配置 和管理交换机和流动表,发送包括定制数据的数据分组给交换机,并且管理通过交换机的 分组路由。示例性控制帧包括如上所述的控制器到交换机、异步和对称消息。在该实施例 中,LLR使能和初始化代码、优先级组ID、Ack/Nak代码和序列号位于控制分组报头中,尽管 提供这样信息的格式不限于在此描述的特定实施例。
[0049] 帧500包括前同步码502、帧开始(S0F)定界符、报头506、有效载荷数据508和循 环冗余校验(CRC)校验和510。报头506包括网络地址信息和协议信息,其中可以指定LLR 信息。例如,帧500包括目的地MAC地址512、源MAC地址514和以太网类型字段516。以 太网类型字段516至少包括标识相对于其他帧发送帧500的顺序的序列号。以太网类型字 段516还可以包括LLR组ID,指示巾贞500是否是公共通信量组或优先级组和/或Ack/Nak 代码的一部分。在一个实施例中,LLR信息添加到现有帧格式和协议。新的定界符可以添 加以指示标识诸如组和/或序列号的LLR信息的额外字节。
[0050] 要注意帧500和报头506以及它们各自的字段不限于在此描述的特定实施例。例 如,取决于使用的协议,报头506可以包括不同或额外的字段。在一个不例中,报头506可 以包括任何数目的字段,如参照交换定义300描述的。
[0051] 参照图6和7描述网络中交换机和交换机控制器之间的通信的方法600的实施 例。图6是图示方法600的示例性实施例的流程图。方法600结合图4中示出的网络部分 400和图7的数据流动图示描述,但是不限于此。在一个实施例中,方法包括以描述的顺序 由块601-607代表的步骤。然而,在一些实施例中,不执行所有步骤和/或以与描述的顺序 不同的顺序执行步骤。
[0052] 在块601,控制器408接收信息或指令,并且配置诸如分组500的一组控制数据分 组,其可以配置为OpenFlow控制分组。每个控制数据分组包括链路层重试或包括LLR是否 使能的链路层可靠性(LLR)信息。其他LLR信息包括公共通信量类或优先级组ID,其标识 分组的组并且如果希望的话则指示优先级级别。LLR信息还可以提供诸如Ack/Nak代码的 额外协议信息。
[0053] 在块602,每个控制分组500存储在重放缓冲器438中,准备到交换机406的传输。
[0054] 在块603,控制分组从控制器408发送到交换机406。
[0055] 在块604,由交换机406接收和验证控制数据分组。交换机406例如通过根据识别 的类检查优先级组ID、以及组和控制分组,检查是否每个数据分组已经分配到组或公共通 信量类。交换机识别各个类中每个控制分组中的序列号,并且确定是否丢失任何序列号。例 如,组中的每个分组包括一组顺序整数号(例如,1-10)之一,并且还可以指示分组的总数。 交换机检查号码,并且确定是否丢失任何。在一个实施例中,如果组与预先定义的优先级相 关联,或者报头指示用于该组的优先级,则交换机可以根据该优先级改变流动表中处理数 据的顺序。
[0056] 在块605,如果已经验证所有数据分组和序列号,则交换机406发送诸如Ack应答 分组520的LLR应答。
[0057] 在块606,如果没有接收和验证(例如,在选择的超时时段内)所有数据分组,则交 换机406发送诸如Nak应答分组522的LLR应答。Nak应答522指示识别的类或分组中的 一个或多个数据分组丢失,并且识别丢失控制分组的序列号。
[0058] 在块607,控制器408可以响应于从交换机406接收Nak应答或超时时段的届满, 重新发送一个或多个数据分组。例如,如果控制器408接收指定一个或多个序列号的Nak 应答,则控制器408从重放缓冲器438取回具有指定序列号的数据分组,并且重新发送哪些 分组。如果没有确收或在超时时段没有确收所有或一些分组,则控制器从重放缓冲器取回 未确收分组,并且将它们重新发送到交换机406。
[0059] 技术效果包括响应于控制器和交换机之间的传输错误,迅速地执行数据控制分组 恢复的能力,并且因此改进控制器和交换机之间链路层可靠性。此外,在此描述的实施例避 免对于表面比特错误的以太网端到端重试机制的要求,这减少了由于组织结构拥挤的端到 端超时间隔以及错误重试。
[0060] 所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算 机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、 完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方 式,这里可以统称为"电路"、"模块"或"系统"。此外,在一些实施例中,本发明的各个方面 还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介 质中包含计算机可读的程序代码。
[0061] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算 机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限 于一电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算 机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便 携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器 (EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者 上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的 有形和非暂时性存储介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合 使用。
[0062] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号, 其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括--但 不限于--电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是 计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者 传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0063] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括--但不限 于--无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0064] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算 机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++ 等,还包括常规的过程式程序设计语言一诸如"C"语言或类似的程序设计语言。程序代码可 以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、 部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。 在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络--包括局域网(LAN) 或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务 提供商来通过因特网连接)。
[0065] 下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和 /或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中 各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算 机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算 机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图 和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0066] 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、 其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的 指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令 的制造品(article of manufacture)〇
[0067] 计算机程序指令可以加载到计算机、其他可编程数据处理装置、或其他设备上,以 便使得在计算机、其他可编程数据处理装置、或其他设备上执行一系列操作步骤,以便产生 计算机实施的处理,使得在计算机或其他可编程装置上运行的指令提供用于实施在流程图 和/或框图块或多个块中指定的功能/动作。
[0068] 也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备 上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计 算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图 和/或框图中的方框中规定的功能/操作的过程。
[0069] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以 代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个 用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所 标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以 基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的 是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行 规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的 组合来实现。
[0070] 在此使用的术语仅仅是为了描述特定实施例的目的,并且不旨在限制本发明。如 在此使用的,单数形式"一(a)"、"一(an)"和"该(the)"旨在也包括复数形式,除非另外明 确地指定。将进一步理解的是当在本说明书中使用时,术语"包含"和/或"包括"指定声 称的特征、整体、步骤、操作、元件和/或组件的存在,而不排除一个或多个其他特征、整体、 步骤、操作、元件组件和/或其分组的存在和添加。
[0071] 在所附权利要求中的相应结构、材料、动作以及所有手段或步骤加上功能元件的 等价物旨在包括任何结构、材料或动作,用于结合其他要求保护的元件执行功能,如具体要 求保护的。已经为了说明和描述的目的呈现本发明的说明书,但是不旨在穷尽或者以公开 的形式限制本发明。许多修改和改变对于本领域的普通技术人员是显而易见的,而不背离 本发明的精神和范围。选择和描述实施例,以便最好地说明本发明的原理和实际应用,并且 使得本领域的其他技术人员能够对于具有如适于特定的使用构思的各种修改的实施例理 解本发明。
[0072] 在此描述的流程图仅仅是一个示例。可以存在对于在此描述的图和步骤(或操作) 的需要变化而不背离本发明的精神。例如,可以以不同顺序执行各步骤,或者可以添加、删 除或修改各步骤。所有这些变化视为要求保护的发明的一部分。
[0073] 尽管已经描述了优选实施例,但是本领域的技术人员要理解的是,现在和未来可 以进行各种改进和提高,其落入所附权利要求的范围内。这些权利要求应该理解为保持对 于首先描述的本发明的适当保护。
【权利要求】
1. 一种用于在网络交换机和交换机控制器之间的控制数据的传输的方法,包括: 通过所述交换机控制器配置多个控制数据分组,其中配置包括在所述多个控制数据分 组的每个中布置序列号,指示数据分组传输的顺序; 将所述多个控制数据分组存储在与所述交换机控制器通信的重放缓冲器中; 在所述交换机控制器和所述网络交换机之间的安全链路上,将所述多个控制数据分组 传输到所述网络交换机;以及 响应于确定一个或更多控制数据分组未被所述网络交换机接收,从所述重放缓冲器取 回所述一个或更多控制数据分组,并且将所述一个或更多控制数据分组重新传输到所述网 络交换机。
2. 如权利要求1所述的方法,其中所述网络交换机是OpenFlow交换机,并且所述交换 机控制器是OpenFlow交换机控制器。
3. 如权利要求1所述的方法,其中配置所述多个控制数据分组包括将所述多个控制数 据分组分组到传输组中,并且分配组标识符给每个控制数据分组。
4. 如权利要求3所述的方法,其中分组包括给所述传输组分配优先级。
5. 如权利要求1所述的方法,其中确定包括从所述网络交换机接收指示所述一个或更 多控制数据分组未被接收的应答,所述应答包括与所述一个或更多控制数据分组的每个相 关联的至少一个序列号的标识。
6. 如权利要求5所述的方法,其中取回包括基于由所述网络交换机识别的所述至少一 个序列号,选择所述重放缓冲器中存储的数据分组。
7. 如权利要求1所述的方法,其中确定包括识别在选择的超时时段情况下还未被所述 网络交换机确收的控制数据分组,并且取回包括从所述重放缓冲器选择未确收的控制数据 分组。
8. 如权利要求1所述的方法,还包括: 在所述交换机控制器和所述网络交换机之间的安全链路上,由所述网络交换机从所述 交换机控制器接收所述多个控制数据分组中的一个或更多,至少一个控制数据分组包括与 具有数据分组传输的顺序的一组控制数据分组相关联的序列号; 检查一个或更多控制数据分组的每个的序列号,并且确定是否任何组的控制数据分组 丢失;以及 响应于确定任何组的控制数据分组丢失,发送应答到所述交换机控制器,指示与每个 丢失的控制数据分组相关联的至少一个序列号。
9. 如权利要求8所述的方法,还包括接收由所述交换机控制器重新传输的每个丢失的 控制数据分组。
10. -种用于在网络交换机和交换机控制器之间的控制数据的传输的系统,所述系统 包括: 服务器; 包括通过网络中的链路耦合到所述服务器的端口的交换机;以及 通过安全链路耦合到所述交换机的交换机控制器,所述交换机控制器包括配置为执行 一种方法的控制逻辑,所述方法包括: 通过所述交换机控制器配置多个控制数据分组,其中配置包括在所述多个控制数据分 组的每个中布置序列号,指示数据分组传输的顺序; 将所述多个控制数据分组存储在与所述交换机控制器通信的重放缓冲器中; 在所述交换机控制器和所述网络交换机之间的安全链路上,将所述多个控制数据分组 传输到所述网络交换机;以及 响应于确定一个或更多控制数据分组未被所述网络交换机接收,从所述重放缓冲器取 回所述一个或更多控制数据分组,并且将所述一个或更多控制数据分组重新传输到所述网 络交换机。
11. 如权利要求10所述的系统,其中所述网络交换机是OpenFlow交换机,并且所述交 换机控制器是OpenFlow交换机控制器。
12. 如权利要求10所述的系统,其中确定包括从所述网络交换机接收指示所述一个或 更多控制数据分组未被接收的应答,所述应答包括与所述一个或更多控制数据分组的每个 相关联的至少一个序列号的标识。
13. 如权利要求12所述的系统,其中取回包括基于所述至少一个序列号,选择所述重 放缓冲器中存储的数据分组。
14. 一种用于网络中控制数据的传输的装置,包括: 耦合到网络交换机的交换机控制器,所述交换机控制器包括配置为执行一种方法的控 制逻辑,所述方法包括: 通过所述交换机控制器配置多个控制数据分组,其中配置包括在所述多个控制数据分 组的每个中布置序列号,指示数据分组传输的顺序; 将所述多个控制数据分组存储在与所述交换机控制器通信的重放缓冲器中; 在所述交换机控制器和所述网络交换机之间的安全链路上,将所述多个控制数据分组 传输到所述网络交换机;以及 响应于确定一个或更多控制数据分组未被所述网络交换机接收,从所述重放缓冲器取 回所述一个或更多控制数据分组,并且将所述一个或更多控制数据分组重新传输到所述网 络交换机。
15. 如权利要求14所述的装置,其中确定包括从所述网络交换机接收指示所述一个或 更多控制数据分组未被接收的应答,所述应答包括与所述一个或更多控制数据分组的每个 相关联的至少一个序列号的标识。
16. 如权利要求15所述的系统,其中取回包括基于由所述网络交换机识别的所述至少 一个序列号,选择所述重放缓冲器中存储的数据分组。
17. 如权利要求14所述的装置,还包括: 网络交换机,所述网络交换机包括交换逻辑,配置为执行: 在所述交换机控制器和所述网络交换机之间的安全链路上,由所述网络交换机从所述 交换机控制器接收所述多个控制数据分组中的一个或更多,至少一个控制数据分组包括与 具有数据分组传输的顺序的一组控制数据分组相关联的序列号; 检查一个或更多控制数据分组的每个的序列号,并且确定是否任何组的控制数据分组 丢失;以及 响应于确定任何组的控制数据分组丢失,发送应答到所述交换机控制器,指示与每个 丢失的控制数据分组相关联的至少一个序列号。
【文档编号】H04L1/00GK104052574SQ201410096177
【公开日】2014年9月17日 申请日期:2014年3月14日 优先权日:2013年3月15日
【发明者】C.M.德库萨迪斯, R.B.克里施纳莫西 申请人:国际商业机器公司