首页> 中国专利> 网络环境中的双向流粘性

网络环境中的双向流粘性

摘要

本公开提供了用于网络环境中的双向流粘性的示例方法,包括:接收来自网络中的源地址并去往网络外部的目的地地址的流的分组;查找流表以寻找对应于流的条目;以及如果查找未命中,则将前向流条目和反向流条目缓存在流表中,前向流条目指示路由查找,并且反向流条目指示从其接收分组的前一跳,以维护双向流粘性。一些实施例还包括从网络外部的目的地地址接收去往网络中的源地址的另一分组,以及将另一分组转发到在反向流条目中列出的前一跳。

著录项

  • 公开/公告号CN106664251A

    专利类型发明专利

  • 公开/公告日2017-05-10

    原文格式PDF

  • 申请/专利权人 思科技术公司;

    申请/专利号CN201580037322.6

  • 申请日2015-06-20

  • 分类号H04L12/721(20130101);H04L12/715(20130101);

  • 代理机构11258 北京东方亿思知识产权代理有限责任公司;

  • 代理人林强

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 02:05:15

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-06-07

    未缴年费专利权终止 IPC(主分类):H04L12/721 专利号:ZL2015800373226 申请日:20150620 授权公告日:20200807

    专利权的终止

  • 2020-08-07

    授权

    授权

  • 2017-06-06

    实质审查的生效 IPC(主分类):H04L12/721 申请日:20150620

    实质审查的生效

  • 2017-05-10

    公开

    公开

说明书

技术领域

本公开总体涉及通信领域,并且更具体地,涉及网络环境中的双向流粘性。

背景技术

数据中心越来越多地被企业用于有效的协作和互动以及存储数据和资源。典型的数据中心网络包含无数的网络元件,包括主机、负载均衡器、路由器、交换机等。连接网络元件的网络提供到数据中心服务的安全的用户访问,以及用于按照需要部署、互连和聚集共享资源的基础设施,包括应用、主机、设备和存储设备。提高运营效率和优化数据中心的资源利用率是数据中心管理者所面临的挑战中的一些挑战。数据中心管理者需要有弹性的基础设施,该基础设施持续支持不同的应用和服务并且保护应用和服务免受中断。适当计划和运营的数据中心网络提供应用和数据完整性并且优化应用可用性和性能。

附图说明

为了提供对本公开及其特征和优点的更完整的理解,参考结合附图的以下描述,其中相似的附图标记表示相似的部分,其中:

图1是示出用于网络环境中的双向流粘性的通信系统的简化框图;

图2是示出通信系统的实施例的示例细节的简化框图;

图3是示出通信系统的实施例的其他示例细节的简化框图;

图4是示出可以与通信系统的实施例相关联的示例操作的简化流程图;

图5是示出通信系统的实施例的其他示例细节的简化框图;

图6是示出通信系统的实施例的其他示例细节的简化框图;以及

图7是示出可以与通信系统的实施例相关联的其他示例操作的简化流程图。

具体实施方式

概述

本公开提供了用于网络环境中的双向流粘性(stickness)的示例方法,包括:接收来自网络中的源地址并去往网络外部的目的地地址的流的分组,查找流表以寻找对应于流的条目,以及如果查找未命中,则将前向流条目和反向流条目缓存在流表中,前向流条目指示要对该分组执行的下一动作,并且反向流条目指示前一跳,该分组是从该前一跳接收的,从而维护双向流粘性。一些实施例还包括从网络外部的目的地地址接收去往网络中的源地址的另一分组,以及将另一分组转发到在反向流条目中列出的前一跳。

如本文所使用的,术语“流”可以包括分组的流。属于特定流的基本上所有分组可以具有一组公共属性。每个属性可以是将功能应用于一个或多个分组报头字段(例如,目的地IP地址)、传输报头字段(例如,目的地端口号)或应用报头字段(例如,实时协议(RTP)报头字段;分组的一个或多个特性(例如,多协议标签交换(MPLS)标签的数量);或从分组处理得到的一个或多个字段(例如,下一跳IP地址、输出接口))。在许多实施例中,每个流可以由唯一的5元组来标识,该5元组包括例如,协议、源互联网协议(IP)地址、源端口、目的地IP地址以及目的地端口。如果分组基本上满足特定流的所有属性,则该分组可以被表征为属于该流。例如,具有相同5元组的分组可以属于相同的流。

示例实施例

转到图1,图1是根据一个示例实施例,示出用于网络环境中的双向流粘性的通信系统10的简化框图。图1示出了网络12,网络12包括服务网络12内的流的多个服务节点(例如,14(1)-14(3))。例如,来自/去往源节点16的流在穿过网络12时可以穿过服务节点14(1)-14(3);每个服务节点14(1)-14(3)可以对该流执行一个或多个服务。注意,虽然图中仅示出三个服务节点和一个源节点,但任何数目的服务节点和源节点都可以在网络12内被实例化。

