经由网络访问端点的客户端装置的负载平衡端点选择的制作方法

文档序号:21982839发布日期:2020-08-25 19:19阅读:157来源:国知局
经由网络访问端点的客户端装置的负载平衡端点选择的制作方法

本公开涉及计算机网络,更具体地,涉及在计算机网络内传送数据包。



背景技术:

计算机网络是能够交换数据和共享资源的互连计算装置的集合。在基于数据包的网络(例如,互联网)中,计算装置通过将数据分成称为数据包的长度可变的块来传送数据,这些块跨网络从源装置单独路由到目的装置。目的装置从数据包中提取数据,并将数据组装成原始形式。

域名系统(dns)是将与主机名相关联的信息存储在网络(例如,互联网)上的分布式数据库中的系统。特别地,dns将主机名与相应的互联网协议(ip)地址相关联。通过将组织的每个主机名与公共域名相关联,可以将属于该组织的一组主机名分组到一个域中。通过这种方式,dns允许难以记住的ip地址与易于记住的主机名和/或域名相关联。

当计算装置执行应用程序(例如,网络浏览器、电子邮件客户端或分布式应用程序)并且该应用程序发出需要进行dns查找的请求时,该应用程序向dns服务器发送包含主机名的dns查询。dns服务器检索与dns查询中指示的主机名相关联的一个ip地址。dns服务器在对客户端应用程序的dns响应中返回该ip地址,客户端应用程序使用该ip地址来(例如)访问托管服务的服务器。

用户可能期望服务提供商以可接受的质量水平提供服务,通常称为体验质量(qoe)。qoe可以基于各种参数来测量,包括等待时间、延迟(帧间间隙)、抖动、数据包丢失和/或吞吐量。用户可以针对用户在与服务提供商的服务合同(例如,服务级别协议(sla))中期望的qoe的一个或多个参数定义期望的级别。



技术实现要素:

总体上,本公开描述了用于利用中间装置从客户端计算装置经由网络可访问的多个远程端点中选择优选远程端点并将该优选远程端点指示给客户端计算装置的技术。例如,中间装置可以拦截来自dns负载平衡器的dns响应,该负载平衡器跨提供所请求的服务的多个远程端点负载平衡服务请求。基于从多个端点中的每一个到中间装置的网络流量的一个或多个网络性能度量的值,中间装置可以修改包括在dns响应中的ip地址的优先级。例如,中间装置可以用另一远程端点的ip地址替换dns响应中的原始主要ip地址,其中,对于该另一远程端点,中间装置测量的网络性能度量优于与dns响应中由dns负载平衡器指定的原始主要ip地址相关联的远程端点的网络性能度量。

这些技术可以提供一个或多个提供实际应用的技术优势。例如,通过基于网络性能度量修改dns响应中指定的ip地址的优先级,中间装置可以向客户端装置提供dns响应,该dns响应为满足或最佳满足给定的sla的要求的端点指定主要ip地址,或者以其他方式优于由dns负载平衡器指定的原始主要ip地址。

在一个示例中,本文描述的技术的各个方面涉及一种方法,包括:由位于遍历连接客户端装置和多个端点的网络的相应网络路径上的中间装置接收指示多个端点的域名系统(dns)消息,其中,每个端点提供相同的服务并且映射到相同的主机名;由所述中间装置基于所述多个端点的相应网络性能度量组来确定所述多个端点中的第一端点对于向所述客户端装置提供服务是优选的;由所述中间装置响应于所述dns消息并基于确定所述第一端点对于向所述客户端装置提供服务是优选的,生成dns响应,所述dns响应指定所述第一端点的互联网协议(ip)地址作为主要ip地址;并且由中间装置向客户端装置发送dns响应,以使客户端装置向第一端点的ip地址发送服务请求。

在又一示例中,本文描述的技术的各个方面涉及一种网络装置,其中,所述网络装置位于遍历连接客户端装置和多个端点的网络的相应网络路径上,其中,每个端点提供相同的服务并且映射到相同的主机名,所述网络装置包括:存储器;以及一个或多个处理器,其与所述存储器通信,所述一个或多个处理器被配置为:接收指示多个端点的域名系统(dns)消息;基于所述多个端点的相应网络性能度量组来确定所述多个端点中的第一端点对于向所述客户端装置提供服务是优选的;响应于所述dns消息并基于确定所述第一端点对于向所述客户端装置提供服务是优选的,生成dns响应,所述dns响应指定所述第一端点的互联网协议(ip)地址作为主要ip地址;并且向客户端装置发送dns响应,以使客户端装置向第一端点的ip地址发送服务请求。

