CN111753166A - 用于传送动态系统状态的查询代理 - Google Patents
用于传送动态系统状态的查询代理 Download PDFInfo
- Publication number
- CN111753166A CN111753166A CN201910919931.4A CN201910919931A CN111753166A CN 111753166 A CN111753166 A CN 111753166A CN 201910919931 A CN201910919931 A CN 201910919931A CN 111753166 A CN111753166 A CN 111753166A
- Authority
- CN
- China
- Prior art keywords
- state information
- dynamic application
- data store
- requests
- operating system
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 85
- 230000004044 response Effects 0.000 claims abstract description 48
- 238000003860 storage Methods 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 description 46
- 239000004744 fabric Substances 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 239000012634 fragment Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000007596 consolidation process Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005111 flow chemistry technique Methods 0.000 description 2
- 229920000915 polyvinyl chloride Polymers 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/561—Adding application-functional data or data for application control, e.g. adding metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Library & Information Science (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及用于传送动态系统状态的查询代理。通常,描述了用于为分布式操作系统提供动态系统状态的技术。一种网络装置包括多个硬件计算节点,其被配置为执行分布式操作系统,分布式操作系统提供执行多个应用程序的执行环境。多个计算节点中的计算节点被配置为配置动态应用程序作为代理来操作,以接收对存储在数据储存器中的状态信息的一个或多个请求。计算节点检索存储在数据储存器中的状态信息;将检索到的状态信息存储在计算节点的本地数据储存器中;接收对状态信息的一个或多个请求;并且发送包括来自本地数据储存器的所请求的状态信息的响应。
Description
技术领域
本公开涉及网络装置,并且更具体地,涉及用于网络装置的操作系统。
背景技术
用于网络装置(例如,路由器)的操作系统用于提供各种应用程序(例如,网络协议、维护接口、虚拟化应用程序等)可以执行的执行环境。路由器操作系统的一个功能是建立一种方式,通过该方式,状态信息可以传播到各种组件,或者换言之,路由器的计算节点,以允许路由器在网络内正确路由网络流量。
路由器可以例如维护表示路由器资源的当前状态的状态信息。例如,路由器维护表示路由器和网络之间的接口状态的状态信息。这种状态信息可以包括表示一个或多个接口卡(IFC)的状态的信息,例如,IFC的当前配置。作为额外示例,路由器可以维护表示路由器内的一个或多个分组转发引擎(PFE)、一个或多个路由引擎或其他资源的状态的状态信息。
在路由器内运行的称为“路由引擎”的控制节点可以执行操作系统的实例,以将状态信息(及其变化)传播到路由器内的各种其他进程或组件。这些其他进程或组件有时称为“消费者”,因为其接收并利用(或者换言之,“消费”)由操作系统的实例维护的状态信息。这些消费者在执行其各种功能时利用状态信息。
在一些示例中,操作系统可以分布在路由器的计算节点上,计算节点可以包括路由引擎、接口卡、分组转发引擎以及非网络节点,例如,处理器、中央处理单元(CPU)、专用集成电路(ASIC)、图形处理单元(GPU)。例如,计算节点可以执行分布式操作系统的相应实例,使得操作系统分布在所有计算节点上。每个计算节点可以自组织、合并,以执行分布式操作系统的单个实例。执行分布式操作系统的相应实例的计算节点可以被配置为在相应数据结构中存储状态信息。
发明内容
描述了用于为分布式操作系统提供动态系统状态的技术。例如,用于网络装置的分布式操作系统可以允许底层硬件资源的动态扩展或收缩(或者换言之,“弹性”),同时还潜在地提供在生产组件(所谓的“生产者”)和消费组件(所谓的“消费者”)上的状态信息的鲁棒收敛。操作系统可以分布在计算节点(也可以称为“硬件计算节点”、“计算节点”或“节点”)上,这些节点可以包括路由引擎、接口卡、分组转发引擎以及非网络节点,例如,处理器、中央处理单元(CPU)、专用集成电路(ASIC)、图形处理单元(GPU)。计算节点最初可以从内核开始合并,经由以类似于链路状态路由协议的拓扑发现为前提的对象泛洪协议(OFP)彼此检测,并经由管理过程组织,以执行分布式操作系统。
一旦在计算节点上启动,分布式操作系统可以允许实时(或接近实时)构建同步树,用于同步由分布式操作系统维护的状态信息的数据库。操作系统可以使用OFP同步数据库。操作系统可以处理执行分布式操作系统的实例的计算节点之间的一致性,使得在分布式操作系统的实例的各种连接或故障的情况下,一致性状态信息可以由每个实例维护。在一些示例中,分布式操作系统的状态信息的同步数据库统称为分布式数据储存器,例如,对象守护程序数据储存器(DDS)。
在合并以执行分布式操作系统的单个实例之后,计算节点可以在分布式操作系统提供的执行环境内执行分布式应用套件(例如,网络协议、管理接口、命令行接口(CLI)等)。分布式操作系统可以基于多机架路由器内的计算节点能力和/或角色,在支持执行分布式操作系统的计算节点之间分发应用程序。分布式操作系统可以管理状态信息的传播,以支持分布式操作系统和/或在分布式操作系统提供的执行环境内执行的应用程序的执行。
作为本文描述的技术的一个示例,动态应用程序被配置为作为代理来操作,以接收对DDS中的状态信息的一个或多个请求。例如,执行分布式操作系统的实例的至少一个计算节点可以将动态应用程序配置为作为代理(例如,网络服务器)来操作,以从客户端(例如,网络客户端)接收一个或多个请求,并从DDS检索状态信息。动态应用程序可以在初始化期间或每次更新DDS中的状态信息时,从DDS中检索状态信息,并将检索到的状态信息存储在本地数据储存器或存储器中。当动态应用程序接收到对DDS中的状态信息的一个或多个请求(例如,超文本传输协议(HTTP)请求)时,动态应用程序可以检索存储在其本地数据储存器或存储器中的状态信息,并用检索到的状态信息配置响应(例如,超文本标记语言(HTML)文件)。
以这种方式,动态应用程序可以作为通用代理应用程序来操作,以从可利用基于网络的查询的DDS接收对状态信息的一个或多个请求,从而提供从DDS接入状态信息的更灵活的方式。即,动态应用程序可以决定提供什么信息和/或改变所请求信息的呈现。此外,通过将动态应用程序配置为网络服务器,动态应用程序是多线程的,这使得动态应用程序能够一次处理多个请求。
在一个示例中,一种方法包括由包括在网络装置内的多个硬件计算节点执行分布式操作系统,分布式操作系统提供执行多个应用程序的执行环境。该方法还包括由多个硬件计算节点中的至少一个硬件计算节点配置动态应用程序,以作为代理来操作,以接收对存储在数据储存器中的状态信息的一个或多个请求,其中,状态信息包括表示多个应用程序的不同状态的信息。该方法还包括由动态应用程序检索存储在数据储存器中的状态信息。该方法还包括由动态应用程序将检索到的状态信息存储在多个硬件计算节点中的至少一个硬件计算节点的本地数据储存器中。此外,该方法还包括由动态应用程序接收对状态信息的一个或多个请求。该方法还包括由动态应用程序响应于接收到一个或多个请求,发送包括来自本地数据储存器的所请求的状态信息的响应。
在另一示例中,一种网络装置包括:多个硬件计算节点,其被配置为执行分布式操作系统,所述分布式操作系统提供执行多个应用程序的执行环境。所述多个硬件计算节点中的至少一个被配置为:配置动态应用程序,以作为代理来操作,以接收对存储在数据储存器中的状态信息的一个或多个请求,其中,所述状态信息包括表示所述多个应用程序的不同状态的信息;检索存储在数据储存器中的状态信息;将检索到的状态信息存储在多个硬件计算节点中的至少一个的本地数据储存器中;接收对状态信息的一个或多个请求;并且响应于接收到所述一个或多个请求,发送包括来自本地数据储存器的所请求的状态信息的响应。
在另一示例中,一种其上存储有指令的非暂时性计算机可读存储介质,指令在被执行时使网络装置的一个或多个处理器:执行分布式操作系统,分布式操作系统提供执行多个应用程序的执行环境;配置动态应用程序,以作为代理来操作,以接收对存储在数据储存器中的状态信息的一个或多个请求,其中,状态信息包括表示多个应用程序的不同状态的信息;检索存储在数据储存器中的状态信息;将检索到的状态信息存储在多个硬件计算节点中的至少一个硬件计算节点的本地数据储存器中;接收对状态信息的一个或多个请求;并且响应于接收到一个或多个请求,发送包括来自本地数据储存器的所请求的状态信息的响应。
在附图和以下描述中阐述这些技术的一个或多个方面的细节。通过说明书和附图以及权利要求书,这些技术的其他特征、目的和优点将变得显而易见。
附图说明
图1是示例网络计算环境的框图,其中,服务提供商网络包括被配置为根据本公开中描述的分布式操作系统技术操作的多机架路由器。
图2是示出根据本公开中描述的技术执行实现动态应用程序的分布式操作系统的示例多机架路由器的框图。
图3是示出图2所示的多机架路由器的示例节点的框图,该示例节点被配置为根据本公开中描述的技术的相应方面进行操作。
图4是示出根据本公开技术的动态应用程序的示例操作的框图。
图5是示出图3所示的多机架路由器在执行本公开中描述的技术的相应方面的示例操作的流程图。
具体实施方式
图1是示出示例计算环境2的框图,其中,服务提供商网络6包括多机架路由器4。在该示例中,多机架路由器4与边缘路由器5A和5B(“边缘路由器5”)通信,以向客户网络8A-8C(“客户网络8”)提供对网络6的接入。在一个示例中,多机架路由器4包括作为控制节点操作的中央交换卡机架(SCC)和作为分组路由装置操作的一个或多个线卡机架(LCC)。LCC可以包含用于耦接到网络6内的其他装置的所有物理接口,而SCC控制和路由LCC之间的流量。
虽然未示出,但是服务提供商网络6可以耦接到由其他提供商管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如,互联网)的一部分。因此,客户网络8可以被视为互联网的边缘网络。服务提供商网络6可以向客户网络8内的计算装置提供对互联网的接入,并且可以允许客户网络8内的计算装置彼此通信。服务提供商网络6可以包括除多机架路由器4和边缘路由器5之外的各种网络装置,例如,额外路由器、交换机、服务器或其他装置。
在图示的示例中,边缘路由器5A经由接入链路9A耦接到客户网络8A,并且边缘路由器5B分别经由接入链路9B和9C耦接到客户网络8B和8C。客户网络8可以是企业地理上分开的站点的网络。客户网络8可以包括一个或多个计算装置(未示出),例如,个人计算机、膝上型计算机、手持计算机、蜂窝电话(包括所谓的“智能电话”)、平板计算机、工作站、服务器、交换机、打印机或其他装置。图1所示的网络2的配置仅仅是示例。例如,服务提供商网络6可以耦接到任意数量的客户网络8。然而,为了便于描述,图1中仅示出了客户网络8A-8C。
多机架路由器4可以被配置为在多机架路由器4的所有计算节点(可以统称为所有生产者和消费者)上执行操作系统的单个实例。本公开中描述的操作系统可以称为分布式操作系统10(“DOS 10”),因为操作系统的执行分布在所有计算节点上。计算节点可以包括硬件计算节点(例如,路由引擎、硬件转发单元,其可以包括专用集成电路和接口卡)和由硬件控制单元(例如,一个或多个处理器、一个或多个专用集成电路、现场可编程门阵列等)执行的虚拟计算节点。
分布式操作系统10可以避免相同操作系统的单独实例的冗余执行,同时通过状态信息的多播传递形式的泛洪来简化状态信息的传播。此外,分布式操作系统10可以对计算节点故障具有弹性,允许支持分布式操作系统的单独计算节点发生故障,而不需要重启支持分布式操作系统的单个实例的执行的剩余计算节点。
计算节点可以合并,以执行分布式操作系统10。例如,计算节点可以彼此发现(例如,通过使用OFP),并且被组织成执行分布式操作系统10的单个实例。在合并以执行分布式操作系统10的单个实例之后,计算节点可以在分布式操作系统提供的执行环境中执行分布式应用程序套件。例如,分布式操作系统10的执行环境可以包括用户空间18的应用程序20A-20N(统称为“应用程序20”)。应用程序20中的每一个可以表示用户级进程,这些进程可以运行网络管理软件、执行路由协议以与对等路由装置通信、执行从管理员接收的配置命令、维护和更新一个或多个路由表、管理订户流处理、创建一个或多个转发表以及其他功能。应用程序20可以指除低级驱动程序和/或固件之外的任何未在上面针对分布式操作系统10描述的过程,包括守护程序和PFE应用程序(或者换言之,软件)。
一旦在计算节点上启动,分布式操作系统可以允许实时(或接近实时)构建同步树,用于同步由分布式操作系统维护的状态信息数据库。状态信息可以是例如分布式操作系统10和/或在分布式操作系统10提供的执行空间中执行的一个或多个应用程序20的状态信息。执行分布式操作系统10的相应实例的多机架路由器4的计算节点可以被配置为将状态信息存储在相应数据结构中,例如,树数据结构。例如,计算节点可以实例化树数据结构,例如,基数trie。基数trie是由密钥构成的树,针对此,每个内部trie节点至少有两个子节点。为了定位具有特定密钥的trie节点,从左侧开始,通过检查密钥的内容来遍历树。基数trie是最小树,因为没有只有一个子节点的内部trie节点。Patricia Trie是一种特殊形式的基数trie。
计算节点可以将状态信息表示为消息片段,其中,每个消息片段存储在树数据结构的树节点中。计算节点可以通过将表示消息片段的对象泛洪到其他计算节点来同步树数据结构(例如,使用OFP)。例如,当多机架路由器4的一个计算节点接收到更新的状态信息时,多机架路由器4的一个计算节点可以更新其本地树数据结构,然后将更新的状态信息泛洪到其他计算节点。以这种方式,计算节点可以保持其相应的数据结构之间的同步,用于存储分布式操作系统10和/或在分布式操作系统10提供的执行环境中执行的应用程序的状态信息。同步数据结构在本文可以统称为分布式数据储存器或对象守护程序数据储存器(DDS),例如,DDS 24。
分布式操作系统10可以管理状态信息的传播,以支持分布式操作系统10和/或在分布式操作系统10提供的执行环境内执行的应用程序20的执行。例如,分布式操作系统10可以利用分层命名方案将状态信息从生产者传播到消费者。关于分层命名方案以及分层命名方案如何使用对象泛洪协议(OFP)更有效地传播状态信息的更多信息,见于2016年6月30日提交的题为“HIERARCHICAL NAMING SCHEME FOR STATE PROPAGATION WITHIN NETWORKDEVICES”的美国申请序列号15/198,912,该申请的全部内容通过引用结合于此,如同阐述其全部内容一样。
于2017年6月29日提交的题为“COMMUNICATING STATE INFORMATION INDISTRIBUTED OPERATING SYSTEMS”的美国申请序列号15/637,775、2017年6月29日提交的题为“ORGANIZING EXECUTION OF DISTRIUBTED OPERATING SYSTEMS FOR NETWORKDEVICES”的美国申请序列号15/637,809和2017年6月29日提交的题为“MAINTAININGCOHERENCY IN DISTRIBUTED OPERATING SYSTEMS FOR NETWORK DEVICES”的美国申请序列号15/637,839中描述了分布式操作系统的额外示例,这些申请的全部内容通过引用结合于此。
在某些情况下,客户端可以从DDS 22请求状态信息。在不同应用程序产生存储在DDS 24中的不同状态信息的示例中,现有的请求过程需要向特定应用程序发送查询,以从DDS 24检索相应的状态信息。例如,应用程序20A是存储在DDS 24中的路由状态信息的生产者,而应用程序20N是存储在DDS 24中的接口状态信息的生产者。在这个示例中,对路由状态信息的请求发送到应用程序20A,应用程序20A又从DDS 24检索路由状态信息。类似地,对接口状态信息的请求发送到应用程序20N,应用程序20N又从DDS 24检索接口状态信息。由于应用程序分布在分布式操作系统中的整个计算节点上,所以这些现有的请求进程必须发现应用程序的位置,以便将请求发送到适当的应用程序。
现有的请求过程也可能是多跳的,这导致响应时间变慢。作为使用CLI来请求状态信息的一个示例,经由CLI配置的每个请求(例如,可扩展标记语言(XML)格式的请求)可以传递给命令行接口应用程序,例如,命令守护程序(cmdd),命令守护程序将该请求转化成符合具有支持语义的接口的应用程序(例如,数据库守护程序)使用的特定语义的查询。接收查询的应用程序可以从DDS 24检索状态信息。应用程序可以用所请求的状态信息配置响应,该状态信息由cmdd转换成与CLI兼容的响应(例如,以XML格式)。
在一些示例中,现有的请求过程可以使用专有语法从DDS 24查询状态信息。使用上面的示例,cmdd可以将来自CLI(例如,XML)的请求转化成专有查询(例如,ddx请求),并且还可以将专有响应(例如,ddx响应)转化成与CLI(例如,XML)兼容的响应。专有语法的使用将请求过程仅限于熟悉专有语法的客户端。
现有的请求过程也是单线程过程,其中,应用程序每次收到请求时都会对DDS执行查询。即,CLI一次只能支持单个请求的处理。CLI是一个从运行到完成的过程,其中,CLI的每个实例一次只能处理单个请求,直到相应的响应可用,并且响应返回到当前响应,从而可能给请求处理带来延迟。这样,在应用程序接收多个请求(例如,第一请求和第二请求)的一些示例中,应用程序不能处理第二请求,直到应用程序基于第一请求完成对DDS的查询。
此外,通过使用CLI从DDS 24请求状态信息,返回状态信息的整个XML文件,而不是状态信息的特定对象(例如,状态信息的离散部分)。结果,CLI在传送整个XML文件时可能消耗大量带宽(例如,存储器总线带宽),这也可能导致进一步的低效率,因为必须处理整个XML文件,以识别请求的相关对象,从而可能消耗额外的处理周期。
根据本公开中描述的技术,多机架路由器4可以包括多个计算节点,其被配置为执行提供执行环境的分布式操作系统,在该执行环境中,执行动态应用程序22,以作为代理来操作,以接收对DDS 24中的不同状态信息的一个或多个请求。例如,执行分布式操作系统10的实例的多机架路由器4的至少一个计算节点可以配置动态应用程序22。在一些示例中,可以执行分布式操作系统10的实例的远程节点(例如,一个边缘路由器5)可以使用OFP来执行动态应用程序22。
在一些示例中,执行动态应用程序22的实例的至少一个计算节点可以接收配置信息(例如,经由配置文件、命令行选项或其他输入处理机制),该配置信息定义了动态应用程序22可以作为代理操作以接收对不同状态信息的一个或多个请求的参数。例如,配置信息可以包括服务器参数、服务参数(例如,输出参数)和/或在执行动态应用程序22的实例的至少一个计算节点上生成的数据储存器的结构。
配置信息可以指示执行动态应用程序22的相应实例的计算节点从DDS 24检索状态信息(例如,状态信息的子集),并将检索到的状态信息存储在计算装置的本地数据储存器或存储器中。例如,配置信息可以指示动态应用程序22在初始化期间和/或每次更新DDS24中的状态信息时从DDS 24检索状态信息。配置信息还可以指示执行动态应用程序22的相应实例的计算节点构建存储检索到的状态信息的本地数据储存器。本地数据储存器可以将从DDS 24检索的状态信息对象映射到对来自客户端的请求的响应。
配置信息的服务器参数可以包括计算节点作为服务器操作所需的参数。服务器参数可以包括端口号、认证等。执行动态应用程序22的相应实例的计算节点可以基于配置信息露出接口(例如,端口),使得计算节点可以从服务端点(例如,网络客户端)接收一个或多个请求。在一些示例中,执行动态应用程序22的实例的计算节点可以配置端口,以接收网络请求,例如,超文本传输协议(HTTP)获取请求。以这种方式,动态应用程序22可以作为预定义端口处的网络服务器来操作,以从网络客户端接收一个或多个基于网络的请求。
配置信息的服务参数可以包括用于对状态信息请求的响应的参数。例如,服务参数可以包括状态信息对象的输出格式。作为一个示例,配置信息可以使计算节点根据表示性状态转移(REST)软件架构来实现,以发送和接收数据接口格式的消息。数据接口格式的消息可以符合开放标准格式,该格式使用人类可读文本来传输包括属性-值对的数据对象。数据接口格式的消息格式的一个示例是在2015年5月“JSON Web Token(JWT)”互联网工程任务组(IETF),征求意见7519中描述的JavaScriptObject符号(JSON),其全部内容通过引用结合于此。
动态应用程序22可以是多实例的,因为多机架路由器4的多个计算节点可以实现动态应用程序22的相应实例。例如,配置信息可以定义第一计算节点(例如,路由引擎),以执行动态应用程序22的第一实例,来提供状态信息的第一子集(例如,路由状态信息)的视图,并且定义第二计算节点,以执行动态应用程序22的第二实例,来提供状态信息的第二子集(例如,接口状态信息)的视图。
在操作中,动态应用程序22可以在初始化或更新DDS 24期间,从DDS 24检索状态信息,并将检索到的状态信息存储在本地数据储存器或存储器中。动态应用程序22可以从请求DDS 24中的状态信息的网络客户端接收例如一个或多个请求(例如,HTTP获取请求)。动态应用程序22可以检索存储在其本地数据储存器或存储器中的状态信息,并且可以用检索到的状态信息配置响应,例如,超文本标记语言文件。在一些示例中,动态应用程序22可以包括带有响应的HTML标签。
在一些示例中,动态应用程序22还可以经由适于获得所请求的状态信息的方法注册通知。例如,动态应用程序22可以在用于速度通知的事件处理器上实现网络接口库(例如,IFLIB)。在一些其他示例中,动态应用程序22可以被配置为根据本文描述的技术的一个或多个方面监听来自现有请求过程和来自请求过程的请求。
本文描述的技术可以提供一个或多个技术优势。例如,通过配置动态应用程序来存储状态信息,动态应用程序可以通过检索存储在其本地数据储存器或存储器中的状态信息来一次处理多个请求,而不必为每个请求查询DDS。此外,作为网络服务器运行的动态应用程序使用非专有语法(例如,HTTP请求),非专有语法是通用的,不需要专有语法。此外,请求可以是容易集成到现有系统中的REST风格的查询。通过实现基于网络的高速缓存的通用查询,状态信息的外部查询更容易配置、处理更快,并分布到多个系统。
图2是示出被配置为根据本公开中描述的技术操作的示例多机架路由器120的框图。图2的多机架路由器120可以表示图1的多机架路由器4的一个示例。多机架路由器120通过网络在网络装置之间路由数据包。在该示例中,多机架路由器120包括四个基本相同的LCC 128A-128D(“LCC128”)和作为中央控制节点运行的SCC 122。在其他示例中,多机架路由器可以包括或多或少的LCC。SCC 122为多机架路由器120提供集中的交换和控制。LCC128使用IFC组134A-134D(“IFC 134”)提供到网络的接口。
SCC 122包括交换结构124和主路由引擎126。尽管在图2的示例中未示出,但是当多机架路由器120被配置为高可用性路由器时,SCC 122可以包括备用主路由引擎。交换结构124在LCC 128的交换结构125之间提供背面连接,即,与网络分离的连接。主路由引擎126的功能包括维护描述网络拓扑的路由信息,并使用该信息导出转发信息库(FIB)。路由引擎126经由通过电缆137与本地路由引擎130的通信通过将FIB安装在LCC 128中来控制多机架路由器120中的分组转发。一个LCC 128的FIB可以与其它LCC 128和SCC 122的FIB相同或不同。因为电缆137在SCC122和LCC 128之间提供专用连接,即,与电缆136提供的数据包转发连接分开,所以LCC路由引擎130中的FIB可以更新,而不会中断多机架路由器120的数据包转发性能。
LCC 128均包含一个本地路由引擎130A-130D(“路由引擎130”)、一个交换结构125A-125D(“交换结构125”)、至少一个分组转发引擎(PFE)(显示为PFE 132A-132D(“PFE132”))以及一个或多个IFC 134。在一些示例中,当多机架路由器120被配置为提供高可用性时,除了一个本地路由引擎130之外,LCC 128还可以包括一个备用本地路由引擎,在高可用性配置中,本地路由引擎130可以称为主本地路由引擎130。
多机架路由器120以以下方式执行路由功能。首先由一个IFC 134(例如,134B)从网络接收输入的数据包,IFC 134将数据包引导到一个PFE 132(例如,PFE 132B)。然后,PFE使用由主本地路由引擎(例如,路由引擎130B)提供的FIB为数据包确定合适的路由。如果数据包去往与最初接收数据包的一个IFC 134相关联的出站链路,则PFE将数据包转发到出站链路。以这种方式,由从网络旁路交换结构124和交换结构125接收数据包的同一PFE发送数据包。
否则,PFE将数据包发送到交换结构125,其中,将该数据包引导到交换结构124,并沿着路线到达其他PFE 132中的一个,例如,PFE 132D。该PFE(例如,PFE 132D)经由一个IFC134(例如,IFC 134D)通过网络发送数据包。因此,由一个LCC 128接收的输入数据包可以由另一LCC128发送到其目的地。以与本公开中描述的技术一致的方式操作的其他多机架路由器可以使用不同的交换和路由机制。
本地路由引擎130控制和管理LCC 128,但是从属于SCC 122的主路由引擎126。例如,在从主路由引擎126接收到状态信息更新之后,本地路由引擎130使用分层排序和暂时链接的数据结构将状态信息更新转发给LCC 128上的消费者。例如,从本地路由引擎130接收状态信息更新的消费者包括PFE 132和IFC 134。本地路由引擎130还将由主路由引擎126导出的FIB分发到PFE 132。
路由引擎126和130可以根据从一个或多个计算机可读介质获取的可执行指令来操作。这种介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存等。多机架路由器120的功能可以通过用一个或多个处理器、分立硬件电路、固件、在可编程处理器上执行的软件或其组合执行计算机可读介质的指令来实现。
如上所述,节点可以包括路由引擎126、路由引擎130、PFE 132和IFC 134。链路可以包括交换结构124和电缆136和137以及为便于说明而示出但未列举的其他电缆。各种节点可以相对于图3所示的多机架路由器120的单个节点执行下面更详细描述的技术方面。
图3是示出多机架路由器120的示例计算节点200的框图,该示例计算节点200被配置为根据本公开中描述的技术的相应方面进行操作。作为示例,计算节点200可以表示路由引擎126、一个路由引擎130、交换卡机架122或一个线卡机架128。
如图3所示,计算节点200执行内核202,内核202使得能够与计算节点200的硬件交互。例如,执行分布式操作系统10的实例的每个计算节点(包括计算节点200)可以执行内核202,例如,内核。每个计算节点可以自组织、合并,以便执行分布式操作系统10的单个实例。在自组织(或者,换言之,合并)之后,计算节点200可以执行单个分布式内核202,达到内核202知道由其他计算节点执行的应用程序(例如,应用应用程序230A-230N、动态应用程序232)和/或其他进程的程度。
一旦内核202可操作,则计算节点200可执行OFP 204,通过OFP 204来确定在多机架路由器120内执行的计算节点的拓扑222,该拓扑允许由分布式操作系统10的单个实例的计算节点合并和执行。OFP 204提供了一种机制,通过该机制发现可用于参与分布式操作系统10的执行的计算节点(例如,除了计算节点200之外的计算节点)以及互连计算节点的链路。分布式操作系统10最初执行OFP 204,以确定计算节点的拓扑222,该拓扑允许由分布式操作系统10的单个实例的计算节点合并和执行。OFP物理拓扑发现可以以类似于链路状态协议的方式发生。通过配置OFP 204可以“发现”OFP 204的特定实例耦接到的链路。即,网络管理员或其他运营商可以用OFP 204的每个特定实例所耦接的链路来配置OFP 204。
OFP 204可以通过接收通知224来发现或确定拓扑222。OFP 204可以从支持分布式操作系统10的执行的每个其他计算节点接收公告224,作为状态信息的生产者或消费者。每个公告224可以指定计算节点和直接耦接到该计算节点的一个或多个链路。OFP 204可以(例如,由网络管理员)配置有直接耦接到计算节点200的链路。根据公告224和链路226,OFP204可以构建拓扑222。拓扑222可以表示图形数据结构,包括表示多机架路由器120的计算节点的图形节点以及表示互连多机架路由器120的计算节点的链路的互连图形节点的边缘。OFP 204还包括状态228,表示存储多个对象的状态数据结构,例如,树数据结构(例如,基数trie),每个对象定义分布式操作系统10或在分布式操作系统10提供的应用空间中执行的应用程序中的至少一个的一部分状态信息。
根据链路226,OFP 204还可以生成公告224,经由链路226识别的链路发送生成的一个公告224,使得由相邻计算节点执行的OFP 204同样可以生成拓扑222。与链路状态路由协议一样,OFP 204操作,以在每个计算节点(或者在某些情况下,仅在主计算节点)形成拓扑222的本地副本。OFP 204可以经由公告224泛洪计算节点200检测到的拓扑222的变化(例如,计算节点或链路中断),从而允许拓扑222在支持分布式操作系统10的执行的每个计算节点200处保持同步。OFP可以将拓扑222(经由应用编程接口API)显示给系统纪元管理(SysEpochMan)进程206。
SysEpochMan进程206可以组织(到目前为止,不同且分离的)计算节点来支持单个分布式操作系统10的执行。SysEpochMan进程206还可以监控分布式操作系统,以确保一个或多个计算节点发生故障时的完整性。仅举几例,在计算节点的数量改变、节点间连接中断、组织计算节点和/或计算节点规则改变的情况下,SysEpochMan进程206可以提供从先前系统状态到新系统状态的转换。
SysEpochMan进程206可以建立(并维护)平面(其中,是指Apache 项目)和OFP域(其可以指OFP域,供分布式操作系统10用来传播特定于分布式操作系统10且与应用程序无关的状态信息)。尽管针对进行了描述,但是本公开的技术可以针对任何进程间通信总线或机制来执行。这样,在本公开中更一般地称为进程间通信总线208(“IPCB 208”)。
IPCB 208与OFP 204的不同之处在于,OFP 204是异步通信协议(意味着OFP可以保证最终的对象交付,而不保证对象的有序交付),而IPCB208是同步通信协议(意味着IPCB208可以保证以适当的变化顺序交付,或者换言之,所有计算节点都以发生变化的顺序接收变化)。IPCB 208可以在SysEpochMan进程206内执行,以协调服务,例如,领导者选举(在计算节点内)和名称空间分配。
在形成IPCB 208之后(并且假设OFP 204是可操作的),计算节点可以有效地与多机架路由器的其他计算节点通信,以合并和执行分布式操作系统10。计算节点200接下来可以执行系统管理器(“SysMan”)进程210,该进程210协调由分布式操作系统提供的执行环境内的应用程序(例如,应用程序230A-230N(“应用程序230”))和动态应用程序232的开始和执行。在一些示例中,SysMan进程210可以使用存储在存储元件(例如,硬盘)上的初始化策略作为具有固定状态信息的指令,在初始化时产生动态应用程序232。例如,动态应用程序232可以作为策略引擎启动的一部分,利用SysMan进程210提供的配置信息产生。在其他示例中,SysMan进程210可以响应于推送到网络装置的存储元件(例如,专用硬盘区域)的配置信息(例如,经由配置文件)和/或通过经由CLI(例如,数据流架构(DSA)类型命令)执行产物,来产生动态应用程序232。动态应用程序232的每个产物可以基于相应的配置文件和/或全局配置文件。
计算节点的每个SysMan进程210可以选择SysMan主实例(例如,使用ICPB 208),其可以根据例如策略引擎来负责特定计算节点上的应用程序的执行。
SysMan主进程可以(例如,经由IPCB 208)将应用程序决策传送给本地SysMan进程,然后本地SysMan进程根据应用程序决策来执行应用程序。本地SysMan进程监控应用程序的执行,并向SysMan主进程提供应用程序的状态,以允许SysMan主进程监控应用程序的状态。当状态指示应用程序已经失败时,仅举几例,SysMan主进程可以(通过相同或不同的计算节点)重新启动应用程序的执行,或者激活应用程序的备用实例。
计算节点200还可以执行作为一部分分布式操作系统10的分发器进程212。分发器进程212可以形成对象守护程序数据储存器(DDS),例如,DDS 218,并与单独的应用程序协调,以传送状态信息。DDS 218可以与计算节点200的状态228协调,其他计算节点的状态信息数据结构执行分布式操作系统10的实例。例如,分发器进程212识别存储在状态信息数据结构(例如,状态228)中的哪些对象是过期的,并与其他计算节点同步,以同步数据结构的对象。
分发器212可以作为OFP 204的客户端操作,并且在由不同计算节点执行的分发器之间传送对象。
计算节点200可以被配置为将状态228与执行分布式操作系统10的其他实例的其他节点的相应数据结构同步。通常,当执行分布式操作系统10的实例的每个节点的树数据结构在每个树数据结构内具有树节点的公共排列和互连时,并且当树数据结构的相应树节点具有相同摘要值时,状态228可以被认为与执行分布式操作系统10的其他实例的其他节点的数据结构同步。
计算节点200可以进一步确定状态228是否与执行分布式操作系统10的其他实例的其他节点的状态数据结构同步。计算节点200可以递归地遍历表示状态228的树数据结构的树节点。如果表示状态228的树数据结构的树节点的本地摘要与执行分布式操作系统10的其他实例的节点的树数据结构的相应树节点的摘要匹配,则计算节点200可以确定树节点是同步的。否则,计算节点200可以确定状态228的更新是必要的。
如果需要更新,则计算节点200可以确定其状态228的版本是否是最新的,或者存储执行分布式操作系统10的另一实例的不同节点的状态信息的树数据结构的另一版本是否是最新的。如果表示计算节点200的状态228的树数据结构的树节点的版本是最新的(例如,具有最新的逻辑时钟值),则计算节点200可以向执行分布式操作系统10的其他实例的一个或多个其他节点发送表示状态228的树数据结构的树节点的消息片段数据。否则,如果表示计算节点200的状态228的树数据结构的树节点的版本不是最新的,则计算节点200可以从执行最新的分布式操作系统10的另一实例的其他节点中的不同节点接收表示状态228的树数据结构的树节点的消息片段数据,并且用接收到的消息片段数据更新表示状态28的树数据结构的树节点。
分布式操作系统10的软件栈的进一步示例见上面并入的美国申请序列号15/637,775、美国申请序列号15/637,809和美国申请序列号15/637,839。
根据本文描述的技术,计算节点200以及在一些情况下其他计算节点可以配置动态应用程序232,以作为代理来操作,以接收对存储在DDS 218中的状态信息的一个或多个请求。
计算节点200可以包括接收计算节点200的配置信息的配置接口216。配置接口216可以表示命令行接口;图形用户接口;简单网络管理协议(SNMP)、网络配置协议(Netconf)或其他配置协议;或者在一些示例中,上述的某种组合。配置接口216可以接收配置信息,如下面关于图4的配置信息404更详细描述的。
计算节点200例如经由SysMan进程210将动态应用程序232配置为用户空间214的应用程序。用户空间214可以表示分布式操作系统10的执行环境。用户空间214还可以包括其他应用程序,例如,应用程序230A-230N,其可以表示用户级进程,该用户级进程可以运行网络管理软件、执行路由协议以与对等路由装置通信、执行从管理员接收的配置命令、维护和更新一个或多个路由表、管理订户流处理、创建一个或多个转发表以及其他功能。应用程序230可以指除低级驱动程序和/或固件之外的未在上面关于分布式操作系统10描述的任何进程,包括守护程序和PFE应用程序(或者换言之,软件)。
基于由配置接口216接收的配置信息,计算节点200可以配置动态应用程序232,以作为代理来操作,以从服务端点接收一个或多个请求(例如,HTTP请求),并使用存储在其本地数据储存器或存储器中的状态信息来配置响应,例如,超文本标记语言(HTTP)文件。为了配置动态应用程序232,计算节点200可以接收定义计算节点200可以实现动态应用程序232的一个或多个实例的配置信息以及从DDS 218检索的要存储在计算装置200的本地数据储存器或存储器中的状态信息。配置信息可以进一步定义指令以及对一个或多个请求的响应的格式,这些指令使计算节点200露出接口(例如,端口),以从服务端点(例如,网络客户端)接收一个或多个请求。
图4是示出根据本公开技术的动态应用程序的示例操作的框图。在图4的示例中,多个计算节点执行分布式操作系统,该分布式操作系统提供执行多个应用程序的执行环境。多个计算节点中的至少一个计算节点配置动态应用程序406,以作为代理来操作,以接收对存储在DDS 408中的状态信息410A-410N(统称为“状态信息410”)的一个或多个请求。执行动态应用程序406的实例的计算节点可以基于配置信息404来配置动态应用程序406。
配置信息404可以定义一个或多个实例,其中,执行分布式操作系统10的计算节点可以实现动态应用程序406,以服务于状态信息410的不同对象。例如,配置文件可以定义第一计算节点(例如,图3的计算节点200)来执行动态应用程序406的第一实例,以提供状态信息的第一子集的视图,例如,状态信息410A(例如,路由状态信息),并且定义第二计算节点来执行动态应用程序406的第二实例,以提供状态信息的第二子集的视图,例如,状态信息410B(例如,接口状态信息)。
以下是执行动态应用程序406的实例的计算节点的配置信息404的示例:
执行动态应用程序406的实例的计算装置可以使用配置信息404来配置计算装置,以从客户端402接收一个或多个请求。在上面示出的示例配置信息中,计算装置可以露出计算装置的接口(例如,“端口”:“8888”),以从服务端点(例如,客户端402)接收一个或多个请求。配置信息还可以定义接入动态应用程序22的认证(或者不需要认证)。以这种方式,动态应用程序406可以作为网络服务器来操作,以从网络客户端接收一个或多个基于网络的请求(例如,HTTP获取请求),并从DDS 408检索状态信息410。
执行动态应用程序406的实例的计算装置可以使用配置信息404来定义响应的格式。在上面示出的示例配置信息中,计算装置被配置为生成对接口速度的请求(例如,“InterfaceSpeed”)的响应,以包括接口名称和接口速度(例如,(例如,“{{接口}、{速度}}”),和/或对接口列表的请求(例如,“InterfaceList”)的响应,以包括该组接口(例如,“[接口”)。
配置信息404还可以指示执行动态应用程序406的相应实例的计算节点构建本地数据储存器412,在本地数据储存器412中存储状态信息,例如,状态信息410。例如,配置信息可以指示动态应用程序406在初始化期间和每次更新DDS 408中的状态信息时从DDS 408检索状态信息。本地数据储存器412可以将从DDS 408检索的状态信息410的对象映射到对来自客户端402的请求的响应。
假设例如配置信息404定义动态应用程序406,以服务于DDS 408的状态信息410A(例如,接口状态信息)。动态应用程序406可以在初始化或更新DDS 408期间检索状态信息410A(检索过程414),并将检索到的状态信息410A存储在数据储存器412中。动态应用程序406然后可以从客户端402接收对状态信息410A的一个或多个对象的一个或多个请求416A、416B(“请求416”)。例如,客户端402可以使用网络客户端来配置和发送请求416A,例如,HTTP获取请求,以从DDS 408检索状态信息410A(例如,接口速度)。作为一个示例,客户端402可以生成并发送对接口状态信息(例如,接口速度)的请求(例如,HTML请求)416A,例如,如下:
http://192.168.1.70:8888/DynamicState/InterfaceSpeed?InterfaceName=et-0/0/0。
动态应用程序406可以接收请求416A,并从数据储存器412检索状态信息410A。动态应用程序406可以用数据储存器412中的状态信息配置响应418A。
继续上面的示例,计算节点可以如下生成对接口速度的请求416A的响应418A:
作为另一示例,客户端402可以生成并发送对接口列表(例如,接口速度)的请求416B,例如,如下:
http://192.168.1.70:8888/DynamicState/InterfaceList。在一些示例中,客户端402可以同时或几乎同时发送请求416A和416B。
动态应用程序406可以接收请求416B,并从数据储存器412检索状态信息410A。动态应用程序406可以用数据储存器412中的状态信息配置响应418B。
继续上面的示例,计算节点可以如下生成对接口列表的请求416B的响应418B:
在一些示例中,动态应用程序406可以用一个或多个HTML标签将响应418A、418B(“响应418”)配置为HTML文件。HTML标签可以向网络客户端浏览器指示响应是HTML文件,并且还可以包括与该HTML文件相关联的其他属性。
图5是示出图3所示的多机架路由器在执行本公开中描述的技术的相应方面的示例操作的流程图。在该示例中,包括在网络装置内的多个计算节点可以执行分布式操作系统,该分布式操作系统提供执行多个应用程序的执行环境(502)。例如,多个路由引擎(例如,图2的路由引擎130)可以均执行分布式操作系统的实例。分布式操作系统提供了执行用户空间的应用程序的执行环境。每个应用程序可以产生存储在分布式数据储存器中的状态信息,例如,图1的DDS 24。
多个计算节点中的至少一个计算节点配置动态应用程序,以作为代理来操作,以接收状态信息的一个或多个请求(504)。例如,配置动态应用程序的计算节点可以接收定义计算节点可以实现动态应用程序的一个或多个实例的配置文件。例如,配置文件可以定义动态应用程序从中检索数据的DDS字段。配置文件还可以指示计算节点露出接口(例如,端口),以从服务端点(例如,网络客户端)接收一个或多个请求。以这种方式,执行动态应用程序的实例的计算节点可以接收网络请求,例如,超文本传输协议(HTTP)获取请求。即,动态应用程序可以作为网络服务器操作,从网络客户端接收一个或多个基于网络的请求。配置信息可以指示执行动态应用程序的相应实例的计算节点从DDS 24检索状态信息,并将检索到的状态信息存储在计算装置的本地数据储存器或存储器中。
动态应用程序可以从数据储存器中检索状态信息(506),并将检索到的状态信息存储在本地数据储存器(508)中。例如,动态应用程序可以在初始化期间从DDS 24中检索状态信息,并将检索到的状态信息存储在本地数据储存器或存储器中。当更新状态信息时,动态应用程序也可以从DDS 24检索状态信息。
动态应用程序可以接收对状态信息的一个或多个请求(510)。例如,执行动态信息的实例的计算节点可以接收对DDS中的状态信息的一个或多个请求,例如,HTTP获取请求。计算节点可以将请求传递给动态应用程序,动态应用程序从本地数据储存器中检索对应于一个或多个请求的状态信息。
动态应用程序可以配置并发送具有从本地数据储存器中检索的状态信息的响应(512)。例如,动态应用程序可以将响应配置为HTML文件,包括一个或多个HTML标签。
本公开的技术可以在各种装置或设备中实现,包括网络装置、集成电路(IC)或一组IC(即,芯片组)。已经描述了任何组件、模块或单元,以强调功能方面,并且不一定需要由不同的硬件单元来实现。本文描述的技术也可以在硬件或硬件和软件和/或固件的任意组合中实现。被描述为模块、单元或组件的任何特征可以一起在集成逻辑装置中实现,或者作为分立但可互操作的逻辑装置单独实现。在一些情况下,各种特征可以作为集成电路装置实现,例如,集成电路芯片或芯片组。
如果以软件实现,则这些技术可以至少部分地由包括指令的计算机可读存储介质来实现,当在处理器中执行时,这些指令执行一种或多种上述方法。计算机可读存储介质可以是物理结构,并且可以形成计算机程序产品的一部分,该计算机程序产品可以包括包装材料。在这个意义上,计算机可读介质可以是非暂时性的。计算机可读存储介质可以包括随机存取存储器(RAM),例如,同步动态随机存取存储器(SDRAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁或光数据储存器介质等。
代码或指令可以由一个或多个处理器执行,例如,一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何前述结构或任何其他适合于实现本文描述的技术的结构。此外,在一些方面,本文描述的功能可以在配置用于编码和解码的专用软件模块或硬件模块中提供,或者包含在组合的视频编解码器中。此外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
Claims (15)
1.一种方法,包括:
由包括在网络装置内的多个硬件计算节点执行分布式操作系统,所述分布式操作系统提供执行多个应用程序的执行环境;
由所述多个硬件计算节点中的至少一个硬件计算节点配置动态应用程序,以作为代理来操作,以接收对存储在数据储存器中的状态信息的一个或多个请求,其中,所述状态信息包括表示所述多个应用程序的不同状态的信息;
由所述动态应用程序检索存储在所述数据储存器中的所述状态信息;
由所述动态应用程序将检索到的状态信息存储在所述多个硬件计算节点中的至少一个硬件计算节点的本地数据储存器中;
由所述动态应用程序接收对所述状态信息的所述一个或多个请求;并且
由所述动态应用程序响应于接收到所述一个或多个请求,发送包括来自所述本地数据储存器的所请求的状态信息的响应。
2.根据权利要求1所述的方法,其中,配置所述动态应用程序包括将所述动态应用程序配置为作为网络服务器操作。
3.根据权利要求1所述的方法,其中,配置所述动态应用程序包括露出所述多个硬件计算节点中的至少一个硬件计算节点的接口,以从网络客户端接收对所述状态信息的所述一个或多个请求。
4.根据权利要求1至3中任一项所述的方法,其中,所述一个或多个请求包括超文本传输协议(HTTP)获取请求。
5.根据权利要求1至3中任一项所述的方法,其中,发送所述响应包括发送包括识别所请求的状态信息的一个或多个超文本标记语言(HTML)标签的响应。
6.根据权利要求1所述的方法,其中,配置所述动态应用程序包括基于定义所述动态应用程序的实例的配置信息和所述数据储存器的所述状态信息的子集,来配置所述动态应用程序。
7.根据权利要求6所述的方法,其中,发送所述响应包括在不执行对所述数据储存器的查询的情况下发送所述响应。
8.一种网络装置,包括:
多个硬件计算节点,被配置为执行分布式操作系统,所述分布式操作系统提供执行多个应用程序的执行环境,其中,所述多个硬件计算节点中的至少一个硬件计算节点被配置为:
配置动态应用程序以作为代理来操作,来接收对存储在数据储存器中的状态信息的一个或多个请求,其中,所述状态信息包括表示所述多个应用程序的不同状态的信息;
检索存储在所述数据储存器中的所述状态信息;
将检索到的状态信息存储在所述多个硬件计算节点中的至少一个硬件计算节点的本地数据储存器中;
接收对所述状态信息的所述一个或多个请求;并且
响应于接收到所述一个或多个请求,发送包括来自所述本地数据储存器的所请求的状态信息的响应。
9.根据权利要求8所述的网络装置,其中,为了配置所述动态应用程序,所述多个硬件计算节点中的所述至少一个硬件计算节点还被配置为将所述动态应用程序配置为作为网络服务器操作。
10.根据权利要求8所述的网络装置,其中,为了配置所述动态应用程序,所述多个硬件计算节点中的所述至少一个硬件计算节点还被配置为露出所述多个硬件计算节点中的所述至少一个硬件计算节点的接口,以从网络客户端接收对状态信息的所述一个或多个请求。
11.根据权利要求8至10中任一项所述的网络装置,其中,所述一个或多个请求包括超文本传输协议(HTTP)获取请求。
12.根据权利要求8至10中任一项所述的网络装置,其中,为了发送所述响应,所述多个硬件计算节点中的所述至少一个硬件计算节点还被配置为发送包括识别所请求的状态信息的一个或多个超文本标记语言(HTML)标签的响应。
13.根据权利要求8所述的网络装置,其中,为了配置所述动态应用程序,所述多个硬件计算节点中的所述至少一个硬件计算节点还被配置为基于定义所述动态应用程序的实例的配置信息和所述数据储存器的所述状态信息的子集,来配置所述动态应用程序。
14.根据权利要求13所述的网络装置,其中,为了发送所述响应,所述多个硬件计算节点中的所述至少一个硬件计算节点还被配置为在不执行对所述数据储存器的查询的情况下发送所述响应。
15.一种用指令编码的非暂时性计算机可读存储介质,用于使一个或多个可编程处理器执行根据权利要求1至7中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/365,954 | 2019-03-27 | ||
US16/365,954 US11095742B2 (en) | 2019-03-27 | 2019-03-27 | Query proxy for delivery of dynamic system state |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111753166A true CN111753166A (zh) | 2020-10-09 |
Family
ID=67145515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910919931.4A Pending CN111753166A (zh) | 2019-03-27 | 2019-09-26 | 用于传送动态系统状态的查询代理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11095742B2 (zh) |
EP (1) | EP3716067B1 (zh) |
CN (1) | CN111753166A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112487056A (zh) * | 2020-11-30 | 2021-03-12 | 上海寻梦信息技术有限公司 | 业务节点控制方法、系统、设备及存储介质 |
CN114567665A (zh) * | 2022-01-26 | 2022-05-31 | 阿波罗智能技术(北京)有限公司 | 节点间通信的方法、装置、设备、介质及自动驾驶车辆 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11316775B2 (en) | 2016-12-21 | 2022-04-26 | Juniper Networks, Inc. | Maintaining coherency in distributed operating systems for network devices |
US11316744B2 (en) | 2016-12-21 | 2022-04-26 | Juniper Networks, Inc. | Organizing execution of distributed operating systems for network devices |
US10887173B2 (en) | 2016-12-21 | 2021-01-05 | Juniper Networks, Inc. | Communicating state information in distributed operating systems |
US11095742B2 (en) | 2019-03-27 | 2021-08-17 | Juniper Networks, Inc. | Query proxy for delivery of dynamic system state |
US11245669B1 (en) * | 2019-09-16 | 2022-02-08 | Juniper Networks, Inc. | Firewall filter comprising one or more objects |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785843B1 (en) * | 2001-02-23 | 2004-08-31 | Mcrae Andrew | Data plane restart without state change in a control plane of an intermediate network node |
US7518986B1 (en) * | 2005-11-16 | 2009-04-14 | Juniper Networks, Inc. | Push-based hierarchical state propagation within a multi-chassis network device |
CN105283838A (zh) * | 2013-06-10 | 2016-01-27 | 亚马逊科技公司 | 云计算环境中的分布式锁管理 |
CN105743692A (zh) * | 2014-12-31 | 2016-07-06 | 瞻博网络公司 | 用于应用管理的基于策略的框架 |
US9928151B1 (en) * | 2014-12-12 | 2018-03-27 | Amazon Technologies, Inc. | Remote device interface for testing computing devices |
EP3340055A1 (en) * | 2016-12-21 | 2018-06-27 | Juniper Networks, Inc. | Communicating state information in distributed operating systems |
CN108234306A (zh) * | 2016-12-21 | 2018-06-29 | 丛林网络公司 | 网络装置、网络方法和计算机可读存储介质 |
CN108234302A (zh) * | 2016-12-21 | 2018-06-29 | 丛林网络公司 | 保持网络装置用的分布式操作系统中的一致性 |
US10171370B1 (en) * | 2014-05-30 | 2019-01-01 | Amazon Technologies, Inc. | Distribution operating system |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5968122A (en) | 1997-03-31 | 1999-10-19 | Alcatel Alsthom Compagnie Generale D'electricite | Method for propagating between views of connection object status in network |
US6847614B2 (en) | 1998-04-20 | 2005-01-25 | Broadcom Corporation | Apparatus and method for unilateral topology discovery in network management |
US6401120B1 (en) | 1999-03-26 | 2002-06-04 | Microsoft Corporation | Method and system for consistent cluster operational data in a server cluster using a quorum of replicas |
WO2001014948A2 (en) | 1999-08-19 | 2001-03-01 | Matrix Device Limited | Recursive dynamic access to a data model having a hierarchical tree structure |
DE60033615T2 (de) * | 1999-10-21 | 2007-10-31 | International Business Machines Corp. | Verfahren und System, um das Verteilen von IP-Datagrammen auf mehrere Server gemäß einer definierten Strategie zu erzwingen |
US6757836B1 (en) | 2000-01-10 | 2004-06-29 | Sun Microsystems, Inc. | Method and apparatus for resolving partial connectivity in a clustered computing system |
US6721880B1 (en) | 2000-05-31 | 2004-04-13 | Lucent Technologies Inc. | Method and apparatus for maintaining configuration information in a computing environment |
US6876625B1 (en) * | 2000-09-18 | 2005-04-05 | Alcatel Canada Inc. | Method and apparatus for topology database re-synchronization in communications networks having topology state routing protocols |
US6965936B1 (en) | 2000-12-06 | 2005-11-15 | Novell, Inc. | Method for detecting and resolving a partition condition in a cluster |
US20020083073A1 (en) | 2000-12-22 | 2002-06-27 | Vaidya Neelam N. | Managing a layered hierarchical data set |
US7174363B1 (en) | 2001-02-22 | 2007-02-06 | Charles Schwab & Co., Inc. | Distributed computing system architecture |
US7493363B2 (en) | 2001-09-19 | 2009-02-17 | Microsoft Corporation | Peer-to-peer group management and method for maintaining peer-to-peer graphs |
CN100541425C (zh) | 2002-05-24 | 2009-09-16 | Nxp股份有限公司 | 标量/矢量处理器 |
US6986076B1 (en) | 2002-05-28 | 2006-01-10 | Unisys Corporation | Proactive method for ensuring availability in a clustered system |
US7275081B1 (en) | 2002-06-10 | 2007-09-25 | Juniper Networks, Inc. | Managing state information in a computing environment |
US7139781B2 (en) | 2003-04-29 | 2006-11-21 | International Business Machines Corporation | Managing filesystem versions |
US7739403B1 (en) | 2003-10-03 | 2010-06-15 | Juniper Networks, Inc. | Synchronizing state information between control units |
US7694312B2 (en) | 2004-09-10 | 2010-04-06 | Pleora Technologies Inc. | Methods and apparatus for enabling bus connectivity over a data network |
US7420989B2 (en) | 2004-09-30 | 2008-09-02 | Lucent Technologies Inc. | Technique for identifying backup path for shared mesh protection |
US8667184B2 (en) | 2005-06-03 | 2014-03-04 | Qnx Software Systems Limited | Distributed kernel operating system |
US7840682B2 (en) | 2005-06-03 | 2010-11-23 | QNX Software Systems, GmbH & Co. KG | Distributed kernel operating system |
US7804769B1 (en) | 2005-12-01 | 2010-09-28 | Juniper Networks, Inc. | Non-stop forwarding in a multi-chassis router |
US7702640B1 (en) | 2005-12-29 | 2010-04-20 | Amazon Technologies, Inc. | Stratified unbalanced trees for indexing of data items within a computer system |
GB0622551D0 (en) | 2006-11-11 | 2006-12-20 | Ibm | A method, apparatus and computer program for a first device to determine the status of a second device |
US7814295B2 (en) | 2007-05-18 | 2010-10-12 | International Business Machines Corporation | Moving processing operations from one MIMD booted SIMD partition to another to enlarge a SIMD partition |
CN101136730A (zh) | 2007-10-19 | 2008-03-05 | 武汉烽火网络有限责任公司 | 一种分布式网络设备中的可靠同步方法 |
JP4491482B2 (ja) | 2007-11-28 | 2010-06-30 | 株式会社日立製作所 | 障害回復方法、計算機、クラスタシステム、管理計算機及び障害回復プログラム |
CN101308513A (zh) | 2008-06-27 | 2008-11-19 | 福建星网锐捷网络有限公司 | 分布式系统中缓存数据的同步配置方法与装置 |
US8296303B2 (en) | 2008-11-20 | 2012-10-23 | Sap Ag | Intelligent event query publish and subscribe system |
US8260742B2 (en) | 2009-04-03 | 2012-09-04 | International Business Machines Corporation | Data synchronization and consistency across distributed repositories |
US8345707B2 (en) | 2009-06-03 | 2013-01-01 | Voxer Ip Llc | Method for synchronizing data maintained at a plurality of nodes |
US8089866B2 (en) | 2009-10-16 | 2012-01-03 | Ciena Corporation | Spanning tree flooding backbone systems and methods for link state routed networks |
US8589535B2 (en) | 2009-10-26 | 2013-11-19 | Microsoft Corporation | Maintaining service performance during a cloud upgrade |
US8560658B2 (en) | 2010-03-23 | 2013-10-15 | Juniper Networks, Inc. | Managing distributed address pools within network devices |
CN102202073B (zh) | 2010-03-24 | 2014-05-07 | 杭州华三通信技术有限公司 | 一种分布式系统及其数据同步方法 |
US8683269B2 (en) | 2011-04-15 | 2014-03-25 | The Boeing Company | Protocol software component and test apparatus |
US8798055B1 (en) | 2011-08-11 | 2014-08-05 | Juniper Networks, Inc. | Forming a multi-device layer 2 switched fabric using internet protocol (IP)-routed / switched networks |
US8595546B2 (en) | 2011-10-28 | 2013-11-26 | Zettaset, Inc. | Split brain resistant failover in high availability clusters |
US9116862B1 (en) | 2012-01-17 | 2015-08-25 | Amazon Technologies, Inc. | System and method for data replication using a single master failover protocol |
US8752134B2 (en) * | 2012-03-05 | 2014-06-10 | Jie Ma | System and method for detecting and preventing attacks against a server in a computer network |
CN103379129B (zh) | 2012-04-12 | 2016-12-14 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、服务器及分布式系统 |
US9253087B2 (en) | 2012-04-24 | 2016-02-02 | Futurewei Technologies, Inc. | Principal-identity-domain based naming scheme for information centric networks |
US8839375B2 (en) | 2012-05-25 | 2014-09-16 | Microsoft Corporation | Managing distributed operating system physical resources |
US20140115137A1 (en) | 2012-10-24 | 2014-04-24 | Cisco Technology, Inc. | Enterprise Computing System with Centralized Control/Management Planes Separated from Distributed Data Plane Devices |
US8739085B1 (en) | 2012-12-10 | 2014-05-27 | International Business Machines Corporation | Vectorization of bit-level netlists |
CN103902617B (zh) | 2012-12-28 | 2017-06-09 | 华为技术有限公司 | 分布式数据库同步方法和系统 |
US9244994B1 (en) | 2013-06-19 | 2016-01-26 | Amazon Technologies, Inc. | Idempotency of application state data |
US9244993B1 (en) | 2013-06-19 | 2016-01-26 | Amazon Technologies, Inc. | Management of application state data |
GB2586549B (en) | 2013-09-13 | 2021-05-26 | Vodafone Ip Licensing Ltd | Communicating with a machine to machine device |
US9449116B2 (en) | 2014-02-28 | 2016-09-20 | Red Hat Israel, Ltd. | Online radix tree compression with key sequence skip |
US10075521B2 (en) | 2014-04-07 | 2018-09-11 | Cisco Technology, Inc. | Collection synchronization using equality matched network names |
US9424140B1 (en) | 2014-08-20 | 2016-08-23 | Amazon Technologies, Inc. | Providing data volume recovery access in a distributed data store to multiple recovery agents |
WO2016106682A1 (zh) | 2014-12-31 | 2016-07-07 | 华为技术有限公司 | 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统 |
US10193958B2 (en) | 2014-12-31 | 2019-01-29 | Juniper Networks, Inc. | Policy based framework for application management in distributed systems |
US10015264B2 (en) * | 2015-01-30 | 2018-07-03 | Calgary Scientific Inc. | Generalized proxy architecture to provide remote access to an application framework |
US10320891B2 (en) | 2016-01-25 | 2019-06-11 | Vmware, Inc. | Node selection for message redistribution in an integrated application-aware load balancer incorporated within a distributed-service-application-controlled distributed computer system |
US10552442B1 (en) * | 2016-08-29 | 2020-02-04 | Amazon Technologies, Inc. | Stateful database application programming interface |
US10104039B1 (en) * | 2017-09-28 | 2018-10-16 | Cloudflare, Inc. | Establishing and using a tunnel from an origin server in a distributed edge compute and routing service |
US11095742B2 (en) | 2019-03-27 | 2021-08-17 | Juniper Networks, Inc. | Query proxy for delivery of dynamic system state |
-
2019
- 2019-03-27 US US16/365,954 patent/US11095742B2/en active Active
- 2019-06-20 EP EP19181484.7A patent/EP3716067B1/en active Active
- 2019-09-26 CN CN201910919931.4A patent/CN111753166A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785843B1 (en) * | 2001-02-23 | 2004-08-31 | Mcrae Andrew | Data plane restart without state change in a control plane of an intermediate network node |
US7518986B1 (en) * | 2005-11-16 | 2009-04-14 | Juniper Networks, Inc. | Push-based hierarchical state propagation within a multi-chassis network device |
CN105283838A (zh) * | 2013-06-10 | 2016-01-27 | 亚马逊科技公司 | 云计算环境中的分布式锁管理 |
US10171370B1 (en) * | 2014-05-30 | 2019-01-01 | Amazon Technologies, Inc. | Distribution operating system |
US9928151B1 (en) * | 2014-12-12 | 2018-03-27 | Amazon Technologies, Inc. | Remote device interface for testing computing devices |
CN105743692A (zh) * | 2014-12-31 | 2016-07-06 | 瞻博网络公司 | 用于应用管理的基于策略的框架 |
EP3340055A1 (en) * | 2016-12-21 | 2018-06-27 | Juniper Networks, Inc. | Communicating state information in distributed operating systems |
CN108234307A (zh) * | 2016-12-21 | 2018-06-29 | 丛林网络公司 | 网络方法、网络装置和非暂时性计算机可读存储介质 |
CN108234306A (zh) * | 2016-12-21 | 2018-06-29 | 丛林网络公司 | 网络装置、网络方法和计算机可读存储介质 |
CN108234302A (zh) * | 2016-12-21 | 2018-06-29 | 丛林网络公司 | 保持网络装置用的分布式操作系统中的一致性 |
Non-Patent Citations (2)
Title |
---|
张忠亮;傅志中;张翰进;张冉;: "嵌入式网络信息发布系统设计", 现代电子技术, no. 08, 15 April 2011 (2011-04-15), pages 37 - 40 * |
罗星原;李青山;叶宏;崔西宁;陈威;: "一种面向分布式应用的调试代理", 航空计算技术, no. 03, 15 May 2010 (2010-05-15), pages 94 - 99 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112487056A (zh) * | 2020-11-30 | 2021-03-12 | 上海寻梦信息技术有限公司 | 业务节点控制方法、系统、设备及存储介质 |
CN114567665A (zh) * | 2022-01-26 | 2022-05-31 | 阿波罗智能技术(北京)有限公司 | 节点间通信的方法、装置、设备、介质及自动驾驶车辆 |
Also Published As
Publication number | Publication date |
---|---|
US11095742B2 (en) | 2021-08-17 |
EP3716067B1 (en) | 2022-07-27 |
US20200314197A1 (en) | 2020-10-01 |
EP3716067A1 (en) | 2020-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108234307B (zh) | 网络方法、网络装置和非暂时性计算机可读存储介质 | |
CN111753166A (zh) | 用于传送动态系统状态的查询代理 | |
CN108234306B (zh) | 网络装置、网络方法和计算机可读存储介质 | |
CN108234302B (zh) | 保持网络装置用的分布式操作系统中的一致性 | |
Ferguson et al. | Orion: Google's {Software-Defined} Networking Control Plane | |
CN111143382B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
US10230567B2 (en) | Management of a plurality of system control networks | |
CN113904973B (zh) | 路由更新方法、介质、装置和计算设备 | |
US11075806B1 (en) | Hierarchical naming scheme for state propagation within network devices | |
Wang et al. | Design and Research of SDN Unified Controller in Large Data Center | |
US20240028663A1 (en) | Web site generation based on streams of data records | |
Schneider et al. | A Cloud Native Platform for Stateful Streaming | |
Morzhov et al. | Organization of multi-controller interaction in software defined networks | |
Cheinasso | Network connectivity and observability in multicluster environments | |
US20210176309A1 (en) | Peer to peer infrastructure management architecture | |
Neelakrishnan | Enhancing scalability and performance in software-defined networks: An OpenDaylight (ODL) case study | |
CN115757225A (zh) | 运行时可扩展应用编程接口服务器 | |
TW202026873A (zh) | 在網路路由環境中的單節點和多節點資料儲存空間架構 | |
CN117435201A (zh) | 分布式服务生成方法、系统、计算设备及存储介质 | |
Botelho | A consistent and fault-tolerant data store for software defined networks | |
Poveda | SDKV: A Smart and Distributed Key-Value Store for the Edge-Cloud Continuum | |
JP2014123334A (ja) | 離散的コンピュータ・システム構築を行うためのアーキテクチャ |
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 |