仅作为示例而非限制,假设从源节点16发送的分组去往网络12外部的节点,并且顺序通过服务节点14(1)-14(3),从而在服务节点14(3)处被服务之后退出网络12。根据虚拟拓扑,服务链可以被示为顺序链中连续的节点;根据物理拓扑,每个服务节点14(1)-14(3)可以包括在单独的(或相同的)服务器(例如,分别在服务器18(1)-18(3))中实例化的虚拟机。源节点16还可以被实例化为另一(或相同的)服务器18(4)中的虚拟机。注意,在实施例的宽泛范围内,网络12可以包括任何数量的服务器。流入和流出网络12的所有分组可以由网关20相应地路由。

根据各种实施例,每个服务器18(1)-18(4)可包括(或连接到)转发器22。例如,转发器22可被实现在连接到每个服务器机架的单独的结构互联上。虽然转发器22在其逻辑表现形式中可包括单个实体,但在其物理表现形式中,其可包括分布在网络12中的多个服务器(例如,18(1)-18(4))上的多个实例。转发器22可包括流表24和转发表26以用于转发穿过网络12的分组。在具体实施例中,由服务链中最后一个服务节点(例如,14(3))服务的分组可在转发到下一节点之前由转发器22进行处理。通信系统10的各种实施例可在负载均衡到弹性伸缩的虚拟服务功能集(例如,服务节点14(1)-14(3))时保证双向流粘性,而不管网络地址转换(NAT)。

一般地,术语“服务节点”包括在物理或虚拟网络元件上执行的服务功能的实例(例如,NAT、防火墙、深度分组检测(DPI)、合法拦截(LI)等)。在一些实施例中,每个服务节点14(1)-14(3)可以表示相同服务功能的单独实例;在其他实施例中,每个服务节点14(1)-14(3)可以表示不同服务功能的单独的实例;在另外其他实施例中,一些服务节点(例如,14(1)和14(2))可以表示相同服务功能的两个实例,并且其他服务节点(例如,14(3))可以表示不同服务功能的实例。

如本文所使用的,术语“网络元件”意图包括计算机、网络设备、服务器、路由器、交换机、网关、网桥、负载均衡器、入侵检测设备、处理器、模块或可操作为在网络环境中交换信息的任何其他适当的设备、组件、元件或对象。此外,网络元件可包括协助其操作的任何适当的硬件、软件、组件、模块、接口或对象。这可包括允许数据或信息进行有效交换的适当的算法和通信协议。术语“服务链”指的是以特定顺序相链接(例如,连接、附接、耦合等)以向穿过网络的分组提供复合服务的一个或多个服务功能。

为了阐述通信系统10的技术,理解可以穿过图1中所示的系统的通信是很重要的。以下基础信息可被视为本公开可被合理解释的基础。这样的信息被真诚地提供以仅作为示例,从而不应以任何方式被解释为限制本公开及其可能的应用的宽泛的范围。

网络服务被广泛地部署在许多网络中并且是必不可少的。每个网络服务可以包括多个单独的服务功能,例如,安全、广域网(WAN)加速、以及服务器负载均衡。形成整个复合服务的一部分的服务功能可以物理地位于网络基础设施中的不同点处,例如广域网、数据中心、企业、校园等。对于某些网络服务,流量通过提供服务功能的服务节点序列进行转发。沿着服务节点序列转发流量通常基于服务特性。例如,某些流量可被指向域边界网关以用于监测和收费;某些其他流量可通过负载均衡器引导以在转发到数据中心服务之前分散性能压力;移动网络运营商可拆分移动宽带流量,并沿着不同的卸载路径引导它们;对于入侵检测系统(IDS)/入侵防护系统(IPS),防火墙可用于过滤流量;安全网关可用于加密/解密流量;穿越不同网络技术段(例如IPv4/IPv6)的某些流量可被指向载波级网络地址转换器(CGNAT);等等。

在各种网络(例如,服务提供商网络、企业网络、以及校园网络)中的一种新兴的方法是将网络服务虚拟化并将它们托管在数据中心中。网络基础设施即服务(NIAAS)在不同的服务节点和网络边缘之间建立适当的网络连接(数据中心互连(DCI))。与基于物理设备的方法不同,虚拟化的网络服务提供了基于流量的动态容量需求来伸展或收缩网络服务的机会。然而,弹性伸缩的网络服务(和服务功能)可能会造成网络基础设施不得不将两个方向上的流固定到给定服务节点的问题。