在又一示例中,本文描述的技术的各个方面涉及一种网络装置的计算机可读存储介质,所述网络装置位于遍历连接客户端装置和多个端点的网络的相应网络路径上,每个端点提供相同的服务并且映射到相同的主机名,所述网络装置存储指令,所述指令使得处理器:接收指示多个端点的域名系统(dns)消息;基于所述多个端点的相应网络性能度量组来确定所述多个端点中的第一端点对于向所述客户端装置提供服务是优选的;响应于所述dns消息并基于确定所述第一端点对于向所述客户端装置提供服务是优选的,生成dns响应,所述dns响应指定所述第一端点的互联网协议(ip)地址作为主要ip地址;并且向客户端装置发送dns响应,以使客户端装置向第一端点的ip地址发送服务请求。

在附图和以下描述中阐述本公开的一个或多个示例的细节。通过说明书和附图以及权利要求书,本公开的其他特征、目的和优点将变得显而易见。

附图说明

图1是示出根据本公开的技术的具有中间装置的示例网络系统的框图,该中间装置从客户端计算装置可经由网络访问的多个远程端点中选择优选远程端点并且向客户端计算装置指示优选远程端点。

图2是示出根据本文描述的技术的示例网络装置的框图,该示例网络装置被配置为从客户端计算装置可经由网络访问的多个远程端点中选择优选远程端点并且向客户端计算装置指示优选远程端点。

图3是示出本公开中描述的技术的一个或多个方面的示例操作的流程图。

具体实施方式

图1是示出根据本公开的技术的具有中间装置的示例网络系统2的框图,该中间装置从客户端计算装置可经由网络访问的多个远程端点中选择优选远程端点并且向客户端计算装置指示优选远程端点。在系统2的示例中,广域网(wan)7将客户网络6连接到数据中心9。wan7可以由服务提供商部署,以允许客户端装置16a至16m(统称为“客户端装置16”)的网络访问,使得客户端装置可以与数据中心9的端点10a至10n(统称为“端点10”)中的任何一个交换数据包。

在图1的示例中,客户网络6包括一个或多个客户端装置16。客户可以包括例如企业、服务提供商的住宅用户或服务提供商的移动用户。客户端装置16可以是例如真实或虚拟服务器、个人计算机、膝上型计算机、智能电话、平板电脑或位于可以提供本地路由和交换功能的网络装置后面的其他类型的计算装置。每个客户端装置16可以运行各种软件应用程序,例如,分布式应用程序、文字处理和其他办公室支持软件、网络浏览软件、支持语音呼叫的软件、视频游戏、视频会议和电子邮件等。客户端装置16也可以是各种支持网络的装置,通常称为“物联网”(iot)装置,例如,照相机、传感器、电视、电器等。

客户网络6聚集一个或多个客户端装置16的数据流量,用于向/从wan7传输。客户网络6包括网络节点,这些网络节点执行通信协议,来传输控制和用户数据,以促进客户端装置16和端点10之间的通信。客户网络6可以包括企业网络、数据中心网络、家庭网络或其他网络。客户网络6可以包括宽带接入网络、无线lan、公共交换电话网络(pstn)、客户驻地装置(cpe,customerpremisesequipment)网络或其他类型的接入网络,并且可以包括蜂窝接入网络,例如,无线电接入网络(ran)(未示出),或者以其他方式为蜂窝接入网络提供连接。示例包括符合通用移动电信系统(umts)架构的网络、称为长期演进(lte)、高级lte(lte-a)、5g、由互联网工程任务组(ietf)标准化的移动ip以及由第三代合作伙伴项目(3gpp)、第三代合作伙伴项目2(3ggp/2)和wimax论坛提出的其他标准的umts演进。

客户网络6包括位于客户网络6边缘的ce装置18。ce装置18与网络(例如,wan7)进行接口(interface),以路由、交换或以其他方式转发指向和/或源自客户网络6的网络流量。ce装置18可以表示路由器、交换机、真实或虚拟服务器或者能够转发网络流量并执行sla测量的其他合适的网络装置,如下文进一步描述的。ce装置18是去往客户端装置16或来自客户端装置16的网络流量遍历ce装置18的中间装置。其他示例系统2中的其他装置(未示出)可以作为客户端装置16和端点10之间的中间装置来操作。中间装置的其他示例可以包括路由器、诸如防火墙或其他入侵检测和阻止系统等安全装置、交换机、服务器、负载平衡器和隧道装置。

