CN106797384B - 以不同的协议将请求路由到集群中的相同端点 - Google Patents
以不同的协议将请求路由到集群中的相同端点 Download PDFInfo
- Publication number
- CN106797384B CN106797384B CN201580054829.2A CN201580054829A CN106797384B CN 106797384 B CN106797384 B CN 106797384B CN 201580054829 A CN201580054829 A CN 201580054829A CN 106797384 B CN106797384 B CN 106797384B
- Authority
- CN
- China
- Prior art keywords
- request
- destination
- identifier
- protocol
- act
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1027—Persistence of sessions during load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/165—Combined use of TCP and UDP protocols; selection criteria therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
实施例涉及以不同的协议将请求路由到相同目的地。在一种场景下,计算机系统接收使用特定协议的请求。该请求包括请求源标识符和请求目的地标识符。计算机系统基于请求源标识符和请求目的地标识符两者来标识发送请求发送的目的地并且对该请求生成指示第一请求被发送到哪个目的地的路由条目。计算机系统接收使用不同协议的另一请求。该请求包括其自身的请求源标识符和请求目的地标识符。计算机系统确定后续请求的请求源标识符和请求目的地标识符与所生成的路由条目的请求源标识符和请求目的地标识符匹配,并且将后续请求路由到在路由条目中指示的目的地。
Description
背景技术
计算系统已变得普遍存在,从小型嵌入式设备到手机和平板电脑到PC和后端服务器。这些计算系统中的每一者被设计为处理软件代码。通过与由计算系统提供的硬件交互,软件允许用户执行功能。在一些情况下,这些计算系统可联网在一起以提供可扩展的计算资源。这样的资源通常被称为云资源,或简称为云。云可提供诸如负载平衡的服务,负载平衡服务将处理负载分布在多个不同的物理计算系统上。在一些情况下,负载平衡器(无论是基于软件还是基于硬件)可将通过不同协议接收的类似请求发送到不同位置。
发明内容
本文描述的实施例涉及以不同的协议将请求路由到相同目的地。在一个实施例中,计算机系统接收使用特定协议的请求。该请求包括请求源标识符和请求目的地标识符。计算机系统基于请求源标识符和请求目的地标识符两者来标识发送请求所至的目的地并且对该请求生成用于指示第一请求被发送到哪个目的地的路由条目。计算机系统接收使用不同协议的另一请求。该请求包括其自身的请求源标识符和请求目的地标识符。计算机系统确定后续请求的请求源标识符和请求目的地标识符与所生成的路由条目的请求源标识符和请求目的地标识符相匹配,并且将后续请求路由到在路由条目中指示的目的地。
在另一实施例中,计算机系统接收使用特定协议的请求。如上所述,该请求包括请求源标识符和请求目的地标识符。然后,计算机系统散列该请求的请求源标识符和请求目的地标识符。所得到的第一散列值标识发送请求所至的目的地。计算机系统存储用于请求的标识第一请求被发送的目的地的第一散列值。计算机系统然后接收使用不同协议的另一请求。该请求包括请求源标识符和请求目的地标识符,请求源标识符和请求目的地标识符被散列以创建不同的散列值。计算机系统确定两个散列值是否匹配,如果匹配,则将后续请求路由到由第一散列值指示的目的地。
所提供的本发明内容以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容不旨在确定所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附加的特征和优点将在下面的描述中阐述,并且通过描述,一部分特征和优点对于本领域的普通技术人员将是显而易见的,或者可通过实践本文的教导而习得。本文描述的实施例的特征和优点可通过在所附权利要求中特别指出的工具和组合来实现和获得。从下面的描述和所附权利要求书,本文描述的实施例的特征将变得更充分显而易见。
附图说明
为了进一步阐明本文所描述的实施例的上述和其他特征,将通过参考附图给出更具体的描述。应当理解,这些附图仅仅描绘了本文所描述的实施例的实例,因此不应被认为是对其范围的限制。将通过使用附图以额外的特性和细节来描述和解释实施例,在附图中:
图1示出了计算机体系架构,在计算机体系架构中可操作本文描述的实施例,包括以不同的协议将请求路由到相同的目的地。
图2示出了用于以不同的协议将请求路由到相同目的地的实例方法的流程图。
图3示出了用于以不同的协议将请求路由到相同目的地的可替换实例方法的流程图。
图4示出了软件负载平衡器的实施例,软件负载平衡器包括用于以不同的协议将请求路由到相同目的地的模块。
图5示出了其中各种客户端使用不同协议发送请求并且那些请求被路由到适当端点的实施例。
具体实施方式
本文描述的实施例涉及以不同的协议将请求路由到相同目的地。在一个实施例中,计算机系统接收使用特定协议的请求。该请求包括请求源标识符和请求目的地标识符。计算机系统基于请求源标识符和请求目的地标识符两者来标识发送请求所至的目的地并且对该请求生成指示第一请求被发送到哪个目的地的路由条目。计算机系统接收使用不同协议的另一请求。该请求包括其自身的请求源标识符和请求目的地标识符。计算机系统确定后续请求的请求源标识符和请求目的地标识符与所生成的路由条目的请求源标识符和请求目的地标识符相匹配,并且将后续请求路由到在路由条目中指示的目的地。
在另一实施例中,计算机系统接收使用特定协议的请求。如上所述,该请求包括请求源标识符和请求目的地标识符。然后,计算机系统散列该请求的请求源标识符和请求目的地标识符。所得到的第一散列值标识发送请求所至的目的地。计算机系统存储用于该请求的标识发送第一请求的目的地的第一散列值。计算机系统然后接收使用不同协议的另一请求。该请求包括请求源标识符和请求目的地标识符,其被散列以创建不同的散列值。计算机系统确定两个散列值是否匹配,如果匹配,则将后续请求路由到由第一散列值指示的目的地。
以下讨论现在参考可执行的多种方法和方法动作。应当注意,尽管方法动作可能以特定顺序讨论或者以流程图示出为以特定顺序发生,然而并非必然需要特定的顺序,除非特别说明或者一个动作依赖于在执行该动作之前完成的另一个动作。
本文描述的实施例可实现各种类型的计算系统。这些计算系统现在越来越多地采取各种各样的形式。计算系统可例如为手持式设备、家用电器、手提电脑、台式计算机、大型机、分布式计算系统、或者甚至通常不被认为是计算系统的设备。在本说明书和权利要求书中,术语“计算系统”被广义地定义为包括这样的任何设备或系统(或者其组合),所述任何设备或系统包括至少一个物理和有形处理器以及其上可具有可由处理器执行的可执行指令的物理和有形存储器。计算系统可分布在整个网络环境上并且可包括多个组成计算系统。
如图1所示,计算系统101通常包括至少一个处理单元102和存储器103。存储器103可为物理系统存储器,其可为易失性、非易失性或两者的某种组合。术语“存储器”在本文中也可用于指代诸如物理存储介质的非易失性大容量存储器。如果计算系统为分布式的,则处理、存储器和/或存储的能力也可为分布式的。
如本文所使用的,术语“可执行模块”或“可执行组件”可指代可在计算系统上执行的软件对象、路由或方法。本文描述的不同组件、模块、引擎和服务可被实现为在计算系统上执行的对象或进程(例如作为单独的线程)。
在下面的描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这样的动作以软件实现,则执行动作的相关计算系统的一个或多个处理器响应于已执行了计算机可执行指令来指导计算系统的操作。例如,这样的计算机可执行指令可在形成计算机程序产品的一个或多个计算机可读介质上实现。这种操作的实例涉及数据的操纵。计算机可执行指令(以及所操纵的数据)可存储在计算系统101的存储器103中。计算系统101还可包含允许计算系统101通过有线或无线网络与其他消息处理器通信的通信信道。
本文所描述的实施例可包括或利用包括计算机硬件(诸如例如一个或多个处理器和系统存储器)的专用或通用计算机系统,如下面更详细讨论的。系统存储器可包括在总存储器103内。系统存储器也可称为“主存储器”,并且包括可由至少一个处理单元102通过存储器总线寻址的存储器位置,在这种情况下,地址位置在存储器总线自身上被断言。系统存储器在传统上为易失性的,然而本文描述的原理也适用于其中系统存储器部分地或甚至完全为非易失性的情况。
在本发明的范围内的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可为可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令和/或数据结构的计算机可读介质为计算机存储介质。携带计算机可执行指令和/或数据结构的计算机可读介质为传输介质。因此,举例并且以非限制性的方式而言,本发明的实施例可包括至少两种截然不同的计算机可读介质:计算机存储介质和传输介质。
计算机存储介质为存储计算机可执行指令和/或数据结构的物理硬件存储介质。物理硬件存储介质包括诸如RAM、ROM、EEPROM、固态硬盘(“SSD”)、闪存、相变存储器(“PCM”)、光盘存储器、磁盘存储器或其他磁存储设备的计算机硬件,或者可用于以计算机可执行指令或数据结构的形式存储程序代码的一种或多种任何其他硬件存储设备,所述计算机可执行指令或数据结构可由通用或专用计算机系统访问和执行以实现本发明公开的功能。
传输介质可包括网络和/或数据链路,网络和/或数据链路可用于承载计算机可执行指令或数据结构形式的程序代码,并且可由通用或专用计算机系统访问。“网络”被定义为实现电子数据在计算机系统和/或模块和/或其他电子设备之间传输的一个或多个数据链路。当通过网络或另一通信连接(硬连线、无线或者硬连线或无线的组合)向计算机系统传送或提供信息时,计算机系统可将该连接视为传输介质。上述的组合也应包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件时,计算机可执行指令或数据结构形式的程序代码可从传输介质自动传输到计算机存储介质(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可缓存在网络接口模块(例如“NIC”)内的RAM中,然后最终传送到计算机系统RAM和/或计算机系统处的较不易失性计算机存储介质。因此,应当理解,计算机存储介质可被包括在也(或甚至主要)利用传输介质的计算机系统组件中。
计算机可执行指令包括例如指令和数据,当在一个或多个处理器上执行时,这些指令和数据使得通用计算机系统、专用计算机系统或专用处理设备执行特定功能或功能组。计算机可执行指令可为例如二进制中间格式指令,诸如汇编语言、或甚至源代码。
本领域技术人员应当理解,本文描述的原理可在网络计算环境中使用多种类型的计算机系统配置来实践,所述计算机系统配置包括个人计算机、台式计算机、手提电脑、消息处理器、手持设备、多处理器系统、基于微处理器或可编程消费电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、平板、寻呼机、路由器、交换机等。本发明还可在分布式系统环境中实施,在分布式系统环境中,通过网络链接(通过硬连线数据链路、无线数据链路,或者通过硬连线数据链路和无线数据链路的组合)的本地和远程计算机系统两者都执行任务。因此,在分布式系统环境中,计算机系统可包括多个组成计算机系统。在分布式系统环境中,程序模块可位于本地和远程存储器存储设备两者中。
本领域技术人员还应当理解,本发明可在云计算环境中实践。云计算环境可为分布式的,然而这不是必需的。当为分布式时,云计算环境可在组织内国际地分布并且/或者具有跨越多个组织所拥有的组件。在本说明书和所附权利要求中,“云计算”被定义为用于实现对可配置计算资源(例如网络、服务器、存储、应用和服务)的共享池的按需网络访问的模型。“云计算”的定义不限于在正确部署时可从这种模型获得的任何其他多种优点。
此外,本文所描述的系统架构可包括多个独立的组件,每个组件对系统作为整体的功能做出贡献。这种模块化允许在处理平台可扩展性的问题时的增加的灵活性,并且为此目的提供多种优点。通过使用功能范围有限的较小规模的部件,可更容易地管理系统复杂性和成长。通过使用这些松散耦合的模块来增强平台容错。可根据业务需要的要求而逐渐布下单个组件。模块化开发还转化为新功能的上市时间缩短。在不影响核心系统的情况下,可添加或减少新功能。
图1示出了其中可采用至少一个实施例的计算机架构100。计算机架构100包括计算机系统101。计算机系统101可为任何类型的本地或分布式计算机系统,包括云计算系统。计算机系统101包括用于执行各种不同功能的模块。例如,通信模块104可配置为与其他计算系统通信。计算模块104可包括可从其他计算系统接收数据和/或向其他计算系统发送数据的任何有线或无线通信装置。通信模块104可配置为与数据库、移动计算设备(诸如移动电话或平板电脑)、嵌入式或其他类型的计算系统交互。
计算机系统101可包括具有标识模块110的其他模块。标识模块110可配置为标识与从用户或从其他计算系统发送的请求相关的各种信息。例如,第一请求106A可从用户105或从另一计算系统发送。第一请求106A可包括信息的不同部分,包括正在用哪个协议发送请求的指示。第一协议107A可为任何类型的协议,包括文件传送协议(FTP)、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)或其他类型的协议。第一请求106A还可包括标识请求源(即,其标识发送第一请求的用户或计算系统)的源标识符(ID)108A。第一请求还可进一步包括标识请求目的地的目的地标识符109A。因此,例如,源标识符可标识用户的移动或其他计算系统,并且目的地可标识集群端点(例如122)或者可标识特定计算系统或者可标识虚拟机。因此,标识模块可分析第一请求106A(以及诸如106B的后续请求)中的信息,并确定如何处理第一请求。
在一些情况下,请求106A可请求数据的上传或下载。例如,云服务提供商可实现处理硬件配置,诸如提供服务的集群121。这些服务中的一些可包括介质上传服务,介质上传服务使得介质内容能够经由广域网(WAN)、经由蜂窝网络或经由某种其他网络被有效地上传到云。某些网络连接不能提供抖动和丢失的保证。因此,介质上传服务经受TCP对丢失和延迟的高带宽响应的行为。在一些情况下,UDP协议可由介质上传服务结合TCP使用。TCP将用于协商服务级别、认证等,而UDP将传送数据包。
因此,介质上传服务(和其他类型的服务)可实现源自相同客户端的到介质上传服务(例如UDP和TCP)的两个并行连接。介质上传服务通常使用相对大量的带宽。为了防止这些大数据上传被标记为潜在的分布式拒绝服务(DDoS)攻击,负载平衡器或其他硬件或软件功能能够被实现为将数据上传标识为合法上传而非将其标记为潜在的网络攻击。在其中使用软件负载平衡器来分析和分布传入请求(例如106A/106B)的情况下,可为能够托管高带宽介质或其他类型服务的每个集群实例化单独的软件负载平衡器。
至少在一些情况下,可通过对五个元组进行散列来达到目的地计算节点、集群端点(例如122)、虚拟机或其他请求目的地,这五个元组为:请求源地址、请求源端口、目的地地址、目的地端口和所使用的协议。然而在这种情况下,当对旨在用于相同端点但使用不同协议的请求进行散列时,散列是不同的,从而将请求引导到不同的集群端点。可替换地实施例可使用两个元组进行散列:源地址和目的地址,或者可使用四个元组进行散列:源地址、源端口、目的地地址和目的地端口(应当注意,在四个元组的情况下,如果客户关闭并重新打开连接或者从相同源IP启动新会话,则源端口将更改并导致网络流量进入不同的集群端点)。在这种情况下,由于源地址、源端口、目的地地址和目的地端口对于上传或下载请求将保持不变,因此无论使用哪种协议,散列都是相同的。因此,即使相同的客户端使用不同的协议来发送数据请求,也将到达目标端点(例如集群端点122)。
继续图1,计算系统101还可包括条目生成模块111。条目生成模块111可创建路由条目并将其存储在本地或数据存储(例如118)中。所生成的路由条目112可包含各种信息段,包括源ID(108A或108B)、目的地ID(109A或109B)和/或请求被发送到哪个目的地的指示。路由条目可由确定模块114访问,确定模块114可确定请求将被发送到哪个集群端点(例如122)。一旦已确定了适当的集群端点,路由模块115可将接收的请求106A路由到该集群端点。当接收到使用不同协议(例如TCP或UDP)的第二请求(例如106B)时,确定模块114可直接查看请求中的目的地ID 109B,或者可访问所生成的路由条目112。确定模块114可确定该请求将被发送到哪个集群端点,并且路由模块115可将该请求路由到所确定的端点。下面将分别参照图2和图3的方法200和300进一步解释这些概念。
鉴于上述系统和架构,参照图2和图3的流程图将更好地理解可根据所公开的主题实现的方法。出于简化说明的目的,方法被示出和描述为一系列方块。然而,应当理解和明白的是,所要求保护的主题不受方块顺序的限制,因为一些方块可以与本文所描绘和描述的顺序不同的顺序发生和/或与其他方块同时发生。此外,可能不需要所有示出的框来实现下文描述的方法。
图2示出了用于接收使用第一协议的第一请求的方法200的流程图,第一请求包括请求源标识符和请求目的地标识符。现在将频繁参考环境100的组件和数据来描述方法200。
方法200包括接收使用第一协议的第一请求的动作,所述第一请求包括请求源标识符和请求目的地标识符(动作210)。例如,计算机系统101的通信模块104可从请求源105接收第一请求106A。请求源可为用户(例如105)或某种类型的计算系统。请求106A可为将数据上传到云数据库或服务的请求、或者从数据库或服务下载数据的请求或者以其他方式访问数据的请求。该请求可由应用发出或者由用户直接发出。例如,请求106A可由用于上传数据的应用发出。在一个实施例中,用户可打开将诸如电影、歌曲、视频、游戏、文档或其他数据的介质上传到云服务的应用。云服务可具有对云处理和存储资源的访问,包括对数据存储118的访问。可在请求端上使用多种不同类型的应用,并且类似地,可在接收端上使用多种不同类型的云服务。因此,本文所描述的实施例不限于上传或下载介质项目。
集群122可包括基本上任何数量的计算系统,包括任何数量的分立硬件处理器或硬件处理核,并且可进一步具有基本上任何数量的短期或长期存储。集群可为可扩展的,并且可配置为通过请求应用来按需要对处理和/或存储资源动态地重新分配。在一些情况下,集群121可配置为运行虚拟机。这些虚拟机可在单个刀锋(blade)或计算系统上运行,或者可扩展多个刀锋,甚至多个刀锋的框架。多个虚拟机也可在单个刀锋或计算系统上运行。因此,当在本文中使用术语“端点”或“集群端点”时,它们可指代物理计算系统或虚拟机。此外,由于服务可在多种不同的物理计算系统上运行,因此端点也可指代设计为接收请求(例如106A)的服务。
方法200还包括基于请求源标识符和请求目的地标识符两者来标识发送第一请求的目的地(动作220)。计算机系统101的标识模块110因此可基于请求源标识符108A和目的地ID 109A来标识第一请求106A的目的地。当标识模块查找源ID和目的地ID两者以确定请求应当被路由到何处时,可将某些请求源(例如用户105)绑定到特定端点,并且系统可确保用户反复和可靠地连接到集群121上的相同端点。标识模块可标识对于使用多种不同协议接收的请求的相同集群端点(无论多少集群节点当前正在运行给定服务)。无论用于请求的协议是什么,将确定适当的目的地端点。
方法200还包括对第一请求生成路由条目的动作,该路由条目指示第一请求被发送到哪个目的地(动作230)。路由条目可包括在第一请求106A中接收的源ID 108A、请求的目的地ID 109A以及请求最终被路由到何处的指示。路由条目可被发送到数据存储118(与也存储在那里的多个其他路由条目119一起)。以这种方式,数据存储器可维护路由条目的运行日志,路由条目指定了每个路由请求被路由到何处、路由请求接收自哪里以及在请求上指示了哪个目的地。
方法200包括接收使用不同的第二协议的第二请求的动作,该第二请求包括请求源标识符和请求目的地标识符(动作240)。例如,计算机系统101的通信模块104可从请求源105接收第二请求106B,请求源可为用户或其他计算机系统。与第一请求106A类似,第二请求106B包括正在使用哪个协议107B的指示、源ID 108B以及目的地ID 109B。确定模块114可确定第二请求的请求源标识符和请求目的地标识符与所生成的路由条目的请求源标识符和请求目的地标识符匹配(动作250),并且将第二请求106B路由到在路由条目中指示的目的地(动作260)。
在一些实施例中,计算机系统101可为负载平衡器。例如,计算机系统101可为接收请求并将它们路由到适当目的地(例如集群端点)的硬件负载平衡器。可替换地,计算机系统101可实例化这样的软件负载平衡器,该软件负载平衡器执行接收请求、基于源ID和目的地ID标识目的地以及将请求路由到所确定的集群端点的功能。因此,如图5所示,第一客户端503A可发送作为TCP请求的第一请求504A,然后发送作为UDP请求的第二请求504B。由于负载平衡器502基于请求源ID和目的地ID两者来确定目的地,因此负载平衡器将客户端1的请求路由到目的地1(501A)。类似地,客户端2(503B)可将TCP请求505A和UDP请求505B发送到负载平衡器502。负载平衡器然后可确定两个请求均绑定到客户端2(503B),并且可将两个请求路由到相同目的地2(501B)。这样,用户能够与特定集群端点建立会话,并且持续地将他们的请求路由到该集群端点。
在一些实施例中,计算机系统101的散列模块116可对请求源标识符(例如108A)和请求目的地标识符(例如109A)进行散列。散列因此可合并源和目的地标识符两者,并且可为表示所确定的目的地的唯一值。然后,每当接收到包括相同源和目的地标识符的未来请求时,散列模块116将为后续请求生成相同的散列值,并且它们将被路由到集群121中的相同目的地端点。以这种方式,基于通过对所述请求源标识符和所述请求目的地标识符进行散列而得到的散列值来标识要发送所接收的请求的目的地。
类似地,在另一实施例中,标识模块110可配置为查找或以其他方式标识用于发送请求的协议的等价类标识符。等价类标识符可用于其中多个协议(或在给定实施方式中使用的所有协议)为一个等价类的一部分的情况。在这种情况下,散列模块116可通过对请求源标识符、请求目的地标识符以及标识协议等价类的协议等价类标识符进行散列来对作为等价类的一部分的协议生成散列值117。
如图4所示,负载平衡器(无论是基于硬件还是基于软件)可包括软件或硬件功能模块,这些软件或硬件功能模块允许负载平衡器执行用于将具有不同协议的请求路由到相同目的地的方法。实际上,负载平衡器401可包括用于从用户和其他计算系统接收请求的接收模块402。负载平衡器401还可包括标识模块403,该标识模块通过对源ID和目的地ID进行散列以及将所得到的散列值分配给特定的集群端点来标识该请求将被发送到哪个端点。负载平衡器401的生成模块404可生成路由条目112,该路由条目指示该请求的源和目的地ID以及该请求最终被发送到何处的指示。确定模块405例如基于散列来确定将请求发送到哪个端点,并且路由模块406将请求发送到该目的地。以这种方式,图4的负载平衡器401可用于将使用不同协议的请求发送到相同的集群端点。
如上所述,允许用户上传或下载数据的介质应用可使用大量的带宽。在这种情况下,可以更大的数量实例化软件或硬件负载平衡器,使得单独的负载平衡器被实例化用于被配置为托管高带宽服务的集群。这些负载平衡器中的每一个可配置为彼此通信,并且可配置为以相同的方式确定端点目的地,使得无论哪个负载平衡器处理给定请求,该请求将被路由到相同的目的地端点。在一些情况下,由集群121托管的实现负载平衡的服务可为至少使用特定阈值量带宽的服务。该阈值可被设定为任何带宽量,并且可根据云处理资源的可用性而改变。
集群121被设计成允许一定量的部件故障。例如,集群节点(例如122)可能由于各种原因而失效或变得不可用。如果给定的目的地端点变得不可用于接收和/或处理请求,则集群可失效转移到不同的目的地端点。该新的目的地端点可与与先前运行的端点相关联的用户/请求源相关联,并且这些新的关联可存储在路由条目中。因此,后续的传入请求仍将被路由到相同(失效转移)端点。一旦用户连接到服务并且正在传送和接收数据包,则用户可将数据上传到在(更新的)路由条目中指示的目的地。用户的连接可实现多个不同的同时连接,其中每个连接使用不同的协议。
在一个实施例中,图1的第一和第二请求(106A和106B)可各自为数据上载的请求。一旦已为请求确定了目的地端点,则基于用户或基于源的相似性将使得每当用户尝试上传数据时使用相同的目的地。在一些情况下,可将小部分数据添加到用于指示目的地端点的第一协议的数据包中的字段。然后,后续数据包可被关联到在数据包字段(例如,这可为UDP包中的任选字段)中指定的目的地。
现在转到图3,示出了用于接收使用第一协议的第一请求的方法300的流程图,第一请求包括请求源标识符和请求目的地标识符。现在将频繁参考环境100的组件和数据来描述方法300。
方法300包括接收使用第一协议的第一请求的动作,该第一请求包括请求源标识符和请求目的地标识符(动作310)。例如,计算机系统101的通信模块104可从请求源105接收第一请求106A。第一请求包括协议107A正在使用的指示以及源ID 108A和目的地ID109A。散列模块116对第一请求的请求源标识符和请求目的地标识符进行散列,使得所得到的第一散列值117标识发送第一请求的目的地(动作320)。第一散列值117存储在数据存储118中(可能与其他散列值120一起),其中第一散列值标识发送第一请求的目的地(动作330)。
方法300还包括接收使用不同的第二协议的第二请求的动作,该第二请求包括请求源标识符和请求目的地标识符(动作340)。与第一请求类似,第二请求106B包括该请求正在使用哪个协议的指示107B以及源ID 108B和目的地ID 109B。一旦在计算系统101处接收到,则散列模块116可对第二请求的请求源标识符和请求目的地标识符进行散列,以创建第二散列值(动作350)。散列值117可与其他散列值120一起存储在数据存储118中,并且至少在一些情况下可为路由条目112的一部分。在一些情况下,散列值可存储在流程表中并从流程表中访问,这些流程表为数据存储118的一部分。计算机系统101的确定模块114然后可确定第二散列值匹配第一散列值(动作360),并且路由模块115可将第二请求路由到由第一散列值指示的目的地(动作370)。
如本文所描述的,用于将具有不同协议的请求路由到相同目的地的方法是传输-协议无关的。因此,请求可使用基本上任何类型的协议来传送请求。通过标识每个请求的源和目的地ID,并且通过使用那些值来确定最终端点,每个后续请求分组可以可靠地转发到相同端点。因此,在一些情况下,协议可为TCP和UDP,而在其他情况下,协议可为TCP和FTP或另一协议。还应当注意,可基于除了请求的请求源标识符和请求目的地标识符之外(或作为其替代)的其他值来生成散列值。因此,在一个实例中,可通过对请求源标识符、请求目的地标识符以及至少一个硬件标识符进行散列来生成散列值117,所述至少一个硬件标识符诸如为一块硬件,例如作为计算机系统101一部分的介质访问控制(MAC)地址。
因此,提供了将具有不同协议的请求路由到相同端点目的地的方法、系统和计算机程序产品。
在不脱离其精神或描述特征的情况下,本文所描述的概念和特征可体现为其他具体形式。所描述的实施例应当被认为在所有方面均仅仅是说明性的而不是限制性的。因此,本公开的范围由所附权利要求而不是前述描述来指示。在权利要求的等同物的含义和范围内的所有改变将被包括在其范围内。
Claims (18)
1.一种在包括至少一个处理器的计算机系统处的、用于以不同的协议将请求路由到相同目的地的计算机实现的方法,所述方法包括:
接收使用第一协议的第一请求的动作,其中所述第一请求包括第一请求源标识符和第一请求目的地标识符,并且其中所述第一协议被包括在共同类型的协议中,所述共同类型的协议中的每个协议共享相同的类型标识符,使得所述第一协议已经与相同的所述类型标识符相关联;
基于所述第一请求源标识符和所述第一请求目的地标识符,标识发送所述第一请求所至的目的地的动作;
生成用于所述第一请求的路由条目的动作,所述路由条目包括1)所述第一请求源标识符、2)所述第一请求目的地标识符以及3)所述目的地的指示;
接收使用不同的第二协议的第二请求的动作,其中所述第二请求包括第二请求源标识符和第二请求目的地标识符,并且其中所述第二协议也被包括在所述共同类型的协议中,使得所述第二协议共享与所述第一协议相同的所述类型标识符;
确定所述第二请求的所述第二请求源标识符和所述第二请求目的地标识符与所生成的所述路由条目的所述第一请求源标识符和所述第一请求目的地标识符匹配的动作;以及
将所述第二请求路由到在所述路由条目中指示的所述目的地的动作。
2.根据权利要求1所述的方法,还包括对所述第一请求源标识符和所述第一请求目的地标识符进行散列的动作。
3.根据权利要求2所述的方法,其中基于通过对所述第一请求源标识符和所述第一请求目的地标识符进行散列而得到的散列值来标识发送所述第一请求所至的所述目的地。
4.根据权利要求1所述的方法,还包括:
使用1)相同的所述类型标识符、2)所述第一请求源标识符以及3)所述第一请求目的地标识符来计算散列值的动作。
5.根据权利要求1所述的方法,其中负载平衡器执行用于以不同的协议将请求路由到所述相同目的地的方法。
6.根据权利要求5所述的方法,所述负载平衡器包括软件负载平衡器,其中单独的软件负载平衡器被实例化用于被配置为托管指定服务的集群。
7.根据权利要求6所述的方法,其中托管的所述指定服务包括至少使用指定阈值量的带宽的服务。
8.根据权利要求1所述的方法,还包括:
确定所述目的地对于接收请求不再可用的动作;以及
故障转移至不同的第二目的地的动作。
9.根据权利要求1所述的方法,还包括:
将数据的一个或多个部分上传到在所述路由条目中指示的所述目的地的动作。
10.根据权利要求1所述的方法,其中所述第一请求和所述第二请求包括数据上传请求,并且其中基于用户的关联性使得每次用户尝试上传数据时所述相同目的地要被使用。
11.根据权利要求10所述的方法,还包括:
将数据的一部分添加到用于所述第一协议的至少一个数据分组中的字段的动作;以及
将一个或多个随后的数据分组关联到在所述数据分组的字段中指定的所述目的地。
12.一种在包括至少一个处理器的计算机系统处的、用于以不同的协议将请求路由到相同目的地的计算机实现的方法,所述方法包括:
接收使用第一协议的第一请求的动作,其中所述第一请求包括第一请求源标识符和第一请求目的地标识符,并且其中所述第一协议被包括在共同类型的协议中,所述共同类型的协议中的每个协议共享相同的类型标识符,使得所述第一协议已经与相同的所述类型标识符相关联;
对1)所述第一协议的相同的所述类型标识符、2)所述第一请求源标识符以及3)所述第一请求目的地标识符进行散列的动作,其中所得到的第一散列值标识发送所述第一请求所至的目的地;
存储用于所述第一请求的所述第一散列值的动作,所述第一散列值标识所述目的地;
接收使用不同的第二协议的第二请求的动作,其中所述第二请求包括第二请求源标识符和第二请求目的地标识符,并且其中所述第二协议也被包括在所述共同类型的协议中,使得所述第二协议共享与所述第一协议相同的所述类型标识符;
对1)所述第二协议的相同的所述类型标识符、2)所述第二请求源标识符以及3)所述第二请求目的地标识符进行散列以创建第二散列值的动作;
确定所述第二散列值与所述第一散列值匹配的动作;以及
将所述第二请求路由到由所述第一散列值指示的所述目的地的动作。
13.根据权利要求12所述的方法,其中用于以不同协议将请求路由到所述相同目的地的方法是传输协议无关的。
14.根据权利要求12所述的方法,其中所述第一散列值被存储在流程表中并且从所述流程表访问。
15.根据权利要求12所述的方法,其中所述第一协议或者是传输控制协议(TCP),或者是用户数据报协议(UDP)。
16.根据权利要求12所述的方法,其中所述第一散列值同样基于至少一个硬件标识符。
17.根据权利要求16所述的方法,其中所述至少一个硬件标识符包括用于所述第一请求的发送者的媒体访问控制(MAC)的地址。
18.一种计算机可读硬件存储介质,包括存储于其上计算机可执行指令,所述计算机可执行指令在被执行时使得所述计算机执行根据权利要求1至11任一项所述的方法的步骤或执行根据权利要求12至17任一项所述的方法的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/455,427 US9667543B2 (en) | 2014-08-08 | 2014-08-08 | Routing requests with varied protocols to the same endpoint within a cluster |
US14/455,427 | 2014-08-08 | ||
PCT/US2015/043897 WO2016022740A1 (en) | 2014-08-08 | 2015-08-06 | Routing requests with varied protocols to the same endpoint within a cluster |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106797384A CN106797384A (zh) | 2017-05-31 |
CN106797384B true CN106797384B (zh) | 2021-01-26 |
Family
ID=53835552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580054829.2A Active CN106797384B (zh) | 2014-08-08 | 2015-08-06 | 以不同的协议将请求路由到集群中的相同端点 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9667543B2 (zh) |
EP (1) | EP3178215B1 (zh) |
CN (1) | CN106797384B (zh) |
WO (1) | WO2016022740A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10409649B1 (en) * | 2014-09-30 | 2019-09-10 | Amazon Technologies, Inc. | Predictive load balancer resource management |
US10333846B2 (en) * | 2016-02-19 | 2019-06-25 | Citrix Systems, Inc. | Systems and methods for routing network packets between multi-core intermediaries |
US10250500B2 (en) * | 2016-12-30 | 2019-04-02 | Juniper Networks, Inc. | Performing a service on a packet |
KR102716672B1 (ko) * | 2017-02-28 | 2024-10-15 | 삼성전자주식회사 | 차량을 제어하기 위한 전자 장치 및 그의 동작 방법 |
US11070475B2 (en) | 2018-12-13 | 2021-07-20 | Google Llc | Transparent migration of virtual network functions |
US20230327992A1 (en) * | 2022-04-11 | 2023-10-12 | Bank Of America Corportion | Platform agnostic gateway for efficient data transfer between systems |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103384989A (zh) * | 2010-12-28 | 2013-11-06 | 思杰系统有限公司 | 用于对多个下一跳进行策略路由的系统和方法 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6424992B2 (en) | 1996-12-23 | 2002-07-23 | International Business Machines Corporation | Affinity-based router and routing method |
US6970913B1 (en) | 1999-07-02 | 2005-11-29 | Cisco Technology, Inc. | Load balancing using distributed forwarding agents with application based feedback for different virtual machines |
US6748437B1 (en) | 2000-01-10 | 2004-06-08 | Sun Microsystems, Inc. | Method for creating forwarding lists for cluster networking |
US6587866B1 (en) | 2000-01-10 | 2003-07-01 | Sun Microsystems, Inc. | Method for distributing packets to server nodes using network client affinity and packet distribution table |
US6870849B1 (en) | 2000-07-06 | 2005-03-22 | Ross W. Callon | Apparatus and method for efficient hashing in networks |
US7366755B1 (en) | 2000-07-28 | 2008-04-29 | International Business Machines Corporation | Method and apparatus for affinity of users to application servers |
US7020713B1 (en) | 2000-10-10 | 2006-03-28 | Novell, Inc. | System and method for balancing TCP/IP/workload of multi-processor system based on hash buckets |
US7003574B1 (en) | 2000-11-01 | 2006-02-21 | Microsoft Corporation | Session load balancing and use of VIP as source address for inter-cluster traffic through the use of a session identifier |
US20020143953A1 (en) | 2001-04-03 | 2002-10-03 | International Business Machines Corporation | Automatic affinity within networks performing workload balancing |
US7406524B2 (en) | 2001-07-26 | 2008-07-29 | Avaya Communication Isael Ltd. | Secret session supporting load balancer |
US7376953B2 (en) | 2001-10-29 | 2008-05-20 | Hewlett-Packard Development Company, L.P. | Apparatus and method for routing a transaction to a server |
US20030172164A1 (en) | 2002-03-11 | 2003-09-11 | Coughlin Chesley B. | server persistence using a session identifier |
US7088718B1 (en) | 2002-03-19 | 2006-08-08 | Cisco Technology, Inc. | Server load balancing using IP option field approach to identify route to selected server |
US7472205B2 (en) * | 2002-04-24 | 2008-12-30 | Nec Corporation | Communication control apparatus which has descriptor cache controller that builds list of descriptors |
US20030225859A1 (en) | 2002-05-31 | 2003-12-04 | Sun Microsystems, Inc. | Request mapping for load balancing |
US7877511B1 (en) | 2003-01-13 | 2011-01-25 | F5 Networks, Inc. | Method and apparatus for adaptive services networking |
US7353276B2 (en) | 2003-02-13 | 2008-04-01 | Microsoft Corporation | Bi-directional affinity |
US20040260745A1 (en) | 2003-06-18 | 2004-12-23 | Gage Christopher A. S. | Load balancer performance using affinity modification |
US7613822B2 (en) | 2003-06-30 | 2009-11-03 | Microsoft Corporation | Network load balancing with session information |
US7882251B2 (en) | 2003-08-13 | 2011-02-01 | Microsoft Corporation | Routing hints |
US7536693B1 (en) | 2004-06-30 | 2009-05-19 | Sun Microsystems, Inc. | Method for load spreading of requests in a distributed data storage system |
US20060036747A1 (en) | 2004-07-28 | 2006-02-16 | Galvin James P Jr | System and method for resource handling of SIP messaging |
US20060155862A1 (en) | 2005-01-06 | 2006-07-13 | Hari Kathi | Data traffic load balancing based on application layer messages |
US20060165003A1 (en) | 2005-01-24 | 2006-07-27 | Bbnt Solutions Llc | Method and apparatus for monitoring data routing over a network |
US20060248194A1 (en) | 2005-03-18 | 2006-11-02 | Riverbed Technology, Inc. | Connection forwarding |
US8266327B2 (en) | 2005-06-21 | 2012-09-11 | Cisco Technology, Inc. | Identity brokering in a network element |
JP4961146B2 (ja) * | 2006-02-20 | 2012-06-27 | 株式会社日立製作所 | 負荷分散方法およびシステム |
US8166114B2 (en) | 2006-02-21 | 2012-04-24 | Strangeloop Networks, Inc. | Asynchronous context data messaging |
US7797406B2 (en) | 2006-07-27 | 2010-09-14 | Cisco Technology, Inc. | Applying quality of service to application messages in network elements based on roles and status |
US20080228926A1 (en) | 2007-03-13 | 2008-09-18 | Asher Shiratzky | Methods, media, and systems for balancing session initiation protocol server load |
US8855082B2 (en) | 2007-05-04 | 2014-10-07 | Cisco Technology, Inc. | Application load balancing for different domains |
CN101110830A (zh) * | 2007-08-24 | 2008-01-23 | 张建中 | 创建多维地址协议的方法、装置和系统 |
US7609916B2 (en) | 2007-09-13 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | Electrical contact apparatus for optical waveguides |
JP2009111437A (ja) * | 2007-10-26 | 2009-05-21 | Hitachi Ltd | ネットワークシステム |
US9749404B2 (en) | 2008-04-17 | 2017-08-29 | Radware, Ltd. | Method and system for load balancing over a cluster of authentication, authorization and accounting (AAA) servers |
US8881167B2 (en) | 2008-04-28 | 2014-11-04 | International Business Machines Corporation | Load balancing in network based telephony applications |
US8095935B2 (en) | 2008-06-26 | 2012-01-10 | Microsoft Corporation | Adapting message delivery assignments with hashing and mapping techniques |
US8788570B2 (en) | 2009-06-22 | 2014-07-22 | Citrix Systems, Inc. | Systems and methods for retaining source IP in a load balancing multi-core environment |
US8351430B2 (en) * | 2010-09-30 | 2013-01-08 | Microsoft Corporation | Routing using global address pairs |
US9705977B2 (en) * | 2011-04-20 | 2017-07-11 | Symantec Corporation | Load balancing for network devices |
-
2014
- 2014-08-08 US US14/455,427 patent/US9667543B2/en active Active
-
2015
- 2015-08-06 CN CN201580054829.2A patent/CN106797384B/zh active Active
- 2015-08-06 EP EP15749956.7A patent/EP3178215B1/en active Active
- 2015-08-06 WO PCT/US2015/043897 patent/WO2016022740A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103384989A (zh) * | 2010-12-28 | 2013-11-06 | 思杰系统有限公司 | 用于对多个下一跳进行策略路由的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3178215B1 (en) | 2020-04-08 |
EP3178215A1 (en) | 2017-06-14 |
US9667543B2 (en) | 2017-05-30 |
US20160043951A1 (en) | 2016-02-11 |
CN106797384A (zh) | 2017-05-31 |
WO2016022740A1 (en) | 2016-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106797384B (zh) | 以不同的协议将请求路由到集群中的相同端点 | |
US11102125B2 (en) | Securing communications between services in a cluster using load balancing systems and methods | |
CN107771320B (zh) | 用于改善安全套接字层(ssl)通信安全性的系统和方法 | |
CN107438994B (zh) | 用于服务器负载均衡的方法、设备和计算机存储介质 | |
US11088948B1 (en) | Correlating network flows in a routing service for full-proxy network appliances | |
US20150281087A1 (en) | Forwarding data packets using a service-based forwarding policy | |
US20140280813A1 (en) | Optimizing application performance in a network environment | |
US11310149B1 (en) | Routing bidirectional flows in a stateless routing service | |
US9332053B2 (en) | Methods, systems, and computer readable media for load balancing stream control transmission protocol (SCTP) messages | |
US11394636B1 (en) | Network connection path obfuscation using global access points | |
US20220222105A1 (en) | Container provisioning | |
CN107637053B (zh) | 网络环境中可扩展的网络地址转换 | |
US11652736B2 (en) | Transmitting network traffic to a pool of redundant network appliances | |
US11184277B1 (en) | Reducing routing rules used to route traffic | |
Detti et al. | A cluster-based scalable router for information centric networks | |
US10341292B2 (en) | Increased port address space | |
JP5526015B2 (ja) | ゲートウェイシステム、ゲートウェイ装置、負荷分散方法 | |
US20230171194A1 (en) | Customized tuple definition for hashing at a network appliance routing service | |
US10791088B1 (en) | Methods for disaggregating subscribers via DHCP address translation and devices thereof | |
CN115460213A (zh) | 一种业务处理方法、装置、电子设备及计算机可读介质 | |
US12034637B1 (en) | Network devices for stateful transmission of network traffic | |
US10680998B2 (en) | Method, system, and computer program product for a network device in switchless networks | |
US11616721B2 (en) | In-packet version tagging utilizing a perimeter NAT | |
Guan et al. | Status-based content sharing mechanism for content-centric network | |
Hügerich et al. | No-hop: In-network Distributed Hash Tables |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |