CN114650253A - 基于会话状态的网络策略应用 - Google Patents

基于会话状态的网络策略应用 Download PDF

Info

Publication number
CN114650253A
CN114650253A CN202111545065.0A CN202111545065A CN114650253A CN 114650253 A CN114650253 A CN 114650253A CN 202111545065 A CN202111545065 A CN 202111545065A CN 114650253 A CN114650253 A CN 114650253A
Authority
CN
China
Prior art keywords
session
network
state
router
packet
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.)
Pending
Application number
CN202111545065.0A
Other languages
English (en)
Inventor
P·蒂蒙斯
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.)
Juniper Networks Inc
Original Assignee
Juniper Networks Inc
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 Juniper Networks Inc filed Critical Juniper Networks Inc
Publication of CN114650253A publication Critical patent/CN114650253A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2475Traffic characterised by specific attributes, e.g. priority or QoS for supporting traffic characterised by the type of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/124Shortest path evaluation using a combination of metrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/306Route determination based on the nature of the carried application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

公开了用于检测会话的不同状态的技术,该会话包括客户端设备之间的网络业务的双向流,以便使得网络设备能够将不同的网络策略应用于会话的不同状态。在一个示例中,计算设备标识会话的多个状态并且定义多个网络策略。每个网络策略定义了在会话的每个状态期间的网络业务的性能要求。网络设备接收多个网络策略并确定会话的状态。网络设备基于与确定的会话状态相关联的网络策略的性能要求来选择路径。当会话处于确定的状态时,网络设备沿着选择的路径转发与会话相关联的业务。

Description