wan7向连接到客户网络6的客户端装置16提供基于数据包的连接,用于访问数据中心9。wan7可以表示由服务提供商拥有和运营的公共网络,以互连多个网络,这些网络可以包括客户网络6和数据中心9的数据中心网络。wan7可以表示第三层(l3)网络,并且可以包括多个中间路由和交换装置(未示出),这些装置通过数据中心(例如,客户网络6和数据中心9)之间的链路传输数据流量。作为示例,wan7可以提供批量数据传送、基于互联网协议的语音(voip)、互联网协议电视(iptv)、短消息服务(sms)、无线应用协议(wap)服务或客户特定的应用服务。在一些示例中,wan7可以表示软件定义的wan(“sd-wan”),其利用例如互联网来连接客户网络6和数据中心9。sd-wan是一种管理广域网的软件定义的方法。尽管在wan7方面进行了描述,但是这些技术也适用于将客户端装置连接到端点的其他类型的网络。

管理至少一部分网络2的网络服务提供商通常向与访问服务提供商网络2的装置(例如,客户端装置16)相关联的客户提供网络服务。如上所述,wan7可以支持连接到服务提供商网络接入网关的多种类型的接入网络基础设施,以提供对所提供的网络服务的访问。在一些情况下,系统2可以包括连接到具有不同架构的多个不同客户网络6的客户端装置16。

通常,客户端装置16中的任何一个或多个可以执行应用程序,例如,分布式应用程序、客户端应用程序、网络浏览器或电子邮件应用程序,以访问在每个端点10上托管的服务。服务可以包括任何应用服务,例如,网站、网络应用程序、分布式应用程序、数据库服务等。端点10可以是数据中心9的网络或应用主机服务器。每个端点10可以执行一个或多个虚拟机或容器,这些虚拟机或容器执行提供任何客户端装置16可能请求的服务的应用程序。每个端点10可以是真实的或虚拟的服务器。可以提供在端点10上托管的应用程序或网站,作为服务(例如,软件即服务(saas)),其中,提供商托管应用程序或网站并通过互联网提供对应用服务的访问。为了访问在端点10上托管的服务,任何客户端装置16可以做出需要dns查找的请求。例如,由客户端装置16a执行的应用程序可以向dns服务器发送dns查询,以发现托管服务的端点10的ip地址。dns查询是用主机名和/或域名指示端点10的dns消息。

在一些示例中,服务可以由一组冗余端点10托管。例如,图1,端点10a和10c可以是托管相同服务的冗余主机服务器。dns负载平衡器8(在本文也称为“dns服务器8”或“dns负载平衡服务器8”)为服务提供跨冗余主机服务器(例如,端点10a和10c)的负载平衡。例如,响应于接收到dns查询,dns负载平衡器8检索与dns查询中指示的主机名相关联的端点10a和10c的ip地址。dns负载平衡器8在dns响应中返回端点10a和10c的ip地址,并指示客户端装置16可以通过将服务请求以任何指示的ip地址为目的地来请求服务的主要ip地址和次要ip地址。dns响应是dns消息,其将端点指示为主要ip地址和次要ip地址。

为了针对单个dns查询用多个ip地址进行响应,dns负载平衡器8可以被配置为提供dns故障转移。在这种配置中,dns负载平衡器8将请求主机名映射到主要ip地址和一个或多个次要(或“故障转移”)ip地址,其中,如果具有主要ip地址的端点10没有响应,则请求装置可以使用一个或多个次要(或“故障转移”)ip地址。主机名到ip地址的映射可以存储为记录,例如,dnsa记录。由dns负载平衡器8生成的dns响应可以包括一个或多个记录,这些记录指示主机名的主要ip地址和一个或多个次要ip地址。

尽管图示和描述为位于同一数据中心9,但是dns负载平衡器8和端点10可以跨多个地理位置分布。端点10可以由不同的实体部署。部署dns负载平衡器8的实体可以不同于任何端点10的实体。作为一个示例,端点10a和端点10c中的每一个都可以在wan7上使用不同的wan链路组,例如,wan链路19a、19b(统称为“wan链路19”),来向ce装置18和从ce装置18传输网络流量。

用户可能期望服务提供商以可接受的质量水平提供服务,通常称为体验质量(qoe)。可以基于各种参数来测量qoe,包括等待时间、延迟(帧间间隙)、抖动、数据包丢失和吞吐量。用户可以针对用户在与服务提供商的服务合同(例如,服务级别协议(sla))中期望的qoe的一个或多个参数定义期望的级别。关于sla参数的额外信息,见s.bradner等人的“benchmarkingmethodologyfornetworkinterconnectdevices”,interconnectdevices,networkworkinggroup,rfc2544,1999年3月,其全部内容通过引用结合于此。

通常,dns负载平衡器8不知道sla,并返回dns响应,该响应定义了sla要求不可知的主要ip地址和次要ip地址。即,dns负载平衡器8不测量wan链路19的参数,并且在某些情况下,可能返回已经为端点定义了主要ip地址的dns响应,其中,到该端点的wan链路的参数不满足sla要求或者未最佳满足客户网络6和端点之间的sla要求。作为一个示例,端点10a和10c可以均托管相同的网页。在该示例中,ce装置18和端点10a之间的wan链路19a的参数不满足给定的sla要求(例如,等待时间要求),而ce装置18和端点10c之间的wan链路19b的参数满足给定的sla要求或者比ce装置18和端点10a之间的wan链路19a的参数更好。在不知道sla要求的情况下,dns负载平衡器8可能返回端点10a的ip地址被定义为主要ip地址的dns响应20,这使得客户端装置连接到具有到ce装置18的网络路径不满足给定的sla要求或者不如从端点10c到ce装置18的网络路径优选的端点10a。

根据本文描述的技术,ce装置18可以拦截来自dns负载平衡器8的dns响应,并且可以基于sla测量来修改dns响应中指示的ip地址的优先级,例如,通过将不同的ip地址作为主要ip地址。使用本文描述的技术,中间装置(例如,ce装置18)可以对到dns负载平衡端点10的wan链路19执行sla测量,并且基于sla测量重新优先化dns响应中指示的ip地址。

在图1的示例中,dns负载平衡器8可以在dns响应20中返回端点10a和10c的ip地址,并且将端点10a的ip地址指定为主要ip地址,将端点10c的ip地址指定为次要ip地址。在dns响应20到达一个客户端装置16之前,ce装置18可以拦截dns响应20,并对dns响应20中指示的ip地址执行sla测量。

ce装置18可以确定网络性能度量,例如,服务等级协议(sla)参数,其包括往返时间(rtt)、抖动和数据包丢失,这些参数受应用程序的实时参数(例如,数据包大小、队列和数据包突发)的影响,以确定最佳路径。作为一个示例实现方式,ce装置18可以在每个wan链路19上向dns响应20中指示的ip地址发送探测数据包,以测量wan链路的sla参数。

在图1的示例中,ce装置18可以使用例如互联网控制管理协议(icmp)、双向主动测量协议(twamp)、超文本传输协议(http)或其他探测机制的各种应用qoe度量功能发送探测数据包22a、22b(统称为“探测数据包22”),以分别测量ce装置18与端点10a和10c之间的wan链路19的性能度量。即,这些探测机制可以在服务提供商网络2内使用,以例如在网络装置(也称为主机或端点)之间逐个用户地测量网络性能的单向和双向或往返度量,例如,路径连接、路径延迟、数据包抖动、数据包丢失、数据包重新排序等。通常,qoe测量架构包括网络装置,每个网络装置支持所使用的协议,并执行特定的角色,以开始数据会话和交换数据会话的测试包。

在图1的示例中,ce装置18可以在ce装置18和端点10a之间的第一wan链路(例如,wan链路19a)上发送探测数据包22a(例如,icmp回波请求数据包)。类似地,ce装置18可以发送探测数据包22b,该探测数据包22b遍历ce装置18和端点10c之间的第二不同wan链路,例如,wan链路19b。响应于接收到相应的探测数据包,端点10a和10c可以分别用探测数据包回复来响应,例如,探测数据包回复24a、24b(统称为“探测数据包回复24”)。例如,响应于接收到探测数据包22a,端点10a可以用探测数据包回复24a来回复,例如,包括在icmp回波请求数据包(例如,探测数据包22a)中接收到的有效载荷的icmp回波回复。类似地,端点10c可以响应于接收到探测数据包22c,用探测数据包回复24b来回复。