如果服务节点执行NAT,则会产生额外的复杂度。NAT是在网络服务(例如服务器负载均衡器(SLB)、防火墙等)中常用的服务功能。NAT用于保存IP地址、维护流量亲和性、以及执行安全性等。NAT可以用于将一个地址空间中的每个地址映射到另一空间中对应的地址;NAT还可以结合网络伪装(或IP伪装)使用以隐藏整个IP地址空间,该整个IP地址空间通常包括在另一(通常是公共的)地址空间中的单个Ip地址之后的(隐藏)网络IP地址。NAT服务功能通常使用状态转换表来执行以将隐藏地址映射到单个IP地址,并将传出IP分组重寻址到出口,从而使得它们仿佛起源于网络边缘处的路由设备。在反向通信路径中,通过使用存储在转换表中的规则(例如,状态),响应被映射回起源IP地址。

NAT给服务链架构带来了许多挑战。例如,网络基础设施在NAT变换后不能使服务链与流相关,因为NAT改变了流元组,包括服务特性。此外,地址转换服务节点可以转换源互联网协议(IP)地址(源NAT)、目的地IP地址(目的地NAT)和/或流的其它特性;只有NAT服务节点可以知道流在前向和反向方向上的精确映射。此外,NAT需要流总是被引导通过服务节点,因为NAT服务功能基于特定于服务节点的转换。从NAT服务节点获得转换(例如,映射)可能不实际,如果服务节点本身不在网络基础设施的控制之下并且未暴露任何标准接口以查询流表中的任何状态。此外,大多数网络不提供这样的信息来供使用外部应用程序接口(API)进行实时查询。

通信系统10被配置为解决这些问题(以及其他问题),以提供用于网络环境中的双向流粘性的系统和方法。根据各种实施例,转发器22可以接收来自对应于网络12中的源节点16的源地址,并去往网络12外部的目的地地址的流1的分组。转发器22可以查找流表24以查找对应于流1的条目,并且如果查找未命中(miss),则转发器22可以在流表24中缓存前向流条目和反向流条目。前向流条目可以指示路由查找,而反向流条目可以指示从其接收分组的前一跳以维持双向流动粘性。一些实施例还包括转发器22接收来自网络12外部的目的地地址并且去往对应于源节点16的源地址的另一分组(例如,流1的反向流量)。转发器22可以将分组转发到反向流条目中列出的前一跳。

在一些实施例中,前向流条目可以包括查找转发表26的动作,转发表26包括路由查找的结果。因此,转发器22可以查找转发表26。在各种实施例中,转发表26可以包括将分组转发到网关20的动作(例如,针对离开网络12的分组)。流表24中的每个条目可以包括至少源地址字段、目的地地址字段和下一动作字段。因此,流1的前向流条目可以包括源地址字段中的(源节点16的)源地址、目的地地址字段中的目的地地址、以及下一动作字段中的查找转发表26的指令。另一方面,反向流条目包括源地址字段中的目的地地址、目的地地址字段中的(源节点16的)源地址以及下一动作字段中的转发到前一跳的指令。

在一些实施例中,前一跳可以是对分组执行网络地址转换(NAT),从而将源地址转换为转换后的源地址的最后一个服务节点(例如,14(3))。在这种情况下,前向流条目和反向流条目可以基于转换后的源地址来标识流的分组。注意,任何数量的流可以穿过网络12,流与流表24中相应的前向流条目和反向流条目相关联。

在一些实施例中,从源节点16通过服务节点14(1)-14(3)到网关20的网络连接可以由在服务器18(1)-18(4)中实例化的转发器22提供。注意,实例是软件对象的特定实现方式。在一些实施例中,当转发器22在多个服务器18(1)-18(4)中被实例化时,可以在每个服务器18(1)-18(4)中实现(和执行)转发器22的多个基本上相同的实例。在其他实施例中,当转发器22在多个服务器18(1)-18(4)中被实例化时,每个实例可以是分开的并且与其他实例不同。因此,转发器22的每个实例可以包括单独的流表24,其内容可以不同于其他实例中的流表的内容。服务器18(1)-18(4)中的每个虚拟机可以作为第一跳网络交换机/路由器被附接到转发器22。在从源节点16接收到分组时,转发器22中的转发表规则可以指示如何处理分组(例如,向着分组的目的地转发到服务链中的第一服务节点(例如,14(1)))。

根据一些实施例,在第一服务节点14(1)处理分组之后,它将分组发送到转发器22,转发器22然后使用转发表规则来确定服务链中的下一服务节点(例如,14(2)),以此类推。在一些实施例中,转发器22的一个实例可以将分组封装在隧道报头中,并且向服务于服务链中的下一服务节点的转发器22的另一实例发送分组。注意,当在每个服务跳中存在多于一个服务节点(例如,在服务器18(1)-18(4)中实例化的多于一个服务节点)时,向给定服务节点发送流量的转发器22的实例可以多于一个并且基本上分布在整个网络12上。

考虑服务链中的每个服务可以弹性伸缩,则在流已经通过n元组分类被标识之后,可以沿着路径创建转发器22的每个实例中的粘性条目(例如,基于诸如源IP地址、目的地IP地址、源端口、目的地端口、协议等之类的字段),使得流的后续分组由相同的服务节点服务。转发器22可以维护流表24以创建流条目。