基于会话状态的网络策略应用
本申请要求2021年11月9日提交的美国申请号17/454,071的权益,该申请要求2020年12月21日提交的美国临时申请号63/128,672的权益。
技术领域
本公开一般涉及计算机网络,更具体地涉及在计算机网络内的路由分组。
背景技术
计算机网络是可以交换数据并共享资源的互连计算设备的集合。示例计算设备包括路由器、交换机和在开放系统互连(OSI)参考模型的层2(即数据链路层)内操作的其他层2(L2)网络设备,以及在OSI参考模型的层3(即网络层)内操作的层3(L3)网络设备。计算机网络内的网络设备常常包括为网络设备提供控制平面功能性的控制单元和用于路由或交换数据单元的转发组件。
计算设备可以建立“网络会话”(在本文中也被称为“会话”)以实现计算机网络上的设备之间的通信。会话可以是双向的,因为会话包括在第一设备和第二设备之间双向传播的分组。例如,会话包括源自第一设备并去往第二设备的前向分组流以及源自第二设备并去往第一设备的反向分组流。会话的前向和反向分组流彼此相关,因为前向分组流的源地址和源端口与反向分组流的目的地地址和目的地端口相同,并且前向分组流的目的地地址和目的地端口与反向分组流的源地址和源端口相同。为了建立会话,计算设备可以使用一个或多个通信会话协议,包括传输控制协议(TCP)、传输层安全(TLS)、用户数据报协议(UDP)、互联网控制消息协议(ICMP)等。
发明内容
公开了用于检测会话的不同状态以及为会话的每个状态生成不同网络策略的技术,该会话包括客户端设备之间的网络业务的双向流。如本文所述的网络设备可以基于与会话的状态相对应的网络策略来为与会话的每个状态相关联的网络业务选择网络路径。
在一个示例中,诸如协调器或软件定义的联网(SDN)控制器的集中式控制器标识会话的多个状态,该会话包括网络业务的双向流。例如,集中式控制器通过检查在一段时间内与会话相关联的网络业务的双向流的行为来标识会话的多个状态。在示例中,集中式控制器检查在会话的整个生命周期内(例如,从会话的建立到终止)的会话的行为。在一些示例中,多个状态包括会话建立状态(其中在两个客户端设备之间建立会话)、数据通信状态(其中在两个客户端设备之间交换数据)和拆除状态(其中数据交换完成并且两个客户端设备终止会话)。此外,集中式控制器生成网络策略,每个网络策略对应于会话的每个相应状态,并指定在该状态期间交换的网络业务的一个或多个性能要求。例如,集中式控制器可以基于由会话的服务级别协议(SLA)所阐明的要求确定一个或多个性能要求,包括路径的抖动、时延、分组丢失、带宽或成本,与会话相关联的网络业务将在会话的每个状态期间通过该路径被转发。集中式控制器将针对会话的状态的网络策略传送到形成网络的网络设备。
网络设备形成通过网络从第一客户端设备(例如,源设备)到第二客户端设备(例如,目的地设备)的多个路径。网络设备接收用于会话的状态的网络策略并确定包括第一和第二客户端设备之间的网络业务的双向流的会话的状态。网络设备基于由与确定的会话状态相对应的网络策略指定的一个或多个性能要求来选择多个路径中的一个路径。网络设备在会话状态期间通过选择的路径转发与会话相关联的网络业务。在一些示例中,网络设备检测会话建立状态,并且响应于会话建立状态的检测,选择用于在会话建立期间用于转发与会话相关联的网络业务的路径。在一些示例中,网络设备检测从会话的第一状态到第二状态的改变,并且响应于检测到的状态改变,选择用于转发与第二状态相关联的网络业务的路径。例如,响应于检测到从会话建立状态到数据通信状态的改变,网络设备选择用于转发与数据通信状态相关联的网络业务的路径。
本公开的技术可以对具有实际应用的计算机联网和路径选择的计算机相关领域提供具体改进。例如,网络设备可以在每个会话流的基础上应用网络策略。然而,会话在不同的时间可以具有不同的性能要求。本公开的技术可以使得网络设备能够标识不同的状态(在本文中也被称为“阶段”),以使得不同的网络策略可以被应用于特定会话的不同状态。会话的不同状态可以具有不同的性能要求。例如,会话的会话建立状态可以与会话的数据通信状态具有不同的性能要求。作为另一示例,用户交互地选择视频期间的视频流式传输服务的会话的状态可以与选择的视频被流式传输给用户期间的相同会话的状态具有不同的性能要求。本公开的技术可以使得网络设备能够标识这些不同的状态,并且在选择在其上转发与会话的特定状态相关联的网络业务的路径时,在特定于会话和特定于状态的级别上应用网络策略。以这种方式,本文所述的网络设备可以实现对路由决策和业务工程的更细粒度的控制,以使得网络设备可以更高效地转发网络业务并且更适当地保留资源,从而提高计算机网络的性能。
在一个示例中,本公开描述了一种方法,包括:由形成网络的多个网络设备中的网络设备接收多个网络策略,其中多个网络策略中的每个网络策略定义在会话的多个不同状态的每个状态期间的网络业务的一个或多个性能要求,并且其中会话包括第一客户端设备和第二客户端设备之间的网络业务的双向流;由网络设备确定会话的多个不同状态中的状态;由网络设备并基于与状态相关联的网络策略的一个或多个性能要求,选择通过网络的多个不同路径中的路径;并且由网络设备沿着选择的路径转发与会话相关联的网络业务。
在另一个示例中,本公开描述了一种方法,包括:由计算设备的处理电路并且基于与会话相关联的网络业务的双向流的行为,标识会话的多个状态;由处理电路并针对会话的多个状态中的每个状态,确定该状态期间的网络业务的一个或多个性能要求;由处理电路生成多个网络策略,其中多个网络策略中的每个网络策略指定在会话的多个不同状态的对应状态期间的网络业务的一个或多个性能要求;以及由处理电路向网络设备传送多个网络策略以应用于与会话相关联的网络业务。
在另一个示例中,本公开描述了形成网络的多个网络设备中的网络设备,该网络设备包括:存储设备;以及处理电路,该处理电路被配置为:接收多个网络策略,其中多个网络策略中的每个网络策略定义在会话的多个不同状态的每个状态期间的网络业务的一个或多个性能要求,并且其中该会话包括第一客户端设备和第二客户端设备之间的网络业务的双向流;确定会话的多个不同状态中的状态;基于与状态相关联的网络策略的一个或多个性能要求,选择通过网络的多个不同路径中的路径;并且沿着选择的路径转发与会话相关的网络业务。
在附图和以下描述中阐明了本公开的技术的一个或多个示例的细节。从描述和附图以及从权利要求中,本技术的其他特征、目的和优点将变得明显。
附图说明
图1是图示出根据本公开的技术的示例计算机网络系统的框图。
图2是图示出根据本公开的技术的被配置为转发业务的示例网络设备的框图。
图3是图示出根据本公开的技术的用于执行被配置为标识会话的状态的集中式控制器的示例计算设备的框图。
图4是图示出根据本公开的技术的示例操作的流程图。
贯穿附图和描述,相同的参考字符指代相同的元件。
具体实施方式
图1是图示出根据本公开的技术的示例计算机网络系统2的框图。在图1的示例中,计算机网络系统2包括服务提供商网络150A-150D(统称为“服务提供商网络150”),其被配置为向不同的客户网络140A-140B(统称为“客户网络140”)提供广域网(WAN)连通性。服务提供商网络150的路由器110A-110I(统称为“路由器110”)向与客户网络140相关联的客户端设备100A-100N(统称为“客户端设备100”)和客户端设备102A-102N(统称为“客户端设备102”)提供对服务提供商网络150的访问。在一些示例中,客户网络140是企业网络。客户端设备100、102和/或路由器110可以与通信链路16A-16G(统称为链路“16”)通信,通信链路可以是以太网、ATM或任何其他合适的网络连接。
路由器110在图1的示例中被图示为路由器。然而,本公开的技术可以使用任何网络设备来实现,诸如交换机、路由器、网关或可以发送和接收网络业务的其他合适的网络设备。例如,客户网络140可以是用于企业的地理上分离的站点的网络。每个客户网络140可以包括附加的客户装备,诸如一个或多个非边缘交换机、路由器、集线器、网关、诸如防火墙的安全设备、入侵检测和/或入侵预防设备、服务器、计算机终端、膝上型计算机、打印机、数据库、诸如蜂窝电话或个人数字助理的无线移动设备、无线接入点、网桥、电缆调制解调器、应用加速器、或图1中未描绘的其他路由器。图1中所图示的计算机网络系统2的配置仅仅是示例。例如,计算机网络系统2可以包括任意数目的客户网络140。然而,为了便于描述,在图1中仅图示出了客户网络140A-140B。
服务提供商网络150表示由一个或多个服务提供商拥有和操作的一个或多个可公共访问的计算机网络。虽然计算机网络系统2在图1的示例中被图示为包括多个互连的服务提供商网络150,但是在其他示例中,计算机网络系统2可以可替代地包括提供客户网络140之间的连通性的单个服务提供商网络。服务提供商通常是大型电信实体或公司。每个服务提供商网络150通常是大型L3计算机网络。每个服务提供商网络150是L3网络,其本质上支持OSI模型中描述的L3操作。常见的L3操作包括根据L3协议(诸如互联网协议(IP))执行的那些操作。L3在OSI模型中也被称为“网络层”,并且在整个公开中,术语L3可以与短语“网络层”互换使用。
虽然未图示出,但是每个服务提供商网络150可以耦合到由其他提供商所管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如互联网)的一部分。因此,客户网络140可以被视为互联网的边缘网络。每个服务提供商网络150可以向诸如客户端设备100和102的客户网络140内的计算设备提供对互联网的访问,并且可以允许客户网络140内的计算设备彼此通信。
尽管为了便于解释而没有示出附加的路由器,但是应当理解,系统2可以包括附加的网络和/或计算设备,诸如例如一个或多个附加的交换机、路由器、集线器、网关、诸如防火墙的安全设备、入侵检测和/或入侵预防设备、服务器、计算机终端、膝上型计算机、打印机、数据库、诸如蜂窝电话或个人数字助理的无线移动设备、无线接入点、网桥、电缆调制解调器、应用加速器或其他路由器。此外,尽管系统2的元件被图示为直接耦合,但是应当理解,可以沿着任何网络链路16包括一个或多个附加网络元件,以使得系统2的网络元件不直接耦合。
每个服务提供商网络150通常为客户网络140提供多种住宅和商业服务,包括住宅和商业级数据服务(其常常被称为“互联网服务”,因为这些数据服务允许访问被称为互联网的公共可访问网络的集合)、住宅和商业级电话和/或语音服务以及住宅和商业级电视服务。
在一些示例中,客户端设备102包括执行一个或多个网络服务实例的服务器。网络服务实例可以将一个或多个网络服务应用于客户端设备100的业务。每个网络服务实例可以是例如由由客户端设备102的处理电路执行的虚拟机所实例化的虚拟化网络服务。在一些示例中,网络服务实例是向客户端设备100的业务提供有状态防火墙服务的多个防火墙实例。在一些示例中,网络服务实例是向客户端设备100的业务提供深度分组检测服务的多个深度分组检测实例。
集中式控制器124提供逻辑上且在一些情况下提供物理上集中式控制器,用于促进服务提供商网络150内的一个或多个网络设备(诸如路由器110)的操作。在一些示例中,集中式控制器124可以响应于从网络管理员接收到的配置输入而操作。在一些示例中,集中式控制器124是协调器、软件定义的联网(SDN)控制器或虚拟网络控制器(VNC)。
在一些示例中,集中式控制器124管理服务提供商网络150的功能,诸如计算、存储、联网和应用资源。例如,集中式控制器124可以在路由器110群组上实施安全策略。集中式控制器124可以在服务提供商网络150内部署网络服务(例如负载平衡器)。在一些示例中,集中式控制器124管理网络和联网服务,诸如负载平衡或安全性。例如,集中式控制器124可以配置服务提供商网络150内的网络设备,诸如路由器110。在一些示例中,集中式控制器124在状态数据库内维护路由、联网和配置信息。
在一些示例中,集中式控制器124是网络管理系统(NMS)的一部分。NMS是管理服务提供商网络150并提供网络管理工具的集成套件的基于云的计算平台。一般而言,集中式控制器124的NMS可以提供用于网络数据采集、监控、活动日志记录、报告、预测分析、网络异常标识和警报生成的基于云的平台。在一些示例中,NMS将机器学习技术应用于传送到集中式控制器124的数据,以执行业务工程、标识故障的根本原因、为IT操作提供实时洞察力和简化的故障排除,并自动采取补救动作或提供建议以主动解决与网络系统2的操作有关的问题。在一些示例中,集中式控制器124的NMS可以包括一个或多个计算设备、专用服务器、虚拟机、容器、服务或其他形式的环境。对NMS的其他描述在2021年8月31日提交的题为“IDENTIFYING ROOT CAUSE OF FAILURES THROUGH DETECTION OF NETWORK SCOPEFAILURES”的美国专利申请号17/446,601中被描述。
基于会话的路由
在一些示例中,路由器110可以实现有状态的、基于会话的路由方案,其使得每个路由器110能够独立地执行路径选择和业务工程。基于会话的路由的使用可以使得路由器110能够避开诸如软件定义的联网(SDN)控制器的集中式控制器的使用以执行路径选择和业务工程。以这种方式,路由器110对于其中SDN控制器的使用将是不可行的大型网络而言可以是更高效和可扩展的。此外,基于会话的路由的使用可以使得路由器110能够避开隧道的使用,从而通过消除在隧道端点处执行封装和解封装的需要来节省相当多的网络资源。在一些示例中,路由器110将基于会话的路由实现为由瞻博(Juniper)网络公司提供的安全矢量路由(SVR)。
在图1的示例中,系统2的客户端设备100A与客户端设备102A建立会话40。路由器110通过在客户端设备100A和客户端设备102A之间传送网络业务来促进会话40的建立。在一些示例中,客户端设备100A可以被认为是“源”设备并且客户端设备102A可以被认为是“目的地设备”,因为客户端设备100A源发客户端设备100A和客户端设备102A之间的会话40,例如,客户端设备100A是会话的前向分组流的分组的“源”,而客户端设备102A是会话的前向分组流的分组的“目的地”。在本公开中,客户端设备100A可以被称为“源设备”并且客户端设备102A可以被称为“目的地设备”。会话40包括源自客户端设备100A并去往客户端设备102A的前向分组流以及源自客户端设备102A并去往客户端设备100A的反向分组流。会话40的前向分组流穿过第一路径,第一路径包括例如客户端设备100A、路由器110A-110I和客户端设备102A。如下文更详细地描述的,路由器110实现在客户网络140A、跨服务提供商网络150、到客户网络140B之间的业务的交换。
客户端设备100A(例如,源设备)可以根据一个或多个L2或L3通信会话协议(包括以太网、TCP或UDP),与客户端设备102A(例如,目的地设备)建立会话40。如下文更详细地描述的,客户网络140A可以形成第一网络并且客户网络140B可以形成第二网络。路由器110操作来将客户网络140A通过服务提供商网络150扩展到客户网络140B。以这种方式,即使客户网络140A和客户网络140B可能在逻辑上是隔离的并且在地理上是彼此分离的,客户网络140A和客户网络140B也可以操作得好像它们都是同一网络的一部分一样。此外,路由器110可以操作使得客户网络140A和客户网络140B之间的服务提供商网络150的存在对客户设备100、102是透明的。
客户端设备100可以根据一个或多个通信会话协议(包括TCP、TLS、UDP或ICMP等)来建立会话40。例如,为了根据TCP建立会话40以使得可以根据TCP来交换数据,客户端设备100A和客户端设备102A执行三次握手。客户端设备100A向客户端设备102A发送包括“SYN”标志的第一分组(例如,其经由路由器110通过服务提供商网络150转发)。客户端设备102A通过用包括“SYN-ACK”标志的第二分组(例如,其经由路由器110通过服务提供商网络150转发)以响应客户端设备100A来确认第一分组的接收。客户端设备100A通过用包括“ACK”标志的第三分组以响应客户端设备102A来确认第二分组的接收。在发送第三个分组之后,根据TCP来建立会话40,并且客户端设备100A、102A可以经由会话40彼此交换数据。在完成数据交换之后,客户端设备100A、102A中的一个客户端设备可以通过发送“FIN”消息以关闭连接来终止会话。关于TCP的附加示例信息在“传输控制协议”(请求注解(RFC)793,互联网工程任务组(IETF),1981年9月)中被描述,可在https://tools.ietf.org/html/rfc793获得。
为了根据TLS建立会话40,客户端设备100A和客户端设备102A在传送数据之前执行TLS握手以建立安全连接。在一些示例中,TLS握手发生在经由TCP握手建立TCP会话之后。TLS握手以三个阶段发生:密钥交换阶段、服务器参数阶段和认证阶段。在密钥交换阶段,客户端设备100A发送包括密码和密钥信息的客户端你好(ClientHello)消息。客户端设备102A以服务器你好(ServerHello)消息进行响应,其指示协商的连接参数。客户端你好和服务器你好的组合确定共享密钥。在服务器参数阶段,客户端设备102A发送加密扩展(EncryptedExtensions)消息,然后是证书请求(CertificateRequest)消息以建立服务器参数。最后,在认证阶段,客户端设备100A和客户端设备102A交换认证消息。具体地,客户端设备102A发送可选的证书消息、证书验证消息和完成消息。在从客户端设备102A接收到消息时,客户端设备100A用其认证消息(例如证书消息、证书验证消息(如果被请求)和完成消息)来响应。在客户端设备100A发生完成消息之后,握手完成,并且客户端设备100A、102A可以根据TLS经由会话40彼此交换数据。在完成数据交换之后,客户端设备100A、102A中的一个客户端设备可以通过发送“关闭通知”消息来终止会话,该消息指示设备将不再在连接上发送任何消息。有关TLS的其他示例信息在以下文献中被描述:“The Transport LayerSecurity(TLS)Protocol Version 1.2”(RFC 5246,IETF,2008年8月),可从https://tools.ietf.org/html/rfc5246获得;和“The Transport Layer Security(TLS)ProtocolVersion 1.3”(RFC8446,IETF,2018年8月),可从https://tools.ietf.org/html/rfc8446获得。
UDP是一种无连接协议,因为路由器110A在传送数据之前不验证路由器110B是否能够接收数据。为了根据UDP来建立会话40,路由器110A向路由器110B传送第一分组。当路由器110A接收到来自路由器110B的任何分组时,会话40可以被认为是根据UDP“已建立”,这意味着路由器110B成功地接收到来自路由器110A的第一分组,进行响应,并且路由器110A能够接收到来自路由器110B的响应。关于UDP的其他示例信息在“用户数据报协议”(RFC768,IETF,1980年8月28日)中被描述,可在https://tools.ietf.org/html/rfc768获得。
在图1的示例中,当路由器110A接收到源自客户端设备100A并去往客户端设备102A的前向分组流的分组时,路由器110A确定该分组是否属于新的会话(例如,是会话40的“第一”分组或“引导”分组)。在一些示例中,路由器110A确定第一分组中包括的信息(例如,源地址、源端口、目的地地址、目的地端口和协议)与会话表中的条目匹配。
如果不存在这样的条目,则路由器110A确定该分组属于新的会话,并在会话表中创建条目。此外,如果分组属于新的会话,则路由器110A可以生成用于会话40的会话标识符。会话标识符可以包括例如客户端设备100A的源地址和源端口、客户端设备102A的目的地地址和目的地端口、由第一分组所使用的协议、从其中转发分组的客户端设备100A的接口的接口标识符、以及客户端设备100A被分配到的虚拟局域网(VLAN)标识符。路由器110A可以使用会话标识符来将后续分组标识为属于同一会话。
在一些示例中,路由器110为会话40执行有状态路由。例如,路由器110可以顺序地并且沿着相同的前向网络路径转发会话40的前向分组流的每个分组。如本文所描述的,“相同的”前向路径可以意指相同的路由器110,其形成源发分组的设备和分组所去往的设备之间的段或至少一部分(并且不一定是源发分组的设备和分组所去往的设备之间的整个网络路径)。此外,路由器110顺序地并且沿着相同的返回网络路径转发会话40的返回流的每个分组。会话40的前向分组流的前向网络路径和会话40的返回分组流的返回网络路径可以是相同的路径或不同的路径。通过确保流的每个分组顺序地并沿着相同的路径被转发,路由器110在每个路由器110处维持整个流的状态,从而使得能够使用有状态分组服务,诸如深度分组检测(DPI)或有状态防火墙服务。
在图1的示例中,可以从入口路由器110A通过一个或多个中间路由器110C-110H到出口路由器110I建立有状态路由会话。在该示例中,路由器110A确定第一分组是未修改的分组和新的会话40的第一分组。路由器110A修改第一分组以包括指定会话标识符(例如,原始源地址、源端口、目的地地址、目标端口和/或协议)的元数据和/或其他策略和控制参数。路由器110A替换修改后的第一分组的报头以指定:源地址是路由器110A的地址,源端口是路由器110A向服务器103转发修改后的第一分组所经由的端口,目的地地址是路由器110A将第一分组转发到的下一跳的地址(例如,路由器110D的地址),以及目的地端口是路由器110A将第一分组转发到的下一跳的端口(例如,路由器110D的端口)。附加地,路由器110A存储用于会话40的会话标识符和用于会话40的选择的下一跳(例如,路由器110D)的指示,以使得在接收到会话40的后续分组时,路由器110A可以将后续分组标识为属于相同的会话40并沿着与第一分组相同的路径转发后续分组,而无需修改以包括元数据。
路由器110A还可以标识与会话40相关联的网络服务。例如,路由器110A可以将会话的源地址、源端口、目的地地址或目的地端口中的一个或多个与用于标识与会话相关联的服务的端口信息和服务地址的表进行比较。网络服务的示例包括超文本传输协议(HTTP)、防火墙服务、代理服务、分组监控或度量服务等。例如,路由器110A可以确定会话40的前向分组流指定分配给客户端设备102A的目的地地址和目的地端口。此后,路由器110A可以存储会话40与所标识的网络服务之间的关联。作为另一示例,如果会话40的源端口和/或目的地端口是80,则路由器110A可以确定会话40与HTTP服务相关联。在其他示例中,路由器110A可以确定会话40的源地址、源端口、目的地地址或目的地端口中的一个或多个属于指示特定服务与会话40相关联的地址块或端口的块。
在一些示例中,路由器110A使用确定的用于会话40的网络服务来选择用于朝向客户端设备102A转发会话40的前向分组流的第一分组和每个后续分组的前向路径。以这种方式,路由器110A可以执行特定于服务的路径选择,以选择最适合该服务的性能要求的网络路径。与使用SDN控制器执行路径选择的网络拓扑对照而言,每个路由器110执行路径选择。此外,基于会话的路由的使用使得每个路由器110能够在服务级别或应用级别做出路由决定,这与仅能够在流级别做出路由决定的传统路由器形成对比。
路由器110A将修改后的第一分组转发到路由器110D。中间路由器110D接收修改后的第一分组,并确定修改后的第一分组是否包括指定会话标识符的元数据。响应于确定修改后的第一分组包括指定会话标识符的元数据,中间路由器110D确定路由器110D不是入口设备,因此路由器110D不附加指定会话标识符的元数据。
如以上关于路由器110A所描述的,路由器110B通过确定第一分组的源地址、源端口、目的地地址、目的地端口和协议是否匹配会话表中的条目来确定分组是否属于新的会话(例如,是会话的“第一”分组或“引导”分组)。如果不存在这样的条目,则路由器110B确定该分组属于新的会话,并在会话表中创建条目。此外,如果该分组属于新的会话,则路由器110B生成用于该会话的会话标识符。路由器110B用来标识第一分组的会话的会话标识符可以不同于路由器110A用来标识第一分组的相同会话的会话标识符,因为每个路由器110A、110B使用第一分组的报头源地址、源端口、目的地地址和目的地端口来生成会话标识符,并且当每个路由器110沿着前向路径转发第一分组时,每个在前路由器110可以修改该报头信息。此外,每个路由器110可以存储该报头信息以标识前一个路由器110(或“路点”)和下一个路由器110(或“路点”),以使得每个路由器110可以为该会话的每个后续分组重构相同的前向路径和反向路径。
路由器110B替换修改后的第一分组的报头以指定:源地址是路由器110B的地址,源端口是路由器110B向客户端设备102A转发修改后的第一分组所经由的端口,目的地地址是路由器110B将第一分组转发到的下一跳的地址(例如,沿着第一路径的会话40的路由器110C的地址),以及目的地端口是路由器110B转发第一分组的下一跳的端口(例如,路由器110C的端口)。路由器110B将修改后的第一分组转发到路由器110C。附加地,路由器110B存储用于会话的会话标识符,以使得在接收到该会话的后续分组后,路由器110B可以将后续分组标识为属于同一会话,并沿着与第一分组相同的路径转发该后续分组。
后续中间路由器110C-110H以与路由器110A和110B类似的方式处理修改后的第一分组,以使得路由器110沿着与第一分组相同的路径转发会话的后续分组。此外,每个路由器110存储用于会话的会话标识符,其可以包括沿着网络路径的前一路由器110的标识。因此,每个路由器110可以使用会话标识符来将用于会话的反向分组流的分组沿着相同的网络路径转发回到客户端设备100A。
可以将会话的前向分组流的分组转发到分组流的目的地的路由器110是出口或“终点”路由器。在前述示例中,路由器110I是终端路由器,因为路由器110I可以将分组转发到客户端设备102A。路由器110I接收包括指定会话标识符(例如,原始源地址、源端口、目的地地址和目的地端口)的元数据的修改后的第一分组。路由器110I通过确定修改后的引导分组的元数据中指定的目的地源地址和目的地源端口对应于路由器110I(例如,客户端设备102A)。路由器110I通过从修改后的第一分组中移除元数据并使用元数据来修改第一分组的报头以指定原始源地址、源端口、目的地地址和目的地端口,从而恢复原始第一分组。路由器110I将恢复的第一分组转发到客户端设备102A。因此,基于会话的路由的使用可以形成通过路径“段”(例如,每个路点之间的端到端路由向量)互连的一系列路点(例如,路由器110)。
关于基于会话的路由和SVR的附加信息在以下文献中被描述:2017年8月8日颁发的题为“COMPUTER NETWORK PACKET FLOW CONTROLLER”的美国专利号9,729,439;2017年8月8日颁发的题为“NETWORK DEVICE AND METHOD FOR PROCESSING ASESSION USING APACKET SIGNATURE”的美国专利号9,729,682;2017年9月12日颁发的题为“NETWORK PACKETFLOW CONTROLLER WITH EXTENDED SESSION MANAGEMENT”的美国专利号9,762,485;2018年1月16日颁发的题为“ROUTER WITH OPTIMIZED STATISTICAL FUNCTIONALITY”的美国专利号9,871,748;2018年5月29日颁发的题为“NAME-BASED ROUTING SYSTEM AND METHOD”的美国专利号9,985,883;2019年2月5日颁发的题为“LINK STATUS MONITORING BASED ONPACKET LOSS DETECTION”的美国专利号10,200,264;2019年4月30日颁发的题为“STATEFULLOAD BALANCING IN A STATELESS NETWORK”的美国专利号10,277,506;2019年10月1日颁发的题为“NETWORK PACKET FLOW CONTROLLER WITH EXTENDED SESSION MANAGEMENT”的美国专利号10,432,522;以及2020年12月24日公开的题为“IN-LINE PERFORMANCEMONITORING”的美国专利申请公开号2020/0403890。
关于基于会话的路由和SVR的其他信息在“安全矢量路由(SVR)”(互联网草案,网络工作组,IETF,2021年10月1日)中被描述,可以从https://datatracker.ietf.org/doc/draft-menon-svr获得。
交换服务和拓扑状态信息
在一些示例中,为了实现基于会话的路由,每个路由器110维护每个其他路由器110的服务和拓扑状态信息的本地储存库。服务和拓扑状态信息包括从每个路由器110可到达的服务,以及来自每个路由器的网络拓扑,用于到达这些服务。每个路由器110可以将从路由器110可到达的服务的变化和/或用于从路由器到达服务的网络拓扑的变化传送到集中式控制器124的中央存储库120,例如服务器或其他计算设备。此外,每个路由器110可以从中央存储库120接收系统2中的每个其他路由器110的服务和拓扑状态信息。在一些示例中,每个路由器110以指定每个路由器110的服务和拓扑状态信息的javascript对象符号(JSON)文档的形式来传送和接收服务和拓扑状态信息。
在一些示例中,路由器110根据发布-订阅模型操作。根据该模型,每个路由器110向中央存储库120发布从路由器110可到达的服务的一个或多个改变和/或用于从路由器110到达服务的网络拓扑的一个或多个改变。其他路由器110可以订阅从中央存储库120接收针对路由器110的发布。响应于接收到路由器110的服务和拓扑状态信息的改变,中央存储库120存储路由器110的服务和拓扑状态信息的改变。此外,中央存储库120将路由器110的服务和拓扑状态信息的改变发布给订阅接收路由器110的更新和/或改变的其他路由器110。
在前述示例中,路由器110A接收分组,确定用于包括分组的前向分组流的会话40,确定与会话40相关联的服务,并选择用于转发分组的网络路径。路由器110A可以使用每个路由器110的服务和拓扑状态信息的本地副本来选择用于转发分组的网络路径。例如,路由器110A可以使用与分组相关联的所标识的服务和用于到达标识的服务的网络拓扑来选择符合服务的SLA要求或其他会话性能要求的网络路径。路由器110A然后可以沿着选择的路径转发会话40的前向分组流的分组和后续分组。以这种方式,路由器110A可以执行特定于服务的路径选择,因为路由器110可以使用特定于与分组相关联的服务的标准来选择最适合该服务的性能要求的网络路径。
在一些示例中,路由器110的接口可以被分配给一个或多个“邻域”。“邻域”被定义为应用于路由器110的接口的标签。同一邻域内的路由器110能够彼此形成对等关系。例如,具有应用邻域标签的接口的每个路由器110通过第3层网络可到达具有应用相同邻域标签的接口的每个其他路由器110。在一些示例中,一个或多个邻域可以聚合为一个“区域”。一个区域是一个或多个邻域的逻辑分组。通常,自治系统(AS)(在本文中也被称为“机构”)可以被划分为一个或多个区域,每个区域包括一个或多个邻域。
在一些示例中,每个路由器110仅针对相同邻域内的那些其他路由器110维护服务和拓扑状态信息的本地储存库。在一些示例中,每个路由器110仅针对相同邻域内的那些其他路由器110维护服务和拓扑状态信息的本地储存库。作为示例,服务提供商网络150的一个或多个域可以被组织成不同的“区域”,并且每个域内的每个子域可以被认为是该区域内的邻域。在该示例中,服务提供商网络150内的每个路由器110A、110B和110C可以仅维护彼此的服务和拓扑状态信息,而不维护服务提供商网络150外的路由器的服务和拓扑状态信息。作为另一示例,路由器110A和110B可以被组织成第一区域或邻域,而路由器110B和110C可以被组织成第二区域或邻域。在该示例中,路由器110A仅维护路由器110A和110B的服务和拓扑状态信息而不维护路由器110C的服务和拓扑状态信息,路由器110C仅维护路由器110B和110C的服务和拓扑状态信息而不维护路由器110A的服务和拓扑状态信息,而路由器110B可以维护路由器110A、110B和110C中的每一个的服务和拓扑状态信息。在其他示例中,管理员可以将一个或多个服务提供商网络150分配到一个或多个区域、一个或多个邻域、或区域和邻域的组合中,以满足网络系统2的需要。
在一些示例中,中央存储库120实现可从128科技有限公司和juniper networks有限公司获得的服务和拓扑交换协议(STEP)储存库。关于服务和拓扑状态信息的交换的附加信息在以下文献中被描述:2020年11月19日公开的题为“CENTRAL AUTHORITY FOR SERVICEAND TOPOLOGY EXCHANGE”的美国专利申请公开号2020/0366590;2020年11月19日公开的题为“SOURCE-BASED ROUTING”的美国专利申请公开号2020/0366599;2020年11月19日公开的题为“SERVICE AND TOPOLOGY EXCHANGE PROTOCOL”的美国专利申请公开号2020/0366598;2020年11月19日公开的题为“ROUTING USING SEGMENT-BASED METRICS”的美国专利申请公开号2020/0366589;以及2018年7月31日提交的题为“NETWORK NEIGHBORHOODS FORESTABLISHING COMMUNICATION RELATIONSHIPS BETWEEN COMMUNICATION INTERFACES INAN ADMINISTRATIVE DOMAIN”的美国专利申请号16/050,722。
流内(In-flow)性能监控
双向转发检测(BFD)是被用来检测诸如路由器110A和110D之间的链路16B的两个网络设备之间的双向路径中的故障的网络协议。BFD为两个路由器之间的链路中的故障提供低开销、短持续时间的检测。此外,BFD提供了可以被用于在任何协议层在任何介质上进行活跃度检测的单个机制,其具有宽范围的检测时间和开销,以避免相邻设备之间的不同方法的激增。BFD在两个网络设备之间转发的任何数据协议(网络层、链路层、隧道等)之上操作。通常,BFD以单播、点对点模式操作。BFD分组作为适于介质和网络的任何封装协议的有效负载而被携带。
根据BFD,路由器110A和110D通过链路16B来建立BFD会话。通常,路由器110A和110D用三次握手来建立以及拆除BFD会话。只有在路由器110A和110D之间建立双向通信之后,路由器110A和110D才可以声明链路16B是可操作的。然而,这并不排除单向链路的使用。例如,链路16B可以表示从路由器110A到路由器110D的第一单向链路,以及从路由器110D到路由器110A的第二单向链路。
在BFD会话被建立后,路由器110A和110D就通过链路16B来周期性地传送BFD分组。每个路由器110A、110D估计它可以多快地发送和接收BFD分组,以便与对等路由器110A、110D协商故障检测可以多快地发生。在一些示例中,路由器110A和110D可以实时地修改这些估计以适应网络拥塞、时延或带宽的改变、或其他异常情形。这可以允许在快速网络设备和慢速网络设备之间使用共享介质,同时允许快速网络设备更快速地检测故障,同时允许慢速网络设备参与故障检测。
BFD可以以两种模式来操作:异步模式和需求模式。在异步模式中,如果路由器110A和110D中的一个路由器停止接收BFD分组一段时间量(其长度如上所述被协商),则路由器110A和110D可以假定链路16B(或形成链路16B的组件、设备或路径)已发生故障。在需求模式中,路由器110A和110D可以协商不发送周期性BFD分组,以便减少开销。这假定路由器110A和110D具有另一种方式来验证彼此的连通性,诸如经由物理层。然而,如果需要,路由器110A、110D中的任何一个路由器仍然可以发送BFD分组。
附加地,路由器110A、110D中的任何一个可以使用回波功能。当该功能激活时,路由器110A例如向路由器110D发送回波分组的流式传输。路由器110D通过经由路由器110D的转发平面将回波分组传送回路由器110A来进行响应。路由器110A可以使用回波功能来测试路由器110D的前向路径,反之亦然。关于BFD的其他示例信息在“BidirectionalForwarding Detection(BFD)”(RFC 5880,IETF,2010年6月)中被描述,可以在https://datatracker.ietf.org/doc/html/rfc5880获得。
路由器110为两个网络设备之间使用的每个通信路径和数据协议创建单独的BFD会话。例如,为了沿着路由器110A和110I之间的整个路径执行故障检测,可以沿着每条链路16建立不同的BFD会话,例如,诸如沿着链路16B的路由器110A和110D之间的第一BFD会话、沿着链路16D的路由器110D和110E之间的第二BFD会话、路由器110E和110F之间的第三BFD会话,等等。
在一些示例中,在两个路由器之间使用专用BFD会话可能是不可行的,诸如在使用这种专用BFD会话会消耗网络资源的情况下,否则这些资源可以被用于发送和接收客户业务。为了减少用于性能监控的网络资源的消耗,路由器110可以使用流入性能监控。例如,每个路由器110可以修改携带用于客户端设备100之间的会话的客户数据的分组以包括元数据,该元数据除了会话信息之外还包括性能度量信息。例如,客户端设备100A和客户端设备102A之间的会话包括源自客户端设备100A并去往客户端设备102A的前向流和源自客户端设备102A并去往客户端设备100A的反向流。路由器110A从客户端设备100A接收前向流的第一分组,该第一分组包括报头和数据有效负载。路由器110A修改第一分组以进一步包括包含第一性能信息的元数据,并将修改后的第一分组转发到路由器110D。路由器110D可以从第一分组的元数据中获得第一性能信息。此外,路由器110D可以移除元数据并将第一分组转发到客户端设备102A(例如,通过将分组转发到路由器110C)。
附加地,路由器110D从客户端设备102A接收反向流的第二分组,该第二分组包括报头和数据有效负载。路由器110D修改第二包以进一步包括包含第二性能信息的元数据,并将修改后的第二包转发到路由器110A。路由器110A可以从第二分组的元数据中获得第二性能信息。此外,路由器110A可以移除元数据并向客户端设备100A转发第二分组。
在一些示例中,元数据包括BFD分组。在一些示例中,元数据包括路由器110A、110D可以用来确定性能信息的时间戳。在一些示例中,元数据包括网络性能的量度,诸如时延、抖动、分组丢失、带宽等的量度。例如,路由器110A修改前向流的第一分组以包括指定第一时间戳的元数据,该第一时间戳指示路由器110A朝向路由器110D转发第一分组的时间。路由器110D修改反向流的第二分组以包括指定第二时间戳和/或第三时间戳的元数据,该第二时间戳指示路由器110D从路由器110A接收第一分组的时间,该第三时间戳指示路由器110D朝向路由器110A转发第二分组的时间。路由器110A和110D可以交换多个这种修改后的分组,以获得关于路由器110A和110D之间的链路16B的性能的多个数据点。例如,路由器110A可以处理多个时间戳,以生成针对路由器110A和110D之间的链路16B的度量,诸如时延、抖动、分组丢失、带宽等。以这种方式,路由器110A和110D可以实施链路16B的链路性能监控,而不中断客户端设备100之间的客户业务或通过使用用于性能监控的专用BFD会话而消耗额外的网络资源。
关于性能监控的附加信息在以下文献中被描述:2020年12月24日公开的题为“IN-LINE PERFORMANCE MONITORING”的美国专利申请公布号2020/0403890;以及2019年2月5日公开的题为“LINK STATUS MONITORING BASED ON PACKET LOSS DETECTION”的美国专利申请公开号10,200,264。
会话迁移
如上所述,路由器110顺序地并且沿着相同的前向网络路径转发会话40的前向分组流中的每个分组。此外,路由器110顺序地并且沿着相同的反向网络路径(其可以与前向网络路径相同或不同)转发会话40的反向分组流中的每个分组。例如,如图1的示例中所描绘的,路由器110A将用于会话40的前向分组流的网络业务转发到路由器110D,路由器110D继而又将用于会话40的网络业务转发到路由器110E,以此类推通过路由器110F-110I。
然而,由于客户网络140或服务提供商网络150的动态变化,路由器110用来转发用于会话40的流量的路径可能不再合适。该路径可能变得不合适,例如在链路16中的一个链路或路由器110中的一个路由器的接口发生故障的情况下,在用于会话40的网络业务的优先级发生改变的情况下,在会话40穿过的路径的性能降低或无法满足SLA性能要求的情况下,或者在客户网络140中的改变使得该路径不适合会话40的情况下(例如,诸如由于客户端网关的故障)。
因此,在一些示例中,路由器110可以修改转发用于会话40的中间流式传输所通过的路径。例如,一个或多个路由器110可以选择向其转发用于会话40的分组的不同的下一跳路由器110,或者选择发送或接收用于会话40的分组所利用的不同的入口或出口接口。如上所述,每个路由器生成用于会话40的会话标识符,其基于源路由器和目的地路由器两者的IP地址和端口。因此,当修改会话40所使用的路径时,路由器110可以使用特殊的处理程序来确保在将会话40迁移到新路径时不会丢失会话40的有状态性质。在一些示例中,这些特殊处理程序可以包括在旧路径的路由器与新路径的路由器之间共享元数据。该元数据可以分别包括例如客户端设备100A和102A的源和目的地IP地址和端口信息,以及用于应用到客户端设备100A和102A之间的流量的一个或多个策略,诸如网络、路由或安全策略。
在一些示例中,路由器110A为每个流维持动作链。动作链包括指定流的状态的链描述符。动作链还包括一系列功能块,每个功能块定义要作为与流相关联的路由分组的一部分来执行的特定功能。路由器110可以根据动作链的每个功能块来操作,以便为对应于动作链的流实现分组的路由。例如,动作链的功能块可以指定路由操作,该路由操作包括例如路由器110A的出口接口、路由器110A的IP地址或端口、下一跳路由器110D、路由器110D的入口接口、或路由器110D的IP地址或端口等的标识。
路由器110A可以修改用于会话40的路径,以便以下面的方式迁移会话40。路由器110A停用会话40的现有流。为了停用会话40的现有流,路由器110A修改用于会话40的流的动作链的链描述符以指定该流是无效的和/或停用的,以使得路由器110A可以不使用该动作链来转发该流的后续分组。接下来,路由器110A为会话40建立新流,而现有流被停用。例如,路由器110A可以定义反映会话40的改变的新动作链。作为下一跳路由器110D发生故障的示例,路由器110A定义新动作链的功能块,该功能块指定路由操作,该路由操作包括例如路由器110A的出口接口、路由器110A的IP地址或端口、下一跳路由器110C(而不是路由器110D)、路由器110C的入口接口或路由器110C的IP地址或端口等的标识。在一些示例中,在建立新流的同时,路由器110A可以对为流接收的分组执行特殊处理,诸如缓冲分组、丢弃分组、将分组转发到服务路径等。路由器110A激活新流,并经由用于新流的新路径来转发用于会话40的接收分组。例如,为了激活新流,路由器110A可以根据反映对该流的改变的新动作链来开始处理为流接收的分组。路由器110A随后可以删除现在无效和/或停用的旧动作链。
在一些示例中,路由器110A可以不一定被要求将会话40的路径改变和/或迁移通知其他路由器(例如,路由器110D和110C)。如上所述,每个路由器110生成基于源路由器和目的地路由器两者的IP地址和端口的用于会话40的会话标识符。例如,如果路由器110D接收到包括未知会话标识符的分组(这可能是在中间流式传输迁移的会话的分组的情况),则路由器110D可以存储该会话标识符并执行该分组的基于会话的路由,以便将该分组作为新的会话的第一分组对待。
路由器110可以在多种情形中修改会话40的前向分组流或反向分组流所使用的路径。例如,当路由器110D在路由器110D的不正确接口上从路由器110A接收到用于会话40的前向分组流的分组时,路由器110D可以修改分组流。在该示例中,路由器110D可以如上所述修改前向分组流,以使得路由器110D在正确的接口上从路由器110A接收用于前向分组流的后续分组。
作为另一示例,路由器110可以响应于检测到路由故障而修改分组流。例如,如果路由器110A检测到链路16B的故障、路由器110D的接口的故障或路由器110D(例如,用于会话40的前向分组流的下一跳路由器)的故障,则路由故障可能发生。作为响应,例如,路由器110A可以通过选择不同的路由器110(例如,诸如路由器110C)作为用于会话40的前向分组流的下一跳路由器来修改分组流。作为另一示例,路由器110A可以通过选择到路由器110C的链路16C或将分组流引导到路由器110D的不同入口接口来修改分组流。在一些示例中,路由器110可以使用BFD来检测路径故障,如上所述。
作为另一示例,路由器110可以响应于消息冲突来修改分组流。在一些示例中,路由器110可以修改会话的前向和反向流,以便基于针对该会话接收到的最新活动(例如,接收分组)来定义路由策略。然而,在第一和第二路由器同时向彼此传送相应的第一和第二分组、以及第一路由器在第二路由器接收第一分组之前接收第二分组的情况下,第一路由器可以基于第二分组建立用于会话的流。随后,第二路由器可以接收第一分组,这可能需要第一路由器重新建立用于会话的流。在该示例中,第一路由器可以如上所述根据由随后接收到的第二分组所定义的路由策略来修改流。
在一些示例中,路由器110可以响应于检测到与客户端设备100的网络配置相关的附加信息来修改分组流。例如,路由器110可以响应于检测到一个或多个客户端设备100对源网络地址转换(SNAT)的使用而修改分组流。
关于会话迁移的附加信息在如下文献中被描述:2020年11月17日公开的题为“FLOW MODIFICATION INCLUDING SHARED CONTEXT”的美国专利号10,841,206;2021年2月4日公开的题为“FLOW MODIFICATION INCLUDING SHARED CONTEXT”的美国专利申请公开号2021/0036953;2021年2月4日公开的题为“FLOW MODIFICATION INCLUDING SHAREDCONTEXT”的美国专利申请公开号2021/0036953;2019年4月19日公开的题为“DETECTINGSOURCE NETWORK ADDRESS TRANSLATION IN A COMMUNICATION SYSTEM”的美国专利号10,257,061;2020年12月21日提交的题为“NETWORKING DEVICE AND METHOD FOR MODIFYINGNETWORK LAYER PATHS IN RESPONSE TO SESSION STATE CHANGES”的美国临时专利申请No.63/128,672;2019年10月1日公开的题为“PACKET REDIRECTING ROUTER”的美国专利号10,432,519;以及2019年9月24日公开的题为“METHOD AND APPARATUS FOR MANAGINGROUTING DISRUPTIONS IN A COMPUTER NETWORK”的美国专利号10,425,511。
使用会话状态改变进行转发
根据本公开的技术,中央存储库120的会话状态策略模块122标识会话40的不同状态,并且为每个状态生成不同的网络策略,该会话40包括客户端设备100A、102A之间的网络业务的双向流。如下文更详细描述的,路由器110基于与会话40的状态相对应的网络策略选择用于与会话40的每个状态相关联的网络业务的网络路径。
在一个示例中,会话状态策略模块122标识会话40的多个状态。如上所述,会话40包括客户端设备100A、102A之间的网络业务的双向流,例如,源自客户端设备100A并去往客户端设备102A的前向分组流以及源自客户端设备102A并去往客户端设备100A的反向分组流。例如,会话状态策略模块122通过检查在一段时间内与会话40相关联的网络业务的双向流的行为来标识会话40的多个状态。在一些示例中,会话状态策略模块122在会话的整个生命周期内(例如,从会话的建立到终止,或从与会话40相关联的第一分组被发送的时间到与会话40相关联的最后一个分组被发送的时间)检查与会话40相关联的网络业务的双向流的行为。在一些示例中,多个状态包括会话建立状态、数据通信状态和拆除状态。在会话建立状态期间,客户端设备100、102可以执行套接字设置、密码设置或交换TCP握手或TLS握手。在数据通信状态期间,客户端设备100、102可以交换数据。在拆除状态期间,客户端设备100、102终止会话并关闭连接。
附加地,会话状态策略模块122生成多个网络策略,每个网络策略对应于会话40的每个相应状态并且指定在相应状态期间交换的网络业务的一个或多个性能要求。例如,会话状态策略模块122确定一个或多个性能要求,包括路径的抖动、时延、分组丢失、带宽或成本,与会话40相关联的网络业务将在会话40的每个状态期间通过该路径被转发。在一些示例中,会话状态策略模块122基于SLA针对会话40所阐明的要求来确定网络业务的性能要求。会话状态策略模块122将针对会话40的状态的网络策略传送到路由器110。
本公开的技术可以使得路由器110能够检测许多不同类型的会话的许多不同状态,并且在特定于状态、特定于会话的基础上执行路径选择。例如,网络系统2的业务可以与特定类型的业务类别或业务分类相关联,诸如实时业务类别,诸如互联网协议语音(VoIP)类别、交互式视频类别、远程桌面类别、或游戏类别,或者非实时业务类别,诸如网络管理类别、流式传输视频类别、交互数据类别或数据传送类别。每个类别的业务可以取决于不同的性能特性。例如,与VoIP类别相关联的业务可能对时延、丢失和抖动非常敏感。作为另一示例,与游戏分类相关联的业务对时延非常敏感,但对丢失相当不敏感。作为另一示例,流式传输视频可能对丢失、时延和抖动相对不敏感,但是可能依赖于大的带宽。由路由器110服务的许多不同会话中的每个会话可以与不同于其他会话的不同类型的业务类别相关联。此外,如本文所述,每个会话的每个状态还可以与不同于同一会话的每个其他状态的不同类型的业务类别相关联。本公开的技术可以使得路由器110能够取决于检测到的会话的状态来使用不同的网络策略进行路径选择,以使得路由器110不仅可以执行特定于会话的路径选择,而且还可以附加地执行特定于会话状态的路径选择。
作为关于图1的说明性示例,网络系统2的路由器110转发与多个不同类型的多个不同会话相关联的在客户端100、102之间的业务。例如,每个不同类型的会话可以与不同类型的应用相关联。例如,由第一供应商提供的第一网络会议应用、由第二供应商提供的第二网络会议应用、电子邮件应用和视频流式传输应用中的每个应用可以与相应类型的会话相关联。
在图1的示例中,会话40是第一会话类型。会话状态策略模块122接收描述在一段时间内与第一类型的会话相关联的在客户端设备100、102之间的网络业务的双向流的行为的信息。在一些示例中,该信息描述了在这种会话的整个生命周期内(例如,从会话的建立到终止或拆除)与第一类型的会话相关联的在客户端设备100、102之间的网络业务的双向流的行为。会话状态策略模块122基于行为来确定第一会话类型的会话的多个状态。如关于图3更详细地描述的,会话状态策略模块122确定第一类型的会话(包括会话40)包括会话建立状态、数据通信状态和拆除状态。
基于SLA针对第一类型的会话所阐明的要求,会话状态策略模块122确定第一网络策略,该第一网络策略指定在第一类型会话的会话建立状态期间交换的网络业务的第一性能要求。例如,第一网络策略可以指定第一状态期间的网络业务的低时延和DSCP信令要求。此外,基于SLA针对第一类型的会话所阐明的要求,会话状态策略模块122确定第二网络策略,该第二网络策略指定在第一类型会话的数据通信状态期间交换的网络业务的第二性能要求。第二网络策略可以指定第二状态期间的网络业务的低时延、低抖动、高带宽和DSCP实时交互要求。基于SLA针对第一类型的会话所阐明的要求,会话状态策略模块122确定第三网络策略,该第三网络策略指定在第一类型会话的拆除状态期间交换的网络业务的一个或多个第三性能要求。第三网络策略可以指定第三状态期间的网络业务的高时延、高抖动和低带宽要求。
会话状态策略模块122将第一网络策略和第二网络策略传送到路由器110,以供路由器110在会话40的每个相应状态期间转发与会话40相关联的业务时在路径选择中使用。在一些示例中,会话状态策略模块122向路由器110传送会话状态标识信息,使得路由器110能够标识第一类型的会话的不同状态。
在一些示例中,会话状态标识信息可以指定路由器110A可以用来标识从一个状态到另一个状态的转变的一个或多个触发器。在一些示例中,指示从一个状态到另一个状态的转变的触发器包括在客户端设备100A、102A之间交换的特定分组编号、特定分组报头、特定字节数的“应用数据”、或在客户端设备100A、102A之间交换的分组中检测到的特定有效负载序列中的一个或多个。
例如,路由器110A接收第一、第二和第三网络策略。基于从会话状态策略模块122接收的会话状态标识信息,路由器110A确定会话40是第一会话类型。此外,路由器110A确定会话40的状态。在一些示例中,确定的状态是会话40的当前状态。在一些示例中,确定的状态是会话40的预测状态,诸如会话40预期转变或改变进入的状态。作为一个示例,路由器110A确定会话40的状态是会话建立状态。例如,路由器110A可以响应于从客户端设备100A接收到会话40的第一分组(例如,“引导分组”)而确定会话40的状态是会话建立状态。作为另一示例,路由器110A可以响应于确定从客户端设备100A接收到的分组是TCP“SYN”分组或用于建立会话的其他分组而确定会话40的状态是会话建立状态。
作为另一示例,路由器110A使用会话40的特定分组编号作为用于标识从会话40的第一状态到第二状态的转变的触发器。在一个示例中,特定分组编号可以是“4”,因为TCP握手的长度为3个分组。因此,从会话建立状态到数据通信状态的状态转变可以发生在会话40的第四分组处。
作为另一示例,路由器110A使用会话40的特定分组报头作为用于标识从会话40的第一状态到第二状态的转变的触发器。在一个示例中,特定分组报头可以包括TLS客户端你好(ClientHello)消息(其可以指示TLS会话的“密钥交换状态”的开始)或TLS密钥交换(KeyExchange)消息(其可以指示TLS会话的“密钥交换状态”的结束。
作为另一示例,路由器110A使用在客户端设备100A和102A之间交换的特定数量的字节作为用于标识从会话40的第一状态到第二状态的转变的触发器。例如,在与会话40相关联的应用涉及客户端设备100A的web浏览器的情况下,客户端设备100A可以从客户端设备102A下载大量信息,诸如JavaScript可执行代码。在完成下载之后,客户端设备100A执行下载的代码。路由器110A可以使用下载的文件的大小作为用于指示从会话40的第一状态(其中客户端设备100A下载文件)到会话40的第二状态(其中客户端设备100A执行文件)的转变的“特定字节数”触发器。
作为另一示例,路由器110A使用在客户端设备100A和102A之间交换的分组的特定有效负载序列作为用于标识会话40的从第一状态到第二状态的转变的触发器。例如,路由器110A可以执行深度分组检查(DPI)并观察有效负载中的标记,并使用该标记作为指示从会话40的一个状态到另一状态的转变的“特定有效负载序列”触发器。例如,响应于检测到分组的有效负载指示流式传输视频质量从1080p下采样到720p,路由器110A可以确定会话40的状态改变。
路由器110A基于会话40的状态来选择转发与会话40相关联的业务的路径。如图1的示例中所描绘的,路由器110形成通过服务提供商网络150从例如客户端设备100A到客户端设备102A的多个路径。例如,第一路径包括路由器110A和110D-110I,而第二路径包括路由器110A、110C和110G-110I。响应于确定会话40的状态是会话建立状态,路由器110A基于与会话40的会话建立状态相对应的第一网络策略选择路径。
在一些示例中,路由器110A使用在线性能监控(例如,诸如经由BFD)来获得针对到相邻路由器110的链路的度量。在其他示例中,作为由中央存储库120传送到每个路由器110的服务和拓扑状态信息的一部分,路由器110A可以从例如中央存储库120中获得针对到非相邻路由器110的链路的度量。路由器110A可以使用为每个链路16所获得的度量来生成从路由器110A到目的地设备的多个路径的度量,例如,诸如从路由器110A到客户端设备102A的路径(例如,对于从客户端设备100A接收到的前向分组流的分组)或从路由器110A到客户端设备100A的路径(例如,对于从前一跳路由器110接收到的反向分组流的分组)。通常,这样的路径包括通过链路16互连的多个路由器110。关于使用路径度量来执行多跳路径选择的附加信息在2021年9月30日提交的题为“METRIC-BASED MULTI-HOP PATH SELECTION”的美国申请号17/449,618中被描述。
路由器110A确定第一路径(例如,包括路由器110A和110D-110I)的第一度量满足由第一网络策略指定的第一性能要求并且第二路径(例如,包括路由器110A、110C和110G–110I)不满足第一网络策略指定的第一性能要求。响应于该确定,路由器110A选择第一路径。在一些示例中,多个路径满足第一性能要求,并且路由器110A选择是最小可行路径(MVP)的路径,例如仍然满足由第一网络策略指定的第一性能要求的最差(或最便宜)路径。在会话40的会话建立状态期间,路由器110A沿着选定的第一路径转发与会话40相关联的网络业务。
随后,路由器110A可以确定会话40的状态是数据通信状态。在一些示例中,路由器110A检测从会话40的会话建立状态到数据通信状态的改变。在一些示例中,路由器110A基于会话40的逝去时间来确定从一个状态到另一个状态的改变。例如,从会话状态策略模块122接收的会话状态标识信息可以指定:在自从路由器110A接收到与会话40相关联的第一分组起已经逝去预定时间量之后,会话40处于数据通信状态内,其中预定时间量由管理员指定或由会话状态策略模块122确定。在一些示例中,路由器110A基于为会话40接收的分组的数目来确定从一个状态到另一个状态的改变。例如,从会话状态策略模块122接收的会话状态标识信息可以指定:在路由器110A接收到与会话40相关联的“N”个分组之后,会话40处于数据通信状态内,其中“N”是指由管理员指定或由会话状态策略模块122确定的数目。作为另一示例,路由器110A可以响应于确定如下内容来确定会话40的状态是数据通信状态:从客户端设备100A接收的分组是TCP“ACK”分组,从而完成客户端设备100A和102A之间的TCP握手,从客户端设备100A接收的分组是TLS“完成”分组,从而完成了客户端设备100A和102A之间的TLS握手,或者指示会话40已经建立的任何其他类型的分组。
路由器110A选择路径,通过该路径转发与新状态的会话40相关联的业务。例如,响应于确定会话40的状态改变为数据通信状态,路由器110A选择与会话40的数据通信状态相对应的第二网络策略。路由器110A确定第一路径(例如,包括路由器110A和110D-110I)的第一度量不满足由第二网络策略指定的第二性能要求(或者已经降级并且不再满足第二性能要求)。此外,路由器110A确定第二路径(例如,包括路由器110A、110C和110G-110I)的第二度量满足由第二网络策略指定的第二性能要求。响应于该确定,路由器110A选择在会话40的数据通信状态期间用于转发与会话40相关联的网络业务的第二路径。在一些示例中,响应于确定应该使用第二路径而不是第一路径,路由器110A使用例如上述会话迁移技术,来将与沿着第一路径的会话40相关联的网络业务迁移到沿着第二路径的会话40’。路由器110A在会话40’的数据通信状态期间沿着第二路径转发与会话40’相关联的网络业务。
在前述示例中,会话40被描述为包括会话建立状态和数据通信状态。作为会话40是TCP会话的示例,在会话建立状态期间,客户端设备100A和102A交换TCP握手,而在数据通信状态期间,客户端设备100A和102A交换数据分组。作为会话40是TLS会话的另一个示例,在会话建立状态期间,客户端设备100A和102A交换TLS握手,而在数据通信状态期间,客户端设备100A和102A交换数据分组。使用在此阐明的技术,路由器110可以通过将客户端设备100A和102A之间交换的分组标识为TCP握手或TLS握手的一部分、标识为数据分组、或者标识为包括TCP“FIN”消息等,来区分会话建立状态、数据通信状态或拆除状态。
在一些示例中,路由器110可以基于会话40的逝去时间来确定会话40的状态。例如,路由器110可以响应于接收到与会话40相关联的第一分组而确定会话40处于会话建立状态内。路由器110可以在自从接收第一分组起已经逝去预定时间量(例如,1秒、5秒、1分钟等)之后确定会话40处于数据通信状态内。此外,响应于在预定时间量(例如,1分钟、2分钟、5分钟等)内没有接收到与会话40相关联的分组,路由器110可以确定会话40处于拆除状态。在另一个示例中,客户端设备100A的用户可以与训练应用交互,其中客户端设备102A将固定持续时间的视频流式传输到客户端设备100A,并且在视频之后,用户回答一系列基于文本的问题。路由器110可以确定会话40在视频的持续时间长度期间处于第一状态内,并且在视频的时间长度逝去之后,路由器110可以确定会话40处于第二状态内。
在一些示例中,路由器110可以基于由路由器110接收的分组类型来确定会话40的状态。例如,路由器110可以响应于从客户端设备100A接收到包括TCP“SYN”消息的分组而确定会话40处于会话建立状态内。路由器110可以响应于从客户端设备100A接收到包括TCP“ACK”消息的分组而确定会话40处于数据通信状态内。此外,路由器110可以响应于从客户端设备100A或102A接收到包括TCP“FIN”消息的分组而确定会话40处于拆除状态。
作为另一示例,路由器110可以响应于从客户端设备100A接收到包括TLS“客户端你好”消息的分组而确定会话40处于会话建立状态内。路由器110可以响应于从客户端设备100A接收到包括TLS“完成”消息的分组而确定会话40处于数据通信状态内。此外,路由器110可以响应于从客户端设备100A或102A接收到包括TLS“关闭通知”消息的分组而确定会话40处于拆除状态内。
在一些示例中,会话40可以包括除了会话建立状态、数据通信状态和拆除状态之外或作为备选的其他状态。例如,客户端设备102A可以提供客户端设备100A经由会话40访问的视频流式传输服务。在该示例中,会话40可以包括第一状态,在该第一状态期间客户端设备100A的用户访问由客户端设备102A提供的网页以交互式浏览和选择视频。附加地,会话40可以包括第二状态,在该第二状态期间客户端设备102A将用户选择的视频流式传输到客户端设备100。路由器110可以基于客户端设备100A和客户端设备102A之间的双向流的行为来在第一状态和第二状态之间进行区分。例如,在第一状态期间,客户端设备100A和102A可以在客户端设备100A的用户交互式浏览从客户端设备102A可用的视频选择时交换分组突发。在第二状态期间,客户端设备102A可以在客户端设备102A将视频流式传输到客户端设备100A时向客户端设备100A发送大量分组,而客户端设备100A可以在用户观看视频时发送很少分组或者不发送分组。
因为视频的质量可以与流式传输视频所需的带宽相关,所以会话40可以包括与由客户端设备102A提供的不同视频质量相对应的不同状态。例如,会话40可以包括视频流式传输以720p格式(1280×720像素或“标准HD”)发生的第一状态和视频流式传输以1080p格式(1920×1080像素或“全高清”)发生的第二状态。在该示例中,第一状态可以需要比第二状态所需的带宽更低的带宽来提供令人满意的用户体验。因此,路由器110A可以检测到会话40处于第一状态(例如,客户端设备102A以标准HD流式传输视频文件)。作为响应,路由器110A选择提供低带宽的第一路径并在会话40的第一状态期间沿着第一路径转发与会话40相关联的网络业务。响应于检测到会话40改变到第二状态(例如,客户端设备102A以全高清流式传输视频文件),路由器110A选择提供高带宽的第二路径并在会话40的第二状态(在图1中被描绘为会话40’)期间沿着第二路径转发与会话40相关联的网络业务。
作为另一示例,对于长期存在的会话,该会话可以主要在单个状态(在本文中被称为会话的“稳定状态”)内操作。例如,由服务器提供的流式传输视频服务可以具有在会话开始时显示出瞬时协议握手的第一状态(TCP、TLS、HTTPS等)。随后,在会话的第二状态期间,服务器将视频(使用例如H.264格式)发送到客户端设备以用于观看更长的时间(例如,诸如一个小时或更长)。在视频完成之后,会话可以在第三状态期间关闭。使用本文的技术,路由器110可以在这三个不同状态中的每个状态期间应用不同的网络策略来选择用于转发与会话相关联的网络业务的不同路径。
作为另一示例,会话可以涉及提供在线协作工具来编辑文档的应用。客户端设备100A的用户可以加载文档(这涉及主要从客户端设备102A(例如,托管文档的服务器)到客户端设备100A的非对称数据流。用户进行编辑并提交更改(这涉及主要从客户端设备100A到托管文档的客户端设备102A的非对称流数据。大多数宽带网络(包括消费者类和企业类)具有基于方向性的显著不同的速度。例如,下载速度通常远高于上传速度。对于存在不对称带宽要求但主要数据流是先验已知的这种会话而言,路由器110可以应用不同的网络策略来利用客户端设备100、102之间的预期数据流。
作为另一示例,会话可以涉及到呼叫中心的VoIP呼叫。在第一状态期间,可以将用户置于保持状态,并且音频可以以保持音乐的形式流式传输给用户。在该第一状态期间,路由器110可以应用第一网络策略以选择低质量路径,通过该路径转发与保持音乐相关联的网络业务。当用户连接到呼叫中心的代表时,会话可以改变为第二状态。在该第二状态期间,路由器110可以应用第二网络策略以选择高质量路径,通过该路径转发与用户和代表之间的语音呼叫相关联的网络业务。
在一些示例中,路由器110可以基于向其对应物供应主要数据量(无论是分组形式还是信息字节形式等等)的参与端点(例如,客户端或服务器)来标识会话40的状态,并基于哪个客户端设备100、102预期传送最多信息量来选择用于路径选择的网络策略。例如,在客户端设备100A通过网络系统2从客户端设备102A下载大文件的情况下,客户端设备100A发出小请求并且反过来接收相对大量的信息。尽管存在双向通信的事实(客户端设备100A发出请求,并确认从客户端设备102A接收的分组),但是在会话的该状态期间会话的焦点是客户端设备102A。因此,在一些示例中,会话40的每个状态可以被分类为以客户端为中心的、以服务器为中心的或平衡的,并且可以选择对应的网络策略用于在相应的状态期间转发业务的路径选择。例如,会话可以在协议握手期间处于“平衡”状态,在稳定状态下的双向VoIP呼叫等。在一些示例中,路由器110可以响应于会话40的预期的或即将发生的状态改变而主动将网络业务迁移到适当的路径。
在一些示例中,会话40的状态可以包括实时状态、时间敏感状态或时间不敏感状态。例如,路由器110可以在会话40的实时和“平衡”状态期间转发与视频协作应用相关联的网络业务。路由器110可以在会话40的时间敏感和“以服务器为中心的”状态期间转发与视频流式传输应用相关联的网络业务。路由器110可以在会话40的时间不敏感和“以服务器为中心的”状态期间转发与文件下载应用相关联的网络业务。在一些示例中,会话40可以包括在本文中未明确描述的附加或替代状态。
图2是图示出根据本公开的技术的被配置为转发业务的示例网络设备200的框图。通常,网络设备200可以是图1的路由器110中的一个路由器的示例实现。图2图示出了网络设备200的特定示例,该网络设备200包括用于执行应用222、路由组件250或本文描述的任何其他网络设备中的任何一个或多个的处理电路202。在其他实例中可以使用网络设备200的其他示例。
虽然出于示例的目的如图2中示为独立网络设备200,但是根据本公开的技术进行操作的计算设备可以是包括一个或多个处理器或用于执行软件指令的其他合适的计算环境的任何组件或系统,并且例如,不必包括图2中所示的一个或多个元件(例如,通信单元206;并且在一些示例中,诸如(多个)存储设备208的组件可以不与其他组件位于同一位置或在同一机箱中)。在一些示例中,网络设备200可以被实现为虚拟化网络功能(VNF)。在一些示例中,网络设备200的一个或多个方面可以作为一个或多个容器或作为使用例如VirtIO和SRIOV网络虚拟化技术的网络功能虚拟化(NFV)平台的虚拟机内的一个或多个应用运行,或在裸机服务器上运行。在一些示例中,网络设备200是物理网络设备,诸如交换机、路由器、网关或发送和接收网络业务的其他设备。
如图2的示例中所示,网络设备200包括处理电路202、一个或多个输入设备204、一个或多个通信单元206、一个或多个输出设备212、一个或多个存储设备208和一个或多个用户接口(UI)设备)210。在一个示例中,网络设备200还包括由网络设备200可执行的一个或多个应用222和操作系统216。组件202、204、206、208、210和212中的每一个被耦合(物理地、可通信地和/或可操作地)以用于组件间通信。在一些示例中,通信信道214可以包括系统总线、网络连接、进程间通信数据结构或用于传送数据的任何其他方法。作为一个示例,组件202、204、206、208、210和212可以通过一个或多个通信信道214耦合。
在一个示例中,处理电路202被配置为实现用于在网络设备200内执行的功能性和/或处理指令。在一些示例中,处理电路202包括一个或多个基于硬件的处理器。例如,处理电路202可以能够处理存储在存储设备208中的指令。处理电路202的示例可以包括微处理器、控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或等效的分立或集成逻辑电路中的任何一个或多个。
一个或多个存储设备208可以被配置为在操作期间将信息存储在网络设备200内。在一些示例中,存储设备208被描述为计算机可读存储介质。在一些示例中,存储设备208是临时存储器,这意味着存储设备208的主要目的不是长期存储。在一些示例中,存储设备208被描述为易失性存储器,这意味着当计算机关闭时存储设备208不维持所存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和其他形式的易失性存储器。在一些示例中,存储设备208被用于存储由处理电路202执行的程序指令。在一个示例中,存储设备208由在网络设备200上运行的软件或应用用于在程序执行期间临时存储信息。
在一些示例中,存储设备208还包括一个或多个计算机可读存储介质。存储设备208可以被配置为存储比易失性存储器更大量的信息。存储设备208可以进一步被配置用于信息的长期存储。在一些示例中,存储设备208包括非易失性存储元件。这种非易失性存储元件的示例包括磁性硬盘、光盘、软盘、闪存或电可编程存储器(EPROM)或电可擦除可编程(EEPROM)存储器的形式。
在一些示例中,网络设备200还包括一个或多个通信单元206。在一个示例中,网络设备200利用通信单元206,以经由一个或多个网络(诸如一个或多个有线/无线/移动网络)来与外部设备通信。通信单元206可以包括网络接口,诸如以太网卡、光收发器、射频收发器或者可以发送和接收信息的任何其他类型的设备。这种网络接口的其他示例可以包括3G和WiFi无线电。在一些示例中,通信单元206可以包括多个高速网络接口卡。在一些示例中,网络设备200使用通信单元206来与外部设备通信。例如,网络设备200使用通信单元206经由通信单元206与其连接的图1的链接16来与图1的其他路由器110和/或客户端设备100、102进行通信。
在一个示例中,网络设备200还包括一个或多个用户接口设备210。在一些示例中,用户接口设备210被配置为通过触觉、音频或视频反馈来接收来自用户的输入。用户接口设备210的示例包括存在敏感显示器、鼠标、键盘、语音响应系统、摄像机、麦克风或用于检测来自用户的命令的任何其他类型的设备。在一些示例中,存在敏感显示器包括触敏屏幕。在一些示例中,诸如服务提供商网络150的管理员的用户可以输入网络设备200的配置数据。
一个或多个输出设备212也可以被包括在网络设备200中。在一些示例中,输出设备212被配置为使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出设备212包括存在敏感显示器、声卡、视频图形适配卡或用于将信号转换为人类或机器可理解的适当形式的任何其他类型的设备。输出设备212的附加示例包括扬声器、阴极射线管(CRT)监视器、液晶显示器(LCD)或可以向用户生成可理解输出的任何其他类型的设备。
网络设备200可以包括操作系统216。在一些示例中,操作系统216控制网络设备200的组件的操作。例如,在一个示例中,操作系统216促进一个或多个应用222与处理电路202、通信单元206、存储设备208、输入设备204、用户接口设备210和输出设备212的通信。应用222还可以包括由网络设备200可执行的程序指令和/或数据。
在一些示例中,处理电路202执行路由组件250,其确定接收到的分组的路由并相应地转发分组。路由组件250与其他路由器(例如诸如图1的路由器110)通信,以建立和维护计算机网络(诸如图1的计算机网络系统2),以用于在一个或多个客户设备之间传送网络业务。路由组件250的路由协议守护进程(RPD)254执行软件指令以实现一个或多个控制平面网络协议256。例如,协议256可以包括一个或多个路由协议,诸如互联网组管理协议(IGMP)221和/或边界网关协议(BGP)220,以用于与其他路由设备交换路由信息并用于更新路由信息库(RIB)252、多协议标签交换(MPLS)协议215和其他路由协议。协议256还可以包括一个或多个通信会话协议,诸如TCP、UDP、TLS或ICMP。
路由信息252可以描述网络设备200所在的计算机网络的拓扑结构,并且还可以包括通过计算机网络中的共享树的路由。路由信息252描述了计算机网络内的各种路由,以及每个路由的适当下一跳,即沿着每个路由的相邻路由设备。路由信息252可以是被编程到专用转发芯片中的基数树、一系列表、复杂数据库、链接列表、基数树、数据库、平面文件或各种其他数据结构。
会话信息235存储用于标识会话的信息。在一些示例中,会话信息235采用会话表的形式。例如,服务信息232包括指定会话标识符的一个或多个条目。在一些示例中,会话标识符包括与会话的前向分组流和/或反向分组流相关联的源地址、源端口、目的地地址、目的地端口或协议中的一个或多个。如上所述,当路由组件250接收到图1的源自客户端设备100A并去往客户端设备100B的前向分组流的分组时,路由组件250确定该分组是否属于新的会话(例如,是会话40的“第一”分组或“引导”分组)。为了确定该分组是否属于新的会话,路由组件250确定会话信息235是否包括对应于第一分组的源地址、源端口、目的地地址、目的地端口和协议的条目。如果条目存在,那么该会话不是新的会话。如果条目不存在,那么会话是新的,并且路由组件250生成用于该会话的会话标识符,并将该会话标识符存储在会话信息235中。此后,路由组件250可以使用存储在会话信息235中的会话标识符来将后续分组标识为属于同一会话。
服务信息232存储路由组件250可以用来标识与会话相关联的服务的信息。在一些示例中,服务信息232采用服务表的形式。例如,服务信息232包括指定服务标识符以及与服务相关联的源地址、源端口、目的地地址、目的地端口或协议中的一个或多个的一个或多个条目。在一些示例中,路由组件250可以用所接收的分组的会话的源地址、源端口、目的地地址、目的地端口或会话协议中的一个或多个来查询服务信息232,以确定与会话相关联的服务。例如,路由组件250可以基于服务信息232中的源地址、源端口、目的地地址、目的地端口或协议与由会话标识符所指定的源地址、源端口、目的地地址、目的地端口或协议的对应关系来确定服务标识符。路由组件250基于与分组相关联的服务来取回与所标识的服务相对应的一个或多个服务策略234。服务策略可以包括例如路径故障转移策略、动态主机配置协议(DHCP)标记策略、业务工程策略、与会话相关联的网络业务的优先级等。路由组件250将对应于与分组相关联的服务的一个或多个服务策略234应用于分组。
根据本公开的技术,路由组件250经由通信单元206并且从图1的中央存储库120中接收由网络设备200所服务的每个会话的不同网络策略。例如,每个网络策略对应于图1的会话40的不同状态。在一些示例中,每个网络策略指定一个或多个性能要求,包括路径的抖动、时延、分组丢失、带宽或成本,网络业务通过该路径在对应状态期间被转发。在一个示例中,会话40包括会话建立状态、数据通信状态和拆除状态。
例如,会话建立状态通常包括在会话开始时的机器对机器消息的突发。这些以在每个端点上协商的针对每“层”的客户端设备和服务器之间的许多往返为代表。在会话建立状态期间将会话的设置活动置于最快路径上直到会话的握手部分完成可以提高用户体验。
因此,在该示例中,路由组件250针对会话40接收与会话40的会话建立状态相对应的第一网络策略、与会话40的数据通信状态相对应的第二网络策略以及与拆除状态相对应的第三网络策略等。第一网络策略指定了在会话建立状态期间要转发网络业务的路径的一个或多个性能要求。在一个示例中,第一网络策略指定时延要求。此外,第二网络策略指定了在数据通信状态期间要转发网络业务的路径的一个或多个性能要求。在一个示例中,第一网络策略指定带宽要求。在一些示例中,第一网络策略指定与由第二策略所指定的一个或多个性能要求不同的一个或多个性能要求。例如,第一网络策略可以指定与由第二策略所指定的时延要求不同的时延要求。路由组件250将网络策略存储为会话状态策略262。
附加地,路由组件250经由通信单元206并且从图1的中央存储库120接收用于检测由网络设备200所服务的每种类型的会话的每种状态的信息。在一些示例中,该信息包括用于每种类型的会话的会话配置文件。会话配置文件描述了一段时间内的会话的行为。在一些示例中,会话配置文件描述了会话建立期间(例如,在TCP握手或TLS握手期间)和会话建立完成之后(例如,诸如在会话的生命周期内的稳态期间,诸如在客户端设备100、102之间传送数据时)的会话的行为。在一些示例中,会话配置文件描述在会话的生命周期内的会话的行为(例如,从会话的建立到终止或拆除)。例如,会话配置文件可以指定会话的多个状态以及源客户端设备100和目的地客户端设备102的行为。关于前述示例,会话40的会话配置文件可以指定会话建立状态、数据通信状态和拆除状态。此外,会话配置文件可以指定在会话建立状态期间执行TCP握手或TLS握手,以及用于响应于检测到TCP握手或TLS握手的第一分组而使用的第一网络策略(例如,在会话建立状态期间使用)。此外,会话配置文件可以指定数据通信状态发生在TCP握手或TLS握手完成之后,以及用于响应检测到TCP握手或TLS握手的完成而使用的第二网络策略(例如,在数据通信状态期间使用)。此外,会话配置文件可以指定在TCP“FIN”消息之后发生拆除状态,以及用于响应于检测到TCP“FIN”消息而使用的第三网络策略(例如,在拆除状态期间使用)。在其他示例中,会话配置文件可以指定:在客户端设备100、102表现出诸如交换某些类型的分组、以特定模式或频率交换分组、交换特定大小或携带特定有效负载或数据分量的分组的特定行为或者客户端设备100、102交换多个字节模式之后,发生会话40的特定状态。在一些示例中,会话配置文件指定会话40的状态机,以便使得路由组件250能够对会话40的行为进行建模,并基于该模型确定会话40的状态。路由组件250将信息存储为会话检测信息260。
路由组件250使用会话检测信息260来确定会话40的状态。在一些示例中,路由组件250响应于接收到与会话40相关联的第一分组而确定会话40的状态。在一些示例中,路由组件250周期性地确定会话40的状态,诸如在接收到与会话40相关联的预定数目的分组之后或在逝去一定时间量之后。在一些示例中,路由组件250可以应用会话40的模型来标识会话40的状态。该模型可以描述在一段时间内的会话40的行为。在一些示例中,该模型可以描述在会话40的整个生命周期内(例如,诸如从会话40的建立到终止)的会话40的行为。在一些示例中,该模型描述了会话的每个状态中涉及的协议以及协议握手何时完成。每个协议握手都是一个简单的状态(例如,诸如以客户端为中心的、以服务器为中心的或平衡的)。在一些示例中,该模型可以描述在会话40的状态改变之前由每个客户端设备100A、102A发送的典型量的业务(例如,作为分组或带宽)。在一些示例中,模型可以指定会话40的哪些状态(如果有的话)是最主要的(例如,以客户端为中心的、以服务器为中心的或平衡的),并且因此可以被认为是会话40的稳定状态。
作为示例,路由组件250确定会话40处于会话建立状态内。例如,路由组件250可以响应于确定如下内容来确定会话40的状态是会话建立状态:从客户端设备100A接收的分组是TCP“SYN”分组,从而开始客户端设备100A和102A之间的TCP握手。
路由组件250从与会话40的状态相对应的会话状态策略262中选择网络策略。基于由与状态相对应的网络策略所指定的一个或多个性能要求,路由组件250选择路径并在会话的该状态期间通过选择的路径转发与会话40相关联的网络业务。
响应于确定会话40处于会话建立状态内,路由组件250选择对应于会话建立状态的第一网络策略。路由组件250确定多个路径的一个或多个度量,并选择满足与会话建立状态相对应的第一网络策略所指定的一个或多个性能要求的路径。例如,路由组件250选择第一路径,该第一路径包括超过由第一网络策略所指定的时延要求的时延度量。在一些示例中,多个路径超过由第一网络策略所指定的时延要求,并且路由组件250选择是最小可行路径(MVP)的路径,例如仍然满足由第一网络策略所指定的时延要求的最差(或最便宜)路径。路由组件250在会话建立状态期间通过选定的第一路径转发与会话40相关联的网络业务。
作为另一示例,路由组件250确定会话40处于数据通信状态内。在一些示例中,路由组件250检测到会话40从会话建立状态到数据通信状态的改变。例如,路由组件250可以分析在客户端设备100A和102A之间交换的分组,以确定客户端设备100A和102A已完成TCP握手或TLS握手,从而已完成会话建立状态。例如,路由组件250可以响应于确定如下内容来确定会话40的状态是数据通信状态:从客户端设备100A接收的分组是TCP“ACK”分组,从而已完成客户端设备100A和102A之间的TCP握手。
响应于确定会话40处于数据通信状态内,路由组件250选择对应于数据通信状态的第二网络策略。路由组件250确定多个路径的一个或多个度量,并选择满足与会话建立状态相对应的第二网络策略所指定的一个或多个性能要求的路径。例如,路由组件250选择包括超过由第二网络策略所指定的带宽要求的带宽度量的路径。路由组件250将会话40从第一路径(例如,当处于会话建立状态时)迁移到第二路径,并且在数据通信状态期间通过选定的第二路径转发与会话40相关联的网络业务。
图3是图示出根据本公开的技术的用于执行被配置为标识会话的状态的集中式控制器的示例计算设备的框图。一般而言,计算设备300可以是图1的中央存储库120的示例实现。图3图示出了服务器或其他计算设备300的特定示例,其包括用于执行应用322、集中式控制器124、中央存储库120、会话状态策略模块122或本文描述的任何其他计算设备中的任何一个或多个的处理电路302。在其他实例中可以使用计算设备300的其他示例。
虽然出于示例的目的如图3中示为独立计算设备300,但是根据本公开的技术进行操作的计算设备可以是包括一个或多个处理器或用于执行软件指令的其他合适的计算环境的任何组件或系统,并且例如,不必包括图3中所示的一个或多个元件(例如,通信单元306;并且在一些示例中,诸如(多个)存储设备308的组件可以不与其他组件位于同一位置或在同一机箱中)。在一些示例中,计算设备300可以被实现为虚拟化网络功能(VNF)。在一些示例中,计算设备300的一个或多个方面可以作为一个或多个容器或作为使用例如VirtIO和SRIOV网络虚拟化技术的网络功能虚拟化(NFV)平台的虚拟机内的一个或多个应用运行,或在裸机服务器上运行。在一些示例中,计算设备300是物理网络设备,诸如交换机、路由器、网关或发送和接收网络业务的其他设备。
如图3的示例中所示,计算设备300包括处理电路302、一个或多个输入设备304、一个或多个通信单元306、一个或多个输出设备312、一个或多个存储设备308和一个或多个用户接口(UI)设备)310。在一个示例中,计算设备300还包括由计算设备300可执行的一个或多个应用322和操作系统316。组件302、304、306、308、310和312中的每一个被耦合(物理地、可通信地和/或可操作地)以用于组件间通信。在一些示例中,通信信道314可以包括系统总线、网络连接、进程间通信数据结构或用于传送数据的任何其他方法。作为一个示例,组件302、304、306、308、310和312可以通过一个或多个通信通道314耦合。
在一个示例中,处理电路302被配置为实现用于在计算设备300内执行的功能性和/或处理指令。在一些示例中,处理电路302包括一个或多个基于硬件的处理器。例如,处理电路302可以能够处理存储在存储设备308中的指令。处理电路302的示例可以包括微处理器、控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或等效的分立或集成逻辑电路中的任何一个或多个。
一个或多个存储设备308可以被配置为在操作期间将信息存储在计算设备300内。在一些示例中,存储设备308被描述为计算机可读存储介质。在一些示例中,存储设备308是临时存储器,这意味着存储设备308的主要目的不是长期存储。在一些示例中,存储设备308被描述为易失性存储器,这意味着当计算机关闭时存储设备308不维持所存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)和其他形式的易失性存储器。在一些示例中,存储设备308被用于存储由处理电路302执行的程序指令。在一个示例中,存储设备308由在计算设备300上运行的软件或应用用于在程序执行期间临时存储信息。
在一些示例中,存储设备308还包括一个或多个计算机可读存储介质。存储设备308可以被配置为存储比易失性存储器更大量的信息。存储设备308可以进一步被配置用于信息的长期存储。在一些示例中,存储设备308包括非易失性存储元件。这种非易失性存储元件的示例包括磁性硬盘、光盘、软盘、闪存或电可编程存储器(EPROM)或电可擦除可编程(EEPROM)存储器的形式。
在一些示例中,计算设备300还包括一个或多个通信单元306。在一个示例中,计算设备300利用通信单元306,以经由一个或多个网络(诸如一个或多个有线/无线/移动网络)来与外部设备通信。通信单元306可以包括网络接口,诸如以太网卡、光收发器、射频收发器或者可以发送和接收信息的任何其他类型的设备。这种网络接口的其他示例可以包括3G和WiFi无线电。在一些示例中,通信单元306可以包括多个高速网络接口卡。在一些示例中,计算设备300使用通信单元306来与外部设备通信。例如,计算设备300使用通信单元306来与通信单元306所连接的其他路由器110进行通信。
在一个示例中,计算设备300还包括一个或多个用户接口设备310。在一些示例中,用户接口设备310被配置为通过触觉、音频或视频反馈来接收来自用户的输入。用户接口设备310的示例包括存在敏感显示器、鼠标、键盘、语音响应系统、摄像机、麦克风或用于检测来自用户的命令的任何其他类型的设备。在一些示例中,存在敏感显示器包括触敏屏幕。在一些示例中,诸如服务提供商网络150的管理员的用户可以输入计算设备300的配置数据。
一个或多个输出设备312也可以被包括在计算设备300中。在一些示例中,输出设备312被配置为使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出设备312包括存在敏感显示器、声卡、视频图形适配卡或用于将信号转换为人类或机器可理解的适当形式的任何其他类型的设备。输出设备312的附加示例包括扬声器、阴极射线管(CRT)监视器、液晶显示器(LCD)或可以向用户生成可理解输出的任何其他类型的设备。
计算设备300可以包括操作系统316。在一些示例中,操作系统316控制计算设备300的组件的操作。例如,在一个示例中,操作系统316促进一个或多个应用322与处理电路302、通信单元306、存储设备308、输入设备304、用户接口设备310和输出设备312的通信。应用322还可以包括由计算设备300可执行的程序指令和/或数据。
在一些示例中,处理电路302执行包括中央存储库120的集中式控制器124。中央存储库120操作为用于为服务提供商网络150内的每个路由器110存储服务和拓扑状态信息的中央存储库。服务和拓扑状态信息包括从每个路由器110可到达的服务,以及来自用于到达这些服务的每个路由器的网络拓扑。在一些示例中,当路由器110在服务提供商网络150内变成活动时(诸如当路由器110被安装或重新启动时),路由器110将路由器110的服务和拓扑状态信息的完整副本传送到中央存储库120,它存储和维护每个路由器110的服务和拓扑状态信息。中央存储库120此后可以将每个路由器110的服务和拓扑状态信息分发给根据管理员所定义的一个或多个网络策略所允许的服务提供商网络150内的每个其他路由器110。随后,每个路由器110可以仅将路由器110的服务和拓扑状态信息的改变传送到中央存储库120,中央存储库120可以将这种改变分发给其他路由器110。在一些示例中,中央存储库120传送和接收JavaScript对象表示法(JSON)文档形式的服务和拓扑状态信息,该文档指定每个路由器110的服务和拓扑状态信息。
根据本公开的技术,中央存储库120还包括会话状态策略模块122。会话状态策略模块122为图1的客户端设备100、102之间的多个会话的每个会话标识会话的不同状态,并为会话的每个状态生成不同的网络策略。会话状态策略模块122包括应用指纹单元352、机器学习系统354、会话状态模型356和会话状态策略358。
在一个示例中,应用指纹单元352可以为通过网络系统2发送或接收网络业务的每个应用生成唯一标识符。如本文所述,“应用”通常指的是执行专门化功能的软件程序或协议。典型应用的目的是在客户端设备和托管应用的服务器之间建立连接,意图是向服务器发送数据/从服务器接收数据。应用通过建立一个或多个会话(例如两个设备之间的业务的双向流)来交换这种数据,每个双向流包括前向分组流和反向分组流。在一些示例中,应用指纹单元352标识每个应用的特性以便唯一地标识该应用。
对于每个应用,会话状态策略模块122收集在每个会话的时间段内与应用相关联的会话的行为。例如,会话状态策略模块122从会话的建立直到会话结束或终止,收集在两个客户端设备之间交换的示例分组、由这样的分组所指定的数据以及交换这样的分组的时间。会话状态策略模块122还可以收集会话建立的示例(诸如TCP或TLS握手的示例)、客户端设备所使用的网络协议或在本文中未明确描述的其他类型的信息。
在一些示例中,机器学习系统354处理关于与应用相关联的会话的行为的信息以生成会话状态模型356。会话状态模型356描述会话的一个或多个状态。在一些示例中,会话状态模型356进一步指定用于检测会话的每个状态的信息。
例如,机器学习系统354可以将关于会话的行为的这种信息转换成向量和张量(例如,多维阵列),机器学习系统354可以对其应用数学操作,诸如线性代数、非线性、或替代计算操作。在一些示例中,诸如统计试探法的统计分析被应用于关于与应用相关联的会话的行为的信息,以确定会话的一个或多个状态。在其他示例中,实现大数据框架以便允许使用大量可用数据来训练和优化会话状态模型356。
在一些示例中,机器学习系统354使用关于会话行为的信息作为训练数据来教导会话状态模型356,以将会话信息的不同特征权衡为具有或多或少的重要性。在一些示例中,机器学习系统354使用关于会话的行为的信息来教导机器学习模型354,以应用不同的系数,这些系数将关于会话的行为的信息中的特征表示为相对于确定不同会话的状态或标识从一个状态改变到另一个状态的指示符而具有或多或少的重要性。训练会话状态模型356所需的信息量和类型可以取决于客户端设备100、102之间交互的复杂性以及会话的不同状态的数目。
在一些示例中,会话的不同状态可以响应于会话的状态改变的指示符而发生。会话状态模型356可以进一步标识会话的状态改变的一个或多个指示符,诸如TCP套接字设置或TCP握手、TLS握手、从客户端设备到服务器的web请求、从服务器到客户端设备的响应、客户端设备提交的表单、网络链接的选择、统一资源定位符(URL)或网络请求、将文档上传到服务器和/或对文档的操作、服务器和客户端设备之间的TCP套接字保持活动消息、TCP套接字拆除消息、音频或视频数据流式传输、或特定的分组序列。这些指示符可以描述将会话从一个状态移动到下一个状态并且路由器110可以在监控客户端设备100、102之间的分组交换期间观察或检测的特定事件或触发器。
例如,会话状态模型356可以响应于标识包括来自客户端设备100A的TCP“SYN”消息的分组而确定会话40包括会话建立状态。会话状态模型356可以响应于标识包括来自客户端设备100A的TCP“ACK”消息的分组而确定会话40包括数据通信状态。此外,会话状态模型356可以响应于标识包括来自客户端设备100A或102A的TCP“FIN”消息的分组而确定会话40包括拆除状态。
作为另一示例,会话状态模型356可以响应于标识包括来自客户端设备100A的TLS“客户端你好”消息的分组而确定会话40包括会话建立状态。会话状态模型356可以响应于标识包括来自客户端设备100A的TLS“完成”消息的分组而确定会话40包括数据通信状态。此外,会话状态模型356可以响应于标识包括来自客户端设备100A或102A的TLS“关闭通知”消息的分组而确定会话40包括拆除状态。
在一些示例中,会话状态模型356向路由器110输出指定会话的每个状态的会话配置文件和用于标识会话的每个状态的信息。会话配置文件描述了在一段时间内的会话的行为。例如,会话配置文件可以指定会话的多个状态以及在会话的生命周期内的源客户端设备100和目的地客户端设备102的行为。作为示例,图1的会话40的会话配置文件可以指定会话建立状态、数据通信状态和拆除状态。此外,会话配置文件可以指定在会话建立状态期间执行TCP握手或TLS握手。此外,会话配置文件可以指定数据通信状态发生在TCP握手或TLS握手完成之后。在其他示例中,会话配置文件可以指定会话40的特定状态发生在客户端设备100、102之间交换特定数目的字节或分组之后或在预定时间量已经逝去之后。在其他示例中,会话配置文件可以指定会话40的特定状态发生在客户端设备100、102表现出诸如交换某些类型的分组、以特定模式或频率交换分组、交换特定大小或携带特定有效负载或数据分量的分组的特定行为或者客户端设备100、102交换多个字节模式之后。在一些示例中,会话配置文件指定会话40的状态机,以便使得路由组件250能够对会话40的行为进行建模并基于该模型来确定会话40的状态。
附加地,会话状态策略模块122生成多个网络策略358。每个网络策略对应于每个会话的每个相应状态。此外,每个网络策略指定在相应状态期间交换的网络业务的一个或多个性能要求。例如,会话状态策略模块122确定一个或多个性能要求,包括路径的抖动、时延、分组丢失、带宽或成本,与会话40相关联的网络业务将在会话40的每个状态期间通过该路径被转发。在一些示例中,会话状态策略模块122基于SLA针对会话40所阐明的要求来确定性能要求。会话状态策略模块122将针对会话40的状态的网络策略传送到路由器110。
例如,每个会话的每个状态可以与特定类型的业务类别或业务分类相关联,诸如实时业务类别,诸如互联网协议语音(VoIP)类别、交互式视频类别、远程桌面类别、或游戏类别,或者非实时业务类别,诸如网络管理类别、流式传输视频类别、交互数据类别或数据传送类别。每个类别的业务可以取决于不同的性能特征。会话状态策略模块122可以使用这样的分类来为每个会话的每个状态定义不同的网络策略,从而使得路由器110能够在基于特定于会话和特定于会话状态的基础上执行路径选择时使用不同的性能要求。
在前述示例中,会话状态策略模块122实现机器学习系统以标识每个会话的不同状态,并且确定在每个对应的会话状态期间要被应用于路径选择的网络策略。然而,在其他示例中,管理员可以定义每个会话的状态或阶段,并选择在每个对应的会话状态期间要被应用于路径选择的网络策略。在一些示例中,会话状态策略模块122标识会话内的一个或多个事件,并且管理员可以选择哪些事件指示会话状态的改变。
图4是图示出了根据本公开的技术的示例操作的流程图。为了方便,关于图1的示例来描述图4。
会话状态策略模块122基于在一段时间内与会话40相关联的网络业务的双向流的行为来标识会话40的多个状态(402)。如上所述,会话40包括客户端设备100A、102A之间的网络业务的双向流,例如,源自客户端设备100A并去往客户端设备102A的前向分组流以及源自客户端设备102A并去往客户端设备100A的反向分组流。例如,会话状态策略模块122通过在会话40的整个生命周期(例如,从会话40的建立到终止)检查与会话40相关联的网络业务的双向流的行为来标识会话40的多个状态。在一些示例中,多个状态包括会话建立状态(诸如TCP握手或TLS握手)、数据通信状态和拆除状态。
会话状态策略模块122为会话40的多个状态中的每个状态确定在该状态期间的网络业务的一个或多个性能要求(404)。例如,会话状态策略模块122确定一个或多个性能要求,包括路径的抖动、时延、分组丢失、带宽或成本,与会话40相关联的网络业务将在会话40的每个状态期间通过该路径被转发。在一些示例中,会话状态策略模块122基于SLA针对会话40所阐明的要求来确定网络业务的性能要求。会话状态策略模块122将针对会话40的状态的网络策略传送到路由器110。会话状态策略模块122生成多个网络策略,每个网络策略对应于会话40的相应状态(406)。每个网络策略指定在对应的状态会话40期间的网络业务的一个或多个性能要求。会话状态策略模块122将多个网络策略传送到路由器110以应用于与会话40相关联的网络业务(408)。
路由器110从会话状态策略模块122接收多个网络策略(410)。每个网络策略定义在会话40的每个对应状态期间的网络业务的一个或多个性能要求。在一些示例中,路由器110还接收用于检测或标识会话40的每个状态的信息。
路由器110确定会话40的状态(412)。在一些示例中,路由器110标识会话40的状态改变,例如会话40已经从第一状态改变到第二状态。在一些示例中,路由器110基于观察到TCP握手或TLS握手的完成来确定会话40已经从会话建立状态改变到数据通信状态。在一些示例中,路由器110基于客户端设备100A和102A之间交换的分组的数目、会话40的逝去时间、TCP套接字设置或TCP握手、TLS握手、从客户端设备到服务器的网络请求、从服务器到客户端设备的响应、客户端设备提交的表单、网络链接的选择或统一资源定位符(URL)、服务器和客户端设备之间的TCP套接字保持活动(keepalive)消息或TCP套接字拆除消息来确定会话40的状态。
路由器110基于与状态相关联的网络策略的一个或多个性能要求来选择路径(414)。例如,路由器110为通过网络系统2的多个路径中的每条路径获得一个或多个度量。路由器110确定第一路径(例如,包括路由器110A和110D-110I)的度量满足由与会话40的状态相关联的网络策略所指定的性能要求。路由器110在会话40的状态期间沿着选择的路径转发与会话40相关联的网络业务(416)。
以下示例可以说明本公开的一个或多个方面。
示例1.一种方法,包括:由形成网络的多个网络设备中的网络设备接收多个网络策略,其中多个网络策略中的每个网络策略定义在会话的多个不同状态的每个状态期间的网络业务的一个或多个性能要求,并且其中会话包括第一客户端设备和第二客户端设备之间的网络业务的双向流;由网络设备确定会话的多个不同状态中的状态;由网络设备并基于与确定的状态相关联的网络策略的一个或多个性能要求,选择通过网络的多个不同路径中的路径;并且由网络设备沿着选择的路径转发与会话相关联的网络业务。
示例2.根据示例1所述的方法,还包括:由网络设备确定会话从所述状态到多个不同状态中的第二状态的改变;由网络设备并基于与第二状态相关联的网络策略的一个或多个性能要求,选择多个不同路径中的第二路径;并且由网络设备在第二状态期间沿着第二路径转发与会话相关联的网络业务。
示例3.根据示例1至2中任一项所述的方法,其中确定状态包括确定会话的多个不同状态中的第一状态和第二状态,其中选择路径包括:由网络设备并且基于与第一状态相关联的第一网络策略的一个或多个第一性能要求,选择多个不同路径中的第一路径;并且由网络设备并基于与第二状态相关联的第二网络策略的一个或多个第二性能要求,选择多个不同路径中的第二路径,其中一个或多个第一性能要求不同于一个或者多个第二性能要求,并且其中第一路径不同于第二路径,并且其中转发与会话相关联的网络业务包括:在会话的第一状态期间沿着第一路径转发与会话相关联的网络业务;并且在会话的第二状态期间沿着第二路径转发与会话相关联的网络业务。
示例4.根据示例1至3中任一项所述的方法,其中一个或多个性能要求包括以下一项或多项:抖动、时延、分组丢失、带宽或成本。
示例5.根据示例1至4中任一项所述的方法,其中确定状态是基于与由网络设备接收的会话相关联的分组的数目。
示例6.根据示例1至5中任一项所述的方法,其中确定所述状态是基于会话的逝去时间。
示例7.根据示例1至6中任一项所述的方法,其中确定所述状态是基于由网络设备接收的分组的类型。
示例8.根据示例1至7中任一项所述的方法,其中会话的多个状态包括:会话建立状态;和数据通信状态;和拆除状态。
示例9.根据示例8所述的方法,其中确定状态包括:响应于从第一客户端设备接收到包括传输控制协议(TCP)“SYN”消息的分组,确定会话建立状态;响应于从第一客户端设备接收到包括TCP“ACK”消息的分组,确定数据通信状态;以及响应于从第一客户端设备或第二客户端设备接收到包括TCP“FIN”消息的分组,确定拆除状态。
示例10.根据示例8所述的方法,其中确定状态包括:响应于从第一客户端设备接收到包括传输层安全性(TLS)“客户端你好”消息的分组,确定会话建立状态;响应于从第一客户端设备接收到包括TLS“完成”消息的分组,确定数据通信状态;并且响应于从第一客户端设备或第二客户端设备接收到包括TLS“关闭通知”消息的分组,确定拆除状态。
示例11.一种方法,包括:由计算设备的处理电路并且基于与会话相关联的网络业务的双向流的行为,标识会话的多个状态;由处理电路并针对会话的多个状态中的每个状态,确定该状态期间的网络业务的一个或多个性能要求;由处理电路生成多个网络策略,其中多个网络策略中的每个网络策略指定在会话的多个不同状态的对应状态期间的网络业务的一个或多个性能要求;以及由处理电路向网络设备传送多个网络策略以应用于与会话相关联的网络业务。
示例12.根据示例11所述的方法,其中标识会话的多个状态包括由处理电路执行的机器学习系统将机器学习模型应用于与多个会话的每个会话相关联的网络业务的双向流的行为。
示例13.根据示例11至12中任一项所述的方法,其中与会话相关联的网络业务的双向流的行为包括在与会话相关联的第一客户端设备和第二客户端设备之间交换的多个字节模式。
示例14.根据示例11至13中任一项所述的方法,其中在多个状态中的每个状态期间的网络业务的一个或多个性能要求基于针对会话的一个或多个服务级别协议要求。
示例15.根据示例11至14中任一项所述的方法,其中一个或多个性能要求包括以下一项或多项:抖动、时延、分组丢失、带宽或成本。
示例16.根据示例11至15中任一项所述的方法,其中会话的多个状态包括:会话建立状态;数据通信状态;和拆除状态。
示例17.根据示例16所述的方法,其中,针对会话的多个状态中的每个状态,确定在该状态期间的网络业务的一个或多个性能要求包括:对于会话建立状态,确定在会话建立状态期间的网络业务的一个或多个第一性能要求;对于数据通信状态,确定在数据通信状态期间的网络业务的一个或多个第二性能要求;其中一个或多个第一性能要求不同于一个或多个第二性能要求,并且其中生成多个网络策略包括:生成指定会话建立状态期间的网络业务一个或多个第一性能要求的第一网络策略;并且生成指定数据通信状态期间的网络业务的一个或多个第二性能要求的第二网络策略。
示例18.根据示例16至17中任一项所述的方法,其中标识多个状态包括:响应于标识包括来自第一客户端设备的传输控制协议(TCP)“SYN”消息的分组,标识所述会话建立状态;响应于标识包括来自第一客户端设备的TCP“ACK”消息的分组,确定数据通信状态;以及响应于标识包括来自第一客户端设备或第二客户端设备的TCP“FIN”消息的分组,确定拆除状态。
示例19.根据示例16至17中任一项所述的方法,其中标识多个状态包括:响应于标识包括来自第一客户端设备的传输层安全性(TLS)“客户端你好”消息的分组,标识会话建立状态;响应于标识包括来自第一客户端设备的TLS“完成”消息的分组,标识数据通信状态;以及响应于标识包括来自第一客户端设备或第二客户端设备的TLS“关闭通知”消息的分组,标识拆除状态。
示例20.一种形成网络的多个网络设备中的网络设备,该网络设备包括:存储设备;和处理电路,该处理电路被配置为:接收多个网络策略,其中多个网络策略中的每个网络策略定义在会话的多个不同状态的每个状态期间的网络业务的一个或多个性能要求,并且其中该会话包括第一客户端设备和第二客户端设备之间的网络业务的双向流;确定会话的多个不同状态中的状态;基于与状态相关联的网络策略的一个或多个性能要求,选择通过网络的多个不同路径中的路径;以及沿着选择的路径转发与会话相关联的网络业务。
本公开中所描述的技术可以至少部分地以硬件、软件、固件或其任何组合来实现。举例来说,可以在一个或多个处理器内实现所描述的技术的各种方面,该处理器包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其他等效集成或离散逻辑电路以及这种组件的任何组合。术语“处理器”或“处理电路”通常可以指代上述逻辑电路中的任一个,单独地或与其他逻辑电路或任何其他等效电路相组合。包括硬件的控制单元也可以执行本公开的一种或多种技术。
这种硬件、软件和固件可以被实现在同一设备内或在分开的设备内以支持本公开中所描述的各种操作和功能。此外,所描述的单元、模块或组件中的任一个可以一起或单独地被实现为分立但可互操作的逻辑设备。将不同特征描绘为模块或单元旨在突出不同的功能方面,并且不一定暗示这些模块或单元必须由分开的硬件或软件组件来实现。相反,与一个或多个模块或单元相关联的功能性可以由分开的硬件或软件组件来执行,或者被集成在公共或分开的硬件或软件组件内。
本公开中所描述的技术还可以被实施或编码于包含指令的计算机可读介质(诸如计算机可读存储介质)中。嵌入或编码在计算机可读存储介质中的指令可以使可编程处理器或其他处理器例如在指令被执行时执行方法。计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、硬盘、CD-ROM、软盘、磁带、磁介质、光介质或其他计算机可读介质。
已描述各种示例。这些和其他示例在以下权利要求书的范围内。

Claims (20)

1.一种方法,包括:
由形成网络的多个网络设备中的网络设备接收多个网络策略,其中所述多个网络策略中的每个网络策略定义在会话的多个不同状态中的每个状态期间、针对网络业务的一个或多个性能要求,并且其中所述会话包括第一客户端设备和第二客户端设备之间的网络业务的双向流;
由所述网络设备确定所述会话的所述多个不同状态中的状态;
由所述网络设备并且基于与确定的所述状态相关联的所述网络策略的所述一个或多个性能要求,选择通过所述网络的多个不同路径中的路径;以及
由所述网络设备沿着选择的所述路径转发与所述会话相关联的网络业务。
2.根据权利要求1所述的方法,还包括:
由所述网络设备确定在所述会话中的从所述状态到所述多个不同状态中的第二状态的改变;
由所述网络设备并且基于与所述第二状态相关联的所述网络策略的所述一个或多个性能要求,选择所述多个不同路径中的第二路径;以及
由所述网络设备在所述第二状态期间沿着所述第二路径转发与所述会话相关联的网络业务。
3.根据权利要求1所述的方法,
其中确定所述状态包括确定所述会话的所述多个不同状态中的第一状态和第二状态,
其中选择所述路径包括:
由所述网络设备并且基于与所述第一状态相关联的第一网络策略的一个或多个第一性能要求,选择所述多个不同路径中的第一路径;以及
由所述网络设备并且基于与所述第二状态相关联的第二网络策略的一个或多个第二性能要求,选择所述多个不同路径中的第二路径,其中所述一个或多个第一性能要求不同于所述一个或多个第二性能要求,并且其中所述第一路径不同于所述第二路径,并且
其中转发与所述会话相关联的所述网络业务包括:
在所述会话的所述第一状态期间沿着所述第一路径转发与所述会话相关联的网络业务;以及
在所述会话的所述第二状态期间沿着所述第二路径转发与所述会话相关联的网络业务。
4.根据权利要求1至3中任一项所述的方法,其中所述一个或多个性能要求包括以下一项或多项:抖动、时延、分组丢失、带宽或成本。
5.根据权利要求1至3中任一项所述的方法,其中确定所述状态是基于与由所述网络设备接收的所述会话相关联的分组的数目。
6.根据权利要求1至3中任一项所述的方法,其中确定所述状态是基于所述会话的经过时间。
7.根据权利要求1至3中任一项所述的方法,其中确定所述状态是基于由所述网络设备接收的分组的类型。
8.根据权利要求1至3中任一项所述的方法,其中所述会话的所述多个状态包括:
会话建立状态;以及
数据通信状态;以及
拆除状态。
9.根据权利要求8所述的方法,其中确定所述状态包括:
响应于从所述第一客户端设备接收到包括传输控制协议(TCP)“SYN”消息的分组,确定所述会话建立状态;
响应于从所述第一客户端设备接收到包括TCP“ACK”消息的分组,确定所述数据通信状态;以及
响应于从所述第一客户端设备或所述第二客户端设备接收到包括TCP“FIN”消息的分组,确定所述拆除状态。
10.根据权利要求8所述的方法,其中确定所述状态包括:
响应于从所述第一客户端设备接收到包括传输层安全性(TLS)“客户端你好”消息的分组,确定所述会话建立状态;
响应于从所述第一客户端设备接收到包括TLS“完成了”消息的分组,确定所述数据通信状态;以及
响应于从所述第一客户端设备或所述第二客户端设备接收到包括TLS“关闭通知”消息的分组,确定所述拆除状态。
11.一种方法,包括:
由计算设备的处理电路并且基于与会话相关联的网络业务的双向流的行为,标识所述会话的多个状态;
由所述处理电路并且针对所述会话的所述多个状态中的每个状态,确定在所述状态期间、针对网络业务的一个或多个性能要求;
由所述处理电路生成多个网络策略,其中所述多个网络策略中的每个网络策略指定在所述会话的所述多个不同状态的相对应的状态期间、针对网络业务的所述一个或多个性能要求;以及
由所述处理电路并且向网络设备传送所述多个网络策略以用于对与所述会话相关联的网络业务的应用。
12.根据权利要求11所述的方法,其中标识所述会话的所述多个状态包括:由所述处理电路执行的机器学习系统将机器学习模型应用于与多个会话的每个会话相关联的网络业务的双向流的行为。
13.根据权利要求11所述的方法,其中与所述会话相关联的所述网络业务的所述双向流的所述行为包括在与所述会话相关联的第一客户端设备和第二客户端设备之间交换的多个字节模式。
14.根据权利要求11至13中任一项所述的方法,其中在所述多个状态中的每个状态期间、针对网络业务的所述一个或多个性能要求是基于针对所述会话的一个或多个服务级别协议要求。
15.根据权利要求11至13中任一项所述的方法,其中所述一个或多个性能要求包括以下一项或多项:抖动、时延、分组丢失、带宽或成本。
16.根据权利要求11至13中任一项所述的方法,
其中所述会话的多个状态包括:
会话建立状态;
数据通信状态;以及
拆除状态。
17.根据权利要求16所述的方法,
其中针对所述会话的所述多个状态中的每个状态,确定在所述状态期间、针对网络业务的所述一个或多个性能要求包括:
针对所述会话建立状态,确定在所述会话建立状态期间针对网络业务的一个或多个第一性能要求;以及
针对所述数据通信状态,确定在所述数据通信状态期间针对网络业务的一个或多个第二性能要求;其中所述一个或多个第一性能要求不同于所述一个或多个第二性能要求,以及
其中生成所述多个网络策略包括:
生成指定所述会话建立状态期间针对网络业务的所述一个或多个第一性能要求的第一网络策略;以及
生成指定所述数据通信状态期间针对网络业务的所述一个或多个第二性能要求的第二网络策略。
18.根据权利要求16所述的方法,其中标识所述多个状态包括:
响应于标识包括来自第一客户端设备的传输控制协议(TCP)“SYN”消息的分组,标识所述会话建立状态;
响应于标识包括来自所述第一客户端设备的TCP“ACK”消息的分组,确定所述数据通信状态;以及
响应于标识包括来自所述第一客户端设备或第二客户端设备的TCP“FIN”消息的分组,确定所述拆除状态。
19.根据权利要求16所述的方法,其中标识所述多个状态包括:
响应于标识包括来自第一客户端设备的传输层安全性(TLS)“客户端你好”消息的分组,标识所述会话建立状态;
响应于标识包括来自所述第一客户端设备的TLS“完成了”消息的分组,标识所述数据通信状态;以及
响应于标识包括来自所述第一客户端设备或第二客户端设备的TLS“关闭通知”消息的分组,标识所述拆除状态。
20.一种形成网络的多个网络设备中的网络设备,所述网络设备包括:
存储设备;以及
处理电路,所述处理电路被配置为:
接收多个网络策略,其中所述多个网络策略中的每个网络策略定义在会话的多个不同状态的每个状态期间、针对网络业务的一个或多个性能要求,并且其中所述会话包括在第一客户端设备和第二客户端设备之间的网络业务的双向流;
确定所述会话的所述多个不同状态中的状态;
基于与所述状态相关联的所述网络策略的所述一个或多个性能要求,选择通过所述网络的多个不同路径中的路径;以及
沿着选择的所述路径转发与所述会话相关联的网络业务。
CN202111545065.0A 2020-12-21 2021-12-16 基于会话状态的网络策略应用 Pending CN114650253A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063128672P 2020-12-21 2020-12-21
US63/128,672 2020-12-21
US17/454,071 US20220200915A1 (en) 2020-12-21 2021-11-09 Network policy application based on session state
US17/454,071 2021-11-09