ce装置18可以分别从端点10a和10c接收探测数据包回复24,并且确定到端点10a和10c的wan链路19中的哪一个满足sla要求。例如,ce装置18可以从探测数据包22b和探测数据包回复24b中确定ce装置18和端点10c之间的wan链路的等待时间满足给定sla的等待时间要求。ce装置18还可以从探测数据包22a和探测数据包回复24a确定ce装置18和端点10a之间的wan链路的等待时间不满足给定sla的等待时间要求。

响应于执行sla测量,即,确定ce装置18和端点10c之间的wan链路满足sla的等待时间要求,ce装置18可以修改dns响应20(在图1中示为修改后的dns响应20’),以指定新的主要ip地址。例如,ce装置18可以将端点10c的ip地址指定为主要ip地址,并将端点10a的ip地址指定为次要ip地址。以这种方式,客户端装置16可以使用端点10c的ip地址以经由满足或最好满足sla参数的wan链路19b来访问托管的应用程序。

在到端点10a和10c的wan链路19的参数都满足sla要求或者参数组都不满足sla要求或者没有sla要求的一些示例中,ce装置18可以确定哪个wan链路19具有更好的性能度量。例如,ce装置18和端点10c之间的wan链路19b可能比ce装置18和端点10a之间的wan链路19a具有更低的等待时间。在该示例中,因为wan链路19b的等待时间低于wan链路19a的等待时间,所以ce装置18可以将端点10c的ip地址定义为主要ip地址。ce装置18可以基于应用于每个性能度量的一个或多个策略来确定一组性能度量优于另一组。策略可以是可配置的。如在前面的示例中,ce装置18可以修改dns响应20,以将具有更好或优选性能度量的端点10的ip地址指定为主要ip地址,并且可以将先前指示的主要ip地址指定为次要或故障转移ip地址。

可替代地或另外,ce装置18可以沿着ce装置18和端点10之间的wan链路动态地和主动地发送探测数据包22,以确定哪个端点10最符合sla要求。并非响应于拦截dns响应20来发送探测数据包22,ce装置18可以主动向每个端点10或端点10的子集发送探测数据包22,以保持各种端点10的度量的最新记录,从而在接收到dns查询或指定任何一个或多个端点10的dns响应时,可以快速路由服务请求。

例如,ce装置18可以配置一组端点10,向其发送相应的探测数据包22。ce装置18可以周期性地发送探测数据包。ce装置18还可以被配置为动态地学习何时发送探测数据包22。例如,探测参数可以根据应用流量的不同应用流量参数(例如,差分服务码点(dscp)值、转发类别、数据包大小(例如,最小、最大、平均值)和/或突发)来动态调整(例如,如果观察到突发,则将探测数据包与应用突发一起注入,以在突发期间检测应用sla度量;如果没有观察到突发,则不生成合成突发)。在一些示例中,在接收到应用流量的第一实例之后,生成后续的探测数据包。在其他示例中,如果应用流量具有一致的流量模式(例如,每秒几乎恒定的数据包(pps)),则可以以恒定的级别生成探测数据包。在一些示例中,如果系统正经历出口队列溢出或高cpu,则可以增加用于发送后续探测数据包的时间间隔(例如,定时器),以减少探测数据包流量。在一些示例中,如果应用程序没有恒定的流量速率,则探测数据包可以与应用程序流量成比例地生成。例如,可以1∶n的比例生成探测数据包,其中,n可以是应用流量的数据包的数量,使得为应用程序的每n个数据包发送探测一个数据包。

ce装置18可以基于探测结果维护符合sla的活动ip地址的列表。当一个客户端装置16发送dns查询时,ce装置18可以拦截该dns查询,生成指定具有优选性能度量的端点10的ip地址作为主要ip地址的dns响应,并且将该dns响应发送给客户端装置16。

动态学习何时发送探测数据包22,可以提供一个或多个示例技术优势。例如,ce装置18可以提供实时或接近实时的探测、平衡的探测方法、假阳性和假阴性的更低概率、不需要人工干预来提高准确度、不需要生成会降低系统和网络状态的合成突发、和/或基于应用流量动态调整系统上的负载。

