CN114039938A - 用于配置网络装置的内部转发路径的高级定义语言 - Google Patents

用于配置网络装置的内部转发路径的高级定义语言 Download PDF

Info

Publication number
CN114039938A
CN114039938A CN202011077719.7A CN202011077719A CN114039938A CN 114039938 A CN114039938 A CN 114039938A CN 202011077719 A CN202011077719 A CN 202011077719A CN 114039938 A CN114039938 A CN 114039938A
Authority
CN
China
Prior art keywords
nodes
operands
forwarding
forwarding path
node
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
CN202011077719.7A
Other languages
English (en)
Inventor
亚历克斯·瓦尔盖塞
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 CN114039938A publication Critical patent/CN114039938A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开主要描述了用于配置网络装置的内部转发路径的高级定义语言。例如,网络装置系统包括编译器。编译器被配置为接收包括指示多个节点的拓扑的配置中的语法元素的文本。另外,编译器被配置为基于文本生成用于实例化多个节点的代码,并且编译该代码,以生成软件图像。网络装置系统包括网络装置,网络装置包括转发管理器,转发管理器被配置为执行软件图像,以将转发路径配置为包括多个节点中的每个节点的对应转发路径元素。此外,网络装置系统包括可操作地耦合到存储器的至少一个分组处理器,其中,至少一个分组处理器被配置为通过执行转发路径元素来处理由转发单元接收的分组。

Description