Publications (1)

Publication Number Publication Date
CN114650253A true CN114650253A (zh) 2022-06-21

Family

ID=78957152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111545065.0A Pending CN114650253A (zh) 2020-12-21 2021-12-16 基于会话状态的网络策略应用

Country Status (3)

Country Link
US (1) US20220200915A1 (zh)
EP (1) EP4017089A3 (zh)
CN (1) CN114650253A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4173237A1 (en) 2020-06-24 2023-05-03 Juniper Networks, Inc. Layer-2 network extension over layer-3 network using layer-2 metadata
US11553058B1 (en) * 2022-02-09 2023-01-10 coretech It, UAB Sticky sessions in a proxy infrastructure

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8214875B2 (en) * 2004-02-26 2012-07-03 Vmware, Inc. Network security policy enforcement using application session information and object attributes
US8134915B2 (en) * 2007-12-12 2012-03-13 Cisco Technology, Inc. Method and apparatus for providing network redundancy
US9049617B2 (en) * 2009-09-23 2015-06-02 At&T Intellectual Property I, L.P. Signaling-less dynamic call setup and teardown by utilizing observed session state information
US9755960B2 (en) * 2013-09-30 2017-09-05 Juniper Networks, Inc. Session-aware service chaining within computer networks
TW201728124A (zh) * 2014-09-16 2017-08-01 科勞簡尼克斯股份有限公司 以彈性地定義之通信網路控制器為基礎之網路控制、操作及管理
US9729439B2 (en) 2014-09-26 2017-08-08 128 Technology, Inc. Network packet flow controller
US10277506B2 (en) 2014-12-08 2019-04-30 128 Technology, Inc. Stateful load balancing in a stateless network
US9729682B2 (en) 2015-05-18 2017-08-08 128 Technology, Inc. Network device and method for processing a session using a packet signature
US9762485B2 (en) 2015-08-24 2017-09-12 128 Technology, Inc. Network packet flow controller with extended session management
US9871748B2 (en) 2015-12-09 2018-01-16 128 Technology, Inc. Router with optimized statistical functionality
US9985883B2 (en) 2016-02-26 2018-05-29 128 Technology, Inc. Name-based routing system and method
US10257061B2 (en) 2016-05-31 2019-04-09 128 Technology, Inc. Detecting source network address translation in a communication system
US10200264B2 (en) 2016-05-31 2019-02-05 128 Technology, Inc. Link status monitoring based on packet loss detection
US10841206B2 (en) 2016-05-31 2020-11-17 128 Technology, Inc. Flow modification including shared context
US10425511B2 (en) 2017-01-30 2019-09-24 128 Technology, Inc. Method and apparatus for managing routing disruptions in a computer network
US10432519B2 (en) 2017-05-26 2019-10-01 128 Technology, Inc. Packet redirecting router
US10462042B2 (en) * 2017-06-20 2019-10-29 Cisco Technology, Inc. Network path selection
JP7250587B2 (ja) * 2019-03-28 2023-04-03 キヤノン株式会社 通信装置、制御方法、および、プログラム
US11153202B2 (en) 2019-05-13 2021-10-19 128 Technology, Inc. Service and topology exchange protocol
US10999182B2 (en) 2019-05-13 2021-05-04 128 Technology, Inc. Routing using segment-based metrics
US11451464B2 (en) 2019-05-13 2022-09-20 128 Technology, Inc. Central authority for service and topology exchange
US11329912B2 (en) 2019-05-13 2022-05-10 128 Technology, Inc. Source-based routing
US11075824B2 (en) 2019-06-19 2021-07-27 128 Technology, Inc. In-line performance monitoring
US11329916B2 (en) * 2020-09-03 2022-05-10 128 Technology, Inc. Device information method and apparatus for directing link-layer communication
US11223538B1 (en) * 2020-09-11 2022-01-11 Hewlett Packard Enterprise Development Lp Intelligent data traffic routing in a wide area network
US20220138081A1 (en) * 2020-11-02 2022-05-05 Innovate5G, Inc. Systems and Methods for Optimization of Application Performance on a Telecommunications Network