图2是示出根据本文描述的技术的示例网络装置的框图,该示例网络装置被配置为从客户端计算装置可经由网络访问的多个远程端点中选择优选远程端点并且向客户端计算装置指示优选远程端点。图2的网络装置200可以更详细地表示中间装置,例如,图1的ce装置18。

网络装置200包括控制单元202,该控制单元202包括路由引擎204,并且控制单元202耦接到转发引擎206(本文也称为“转发单元206”)。转发引擎206与一个或多个接口卡232a至232n(“ifc232”)相关联,接口卡232a至232n经由入站链路258a至258n(“入站链路258”)接收数据包,并经由出站链路260a至260n(“出站链路260”)发送数据包。ifc232通常经由多个接口端口(未示出)耦接到链路258、260。入站链路258和出站链路260的接口可以表示物理接口、逻辑接口或其某种组合。链路258、260的接口可以表示到图1的端点10的wan链路的网络装置200的本地接口。

控制单元202和转发引擎206的元件可以仅在软件或硬件中实现,或者可以实现为软件、硬件或固件的组合。例如,控制单元202可以包括执行软件指令的一个或多个处理器、一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其他等效的集成或分立逻辑电路或其任意组合。在这种情况下,控制单元202的各种软件模块可以包括在包含指令的计算机可读介质中存储、体现或编码的可执行指令,例如,计算机可读存储介质。在计算机可读介质中嵌入或编码的指令可以使得可编程处理器或其他处理器执行该方法,例如,当执行指令时。计算机可读存储介质可以包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、非易失性随机存取存储器(nvram)、闪存、硬盘、cd-rom、软盘、磁带、固态驱动器、磁介质、光学介质或其他计算机可读介质。计算机可读介质可以用对应于网络装置200的各个方面的指令编码,例如,协议。在一些示例中,控制单元202从存储器中检索并执行这些方面的指令。

路由引擎204包括内核210,内核210为用户级进程提供运行时操作环境。内核210可以表示例如unix操作系统衍生物,例如,linux或伯克利软件分发(bsd)。内核210提供库和驱动器,通过库和驱动器,用户级进程可以与底层系统交互。路由引擎204的硬件环境212包括微处理器214,微处理器214执行将程序指令从存储装置(图2中也未示出)加载到主存储器(图2中未示出),以便执行软件堆栈,包括内核210和在内核210提供的操作环境上执行的进程。微处理器214可以表示一个或多个通用或专用处理器,例如,数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其他等效逻辑器件。因此,本文使用的术语“处理器”或“控制器”可以指任何一个或多个前述结构或可操作以执行本文描述的技术的任何其他结构。

在图2的示例中,路由引擎204可以在网络堆栈的不同层执行各种协议220。网络协议可以包括互联网控制消息协议(icmp)222、双向主动测量协议(twamp)224、超文本传输协议(http)226或用于发送探测数据包以测量wan链路的sla参数的其他qoe度量功能。尽管图示为包括icmp222、twamp224和http226,但是路由引擎204可以执行图1所示的一个或多个协议220,或者可以包括未示出的其他协议。在j.mogul的“internetstandardsubnettingprocedure”,networkworkinggroup,requestforcomments950,1985年8月中,描述icmp的其他示例,其全部内容通过引用结合于此。在k.hedayat的“atwo-wayactivemeasurementprotocol(twamp)”,networkworkinggroup,requestforcomments5357,2008年10月中,描述twamp的进一步的示例,其全部内容通过引用结合于此。在m.belshe的“hypertexttransferprotocolversion2(http/2)”internetengineeringtaskforce,requestforcomments7540,2015年5月,描述http的进一步示例,其全部内容通过引用结合于此。

路由引擎204负责维护路由信息240,以反映网络装置200所连接的网络和其他网络实体的当前拓扑。具体地,路由协议周期性地更新路由信息240,以基于网络装置200接收的路由协议消息准确地反映网络和其他实体的拓扑。

转发引擎206表示提供网络流量的高速转发的硬件和逻辑功能。转发引擎206通常包括一组用转发信息208编程的一个或多个转发芯片,转发信息208将网络目的地与特定的下一跳和相应的输出接口端口260进行映射。通常,当网络装置200经由一个入站链路258接收数据包时,转发引擎206通过基于数据包内的信息遍历编程的转发信息208来识别该数据包的相关联的下一跳。例如,路由引擎204分析路由信息240,并根据路由信息240生成转发信息208。可以以一个或多个表、链表、基数树、数据库、平面文件或任何其他数据结构的形式来维护转发信息208。