在各种实施例中,转发器22可以首先为每个分组查找流表以确定是否存在匹配的流表条目。如果存在匹配的流表条目,则转发器22可以遵从缓存在匹配的流表条目中的下一服务节点条目。如果没有匹配的流表条目,则转发器22可以恢复到其常规查找(例如,L2或L3查找)逻辑以确定适当的下一服务跳。只要流是活的,就可以维护转发器22中的流表条目。可以基于该流的数据平面活动来启发式地确定流的状态(例如,其是活的还是死的)。例如,在没有检测到数据平面活动的时限到期时,可以从流表中移除流表条目。时限可以基于每个流表条目来预配置。

然而,当反向流必须经过相同的服务节点时(例如,因为服务相对于连接是全状态的,或者存在以相反方向检查流的需要以适当地处理连接(例如,NAT,防火墙)等)),仅在一个方向上确保流粘性是不够的。如果反向流的分组在不保持流状态的另一服务节点上结束,则分组可以被丢弃并且双向连接将不会建立。

在一些实施例中,可以创建在转发器22上的前向和反向方向上的散列(hash)算法,从而向经伸缩的服务节点集发送流量,使得尽管分组的字段被反转,但相同的散列值被计算。如果采用这样的交换散列,则只要分布式转发器22上的服务节点的列表由用于负载均衡的控制平面进行相同地编程,前向和反向流便将在同一服务设备中结束。然而,如果服务节点执行地址转换(S-NAT、D-NAT、6到4转换等),则散列算法可能不工作。在这种情况下,只有服务节点知道在任一方向上的流的精确映射。

根据一些实施例,转发器22可以在流条目创建时在其缓存的流表条目中维护下一服务跳和上一服务跳。上一服务跳可以被创建为转发器22在交换{源ip,目的地ip}和{源端口,目的地端口}字段之后创建的流表条目的下一跳条目。因为已经在前向方向上的前几个分组期间创建了反向流条目,但是交换了关键字段,所以反向流可以匹配该流表条目,并且可以被转发到处理了前向流条目的同一服务节点。

无论由服务节点(例如NAT)所进行的分组处理的类型是什么,这种方法都可以工作。例如,转发器22可以基本上总是在两个方向上被呈现相同的关键字段,因为转发器22处于由NAT服务节点进行的分组处理之前或之后。此外,不需要具有分布式控制平面或由控制平面进行的分组检查来建立双向流粘性。

转到通信系统10的基础架构,网络拓扑可以包括互连的任意数量的服务器、硬件加速器、虚拟机、交换机(包括分布式虚拟交换机)、服务节点、路由器和其他节点,以形成大型复杂网络。节点可以是任何电子设备、客户端、服务器、对等体、服务、应用或能够通过网络中的通信信道发送、接收或转发信息的其他对象。图1的元件可以通过采用任何适当的连接(有线或无线)的一个或多个接口彼此耦合,这为电子通信提供了可行的路径。此外,基于特定配置需要,这些元件中的任何一个或多个可以被组合或从架构中移除。

通信系统10可以包括能够进行TCP/IP通信以在网络中电子发送或接收数据分组的配置。通信系统10还可以在适当的情况下并且基于特定需要而结合用户数据报协议/互联网协议(UDP/IP)或任何其它适当的协议来操作。此外,网关、路由器、交换机和任何其他适当的节点(物理的或虚拟的)可以用于协助网络中各个节点之间的电子通信。

注意,分配给图1的元件的数字和字母标记不意味着任何类型的层级;这些命名是任意的并且仅用于教导。这样的命名不应以任何方式被解释为限制其可能受益于通信系统10的特征的潜在环境中的能力、功能或应用。应当理解,图1中所示的通信系统10被简化以易于说明。

示例网络环境可以通过物理基础设施来配置,该物理基础设施可以包括一个或多个网络,并且还可以任何形式配置,包括但不限于局域网(LAN)、无线局域网(WLAN)、VLAN,城域网(MAN)、VPN、内联网、外联网、任何其他适当的架构或系统或协助网络中通信的其任何组合。

在一些实施例中,通信链路可以表示支持LAN环境的任何电子链路,例如,电缆、以太网、无线技术(例如,IEEE 802.11x)、ATM、光纤等或其任何适当组合。在其他实施例中,通信链路可以表示通过任何适当介质(例如,数字用户线(DSL)、电话线、T1线、T3线、无线、卫星、光纤、电缆、以太网等或其任何适当组合)和/或通过诸如广域网(例如,互联网)之类的任何附加网络的远程连接。