用于配置网络装置的内部转发路径的高级定义语言
技术领域
本公开涉及基于分组的计算机网络,更具体地,涉及在网络装置内处理分组。
背景技术
计算机网络是能够交换数据和共享资源的互连计算装置的集合。计算机网络内的网络装置通常包括为网络装置提供控制平面功能的控制单元以及用于路由或交换数据单元(例如,分组)的一个或多个转发单元。例如,在一些情况下,网络装置可以包括共同提供用于转发网络流量的转发平面的多个分组处理器和交换结构。网络装置的转发平面可以包括转发路径,该转发路径包括一个或多个转发路径元素。构成转发路径元素的数据和指令可以连接并配置成转发拓扑,该转发拓扑为网络装置接收的每个输入分组定义内部转发路径。
发明内容
通常,本公开描述了使用高级语言的技术,该高级语言具有语法元素,所述语法元素可用于配置网络装置的一个或多个转发路径元素,并使用语法元素的配置来定义转发路径元素的拓扑,该配置使得转发路径元素的拓扑在用高级语言编写的代码中在视觉上是明显的。例如,网络装置可以包括用于控制网络装置的一个或多个功能的控制平面和用于接收和转发网络流量的转发平面。在一些示例中,转发平面包括转发路径,在该转发路径上,一个或多个转发路径元素(例如,转发下一跳)以拓扑设置以用于处理输入分组。如下文进一步详细描述的,由编译器生成的软件图像可以由网络装置执行,以配置转发路径。软件图像可以是例如与网络装置的其他软件链接的库、单独的二进制文件或其他可执行代码。
在一些示例中,执行编译器的计算系统接收具有包括一组操作数和一组运算符的语法元素的文本形式的转发路径定义。该组操作数中的至少一些可以与要在网络装置的转发平面中实例化的转发路径元素相关联。该组运算符可以被设置为定义拓扑,例如,形成该组操作数的层级,其中,该层级包括一个或多个级别。编译器可以处理文本,以生成代码,然后编译所生成的代码,以生成用于配置和管理节点的软件图像,所述节点表示由文本内的语法元素的配置指示的拓扑中的转发路径元素。通过执行由编译器生成的软件图像,转发平面能够在对应于由文本指示的操作数层级的拓扑中实例化和配置转发路径元素。转发管理器还可以从控制平面接收转发路径元素配置数据,用于通过执行软件图像来实例化转发路径元素并使用多个节点管理转发路径元素,来配置一个或多个转发路径元素。
本文描述的技术提供了具有至少一个实际应用的一个或多个技术改进。例如,形成与用于配置转发路径元素的节点拓扑相对应的操作数层级对于语法可能是有益的。在一些示例中,编译器可以接收对语法的一个或多个用户编辑。语法可以表示操作数和运算符的布局,使得操作数的层级在语法中是可见的,这意味着与不基于可视地指示操作数层级的语法来配置转发路径元素的系统相比,更容易编辑语法,以便改变转发路径元素的配置。另外,与基于用户对非高级语言的计算机代码的编辑来配置转发路径的系统相比,语法的高级语言可以降低语法中编程错误的可能性。
在一些示例中,一种网络装置系统包括编译器,该编译器被配置为接收包括指示多个节点的拓扑的配置中的语法元素的文本,其中,多个节点中的每个节点对应于多个转发路径元素中的转发路径元素。另外,编译器被配置为基于文本生成用于实例化多个节点的所指示的拓扑中的多个节点的代码,并且编译该代码,以生成网络装置的软件图像。网络装置系统还包括网络装置。该网络装置包括转发管理器,该转发管理器被配置为执行软件图像,以将转发路径配置为包括多个节点中的每个节点的对应转发路径元素。此外,网络装置包括可操作地耦合到存储器的至少一个分组处理器,其中,该至少一个分组处理器被配置为通过执行转发路径元素来处理由转发单元接收的分组。
在一些示例中,一种方法包括由编译器接收包括指示多个节点的拓扑的配置中的语法元素的文本,其中,多个节点中的每个节点对应于多个转发路径元素中的转发路径元素,并且由编译器基于该文本生成用于实例化多个节点的所指示的拓扑中的多个节点的代码。另外,该方法包括由编译器编译代码,以生成网络装置的软件图像,由网络装置的转发管理器执行软件图像,以将所述转发路径配置为包括多个节点中的每个节点的对应转发路径元素,并且由可操作地耦合到存储器的至少一个分组处理器通过执行转发路径元素来处理由转发单元接收的分组。
在一些示例中,一种非暂时性计算机可读介质包括指令,用于使网络装置的转发单元的一个或多个可编程处理器和至少一个分组处理器:通过编译器接收文本,所述文本包括指示多个节点的拓扑的配置中的语法元素,其中,所述多个节点中的每个节点对应于多个转发路径元素中的转发路径元素,并且通过编译器基于所述文本生成用于实例化所述多个节点的所指示的拓扑中的多个节点的代码。此外,指令使得网络装置的转发单元的一个或多个可编程处理器和至少一个分组处理器:通过编译器编译代码,以生成网络装置的软件图像,通过网络装置执行软件图像,以将所述转发路径配置为包括多个节点中的每个节点的对应转发路径元素,并且通过至少一个分组处理器可操作地处理通过执行转发路径元素由转发单元接收的分组。
概述旨在提供本公开中描述的主题的概述。并不旨在提供在附图和以下描述中详细描述的系统、装置和方法的排他性或详尽的解释。在附图和以下描述中阐述本公开的一个或多个示例的进一步细节。从说明书和附图以及权利要求书中,其它特征、目的和优点将变得显而易见。
附图说明
图1是示出根据本公开的一种或多种技术的其中配置了一个或多个转发单元的示例网络装置的框图;
图2是更详细地示出根据本公开的一种或多种技术的分组处理器和分组处理器的转发管理器的框图;
图3是更详细地示出根据本公开的一种或多种技术的其中配置了转发单元的网络装置的框图;
图4是示出根据本公开的一种或多种技术的多个节点的节点拓扑的框图;
图5是示出根据本公开的一种或多种技术的语法和基于该语法生成的节点拓扑之间的关系的概念图;
图6是示出根据本公开的一种或多种技术的基于由网络装置的编译器接收的语法来配置网络装置的转发路径的示例操作的流程图。
在整个文本和附图中,相同的附图标记表示相同的元素。
具体实施方式
图1是示出根据本公开的一种或多种技术的其中配置了一个或多个转发单元的示例网络装置的框图。网络装置10可以包括路由器,例如,供应商边缘或客户边缘路由器、核心路由器或另一种类型的网络装置,例如,交换机。在该示例中,网络装置10包括为装置提供控制平面功能的控制单元12。网络装置10还包括一起提供用于处理网络流量的数据平面的多个转发单元20A-20N(“转发单元20”)和交换结构26。转发单元20经由接口卡22A-22N(“IFC 22”)的接口接收和发送数据分组,每个接口卡与相应的一个转发单元20相关联。每个转发单元20及其相关联的IFC 22可以表示可插入网络装置10的机箱(未示出)内的独立线路卡。示例线卡包括灵活可编程集成电路(PIC)集中器(FPC)、密集端口集中器(DPC)和模块化端口集中器(MPC)。IFC 22中的每一个可以包括用于层二(L2)技术的各种组合的接口,包括以太网、千兆以太网(GigE)和同步光网络(SONET)接口,其提供用于传输网络分组的L2接口。在各个方面,每个转发单元20可以包括更多或更少的IFC。交换结构26在转发单元20之间提供高速互连,用于将输入数据分组转发到转发单元20的出口转发单元,以便通过包括网络装置10的网络输出。
控制单元12通过内部通信链路28连接到每个转发单元20。例如,内部通信链路28可以包括100Mbps以太网连接。控制单元12通过经由内部通信链路28发送指令和其他配置数据来配置转发单元20,以定义应用于由转发单元20接收的分组的分组处理操作。控制单元12执行一个或多个应用程序,包括例如应用程序15。由控制单元12执行的每个应用程序可以表示由控制单元操作系统管理的独立过程。
控制单元12可以包括一个或多个处理器(图1中未示出),其执行软件指令,例如用于定义软件或计算机程序的软件指令,存储在计算机可读存储介质(同样,图1中未示出)中,例如,包括存储装置(例如,磁盘驱动器或光驱)和/或存储器(例如,随机存取存储器(RAM)(包括各种形式的动态RAM(DRAM),例如,DDR2 SDRAM或静态的)的非暂时性计算机可读介质、闪存、另一种形式的固定或可移动存储介质,其可以用于以指令或数据结构的形式传送或存储期望的程序代码和程序数据,并且可以由处理器或存储指令以使一个或多个处理器执行本文描述的技术的任何其他类型的易失性或非易失性存储器来访问。可替换地或另外,控制单元12可以包括专用硬件,例如,一个或多个集成电路、一个或多个专用集成电路(ASIC)、一个或多个专用处理器(ASSP)、一个或多个现场可编程门阵列(FPGA)或一个或多个前述专用硬件示例的任意组合,用于执行本文描述的技术。
在一些示例中,编译器14可以处理信息。例如,编译器14可以接收包括指示一组运算符和一组操作数的语法的文本。如本文所述,术语“运算符”可以指由语法指示的函数,术语“操作数”可以指由语法指示的对象,该对象用作由语法指示的至少一个运算符的输入。响应于接收到语法,编译器14可以处理语法,以生成计算机代码。在一些示例中,为了处理语法,编译器14可以执行由语法指示的一组运算符的一个或多个功能,编译器14使用语法的操作数作为相应功能的输入。编译器14可以表示由独立于网络装置10的计算系统(图1中未示出)执行的应用程序。此外,编译器14可以编译代码,以便生成由网络装置10执行的软件图像。计算系统可以包括耦合到存储器、通信单元、存储装置、输入/输出装置、操作系统和可执行环境的其他组件以执行编译器14的一个或多个处理器。
在一些示例中,转发单元20的转发单元(例如,转发单元20A)可以执行软件图像,以便控制转发单元20A转发分组的方式。软件图像可以包括使转发单元(例如,转发单元20A)配置转发路径的软件,该转发路径处理经由IFC 22接收的分组。例如,转发单元20的每个转发单元包括至少一个分组处理器24,当分组穿过网络装置10的内部架构时,该分组处理器24通过在相应的内部分组转发路径上对每个分组执行一系列操作来处理分组。例如,转发单元20A的分组处理器24A包括一个或多个可配置的硬件芯片(例如,芯片组),当由在控制单元12上执行的应用程序配置时,这些硬件芯片定义由转发单元20接收的分组执行的操作。在一些示例中,每个芯片组可以表示“分组转发引擎”(PFE)。每个芯片组可以包括不同的芯片,每个芯片具有特定的功能,例如,排队、缓冲、接口和查找/分组处理。每个芯片可以表示基于ASIC、基于FPGA或其他可编程硬件逻辑。单个转发单元20可以包括一个或多个分组处理器24。
例如,可以通过相应的入口接口、入口转发单元20、出口转发单元20、出口接口或分组在输出之前定向到的网络装置10的其他组件中的任何一个,例如,一个或多个服务卡,对每个分组执行操作。分组处理器24处理分组,以识别分组属性并执行绑定到属性的动作。每个分组处理器24包括转发路径元素,当被执行时,这些转发路径元素使得分组处理器检查每个分组的内容(或者另一分组属性,例如,输入接口),并且在此基础上,做出转发决定、应用过滤器和/或执行例如计费、管理、流量分析和负载平衡。在一个示例中,每个分组处理器24将转发路径元素设置为下一跳数据,该下一跳数据可以在转发拓扑中沿着网络装置的内部分组转发路径链接在一起,作为一系列“跳”。分组处理的结果确定了转发单元20的分组处理器24将分组从其在一个IFC 22上的输入接口转发或以其他方式处理到至少在某些情况下其在一个IFC 22上的输出接口的方式。
转发下一跳和其他转发路径元素的额外描述见2019年11月5日发布的题为NODEREPRESENTATIONS OF PACKET FORWARDING PATH ELEMENTS的美国专利No.10,469,357和2020年1月14日发布的题为INDIVIDUAL NETWORK DEVICE FORWARDING PLANE RESET的美国专利No.10,536,375。这些专利中的每一个的全部内容通过引用并入本文。
在许多情况下,转发路径元素执行查找操作,例如,树(或三元组)搜索、表(或索引)搜索、过滤器确定和应用或速率限制器确定和应用。查找操作在查找数据结构(例如,查找树)内定位匹配分组内容或分组或分组流的另一属性(例如,分组的入站接口)的项目。
被配置为由控制单元12执行的应用程序可以生成允许转发单元20配置用于处理分组的转发路径的数据。例如,转发单元20A可以从控制单元12的应用程序15接收数据。软件图像可以包括当由转发单元20A的一个或多个处理器执行时允许转发单元20A基于从应用程序15接收的数据来配置转发路径元素32A的软件。
转发单元20包括相应的转发管理器16,转发管理器16执行由编译器14生成的软件图像,并将从应用程序15接收的数据转化成转发路径元素32(可以包括转发“下一跳”并且在下文中被称为转发路径元素),转发路径元素32包括可由相应的分组处理器24执行的指令,并且将转发路径元素32存储到分组处理器24的存储器(图1中未示出)。每个转发管理器16可以表示可执行指令,例如,用于进程的指令。分组处理器24执行转发路径元素32,以处理接收到的分组。转发路径元素32可以链接在一起,以定义给定分组的一组分组处理操作,并形成该分组的“转发路径”。因此,分组处理器24执行和使用的这组转发路径元素32和转发状态可替代地称为给定分组处理器24、转发单元20或整个网络装置10的转发路径或内部转发路径。
根据本公开中描述的技术,转发管理器16使用对应的元素节点30(以下称为节点30”)来表示转发路径元素32。在下文中,针对转发单元20A来描述这些技术。节点30A的每个节点是由转发管理器16A管理的数据结构,并且表示由分组处理器24A执行的单个转发路径元素32A。转发路径元素可以是执行简单动作(例如,计数或丢弃)的类型、有条件的类型或复杂构造(例如,表、树或查找)的类型。然而,转发管理器16A使用公共节点数据结构的节点实例来表示和引用每个转发路径元素32。每个节点实例可以具有对应于转发路径元素类型的类型(例如,动作、树等)。在一些示例中,对应于节点30A的每个节点的数据结构在本文可以统称为“转发路径元素配置数据”。在一些示例中,转发路径元素配置数据可以定义节点30A的拓扑(例如,节点30A的一个或多个节点之间的一个或多个关系)。节点30A的拓扑可以对应于由编译器14接收的语法指示的操作数的层级。这样,编译器14可以将操作数的层级转换成转发路径元素配置数据,该数据包括节点30A以及在节点30A的节点之间的一个或多个关系。
每个节点30A包括令牌,该令牌是对应转发路径元素32A的唯一标识符,该标识符在对应转发路径元素32的上下文中唯一地识别该节点。唯一标识符可以是例如令牌的64位或其他n位整数值。
转发管理器16A通过引用转发拓扑中下一个节点的令牌来创建节点之间的依赖性。例如,转发管理器16A可以通过将第二下一转发路径元素的令牌添加到第一转发路径元素的下一转发路径元素的列表中,来为第一转发路径元素指定第二下一转发路径元素。这种固有的令牌引用允许容易地提取节点之间的连接,从而更容易地操作,在转发管理器16A内提供跨进程和存储器边界的一致接口,并且可以促进多线程。节点30A之间的令牌引用可以以这些方式呈现优于基于指针的方案的一个或多个优点,在基于指针的方案中,通过其在分组处理器24A存储器中的位置来表示和引用每个转发路径元素。
节点30A的每个节点可以具有依赖性,这些依赖性是由其他节点30A的唯一令牌引用的其他节点30A。这种依赖性不仅可以包括该节点的下一个转发路径元素,还可以包括通知转发管理器16A一个节点或条目的变化可能需要更新另一节点的依赖性。
在一些情况下,编译器14可以基于编译器14接收的语法生成代码。随后,编译器14可以编译生成的代码,以便为路由器生成软件图像,该软件图像包括由转发管理器16执行以配置转发路径元素32的机器可读指令。语法中包括的一组操作数可以包括对应于节点30A的每个节点的至少一个操作数。此外,节点30A的拓扑可以由编译器14接收的语法的运算符来指示。转发管理器16A可以执行由编译器14生成的软件图像,以便基于从应用程序15接收的数据,生成对应于节点30A的转发路径元素配置数据。在生成对应于节点30A的转发路径元素配置数据时,转发管理器16A可以配置转发路径元素32A。编译器14可以被配置为基于由编译器14接收的语法中指示的操作数的层级来生成代码。例如,一个或多个操作数可以均对应于一个节点,并且一个或多个运算符可以定义操作数的层级,其中,操作数的层级对应于节点30A的拓扑。对语法来说,定义操作数的层级可能是有益的,使得用户可以容易地修改节点30A,从而通过修改由编译器14接收的语法来修改转发路径元素32A。
图2是更详细地示出根据本公开的一种或多种技术的分组处理器24A和分组处理器的转发管理器16A的框图。如图2所示,转发管理器16A托管(host)转发路径配置数据102,其包括节点110A-110D(统称为“节点110”)、令牌112A-112D(统称为“令牌112”)、反向令牌引用116和正向令牌引用118。在一些示例中,节点110可以表示图1的节点30A的实例。如图2所示,分组处理器24A包括具有转发路径元素114A-114D(统称为“转发路径元素114”)的转发路径66A。出于说明的目的,在简化的拓扑中示出了有限数量的转发路径元素114。转发路径66A的其他实例可以包括以复杂拓扑连接的成千上万个转发路径元素。在下面参考图3包括转发路径66A的额外细节。
转发路径元素114A、114B和114D表示作为查找容器(例如,表或树)的转发路径元素。查找容器配置有一个或多个条目,这些条目是容器的单独匹配元素。条目可由其父容器转发路径元素114、用于匹配查找项目的唯一关键字以及节点令牌112来标识,节点令牌112识别节点110的后续节点,以在唯一关键字与查找项目(例如,分组字段或接口)成功匹配时执行。例如,查找树114C中的条目可以具有与分组字段相匹配的唯一关键字,并且指表示计数器类型转发路径元素114C的节点110。转发管理器16A配置转发路径66A,使得随后使用转发路径元素114C处理使用查找树114C的分组处理,查找树114C具有与唯一关键字匹配的分组字段值。
每个节点110表示转发路径元素114中对应的一个转发路径元素,并且可被转发管理器16A用于操纵、引用和配置具有相应转发路径元素114的转发路径66A。每个节点110包括对应的令牌112。例如,节点110A包括令牌112A,节点110B包括令牌112B,诸如此类。转发管理器16A通过修改任何节点110来指定另一节点110的令牌112,从而使用令牌112来创建节点110之间的连接。节点110的每个节点可以包括一个或多个其他节点110的令牌引用列表,其表示该节点的正向或反向依赖性。在一些示例实现中,转发管理器16A包括单独的数据结构来存储节点110的令牌引用。
节点110可以包括对其他节点110的令牌112的正向令牌引用118和反向令牌引用116。例如,在所示的示例中,节点110B包括对节点110C的令牌112C的正向令牌引用118。节点110C包括对节点110B的令牌112B的反向令牌引用116。正向令牌引用118可以是为转发路径元素的条目指定的令牌值。例如,从节点110B到节点110C的转发令牌引用118可以是转发路径元素114B的条目的令牌值。基于该正向令牌引用118,转发管理器16A配置转发路径66A,以将转发路径元素114B连接到转发路径66A的转发拓扑中的转发路径元素114C。
在一些示例中,编译器14响应于编译器14接收到包括指示操作数层级的语法的文本,生成软件图像。操作数的层级由语法中的一个或多个运算符表示。一个或多个操作数的每个操作数可以对应于节点110的节点和令牌112的令牌。操作数的层级可以表示节点110的拓扑。以这种方式,编译器14可以生成软件图像,使得网络装置10基于由一个或多个运算符在语法中指示的操作数的层级来配置反向令牌引用116和正向令牌引用118。另外,转发管理器16A可以从应用程序15接收数据,该数据包括对应于节点110的各个节点的信息。转发管理器16A可以执行路由器的软件图像,以便基于从应用程序15接收的数据生成转发路径配置数据102。在一些示例中,转发管理器16A可以通过执行由编译器14生成的修改后的软件图像来配置对转发路径66A的修改。例如,编译器14可以接收修改的语法并基于修改的语法生成代码。编译器14编译生成的代码,以便为转发路径66A生成修改的软件图像。转发管理器16A可以执行修改的软件图像,以便根据修改的语法来配置转发路径元素114。
图3是更详细地示出根据本公开的一种或多种技术的配置转发单元20A的网络装置10的框图。在该示例中,控制单元12包括硬件和软件的组合,其提供用于执行在用户空间41中执行的各种用户级主机应用程序的控制平面操作环境。举例来说,在用户空间41中执行的应用程序可以包括应用程序15和路由信息库45(“RIB 45”)。编译器14可以表示由独立于网络装置10的计算系统执行的应用程序。如图3所示,编译器14包括解析单元82。控制单元12可以为网络装置10提供转发平面、服务平面和控制平面功能。尽管在图3中示出为单个控制单元,但是在一些情况下,控制单元12可以分布在多个控制单元中。
应用程序15在内核43上执行并与之交互,内核43为用户级进程提供运行时操作环境。内核43可以表示例如UNIX操作系统衍生物,例如,Linux或伯克利软件分发(BSD)。内核43提供了库和驱动器,用户级进程可以通过库和驱动器与底层系统进行交互。控制单元12的硬件环境50包括微处理器52,微处理器52执行从存储装置(图3中也未示出)加载到存储器(图3中未示出)中的程序指令,以便执行控制单元12的软件堆栈(包括内核43和用户空间41)。内核43包括转发信息库42(“FIB 42”)。在一些示例中,应用程序15可以安装从RIB 45到FIB 42的一条或多条路由。
微处理器52可以包括例如数字信号处理器(DSP)、ASIC、FPGA、或等效的分立或集成逻辑电路、或任何前述装置或电路的组合。因此,微处理器52可以包括任何合适的结构,无论是硬件、软件、固件还是其任意组合,以执行本文赋予微处理器52的功能。本文使用的术语“处理器”或“控制器”可以指任何一个或多个前述结构或可操作来执行本文描述的技术的任何其他结构。
存储器(图3中未示出)可以被配置为在操作期间在网络装置10内存储信息。存储器可以包括计算机可读存储介质或计算机可读存储装置。在一些示例中,存储器包括短期存储器或长期存储器中的一个或两个。存储器可以包括例如RAM、DRAM、SRAM、磁盘、光盘、闪存或各种形式的EPROM或电可擦除可编程存储器(EEPROM)。在一些示例中,存储器用于存储由微处理器52执行的程序指令。
在一些示例中,路由协议进程执行一个或多个内部和/或外部路由协议,以与其他网络装置交换路由信息,并将接收到的路由信息存储在RIB45中。RIB 45可以包括定义网络拓扑的信息,包括一个或多个路由表和/或链路状态数据库。路由协议进程将RIB 45中的路由信息定义的拓扑解析为选择或确定通过网络的一条或多条活动路由,然后将这些路由安装到内核43的FIB 42。通常,路由协议进程以基数或其他查找树的形式生成FIB 42,以将分组信息(例如,具有目的地信息和/或标签堆栈的报头信息)映射到下一跳装置,并最终映射到与相应转发单元20A-20N(统称为“转发单元20”)相关联的接口卡的接口端口。在一些示例中,每个转发单元20可以用不同的FIB编程。
网络装置10还包括共同提供用于转发网络流量的数据平面的转发单元20和交换结构(图3中未示出)。在这个示例中,转发单元20通过通信链路23连接到控制单元12,通信链路23可以表示以太网。
每个转发单元20可以包括执行基本相似功能的基本相似的组件,在下文中主要针对图3中详细示出的转发单元20A描述所述组件和功能。图3的转发单元20A可以更详细地示出图1的转发单元20A的示例。转发单元20A分别经由转发单元20A的接口卡(IFC)22的入站接口35A-35D(统称为“入站接口35”)和出站接口37A-37D(统称为“出站接口37”)接收和发送网络分组。转发单元20A还包括分组处理器24A,其表示提供网络流量的高速转发的硬件或硬件和软件的组合。同样,转发单元20B包括分组处理器24B等。在一些示例中,转发单元20中的一个或多个可以均包括基本上类似于分组处理器24A的多个分组处理器。
每个IFC 22可以包括用于层二(L2)技术的各种组合的接口,包括以太网、千兆以太网(GigE)和同步光网络(SONET)接口。在各个方面,每个转发单元20可以包括更多或更少的IFC。在一些示例中,每个分组处理器24与分组处理器所在的转发单元的不同IFC相关联。连接转发单元20的交换结构(同样在图3中未示出)提供了高速互连,用于将输入的转接网络分组转发到转发单元20中选定的一个,以便通过一个IFC22输出。
网络装置10在某些情况下可以表示多机架路由器,并且交换结构可以包括多级交换结构,例如,3级Clos交换结构,其使用多路复用通信经由光互连在多机架路由器的路由节点之间中继分组交换通信和电路交换通信。
网络装置10的转发单元20限定(demarcate)网络装置10的控制平面和数据平面。即,转发单元20A执行控制平面和数据平面功能。通常,分组处理器24A和IFC 22实现转发单元20A的数据平面,而转发单元处理器62A执行包括实现转发单元20A内的网络装置10控制平面的部分的转发管理器16A和分组处理器驱动器60A的软件。控制单元12还实现网络装置10的控制平面的部分。转发单元20A的转发单元处理器62A管理分组处理器24A并执行指令,以向控制单元12提供接口并处理主机绑定或其他本地网络分组(例如,包括选项字段值或TTL过期分组的分组)。转发单元处理器62A可以为转发单元20A执行微内核。由转发单元处理器62A执行的微内核可以为执行转发管理器16A和分组处理器驱动器60的模块提供多线程执行环境。
分组处理器24A可以包括基于ASIC、基于FPGA或其他类型的分组处理器,当分组穿过网络装置10的内部架构时,这些分组处理器通过在相应的内部分组转发路径上对每个分组执行一系列操作来处理网络分组。分组处理器24A包括转发路径元素114,其通常在执行时检查每个分组的内容(或另一分组属性,例如,输入接口),并在此基础上做出转发决定、应用过滤器和/或执行例如计费、管理、流量分析和负载平衡。在一个示例中,分组处理器24A将转发路径元素设置为下一跳数据,该下一跳数据可以作为一系列“下一跳”沿着分组处理器24A的内部分组转发路径66A(“转发路径66A”)链接在一起。分组处理的结果确定了转发单元20的分组处理器24将分组从转发单元20的入口转发单元上的分组输入接口转发或处理到转发单元20的出口转发单元上的输出接口的方式。
分组处理器24A识别分组属性并执行绑定到属性的操作。分组处理器24A的一个或多个关键字引擎71A执行转发路径元素的微码(或“微指令”),以控制和应用转发路径的固定硬件组件来处理分组“关键字”。分组关键字包括分组字段和其他参数,这些参数确定分组沿着内部转发路径的分组处理流程。内部转发路径66A(“转发路径66A”)可以表示计算机可读存储介质,例如,随机存取存储器,并且包括可编程、可执行微码和固定硬件组件形式的转发路径元素,其确定分组处理动作和由分组处理器24A执行的其他操作。转发路径66A可以包括例如可执行指令、可编程逻辑和专用逻辑,其执行查找、速率限制分组流(例如,使用策略器)和操纵分组关键字等功能。转发路径元素可以包括诸如查找表和查找树之类的基本命令(primitives)以及速率限制器、策略器、计数器、防火墙和其他元素。
网络装置10的内部转发路径可以包括多个不同分组处理器24的相应转发路径66的组合。换言之,分组处理器24A的转发路径66A可以仅包括网络装置10的整个内部转发路径的一部分。控制单元12可以配置分组处理器24A的转发路径66A,以识别绑定到主机的网络分组,并将这些分组转发给控制单元12。例如,控制单元12可以对包括网络装置10的网络地址的过滤器进行编程,并引导分组处理器24A向控制单元12转发目的地址与网络地址匹配的网络分组。
在一些示例中,分组处理器24A将对分组处理器24A接收的分组执行的动作绑定到分组的一个或多个属性的标识。即,在识别某些分组属性时,分组处理器24A执行绑定到这些属性的动作。分组属性可以包括分组元数据,例如,特定分组的入口接口或出口接口(由分组处理器24确定)以及由分组和分组报头携带的信息,例如,分组报头字段、目的地路由前缀、层四(L4)或传输层协议目的地端口以及分组有效载荷。绑定到分组特征的动作可以包括计数、丢弃、转发到指定的转发路径元素或接口、过滤、采样、速率限制和服务质量(QoS)标记、区分服务(DiffServ)、负载平衡、入侵检测和预防、L2服务级别(CoS)以及L2或L2虚拟专用网络(L2VPN)交换。
每个关键字引擎71A包括一个或多个关键字缓冲器,用于存储关键字引擎当前正在处理的对应分组的分组字段数据。关键字缓冲器还可以提供有限的可写存储器,内部转发路径的元素可以向该存储器写入,以传递未来元素可访问的消息。
转发路径66A的转发路径元素114(也称为“基本的命令”)包括具有条目或“项目”的数据结构,这些条目或“项目”对应于分组关键值,并将这些值绑定到将由执行转发路径66A的关键字引擎71A执行的动作。在这方面,至少一些转发路径元素114表示对应于绑定动作的可执行指令和可能的分组关键值的数据的紧密耦合的组合。一个转发路径元素114的树查找可以在路由表中执行最长匹配前缀查找,或者在过滤程序中搜索前缀列表。转发路径元素114中的一个的表查找可以确定转发路径元素114中的另一个是否应该由关键字引擎71A执行。例如,关键字引擎71A可以执行分组属性的表查找,以确定关键字引擎71A应该进一步执行树查找,以识别分组的出站接口。分组处理器24A可以将转发路径元素114存储在诸如SRAM等计算机可读存储介质中。虽然在分组处理器24A内示出,但是转发路径元素114可以存储在分组处理器24A外部的存储器中并且可以访问。
在一些方面,转发路径66的动作使用转发路径元素数据结构来发起处理。在一个关键字引擎71A的每个处理步骤结束时,例如,执行一个转发路径元素114,结果是转发路径元素可以指定例如额外处理或终止处理。此外,转发路径元素可以指定或以其他方式表示将由关键字引擎71A执行的一个或多个功能。示例转发路径元素功能包括监管(即速率限制)、计数和采样。转发路径元素因此形成主数据结构,该主数据结构可用于启动查找或另一转发路径元素,将查找和转发路径元素链接在一起,以允许对单个分组执行多个查找和其他操作,并终止查找。关键字引擎71可以与存储用于执行转发路径元素的结果的相应结果(或“查找”)缓冲器相关联。例如,关键字引擎71可以执行由转发路径元素指定的查找,并将查找结果存储到相关联的结果缓冲器。结果缓冲器的内容可能会影响转发拓扑中转发路径元素的动作。
转发单元20A通过IFC 22接收入站网络流量,分组处理器24A使用内部转发路径66A处理网络流量。分组处理器24A查找出站接口,并经由出站接口37转发既不受主机限制也不需要控制平面的逻辑决策响应的作为出站流量的传输网络分组。尽管主要针对单个分组处理器24A和单个转发路径66A进行了描述,但是转发单元20A的转发管理器16A可以配置多个分组处理器24,每个分组处理器24具有单独的和/或共享的转发路径66。
转发单元20A执行转发管理器16A软件,并向控制单元12提供用于配置转发路径66A的接口。一个或多个客户端63A、服务器模块(“服务器”)65A、平台管理器64A和驱动器60A可以表示由转发单元处理器62A使用例如由微内核(未示出)提供的操作环境执行的不同过程。服务器65A可以是多线程的,以同时支持与多个客户端63A的通信。每个客户端63A可以与服务器65A的一个线程通信,以便于按顺序执行指定给该客户端63A/线程的所有操作。
服务器65A呈现应用编程接口(API),以使客户端63A能够通过使用转发路径配置数据102创建、引用和连接转发路径元素114来创建转发路径66A中的转发路径元素114,转发路径配置数据102包括节点110、令牌112、反向令牌引用116和正向令牌引用118。服务器65A将从客户端63A接收的节点110转化成由分组处理器24A支持的相应转发路径元素114。每个转发路径元素114具有由服务器65A存储并可使用服务器65A API访问的对应一个节点110。客户端63A使用节点110的API来创建沙箱,将条目编程到查找型转发路径元素114中,并将转发路径元素114连接,以将端到端转发状态编程。
以这种方式,服务器65A在客户端63A和分组处理器24A的底层硬件/转发路径66A之间实现状态转换桥。例如,客户端63A发送节点和条目的流,并且服务器65A将节点和条目转化成用于配置转发路径的转发路径元素114。
编译器14可以被配置为生成软件图像101,当被客户端63A执行时,该软件图像101使得转发管理器16A基于客户端63A从应用程序15接收的数据27生成转发路径配置数据102。通过生成转发路径配置数据102,转发管理器16A配置一个或多个转发路径元素114,每个转发路径元素对应于节点110的相应节点。例如,编译器14可以接收包括语法84的数据(例如,语法形式的文本)。如本文所使用的,术语“语法”可以指形成术语的逻辑结构的字符、数字和符号的集合。术语的这种逻辑结构可以包括例如一组操作数和一组运算符。操作数表示对象,运算符表示接受一个或多个操作数作为输入的函数。因此,语法84可以包括用户指令,以由语法84中表示的运算符和操作数指定的方式配置一个或多个转发路径元素114。
在一些示例中,由语法84表示的一组运算符可以包括一个或多个操作数,每个操作数对应于转发路径配置数据102的一组节点(例如,节点110)中的相应节点。进而,节点110的每个节点对应于转发路径元素114的相应转发路径元素。由语法84表示的一组运算符中的一个或多个运算符可以定义对应于节点110的操作数之间的一个或多个关系。例如,一个或多个运算符可以指示对应于节点110B的操作数在对应于节点110A的运算符后面,这意味着转发路径元素114B在转发路径66A中的转发路径元素114A后面。编译器14可以基于编译器14接收的语法84生成代码。进而,编译器14可以编译代码,以生成软件图像101,该软件图像101使得转发路径配置数据102包括将节点110B连接到令牌112A的反向令牌引用116和将节点110A连接到令牌112B的正向令牌引用118。进而,转发管理器16A可以将转发路径元素114B配置为在转发路径66A中的转发路径元素114A后面。
编译器14可以使用解析单元82来确定语法84中表示的操作数之间的一个或多个关系。例如,该组操作数可以定义包括一个或多个“路径”的层级。层级中的一条或多条路径中的每条路径可以表示从第一操作数延伸到最后一个操作数的操作数链。由语法84中的运算符指示的一个或多个关系可以定义形成一个或多个路径的相应路径的一组运算符的顺序。例如,在路径中,第一操作数可以在第二操作数之前,第三操作数可以在路径中的第二操作数之后。一个或多个运算符可以指示路径的顺序包括第一操作数,接着是第二操作数,接着是第三操作数。为了确定一个或多个操作数的层级,解析单元82可以解析语法84,以确定层级的一个或多个路径。
解析单元82可以采用语言解析技术。换言之,解析单元82可以采用包括该组操作数和该组运算符的语法84,并确定对应于用于配置一个或多个转发路径元素的节点拓扑的操作数层级。数据结构可以包括解析树、抽象语法树、流程图和另一种视觉表示中的至少一种。这样,解析单元82被配置为识别语法84中的操作数层级的表示。
编译器14被配置为通过基于由解析单元82识别的操作数的层级编译由编译器14生成的代码来生成软件图像101。在一些示例中,软件图像101可以在客户端63A上执行。另外或替代地,软件图像可以在用户空间41中执行。当被执行时(例如,由转发管理器16A和/或控制单元12),由编译器14生成的软件图像101可以使转发管理器16A生成或修改客户端63A中的转发路径配置数据102。例如,操作数的层级可以对应于转发路径配置数据102的节点拓扑,因为语法84的一个或多个操作数可以均对应于节点110的相应节点。这样,当转发管理器16A执行软件图像101时,转发管理器16A生成转发路径配置数据102,以包括反向令牌引用116和正向令牌引用118,使得转发路径配置数据102的节点拓扑反映由语法84指示的操作数层级。通过生成转发路径配置数据102,转发管理器16A基于由软件图像101指示的节点拓扑来配置转发路径元素114。这意味着语法84中表示的操作数的层级促使在转发路径66A中配置转发路径元素114。
被配置为由转发单元处理器62A执行的分组处理器驱动器60A(以下称为“驱动器60A”)利用转发路径元素114来配置转发路径66A,以由分组处理器24A执行。分组处理器驱动器60A从服务器65A和平台管理器64A接收转发路径元素114。转发路径元素114可以包括可由分组处理器24A执行的指令。例如,客户端63A、平台管理器64A和驱动器60A从应用程序15接收数据27。客户端63A可以执行由编译器14生成的软件图像101,以便使用从应用程序15接收的至少一些数据27来配置转发路径元素114。
软件图像101的至少一部分包括用于配置转发路径元素114的数据。客户端63A将软件图像101转化到节点110,平台管理器64A和服务器65A将节点推送到驱动器60A,以便配置转发路径66A。客户端63A可以表示接口适配器,例如,P4、开放流、交换抽象接口(SAI)或者将操作转化到节点110的其他软件定义的网络(SDN)协议接口适配器。客户端63A将转发元素配置数据102的节点110推送到服务器65A,服务器65A使用驱动器60A在转发路径66A中配置相应转发路径元素114。
在一些情况下,客户端63A可以调整节点的参数(例如,配置中改变的策略器参数)或改变节点的依赖性(例如,将路由前缀指向不同的下一跳)。一旦在转发路径66A中配置,服务器65A可以认为节点和条目是不可变的(即不可改变的)。因此,为了改变节点,客户端63A插入与被“修改”的节点具有相同令牌值的新节点。服务器65A接收新节点,从转发路径66A中删除对应于旧节点的转发路径元素,在转发路径66A中插入对应于新节点的新转发路径元素,重新生成任何底层硬件状态,并且更新转发路径元素114中的任何一个。作为服务器65A提供该服务的结果,客户端63A只需要插入新的、更新的节点。
在一个示例中,语法84包括以下第一示例语法:
Figure BDA0002717296350000201
Figure BDA0002717296350000211
如上所述,第一示例语法包括一组操作数(例如,“interface”、“vlan-table”、“+vlan-table-entry”、“iflist”、“filter”、“classifier”和“route-table”)。在一些示例中,这些操作数中的每一个对应于转发路径元素114的相应转发路径元素。另外,第一示例语法包括一组运算符(例如,依赖运算符(=>)和&符号运算符(&))。这组运算符定义了这组操作数之间的关系。在某些情况下,第一个示例语法定义了一个或多个路径,其中,vlan-table操作数在interface操作数后面,vlan-table-entry操作数在vlan-table操作数后面,iflist操作数在vlan-table-entry操作数后面。此外,filter操作数、classifier操作数和route-table操作数这三个操作数都在iflist操作数后面。换言之,iflist操作数后面是分支,其中,分支包括通向filter操作数的第一路径、通向classifier操作数的第二路径和通向route-table操作数的第三路径,如classifier运算符之前的&运算符和route-table运算符之前的&运算符所示。换言之,响应于iflist节点被实例化,语法促使网络装置10实例化过滤器(filter)节点、分类器(classifier)节点和路由表(route-table)节点。依赖运算符(=>)表示一个运算符后面跟着另一运算符。因此,第一示例语法的部分包括“interface[...attributes...]=>{vlan-table[...attributes...]}”表示在第一示例语法中,vlan-table运算符在运算符层级中位于interface运算符之后。
编译器14的解析单元82被配置为解析由编译器14接收的语法84。例如,解析单元82可以被配置为识别语法84中指示的操作数的一个或多个路径,并生成包括指示一个或多个识别的路径的信息的代码。在一些示例中,代码包括C++编程语言的文本,但这不是必需的。代码可以包括任何编程语言的文本。随后,编译器14可以编译该代码,以便生成可由网络装置10执行(例如,可由转发管理器16A和/或控制单元12执行)的软件图像101。客户端63可以执行由编译器14生成的软件图像101,以便配置转发路径元素114。在一些示例中,当客户端63执行软件图像101时,客户端63在由编译器14接收的语法84中查找对应于一组操作数的每个操作数的一个或多个属性。例如,在文本“interface[...attributes...]”中的语法元素“[...attributes...]”表示查找对应于接口转发路径元素的一个或多个属性的请求。进而,编译器14可以生成代码,以便包括指示查找对应于接口转发路径元素的一个或多个属性的指令的信息。这样,当编译器14编译代码并生成软件图像101时,软件图像101反映指示查找对应于接口转发路径元素的一个或多个属性的指令的信息。当客户端63执行软件图像101时,客户端63在从应用程序15接收的数据27中查找属性。这样,客户端63可以执行软件图像101,以便基于包括在数据27中的转发路径元素属性来配置转发路径元素114。
在一些示例中,软件图像101调用应用程序API来创建转发元素114、转发路径配置数据102,支持对转发路径元素的令牌的查询、安装或卸载任何转发路径元素114或其任意组合。编译器14可以通过解析语法84来确定设置拓扑的方式,并且编译器14可以生成代码并编译该代码,以生成软件图像101,使得转发路径元素114反映由编译器14接收的语法84所指示的拓扑。
在一些示例中,编译器14可以接收对第一示例语法的一个或多个编辑,并基于该一个或多个编辑来更新软件图像101。下面的第二示例语法表示第一示例语法的编辑版本。
Figure BDA0002717296350000221
Figure BDA0002717296350000231
第二示例语法包括“filter[...attribute...]=>{}|classifier[...attribute...]=>{}”文本段。包含OR(|)运算符意味着如果第一转发路径元素被实例化,则第二转发路径元素不被实例化,并且如果第一转发路径元素未被实例化,则第二转发路径元素被实例化。在第二示例语法的情况下,当过滤器(filter)转发路径元素被实例化时,分类器(classifier)转发路径元素不被实例化,并且当转发路径元素不被实例化时,分类器转发路径元素被实例化。
在一些示例中,分类器14可以接收表示对第一示例语法的更新的第二示例语法,而不对在编译器14和/或网络装置10上执行的应用代码进行任何改变。编译器14接收的语法84的高级语言对于调试语法84可能是有益的。例如,编译器14可以识别语法84中的一个或多个循环(例如,第一操作数指向第二操作数,进而,第二操作数指向第一操作数),并响应于检测到循环而输出错误消息。另外或替代地,编译器14可以应用一个或多个令牌重用策略。
在一些示例中,语法84可以包括以下第三示例语法:
Figure BDA0002717296350000232
Figure BDA0002717296350000241
第三示例语法包括操作数“SetIIF”,“Counter”,“MarkDn”,“Classifier”和“Filter”。此外,第三示例语法包括运算符“=>”、“&”和“|”。编译器14可以生成代码并编译该代码,以生成软件图像101,当该软件图像101被转发管理器16A执行时,使得转发管理器16A基于由第三示例语法的运算符定义的操作数的层级生成节点拓扑,并且使得转发管理器16A配置转发路径元素144,以反映操作数的层级。第三示例语法易于修改,以便修改转发路径66A的配置。
如编译器14接收的语法的第三示例所示,“SetIIF”、“Counter”、“MarkDn”、“Classifier”和“Filter”操作数中的每一个都与对一个或多个转发路径元素属性的请求相关联。例如,文本“Interface[IfPtr:]”表示对与“接口(Interface)”转发路径元素相关联的“IfPtr:”属性的请求。“IfPtr:”可以包括在从应用程序15接收的数据27中。
由编译器14接收的用于配置转发路径元素114的文本(例如,语法84)可以是高级编程语言的形式,该高级编程语言易于由用户重新配置。例如,下面的文本表示操作数层级的第一版本:
(
MarkDown[...]=>{}
|(
Classifier[...]=>{}
&Filter[...]=>{}
)
)
上述文本包括包含OR运算符(|),表示如果MarkDown节点被实例化,则分类器(Classifier)节点不被实例化。用户可以按如下方式重新配置文本:
&MarkDown[...]=>{}
&Classifier[...]=>{}
&Filter[...]=>{
此文本表明MarkDown节点、分类器(Classifier)节点和过滤器(Filter)节点都设置在节点拓扑的一个级别中。在任何情况下,文本都可以根据高级语言重新设置。
图4是示出根据本公开的一种或多种技术的多个节点130的节点拓扑的框图。多个节点130包括第一组节点140A-140L(统称为“节点140”)、第二组节点150A-150I(统称为“节点150”)和第三组节点160A-160D(统称为“节点160”)。多个节点130可以是图2至图3的节点110的示例实例。
如图4所示,多个节点130形成拓扑,该拓扑包括通过多个节点130的一组路径。例如,一条路径从节点140A开始,前进到节点140B,前进到节点140C,并在节点140D结束。另一条路径从节点150A开始,前进到节点150E,前进到节点150H,并在节点150I结束。“路径”可以指任何节点序列,包括第一节点、最后一个节点以及连接第一节点和最后一个节点的所有其他节点。尽管在图4中没有示出令牌,但是多个节点130的每个节点可以包括令牌,其他节点可以引用该令牌来建立多个节点130的拓扑。例如,节点140H可以引用节点140E的令牌,并且引用节点140A的令牌,以便指示节点140H在路径中在节点140E后面并且在路径中在节点140I之前。
在一些示例中,转发管理器16A可以将多个节点130的拓扑实例化为转发路径配置数据102的一部分,从而根据节点130的拓扑配置转发路径元素144。这可以促使转发管理器16A将转发路径元素114配置为包括对应于多个节点130的每个节点的转发路径元素。转发管理器16A可以配置转发路径元素144,使得转发路径存在于对应于由多个节点130的拓扑指示的一组路径中的每个路径的分组处理器24A中。即,转发路径元素114形成对应于包括节点140A、节点140B、节点140C和节点140D的路径的第一转发路径,转发路径元素114形成对应于包括节点140A、节点140E、节点140F和节点140G的路径的第二转发路径,诸如此类。
在一些示例中,响应于执行软件图像101,转发管理器16A可以生成转发路径配置数据102,以包括图4所示的节点拓扑中的节点130。在一些示例中,编译器14响应于接收到语法形式的一个或多个指令(例如,图3的语法84),生成软件图像101。语法84可以包括对应于节点130的每个节点的操作数和指示操作数之间关系的一组运算符。即,语法84包括由一个或多个运算符定义的操作数层级。在执行软件图像101时,转发管理器16A可以将操作数的层级映射到转发路径配置数据102中的多个节点130,使得拓扑反映操作数的层级。通过将操作数的层级映射到节点拓扑,转发管理器16A可以配置转发路径元素114,以反映节点130的节点拓扑。
图5是示出根据本公开的一种或多种技术的语法170和基于语法170生成的节点拓扑180之间的关系的概念图。在一些示例中,语法170可以是由图1的编译器14接收的语法84的示例。在一些示例中,节点拓扑180可以表示转发管理器16A在转发路径配置数据102中生成并基于编译器14基于语法170生成的接收代码在转发路径66A中配置的节点拓扑。
如图5所示,语法170包括操作数172A-172E(统称为“操作数172”)、一组第一运算符174A-174C(统称为“运算符174”)和第二运算符176。节点拓扑180可以包括节点182A-182E(统称为“节点182”)。节点182可以是图1的节点30A的示例实例。语法170内的操作数172、一组第一运算符174和第二运算符176的放置决定了节点拓扑180内的节点182的排列。例如,在语法170中,操作数172A后面是一组第一运算符174的运算符174A。运算符174A是依赖运算符“=>”,表示在括号“[]”内的运算符174A后面的任何操作数都依赖于操作数172A。这样,操作数172B、操作数172D和操作数172E都依赖于操作数172A。运算符174B和174C是“和”运算符“&”,表示在语法170指示的操作数层级中,操作数172B和操作数172D以及操作数172E在操作数172A后面。第二运算符176也是依赖运算符“=>”。第二运算符176指示在括号“{}”内的运算符174B后面的任何操作数都依赖于操作数172B。这样,操作数172C依赖于语法170指示的操作数层级内的操作数172B。
节点拓扑180反映了由语法170指示的操作数的层级。节点182A对应于操作数172A,节点182B对应于操作数172B,诸如此类。例如,节点拓扑180示出了节点拓扑180内的节点182A、节点182D和节点182E都在节点182A后面。另外,节点182C在节点拓扑180内在节点182B后面。这样,节点拓扑180的布局在语法170中是容易看到的。以这种方式,与不基于反映节点拓扑布局的语法生成转发路径元素配置数据的系统相比,可以更容易通过修改语法170来修改节点拓扑180,并因此修改转发路径66A的转发路径元素114。
图6是示出根据本公开的一种或多种技术的基于网络装置的编译器接收的语法来配置网络装置的转发路径的示例操作的流程图。为了方便起见,针对图1和图3的网络装置10和编译器14来描述图6。然而,图6的技术可以由网络装置10和编译器14的不同组件或者由额外的或替代的装置来执行。
网络装置10可以包括例如控制单元12和一个或多个转发单元20。控制单元12可以包括被配置为接收和处理语法的编译器14。该语法可以表示指示配置在一个或多个转发单元20上执行的转发路径的指令的用户输入。语法所包括的指令可以包括例如要在转发路径中配置的转发路径元素的顺序。该语法可以显示一个或多个转发路径元素之间的关系,使得用户能够查看要在转发路径中配置的一个或多个转发路径元素的顺序。
编译器14可以被配置为接收语法84(602)。编译器14的解析单元82可以解析由编译器14接收的语法84(604)。在一些示例中,语法84包括一组操作数和一组运算符。该组操作数可以包括一个或多个操作数,每个操作数对应于一个或多个转发路径元素的转发路径元素。这组运算符可以定义这组操作数的操作数之间的一个或多个关系。例如,一组操作数和一组运算符可以指示第二操作数在第一操作数之后,第三操作数在第二操作数之后。在这种情况下,网络装置10可以基于转发路径配置数据102来配置对应于第一操作数的第一转发路径元素,接着是对应于第二操作数的第二转发路径元素,接着是对应于第三操作数的第三转发路径元素。
编译器14可以响应于由编译器14接收的语法分析84来生成代码(606)。在一些示例中,代码可以表示C++编程语言的文本。代码的编程语言可以不同于由编译器14接收的、编译器14用来生成软件图像101的语法84的编程语言。编译器14编译代码,以便生成软件图像101,用于输出(608)到转发管理器16A。在一些示例中,软件图像101可由网络装置10执行,而由编译器14响应于语法分析84生成的代码不可由网络装置10执行。
转发管理器16A接收软件图像101(610)。另外,转发管理器16A从应用程序15接收转发路径元素配置数据27(612)。客户端63A可以执行软件图像101(614),以便基于由编译器14接收的语法84的运算符所指示的操作数之间的关系以及基于转发路径元素配置数据27来配置转发路径元素114(616)。随后,分组处理器24A可以接收分组(618)并使用由转发管理器16A基于转发路径配置数据102配置的一个或多个转发路径元素来处理分组(620)。
本文描述的技术可以用硬件、软件、固件或其任意组合来实现。描述为模块、单元或组件的各种特征可以在集成逻辑装置中一起实现,或者作为分立但可互操作的逻辑装置或其他硬件装置单独实现。在一些情况下,电子电路的各种特征可以被实现为一个或多个集成电路装置,例如,集成电路芯片或芯片组。
如果以硬件实现,本公开可以涉及诸如处理器或集成电路装置等设备,例如,集成电路芯片或芯片组。另外或替代地,如果以软件或固件实现,则这些技术可以至少部分地由计算机可读数据存储介质来实现,该计算机可读数据存储介质包括当被执行时使处理器执行一个或多个上述方法的指令。例如,计算机可读数据存储介质可以存储这种由处理器执行的指令。
计算机可读介质可以形成计算机程序产品的一部分,其可以包括包装材料。计算机可读介质可以包括计算机数据存储介质,例如,RAM、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、EEPROM、闪存、磁或光数据存储介质等。在一些示例中,制品可以包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可以包括非暂时性介质。术语“非暂时性”可以表示存储介质没有包含在载波或传播信号中。在某些示例中,非暂时性存储介质可以存储随时间而变化的数据(例如,在RAM或高速缓存中)。
代码或指令可以是由处理电路执行的软件和/或固件,该处理电路包括一个或多个处理器,例如,一个或多个DSP、通用微处理器、ASIC、FPGA或其他等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何前述结构或任何其他适合于实现本文描述的技术的结构。此外,在一些方面,可以在软件模块或硬件模块中提供本公开中描述的功能。

Claims (20)

1.一种网络装置系统,包括:
编译器,被配置为:
接收包括指示多个节点的拓扑的配置中的语法元素的文本,其中,所述多个节点中的每个节点对应于多个转发路径元素中的转发路径元素;
基于所述文本,生成用于实例化所述多个节点的所指示的拓扑中的所述多个节点的代码;并且
编译所述代码,以生成网络装置的软件图像;以及
所述网络装置,包括:
转发管理器,被配置为执行软件图像,将所述转发路径配置为包括所述多个节点中的每一个的对应转发路径元素;以及
至少一个分组处理器,能够操作地耦合到存储器,其中,所述至少一个分组处理器被配置为通过执行所述转发路径元素来处理由转发单元接收的分组。
2.根据权利要求1所述的网络装置系统,其中,所述文本指示所述多个节点的相应节点之间的一个或多个连接,使得所述多个节点的拓扑在所述文本中可见。
3.根据权利要求1所述的网络装置系统,其中,为了执行所述软件图像,以配置所述转发路径,所述转发管理器被配置为配置所述转发路径,以反映由所述文本指示的所述多个节点的拓扑。
4.根据权利要求1所述的网络装置系统,其中,所生成的代码是以C++编程语言表示的,并且其中,所述软件图像表示能够由所述转发管理器执行的计算机代码。
5.根据权利要求1所述的网络装置系统,其中,所述文本表示第一文本,其中,所述语法元素是第一语法元素,其中,所述拓扑是第一拓扑,其中,所述多个节点是第一多个节点,其中,所述多个转发路径元素是第一多个转发路径元素,其中,所述代码是第一代码,其中,所述软件图像是第一软件图像,并且
其中,所述编译器还被配置为:
接收包括指示第二多个节点的第二拓扑的配置中的第二语法元素的第二文本,其中,所述第二多个节点中的每个节点对应于第二多个转发路径元素中的转发路径元素;
基于第二文本,生成用于实例化所述第二多个节点的所指示的第二拓扑中的第二多个节点的第二代码;并且
编译所述第二代码,以生成所述网络装置的第二软件图像,
其中,所述转发管理器还被配置为执行所述第二软件图像,以将所述转发路径配置为包括所述第二多个节点中的每一个的对应转发路径元素。
6.根据权利要求1所述的网络装置系统,其中,为了配置所述转发路径,所述转发管理器被配置为:
执行生成的代码,以实例化所述多个节点,每个节点包括唯一令牌,其中,所述多个节点中的第一节点包括设置为所述多个节点中的第二节点的令牌的值的令牌引用;并且
基于所述多个节点,配置所述转发路径,以包括对应于所述多个节点中的每个节点的相应转发路径元素。
7.根据权利要求10所述的网络装置系统,其中,将所述转发路径配置为包括用于节点的相应转发路径元素包括:
至少基于第一节点的令牌引用,将对应于所述第一节点的第一转发路径元素的下一跳设置为对应于所述第二节点的第二转发路径元素。
8.根据权利要求1所述的网络装置系统,其中,每个转发路径元素包括查找树、查找表、速率限制器、策略器和计数器中的一个。
9.根据权利要求1所述的网络装置系统,其中,所述第一节点表示查找类型转发路径元素,并且包括具有用于匹配查找项目的关键字和节点令牌的条目,所述节点令牌包括设置为所述节点中的第二节点的令牌的值的令牌引用,其中,所述节点令牌将所述第二节点识别为对所述关键字与所述查找项目执行成功匹配的节点。
10.根据权利要求1-9中任一项所述的网络装置系统,其中,所述文本包括:
一组操作数,其中,所述一组操作数的每个操作数表示一组节点中的一个或多个节点;以及
一组运算符,其中,所述一组运算符的每个运算符定义所述一组操作数的第一个或多个操作数和所述一组操作数的第二个或多个操作数之间的关系。
11.根据权利要求10所述的网络装置系统,其中,所述一组运算符包括一个或多个&运算符,其中,所述一个或多个&运算符中的每个&运算符表示当存在第一个或多个操作数时,实例化第二个或多个操作数的指令。
12.根据权利要求10所述的网络装置系统,其中,所述一组运算符包括一个或多个异或(|)运算符,其中,所述一组|运算符的每个|运算符表示进行以下操作的指令:
当不存在第一个或多个操作数时,实例化第二个或多个操作数;以及
当存在第一个或多个操作数时,避免实例化第二个或多个操作数。
13.根据权利要求10所述的网络装置系统,其中,所述一组运算符定义了所述一组操作数的层级,其中,所述层级包括一组级别,其中,所述一组操作数的层级对应于所述多个节点的拓扑,并且其中,所述一组运算符包括:
运算符的第一子集,其中,所述运算符的第一子集的每个运算符定义位于一组操作数的一个级别中的一组操作数中的操作数和位于与一组级别中的所述一个级别相邻的一组级别中的另一级别中的一组操作数的一个或多个其他操作数之间的关系;以及
运算符的第二子集,其中,所述运算符的第二子集的每个运算符定义位于一组级别的同一级别中的一组操作数的两个或多个操作数之间的关系。
14.一种方法,包括:
由编译器接收包括指示多个节点的拓扑的配置中的语法元素的文本,其中,所述多个节点中的每个节点对应于多个转发路径元素中的转发路径元素;
由编译器基于文本生成用于实例化多个节点的所指示的拓扑中的多个节点的代码;
由编译器编译该代码,以生成网络装置的软件图像;
由所述网络装置的转发管理器执行软件图像,以将所述转发路径配置为包括所述多个节点中的每一个的对应转发路径元素;并且
由能够操作地耦合到存储器的至少一个分组处理器通过执行所述转发路径元素来处理由所述转发单元接收的分组。
15.根据权利要求14所述的方法,其中,所述文本指示所述多个节点的相应节点之间的一个或多个连接,使得所述多个节点的拓扑在所述文本中可见。
16.根据权利要求14至15中任一项所述的方法,其中,所述文本包括:
一组操作数,其中,所述一组操作数的每个操作数表示一组节点中的一个或多个节点;以及
一组运算符,其中,所述一组运算符的每个运算符定义所述一组操作数的第一个或多个操作数和所述一组操作数的第二个或多个操作数之间的关系。
17.根据权利要求16所述的方法,其中,所述一组运算符包括一个或多个&运算符,其中,所述一个或多个&运算符中的每个&运算符表示当存在第一个或多个操作数时,实例化第二个或多个操作数的指令。
18.根据权利要求16所述的方法,其中,所述一组运算符包括一个或多个异或(|)运算符,其中,所述一组|运算符的每个|运算符表示进行以下操作的指令:
当不存在第一个或多个操作数时,实例化第二个或多个操作数;以及
当存在第一个或多个操作数时,避免实例化第二个或多个操作数。
19.根据权利要求16所述的方法,其中,所述一组运算符定义了所述一组操作数的层级,其中,所述层级包括一组级别,其中,所述一组操作数的层级对应于所述多个节点的拓扑,并且其中,所述一组运算符包括:
运算符的第一子集,其中,所述运算符的第一子集的每个运算符定义位于一组操作数的一个级别中的一组操作数中的操作数和位于与一组级别中的所述一个级别相邻的一组级别中的另一级别中的一组操作数的一个或多个其他操作数之间的关系;以及
运算符的第二子集,其中,所述运算符的第二子集的每个运算符定义位于一组级别的同一级别中的一组操作数的两个或多个操作数之间的关系。
20.一种非暂时性计算机可读介质,包括用于使一个或多个可编程处理器执行根据权利要求14-19中任一项所述的方法的指令。
CN202011077719.7A 2020-07-20 2020-10-10 用于配置网络装置的内部转发路径的高级定义语言 Pending CN114039938A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/933,705 US11418441B2 (en) 2020-07-20 2020-07-20 High-level definition language for configuring internal forwarding paths of network devices
US16/933,705 2020-07-20

Publications (1)

Publication Number Publication Date
CN114039938A true CN114039938A (zh) 2022-02-11

Family

ID=72840414

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011077719.7A Pending CN114039938A (zh) 2020-07-20 2020-10-10 用于配置网络装置的内部转发路径的高级定义语言

Country Status (3)

Country Link
US (2) US11418441B2 (zh)
EP (1) EP3944570A1 (zh)
CN (1) CN114039938A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11418441B2 (en) 2020-07-20 2022-08-16 Juniper Networks, Inc. High-level definition language for configuring internal forwarding paths of network devices
US20240022480A1 (en) * 2022-07-14 2024-01-18 Zhejiang Lab Network modal management system and management method

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140177476A1 (en) * 2011-08-12 2014-06-26 Aria Networks Limited Network Capacity Management System and Method
US8806058B1 (en) * 2011-07-29 2014-08-12 Juniper Networks, Inc. Packet forwarding path programming using a high-level description language
EP2782291A1 (en) * 2013-03-20 2014-09-24 Wolting Holding B.V. Compiler for and method of software defined networking
CN105991367A (zh) * 2015-03-06 2016-10-05 清华大学 一种测量虚拟机之间通信依赖关系的方法和系统
CN107070674A (zh) * 2015-11-17 2017-08-18 丛林网络公司 第三方控制的数据包转发路径的网络装置数据平面沙盒
US20170250869A1 (en) * 2014-09-12 2017-08-31 Andreas Richard Voellmy Managing network forwarding configurations using algorithmic policies
US20170310574A1 (en) * 2014-09-22 2017-10-26 Wolting Holding B.V. Compiler for and method of software defined networking, storage and compute determining physical and virtual resources
CN109688059A (zh) * 2017-10-19 2019-04-26 深圳市中兴微电子技术有限公司 一种交换网络的拥塞管理方法、装置及计算机存储介质
US20190222504A1 (en) * 2018-01-12 2019-07-18 Juniper Networks, Inc. Node representations of packet forwarding path elements
CN110035006A (zh) * 2018-01-12 2019-07-19 丛林网络公司 转发平面重置的单独网络设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7801857B2 (en) 2003-12-19 2010-09-21 Solace Systems, Inc. Implicit routing in content based networks
US10395321B2 (en) * 2012-11-30 2019-08-27 Facebook, Inc. Dynamic expressions for representing features in an online system
US10318872B1 (en) * 2013-03-15 2019-06-11 Ab Initio Technology Llc Converting rules in data processing systems
US10095734B2 (en) 2015-06-10 2018-10-09 International Business Machines Corporation Source code search engine
US10719637B2 (en) * 2015-06-30 2020-07-21 International Business Machines Corporation Globally convergent system and method for automated model discovery
US10719506B2 (en) * 2016-12-22 2020-07-21 Sap Se Natural language query generation
US10685021B2 (en) * 2017-10-24 2020-06-16 Oracle International Corporation Complete, correct and fast compile-time encoding inference on the basis of an underlying type system
US10476492B2 (en) * 2018-11-27 2019-11-12 Intel Corporation Structures and operations of integrated circuits having network of configurable switches
CN112187635B (zh) * 2019-07-01 2023-02-03 中兴通讯股份有限公司 报文转发方法及装置
EP3829119B1 (en) * 2019-11-29 2021-11-03 Ovh Method and system for classifying data packet fields on fpga
CN113315702A (zh) * 2020-02-26 2021-08-27 华为技术有限公司 一种传输节点标识的方法、设备及系统
US11418441B2 (en) 2020-07-20 2022-08-16 Juniper Networks, Inc. High-level definition language for configuring internal forwarding paths of network devices

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8806058B1 (en) * 2011-07-29 2014-08-12 Juniper Networks, Inc. Packet forwarding path programming using a high-level description language
US20140177476A1 (en) * 2011-08-12 2014-06-26 Aria Networks Limited Network Capacity Management System and Method
EP2782291A1 (en) * 2013-03-20 2014-09-24 Wolting Holding B.V. Compiler for and method of software defined networking
US20170250869A1 (en) * 2014-09-12 2017-08-31 Andreas Richard Voellmy Managing network forwarding configurations using algorithmic policies
US20170310574A1 (en) * 2014-09-22 2017-10-26 Wolting Holding B.V. Compiler for and method of software defined networking, storage and compute determining physical and virtual resources
CN105991367A (zh) * 2015-03-06 2016-10-05 清华大学 一种测量虚拟机之间通信依赖关系的方法和系统
CN107070674A (zh) * 2015-11-17 2017-08-18 丛林网络公司 第三方控制的数据包转发路径的网络装置数据平面沙盒
CN109688059A (zh) * 2017-10-19 2019-04-26 深圳市中兴微电子技术有限公司 一种交换网络的拥塞管理方法、装置及计算机存储介质
US20190222504A1 (en) * 2018-01-12 2019-07-18 Juniper Networks, Inc. Node representations of packet forwarding path elements
CN110035009A (zh) * 2018-01-12 2019-07-19 丛林网络公司 分组转发路径元素的节点表示
CN110035006A (zh) * 2018-01-12 2019-07-19 丛林网络公司 转发平面重置的单独网络设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张波, 黄涛, 傅远彬, 邵丹华: "对象描述语言编译器的设计和实现", 软件学报, no. 07, 5 July 1998 (1998-07-05) *

Also Published As

Publication number Publication date
US11418441B2 (en) 2022-08-16
US11743181B2 (en) 2023-08-29
US20220321466A1 (en) 2022-10-06
US20220021609A1 (en) 2022-01-20
EP3944570A1 (en) 2022-01-26

Similar Documents

Publication Publication Date Title
CN110035009B (zh) 用于在网络设备内处理分组的设备及方法、计算机可读介质
US9742668B1 (en) Packet forwarding path programming using a high-level description language
US10505868B2 (en) Network device data plane sandboxes for third-party controlled packet forwarding paths
US10516626B1 (en) Generating configuration data and API for programming a forwarding element
US10536375B2 (en) Individual network device forwarding plane reset
US11909668B2 (en) Programmable packet data processing system
US11743181B2 (en) High-level definition language for configuring internal forwarding paths of network devices
WO2013093860A1 (en) System for flexible and extensible flow processing in software-defined networks
WO2013093857A1 (en) Controller for flexible and extensible flow processing in software-defined networks
EP2795873A1 (en) Forwarding element for flexible and extensible flow processing in software-defined networks
US11991081B1 (en) Micro SID packet processing
US11252072B1 (en) Graph-based rebinding of packet processors
GB2587563A (en) Programmable packet data processing system

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