根据本文描述的技术,路由引擎204包括:dns模块243,用于拦截来自dns负载平衡器的dns响应;以及sla模块245,其对到dns响应中识别的ip地址的wan链路执行sla测量,并且可基于sla测量修改dns响应中指定的ip地址的优先级,例如,通过将一不同的ip地址作为主要ip地址。

例如,网络装置200可以包括dns模块243,其识别来自dns负载平衡器(例如,图1的dns负载平衡器8)的dns响应中指定的多个ip地址。在一个示例中,网络装置200可以从dns负载平衡器8接收dns响应,并将该dns响应转发给dns模块243。dns模块243可以确定dns响应包括多个ip地址,例如,图1的端点10a和10c的ip地址。dns模块243可以指示sla模块245对到端点10a和10c的wan链路执行sla测量。在一些示例中,sla模块245可以在到端点10a和10c的每个wan链路上发送探测数据包,以测量性能度量。例如,sla模块245可以实现一个或多个协议220,例如,icmp222、twamp224或http226,以在耦接到端点10a和10c的wan链路的出站链路260上发送探测数据包。

网络装置200可以接收对每个传送的探测数据包的响应,例如,icmp回声回复,该回复包括关于wan链路的参数。例如,sla模块245可以从到端点10c的icmpping和到网络装置200的相应icmp回复消息中确定到端点10c的wan链路的性能度量满足或最好地满足sla的等待时间要求。例如,sla模块245可以基于icmpping和回复来确定到端点10c的wan链路上的数据包的传输时间,并且确定传输时间在sla的等待时间要求内。类似地,sla模块245可以从到端点10a的icmpping和到网络装置200的相应icmp回复消息中确定到端点10a的wan链路的性能度量不满足sla的等待时间要求(或者比到端点10c的wan链路的等待时间更差)。

响应于确定哪个wan链路满足或最好地满足sla参数的要求,sla模块245可以通过重新配置ip地址的优先级来修改dns响应。例如,响应于确定到端点10c的wan链路满足或最好地满足sla要求,sla模块245可以修改dns响应,以将端点10c定义为新的主要ip地址,并将端点10a定义为次要ip地址。在一些示例中,sla模块245可以基于sla测量来对ip地址的性能进行排名。在这些示例中,sla模块245可以将性能最佳的wan链路配置为新的主要ip地址。

在一些示例中,sla模块245可以包括应用于每个性能度量的一个或多个策略。策略可以是可配置的。例如,sla模块245可以包括修改dns响应的策略,以指定具有更好或优选性能度量的端点的ip地址作为主要ip地址,并且可以指定先前指示的主要ip地址作为次要或故障转移ip地址。

在一些示例中,sla模块245可以包括定时器246,用于沿着wan链路主动发送探测数据包,以确定哪些wan链路满足sla要求。例如,sla模块245可以使用定时器246以周期性地向每个wan链路发送探测数据包,以便保持各种wan链路的度量的最新记录。在一些示例中,sla模块245可以基于不同的应用流量参数(例如,差分服务码点(dscp)值、转发类别、数据包大小(例如,最小、最大、平均值)和/或突发)来修改定时器246(例如,如果观察到突发,则将探测数据包与应用突发一起注入,以在突发期间检测应用sla度量;如果没有观察到突发,则不生成合成突发)。在一些示例中,如果应用流量具有一致的流量模式(例如,每秒几乎恒定的数据包(pps)),则定时器246可以被配置为具有恒定的间隔,以周期性地生成探测数据包。在一些示例中,如果系统正经历出口队列溢出或高cpu,则定时器246可以增加,以减少探测数据包流量。在一些示例中,如果应用程序没有恒定的流量速率,则探测数据包可以与应用程序流量成比例地生成。例如,可以1∶n的比例生成探测数据包,其中,n可以是应用流量的数据包的数量,使得为应用程序的每n个数据包发送一探测数据包。

图3是示出本公开中描述的技术的一个或多个方面的示例操作的流程图。参考图1的网络系统2描述图3。