在各种实施例中,服务节点14(1)-14(3)可以包括适当地插入网络12的物理服务设备(例如,独立的盒)。在其他实施例中,服务节点14(1)-14(3)可以包括在另一网络元件内部附接的服务卡,例如网络12中的路由器或交换机。在其他实施例中,服务节点14(1)-14(3)可以包括在网络12中的适当的网络元件(例如,服务器、交换机、路由器等)上执行的虚拟应用。在一些实施例中,服务节点14(1)-14(3)可以包括上述各项的组合。

在各种实施例中,转发器22可以包括在适当的网络元件(例如,结构互连、交换机、服务器18(1)-18(4)等)上执行以实施本文描述的操作的一个或多个应用。在一些实施例中,转发器22可以包括在多个网络元件中执行的分布式应用。注意,在实施例的宽泛范围内,可以在网络12中实例化转发器22的任何适当数量的实例。

源节点16可以表示任何适当的网络端点。在各种实施例中,源节点16可以包括在适当的计算设备(例如,服务器)中执行的单独的应用(例如,客户端-服务器网络架构中的服务器/客户端应用)。在其他实施例中,源节点16可以包括在相同或不同的计算设备(例如,数据中心中的服务器刀片)上的单独的虚拟机。在一些实施例中,源节点16可以包括配置在一个或多个机箱中的服务器刀片。在其他实施例中,源节点16可以表示移动设备,例如蜂窝电话、膝上型计算机、平板或智能电话。在各种实施例中,网关20可以表示网络边缘设备,例如边缘路由器,基本上所有进入和离开网络12的分组都要穿过该网络边缘设备。注意,在实施例的宽泛范围内,可以在网络12中激活任何数量的服务器、服务节点、源节点、网关等。

注意,服务器18(1)-18(3)可以包括配置有或连接到其他适当的网络元件(例如,交换机、结构互连等)以实现网络12中的连接性的多个物理服务器(例如,机架或刀片服务器)。例如,虽然在图中未明确指示,但每个服务器18(1)-18(3)可以包括配置有适当的转发器实例以实现与其他服务器、网关20和各服务器中执行的应用(包括服务节点)通信的单独的结构互连。

转到图2,图2是示出通信系统10的实施例的示例细节的简化框图。假设源节点16在网络12中具有IP地址127.2.3.4,并且发送流1的第一分组28A,分组28A被发往具有IP地址10.0.0.1并且在网络12外部的目的地节点30。分组28A可以经过包括服务节点14(1)-14(N)的服务链,其中N是大于或等于1的任何整数。仅作为示例而非限制,假设最后一个服务节点14(N)执行NAT,将源地址127.2.3.4转换为1.2.3.4。分组28A可以被重新生成为28B,其指示源IP地址1.2.3.4和目的地地址(未改变)10.0.0.1。

分组28B可以在转发器22处被接收,转发器22除了流表24和转发表26之外,还可以包括查找模块32、缓存模块34、存储器元件36和处理器38。流表24可以包括源地址字段40、目的地地址字段42和动作字段44。当在转发器22处接收到分组28B时,查找模块32可以执行对流表24的查找。由于分组28B是转发器22看到的流1的第一个分组,因此对流表24的查找可能未命中。缓存模块34可以缓存与流表24中的流1对应的两个条目:第一(前向流)条目和第二(反向流)条目,其中,第一(前向流)条目包括源地址字段40中的转换后的源IP地址1.2.3.4、目的地地址字段42中的目的地IP地址10.0.0.1以及动作字段44中的查找转发表26的下一动作,其中,第二(反向流)条目包括源地址字段40中的目的地IP地址10.0.0.1、目的地地址字段42中的源IP地址1.2.3.4以及动作字段44中的转发到前一跳(即服务节点14(N))的下一动作。注意,在反向流条目中交换(例如,反转)了前向流条目的源地址字段值和目的地地址字段值。转发表26可以包括单个条目以将基本上所有传出分组转发到网关20。因此,分组28B可以被发送出到网关20,网关20可以将其路由到10.0.0.1处的目的地节点30。

假设目的地节点30发送流1的返回分组46。返回分组46可以指示源地址10.0.0.1和目的地地址1.2.3.4。网关20可以将返回分组46转发给转发器22。查找模块32可以查找流表24,并且在返回分组46的源地址和目的地地址分别与源地址字段40和目的地地址字段42中的值匹配的情况下在反向流条目(条目2)中找到命中。根据动作字段44中的下一动作值,转发器22可以将返回分组46转发到服务节点14(N)。服务节点14(N)可以将目的地地址从1.2.3.4转换到127.2.3.4,并且在适当时将返回分组46转发到服务链的前一跳,返回分组46在基本上穿过服务链的所有服务节点14(1)-14(N)之后最终到达源节点16。