Also Published As

Publication number Publication date
EP4017089A2 (en) 2022-06-22
US20220200915A1 (en) 2022-06-23
EP4017089A3 (en) 2022-06-29

Similar Documents

Publication Publication Date Title
US20230308421A1 (en) Method and system of establishing a virtual private network in a cloud service for branch networking
US20230006929A1 (en) Method and system of application-aware routing with crowdsourcing
US11374904B2 (en) Method and system of a cloud-based multipath routing protocol
US11658902B2 (en) Session monitoring using metrics of session establishment
EP4017089A2 (en) Network policy application based on session state
WO2011079695A1 (zh) 一种网络流量切换控制方法、装置及系统
EP3646533B1 (en) Inline stateful monitoring request generation for sdn
US20230261930A1 (en) Predicting network issues based on historical data
WO2018077304A1 (zh) 业务信息处理方法、装置及系统
US20230336446A1 (en) Application records using session information
Jain OpenFlow, software defined networking (SDN) and network function virtualization (NFV)
EP4080850A1 (en) Onboarding virtualized network devices to cloud-based network assurance system
EP4161023A1 (en) Opportunistic mesh for software-defined wide area network (sd-wan)
US11799779B1 (en) Session-based packet capture
US20230131877A1 (en) Inline security key exchange
CN115428411B (zh) 使用会话建立度量的会话监测
CN115883631A (zh) 使用路径变化建立会话
Wolter A Brief History of Network Programmability and Related Fields

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