在图3的示例中,客户端装置16a可以发送dns查询(302)。例如,客户端装置16可以执行客户端应用程序,来访问在端点10上托管的一个或多个应用服务。为了访问在端点10上托管的服务,客户端装置16a做出需要dns查找的请求。例如,客户端装置16a的客户端应用程序向dns负载平衡器8发送包括主机名的dns查询,以接收与主机名相关联的多个ip地址。

dns负载平衡器8接收dns查询(304),并发送包括多个ip地址的dns响应(306)。例如,响应于从客户端装置16a接收到dns查询,dns服务器8检索与dns查询中包括的主机名相关联的多个ip地址。在一些示例中,两个或多个端点10可以托管相同的服务。在这些示例中,dns负载平衡器8检索映射到主机名的每个端点的ip地址。dns负载平衡器8在dns响应中返回多个ip地址,并指示客户端装置16可以用于例如访问托管服务的端点10的主要ip地址和次要ip地址。

ce装置18可以接收dns响应(308)。例如,ce装置18可以拦截来自dns负载平衡器8的dns响应,并且可以对dns响应中识别的ip地址的每个wan链路执行sla测量。作为一个示例,ce装置18可以包括dns模块243,该模块识别来自dns负载平衡器8的dns响应中指定的ip地址。然后,dns模块243指示sla模块245对到ip地址的wan链路执行sla测量。例如,ce装置18的sla模块245可以向dns响应中识别的多个ip地址中的每一个发送探测数据包(310)。sla模块245可以使用qoe度量功能,例如,icmp、双向主动测量协议(twamp)、超文本传输协议(http)或其他探测机制来测量wan链路的性能度量。

在dns响应中识别的每个端点10可以接收探测数据包(312)并发送探测数据包回复(314)。作为一个示例,端点10可以接收icmp回波请求,并以包含icmp回波请求的有效载荷的icmp回波回复来响应。在一些示例中,一个或多个中间装置生成并发送对端点10的探测消息的响应。

ce装置18可以接收探测数据包响应(316),并确定哪个到端点的wan链路具有更好的性能度量(318)。作为一个示例,dns响应可以将端点10a的ip地址指示为主要ip地址,将端点10c的ip地址指示为次要ip地址。在该示例中,sla模块245可以基于探测数据包来确定到端点10a和10c的wan链路的性能度量,例如,传输时间。响应于该确定,ce装置18可以修改dns响应,以指定具有更好或优选性能度量的端点的ip地址作为主要ip地址(320)。例如,sla模块245可以指示dns模块243通过将主要ip地址设置为端点10c的ip地址来修改dns响应。在一些示例中,sla模块245可以指示dns模块243基于一个或多个可配置策略来修改dns响应。

ce装置18可以向客户端装置16a发送包括优选端点10的新主要ip地址的修改后的dns响应(322)。客户端装置16a接收修改后的dns响应(324),并且可以向修改后的dns响应中指定的主要ip地址发送流量(326)。

本文描述的技术可以硬件、软件、固件或其任意组合来实现。被描述为模块、单元或组件的各种特征可以一起在集成逻辑装置中实现,或者单独实现为分立但可互操作的逻辑装置或其他硬件装置。在一些情况下,电子电路的各种特征可以实现为一个或多个集成电路装置,例如,集成电路芯片或芯片组。

如果以硬件实现,则本公开可以涉及诸如处理器或集成电路装置之类的装置,例如,集成电路芯片或芯片组。可替代地或另外,如果以软件或固件实现,则这些技术可以至少部分地由包括指令的计算机可读数据存储介质实现,这些指令在被执行时促使处理器执行上述一种或多种方法。例如,计算机可读数据存储介质可以存储这样的指令,以供处理器执行。

计算机可读介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括封装材料。计算机可读介质可以包括计算机数据存储介质,例如,随机存取存储器(ram)、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)、闪存、磁或光数据存储介质等。在一些示例中,制品可以包括一个或多个计算机可读存储介质。

在一些示例中,计算机可读存储介质可以包括非暂时性介质。术语“非暂时性”可以表示存储介质不在载波或传播信号中体现。在某些示例中,非暂时性存储介质可以存储随时间变化的数据(例如,在ram或高速缓存中)。

代码或指令可以是由处理电路执行的软件和/或固件,该处理电路包括一个或多个处理器,例如,一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其他等效集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何前述结构或适合于实现本文描述的技术的任何其他结构。此外,在一些方面,可以在软件模块或硬件模块内提供本公开中描述的功能。

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