转到图3,图3是示出通信系统10的实施例的示例细节的简化框图。仅作为示例而非限制,假设网络12中的源节点16(1)-16(3)分别在相应的流A、B和C中与目的地节点30(1)-30(3)通信。流A中的分组可以在通过网关20退出网络12之前,穿过服务节点14(1)、14(2)和14(3),反之亦然(例如,来自目的地节点30(1)的返回分组可以相反的顺序穿过相同的服务节点);流B中的分组可以在通过网关20退出网络12之前,穿过服务节点14(4)、14(2)和14(5),反之亦然;流C中的分组可以在通过网关20退出网络12之前穿过服务节点14(6)和14(7),反之亦然。从源节点16(1)-16(3)到各目的地节点30(1)-30(3)的分组可以被从最后一个服务节点(例如,14(3)、14(5)和14(7))发送到转发器22。

在转发器22(1)中维护的流表24(1)可以包括对应于每个流A、B和C的前向流条目和反向流条目。例如,流A的前向流条目可以指示源地址值SOURCE 1、目的地地址值DESTINATION 1和查找转发表26的下一动作;流A的反向流条目可以指示源地址值DESTINATION 1、目的地地址值SRC 1和转发到服务节点14(3)的下一动作。类似地,流B的前向流条目可以指示源地址值SOURCE 2、目的地地址值DESTINATION 2和查找转发表26的下一动作;流B的反向流条目可以指示源地址值DESTINATION 2、目的地地址值SOURCE 2和转发到服务节点14(5)的下一动作。类似地,流C的前向流条目可以指示源地址值SOURCE 3、目的地地址值DESTINATION 3和查找转发表26的下一动作;流C的反向流条目可以指示源地址值DESTINATION 3、目的地地址值SOURCE 3和转发到服务节点14(7)的下一动作。因此,流A的返回分组可以由转发器22(1)一致地转发到服务节点14(3),从而保持双向流粘性。流B的返回分组可以由转发器22(1)一致地转发到服务节点14(5);并且流C的返回分组可以由转发器22一致地转发到服务节点14(7)。

注意,在一些实施例中,转发器还可以在服务节点之间被实例化(例如,服务节点14(2)和14(3)之间的转发器22(2))。在示例实施例中,转发器22(2)可以被实例化并且与执行服务节点22(2)的服务器相关联。在一些实施例中,流表24(2)中的前向流条目可以指示查找转发表的本地副本的动作;流表24(2)中的反向流条目可以指示转发到服务节点14(2)。在其他实施例中,流表24(2)中的前向流条目可以指定(例如,代替查找转发表26以做出路由决策)在从网络12内的源节点到网络12外部的目的地节点的方向上的下一服务节点(例如,14(3));反向流条目可以指定在转发器22(2)处从其接收分组的前一服务节点(例如,14(2))。因此,转发器22的每个实例可以协助在网络12内跨越从源到目的地(反之亦然)的整个服务链保持流粘性。

转到图4,图4是示出可以与通信系统10的实施例相关联的示例操作100的简化框图。在许多实施例中,操作100可以在转发器22处执行。在102,可以在转发器22处接收分组。在104,查找模块32可以查找流表24。在106,可以确定是否找到相应的条目(例如,通过在流表24中搜索源地址和目的地地址)。如果没有找到条目(例如,未命中),则在108处,可以查找转发表26以做出路由决策。在110,缓存模块34可以在流表24中缓存前向流条目和反向流条目。

回到106,如果在流表24中找到条目(例如,指示如下情形的命中:先前已经看到流的其他分组或者该分组是先前看到的前向流的反向流分组),则在112,可以执行在流表24中指定的动作。例如,在114,可以查找转发表26(例如,命中指示先前已经看到流的其他分组);或者在116处,分组可以被转发到反向流条目中列出的前一跳(例如,命中指示该分组是先前看到的前向流的反向流分组)。

转到图5,图5是示出根据通信系统10的实施例的与转发器22相关联的示例细节的简化框图。注意,在网络12中,同一服务功能的多个实例可以在单独的服务器中实例化,例如,用于弹性伸缩的目的。服务功能N可以分别在服务器1和服务器2上的两个单独的实例14(NA)和14(NB)中实例化。每个服务节点14(NA)和14(NB)可以分别连接到相应服务器18(1)和18(2)上的转发器22的单独且不同的实例22A和22B。然而,转发器22的这样的实例中仅有一个可以转发分组,并且可以被称为“指定转发器”。转发器22的不是针对服务功能的指定转发器的所有其他实例可以被称为“非指定转发器”。根据各种实施例,转发器22可以包括连接到同一服务功能的单独且不同的实例的所有指定转发器实例和非指定转发器实例的全部。此外,每个转发器22可以包括用于不同服务功能的指定转发器实例和非指定转发器实例的组合。例如,用于服务节点14(NB)的指定转发器实例22B可以作为同一服务器中的另一连接的服务节点的非指定转发器实例。

每个指定转发器实例和非指定转发器实例可以维护流表24的单独且不同的本地副本。例如,指定转发器实例22B可以维护流表24B;非指定转发器实例22A可以维护流表24A。注意,这里使用的流表24可以指代由指定转发器实例和(一个或多个)非指定转发器实例维护的流表的基本上所有本地副本的聚合,除非作为单独的副本被调出,例如24A和24B。

在这种多转发器环境中,流的基本上所有流量都通过指定转发器实例,而托管一些流量的目的地/源的其他非指定转发器实例例如可以仅对其目的地/源是粘性的。给定服务器上的转发器实例可以具有流表的不同视图,这取决于它是指定转发器实例还是非指定转发器实例。

仅作为示例,假设在三个独立的服务器中针对相同的服务功能实例化了四个服务实例,其中两个服务功能实例在两个独立的服务器上并且另两个服务功能实例在同一服务器上。每个服务器可以包括相应的转发器实例,其中一个实例包括指定转发器实例,并且其他实例包括非指定转发器实例。去往服务功能的基本上所有分组可以到达执行指定转发器实例的服务器。指定转发器实例将所有流缓存到所有服务功能实例,并基于反向流将返回流量引导到正确的服务器或本地转发器实例。当分组到达其他服务器上的任何非指定转发器实例时,非指定转发器实例可以基于其缓存的粘性负载均衡流表来将流量引导到它们的本地服务节点(如果适用的话),否则将分组转发到指定转发器实例。

回到图中所示的示例,仅作为示例,假定源节点16将分组A 120发送到网络12外部的目的地。分组A 120在到达服务节点14(NA)和网关20之间的转发器22之前,穿过一系列服务节点14(1)-14(NA)。为了便于说明,在图中仅示出了一个转发器22。在实施例的宽泛范围内可以包括任何数量的转发器(例如,在服务链中的每个节点之间具有一个转发器)。仅作为示例,假设连接到服务节点14(NA)的转发器实例22A是用于服务功能N的非指定转发器实例之一。

在操作期间,当非指定转发器实例22B接收到分组A 120时,执行对本地流表副本24A的查找。如果未找到条目(如针对流的第一分组的情况),则本地流表副本24A可以缓存有前向流条目和反向流条目。前向流条目可以指示分组被转发到指定转发器实例22B;反向流条目可以指示分组被转发到服务节点14(NA)。分组A>

在返回流中,返回分组AR 122可以由网关20发送到指定转发器实例22B。指定转发器实例22B可以执行对本地流表副本24B的查找。其中的反向流条目可以提供匹配,从而指示分组AR 122被转发到非指定转发器实例22A。因此,指定转发器实例22B可以将分组AR122转发到非指定转发器实例22A。非指定的转发器实例22A可以执行对本地流表副本24A的查找。其中的反向流条目可以提供匹配,从而指示分组AR 122被转发到服务节点14(NA)。

转到图6,图6是示出根据通信系统10的实施例的与转发器22相关联的示例细节的简化框图。转发器22可以包括用于不同服务功能的指定转发器和非指定转发器的组合。例如,服务器18中的转发器22可以包括用于服务节点14(1)的非指定转发器和用于另一服务节点14(2)的指定转发器。将服务器18中的转发器22配置为用于服务节点14(2)的指定转发器和用于服务节点14(1)的非指定转发器的选择可以基于各种因素,例如负载均衡、流统计、服务器能力和其他参数。

转到图7,图7是示出根据通信系统10的各种实施例的可与转发器22相关联的示例操作130的简化流程图。在132,可以在连接到服务节点14的转发器22处从服务节点14接收分组。在134,可以查找本地流表副本。在136,可以确定在本地流表副本中是否找到匹配条目。如果未找到匹配条目,则在138,可以确定转发器实例是否是指定转发器实例。如果不是,则在140,分组可以被转发到指定转发器实例。在142,前向流和反向流条目可以被缓存在本地流表副本中。前向流条目可以指示分组被转发到指定转发器实例;反向流条目可以指示分组被转发到服务节点14。

另一方面,如果转发器实例是指定转发器实例,则在144,可以查找转发表以确定下一跳。在146,前向流和反向流条目可以被缓存在本地流表副本中。前向流条目可以指示分组被转发到下一跳;反向流条目可以指示分组被转发到非指定转发器实例(如果适用的话,例如,分组被从非指定转发器实例接收)或服务节点14(例如,分组被从服务节点14接收)。回到136,如果在本地流表副本中找到匹配条目,则在148,可执行流表中指定的适当的动作(例如,转发到指定转发器实例;查找转发表;转发到非指定转发器实例;转发到服务节点等等)。

注意,在本说明书中,对包括在“一个实施例”、“示例实施例”、“实施例”、“另一实施例”、“一些实施例”、“各种实施例”、“其它实施例”、“替代实施例”等中的各种特征(例如,元件、结构、模块、组件、步骤、操作、特性等)的提及旨在表示任何这样的特征被包括在本公开的一个或多个实施例中,但是可以或可以不必在相同的实施例中组合。

还应注意,本说明书中使用的“应用”可以包括可执行文件(可执行文件包括可以在计算机上被理解和处理的指令),并且还可以包括在执行期间加载的库模块、目标文件、系统文件、硬件逻辑、软件逻辑或任何其它可执行模块。此外,词语“优化”和相关术语是指指定结果的速度和/或效率的改进的技术术语,并且不意图指示用于实现指定结果的过程已经实现,或能够实现“最佳”或完美速度/完美效率的状态。

在示例实现中,本文概述的活动的至少一些部分可以在例如转发器22中的软件中实现。在一些实施例中,这些特征中的一个或多个可以在这些元件外部提供的或以任何适当方式合并的硬件中实现,以实现预期的功能。各种网络元件(例如,转发器22)可以包括可以协调以实现如本文所述的操作的软件(或往复式软件)。在其他实施例中,这些元件可以包括协助其操作的任何适当的算法、硬件、软件、组件、模块、接口或对象。

此外,本文描述和示出的转发器22(和/或其相关联的结构)还可以包括用于在网络环境中接收、发送和/或以其它方式传送数据或信息的适当的接口。此外,与各个节点相关联的处理器和存储器元件中的一些可以被移除或以其他方式合并,使得单个处理器和单个存储器元件负责某些活动。在一般意义上,附图中示出的布置在它们的表示中可以更合乎逻辑,而物理架构可以包括这些元件的各种置换、组合和/或混合。必须注意,可以使用无数可能的设计配置来实现这里概述的操作目标。因此,相关联的基础设施具有无数的替代安排、设计选择、设备可能性、硬件配置、软件实现、设备选项等。

在一些示例实施例中,一个或多个存储器元件(例如,存储器元件36)可以存储用于本文描述的操作的数据。这包括能够在非暂态介质中存储指令(例如,软件、逻辑、代码等),使得执行指令以执行本说明书中所描述的活动的存储器元件。处理器可以执行与数据相关联的任何类型的指令以实现本说明书中这里详细描述的操作。在一个示例中,处理器(例如,处理器38)可以将元素或物品(例如,数据)从一个状态或事物转换到另一状态或事物。在另一示例中,本文概述的活动可以利用固定逻辑或可编程逻辑(例如,由处理器执行的软件/计算机指令)来实现,并且本文中标识的元件可以是某种类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))、包括数字逻辑的ASIC、软件、代码、电子指令、闪存、光盘、CD-ROM、DVD ROM、磁卡或光卡、适合于存储电子指令的其他类型的机器可读介质,或其任何适当的组合。

在适当的情况下且基于特定需求,这些设备还可以将信息保存在任何适当类型的非暂态存储介质(例如,随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程ROM(EEPROM)等等)、软件、硬件、或任何其他适合的组件、设备、元件、或对象中。基于特定需求和实现方式,可以在任何数据库、寄存器、表、缓存、队列、控制列表或存储结构中提供正被跟踪、发送、接收或存储在通信系统10中的信息,在任何适当的时间帧可对其进行引用。本文所讨论的任何存储项应被解释为包含在广义的“存储器元件”中。相似地,本说明书中所描述的任何可能的处理元件、模块、以及机器应该被理解为包含在广义的术语“处理器”中。

同样重要的是应当注意参考之前的附图所描述的操作和步骤仅仅示出了可由系统执行或在系统内的一些可能的场景。这些操作中的一些可以适当地被删除或移除,或者这些步骤可以在不偏离所讨论的概念的范围的情境下,相当程度地被修改或者改变。此外,这些操作的时序可相当程度地被改变而实现本公开中所教导的结果。上述操作流程出于示例与讨论的目而提供。系统提供大量的灵活性,因为在不偏离所讨论的概念的教导的情境下,可以提供任何适合的布置、时序、配置以及定时机制。

尽管已经参考特定布置和配置详细描述了本公开,但是这些示例配置和布置可以在不脱离本公开的范围的情况下显著改变。例如,虽然已经参考包括某些网络接入和协议的特定通信交换描述了本公开,但是通信系统10可以适用于其他交换或路由协议。此外,尽管已经参考协助通信过程的特定元件和操作示出了通信系统10,但是这些元件和操作可以由实现通信系统10的预期功能的任何适当的架构或过程替换。

大量其他改变、代替、变化、变更以及修改可以被本领域技术人员所查明,并且本公开意在包括落在所附权利要求的范围内的所有这些改变、代替、变化、变更以及修改。为了辅助美国专利商标局(USPTO)以及此外辅助针对此申请所公布的任何专利的任何读者理解所附的权力要求,申请者希望注意,申请者:(a)并不意欲使任何所附权利要求援引存在于申请日的35U.S.C章节112的第六段,除非“用于…的手段”或者“用于…的步骤”的词语在特定的权利要求中被具体地采用;以及(b)并不意欲通过在说明书中的任何陈述以其他方式被反映在所附的权利要求中的任何方面来限制本公开。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号