CN103999430B - 用于软件定义的网络中灵活及可扩展流处理的转发元件 - Google Patents

用于软件定义的网络中灵活及可扩展流处理的转发元件 Download PDF

Info

Publication number
CN103999430B
CN103999430B CN201280063405.9A CN201280063405A CN103999430B CN 103999430 B CN103999430 B CN 103999430B CN 201280063405 A CN201280063405 A CN 201280063405A CN 103999430 B CN103999430 B CN 103999430B
Authority
CN
China
Prior art keywords
flow table
key
packet
configurable
entry
Prior art date
Application number
CN201280063405.9A
Other languages
English (en)
Other versions
CN103999430A (zh
Inventor
L.贝利沃
E.迪克
R.米什拉
R.帕特尼
Original Assignee
瑞典爱立信有限公司
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
Priority to US13/335902 priority Critical
Priority to US13/335,902 priority patent/US8718064B2/en
Application filed by 瑞典爱立信有限公司 filed Critical 瑞典爱立信有限公司
Priority to PCT/IB2012/057565 priority patent/WO2013093858A1/en
Publication of CN103999430A publication Critical patent/CN103999430A/zh
Application granted granted Critical
Publication of CN103999430B publication Critical patent/CN103999430B/zh

Links

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/74Address processing for routing
    • H04L45/745Address table lookup or address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic regulation in packet switching networks
    • H04L47/10Flow control or congestion control
    • H04L47/24Flow control or congestion control depending on the type of traffic, e.g. priority or quality of service [QoS]
    • H04L47/2441Flow classification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/32Network-specific arrangements or communication protocols supporting networked applications for scheduling or organising the servicing of application requests, e.g. requests for application data transmissions involving the analysis and optimisation of the required network resources
    • H04L67/327Network-specific arrangements or communication protocols supporting networked applications for scheduling or organising the servicing of application requests, e.g. requests for application data transmissions involving the analysis and optimisation of the required network resources whereby the routing of a service request to a node providing the service depends on the content or context of the request, e.g. profile, connectivity status, payload or application type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Application independent communication protocol aspects or techniques in packet data networks
    • H04L69/22Header parsing or analysis

Abstract

充当软件定义的网络内的转发元件的网络装置接收可配置流表定义和用于在流表之间进行选择的可配置逻辑的表示。所述网络装置基于每个可配置流表定义创建流表,并且安装用于在流表之间进行选择的可配置逻辑。所述网络装置接收数据以填充流表的可配置键列和动作列,并且使用该数据填充流表。随后,所述网络装置根据用于在流表之间进行选择的可配置逻辑、流表和可配置逻辑要求的相关报头字段中每个分组的值,从对于分组的转发判定来进行选择。

Description

用于软件定义的网络中灵活及可扩展流处理的转发元件

技术领域

[0001] 本发明的实施例涉及连网领域;并且更具体地说,涉及用于软件定义的网络的灵 活及可扩展的流处理架构。

背景技术

[0002] 数十年来,传送基于电路的通信网络的使用已衰退,取而代之的是能够更灵活、有 效和安全的基于分组的网络。因此,基于分组的连网普遍性增大已导致对基于分组的网络 装置的需求增长。此需求大部分通过生成越来越大的单片路由器以处理量和复杂性增大的 网络业务的制造商得到满足。然而,此模型正接近其技术和经济极限。通过传统路由器设计 来满足增大的性能要求变得日益困难,并且随着低成本数据中心硬件的出现,路由器供应 商难以证明用于实现相同性能的硬件的更高成本是合理的。同时,在接入和聚合网络中对 路由选择和交换控制平面的需求正变得更复杂。运营商想要能够定制路由选择以处理在边 缘附近的特定种类的业务流,配置跨聚合网络的定制服务,以及实现多层集成,但不存在今 天网络典型的详细低级别配置。

[0003] 这些趋势产生了其中数据和控制平面分开的路由选择架构的不同方案。通过此分 离,控制平面可在逻辑上居中,并且通过带有变化架构的多种硬件组件实现。此外,数据平 面可由逻辑上居中的控制器配置的简化交换器/路由器元件组成。此新的路由选择拆分式 架构模型致力于拆分控制与转发和数据处理元件,并且是在软件定义的连网(SDN)的核心。 用于软件定义的网络中流处理的一个标准是OpenFlow,它定义用于在控制平面与转发平面 之间传输消息的协议,并且描述用于分组处理的模型。

[0004] 软件定义的网络的此拆分式架构使得能够分离能够在逻辑上或物理上编组在一 起的功能性。例如,在共同控制实体与网络应用(例如,通用多协议标签交换(GMPLS)、边界 网关协议(BGP)、因特网协议安全性(IPSec)等)之间能够有拆分或分离。类似地,在控制与 转发/处理之间能够有拆分或分离(即,中心控制与执行分组处理的网络装置的分离)。也能 够有数据转发功能性、数据处理功能性和数据生成功能性(例如,深度分组检查(DPI);加 密;操作、行政和管理(0ΑΜ);等)的拆分或分离。

[0005] 软件定义的网络与传统单片架构网络相比,具有许多优点。例如,实现重要网络路 由选择和交换功能性的控制平面应用与转发平面是完全分离的。因此,保持集中式控制平 面使得能够调整以满足特定用户需要的高度定制和优化的连网服务。集中式控制平面提供 能够满足各种用户需要的高度可缩放、可靠和灵活的连网基础设施。转发平面(或数据平 面)装置能够是不贵和可交换商品连网装置,这降低了用户的总体配置和维护负担。另外, 用于整个网络的单个管理和配置实体增强了用户的使用方便体验。

[0006] 然而,当前SDN配置也具有缺点。虽然诸如OpenFlow等系统确实显示了指定用于分 组处理的模型的有效方式,但存在的问题极难根据特定路由选择需要扩展或定制此模型。 例如,添加对新协议的支持要求提议对OpenFlow规范的更改,希望得以采纳以及等待实现。 此类更改涉及修改用于分组处理模型的解析、分类(由于要解析的字段的数量必须已更改) 和动作(例如,用于修改新协议的报头)。

[0007] 当前SDN分组处理模型的另一缺陷是处理规范要求基于协议报头字段的静态集 合,将分组分类为属于某个流。例如,分类只可使用元组形式的提取报头字段的有限集合进 行(例如,15个元组被提取并用于分类)。然而,在开发新协议时,不能轻松更新此模型。另 外,在一些环境中,应用可只从使用元组的小集合的分组的部分分类中受益。例如,关于 MPLS分组,可只基于MPLS报头内短路径标签的内容做出分组转发判定,而无需进一步检查 分组本身。在OpenFlow中,不可能使用少于15个元组将这些分组分类,这在解析工作和流表 存储器要求方面效率低。

[0008] 最后,当前SDN模型在处理多个级别的隧道化(即,封装和解封装)方面也是弱的。 例如,考虑在开放系统互连(0SI)模型数据链路层报头(即,0SI第二层或L2)或网络层报头 (即,0SI第三层或L3)的顶部封装以太网分组的情况,这经常在实现第2层虚拟专用网 (L2VPN)或伪线(PW)时进行。在此情况下,不可能使用在L2或L3的第一级别外在报头中存在 的信息来执行更精细粒度的分组处理。

发明内容

[0009] 根据本发明的一个实施例,由充当软件定义的网络内转发元件的网络装置执行的 一种方法包括以下步骤:通过与所述软件定义的网络内控制器装置的网络连接,接收以下 项的表示:基于协议报头的第一多个相关报头字段、包括键组成(key composition)的可配 置流表定义,其中,用于每个流表定义的键组成识别为该流表定义选择的一个或更多相关 报头字段的集合;以及用于基于协议报头的第二多个相关报头字段在可配置流表定义所定 义的流表之间进行选择的可配置逻辑。所述方法还包括基于每个可配置流表定义来创建流 表的步骤。每个流表包括对于由该流表所基于的流表定义中包括的键组成识别的每个相关 报头字段的可配置键列。每个流表也包括存储转发判定的一个或更多动作列的集合。所述 方法还包括安装用于在流表之间进行选择的可配置逻辑,接收数据以填充流表的可配置键 列和动作列,以及根据接收数据填充流表的步骤。所述方法还包括从通过使用一个或更多 协议的网络装置的网络接口接收的对于分组的转发判定来进行选择的步骤。此选择根据用 于在流表之间进行选择的可配置逻辑、流表和可配置逻辑要求的相关报头字段中每个分组 的值来进行,以便为该分组选择流表之一以及为该分组从选择的流表来选择条目。

[0010] 根据本发明的另一实施例,一种充当流交换使能的转发元件的网络装置包括配置 模块。该配置模块可操作以接收以下项的表示:基于协议报头的第一多个相关报头字段、包 括键组成的可配置流表定义,其中,用于每个流表定义的键组成识别为该流表定义选择的 一个或更多相关报头字段的集合;以及用于基于协议报头的第二多个相关报头字段在可配 置流表定义所定义的多个流表之间进行选择的可配置逻辑。该配置模块也可操作以安装用 于在多个流表之间进行选择的可配置逻辑。所述网络装置也包括流表管理模块,流表管理 模块可操作以基于每个可配置流表定义来创建流表。每个流表要包括对于由该流表所基于 的流表定义中包括的键组成识别的每个相关报头字段的可配置键列。每个流表也要包括存 储转发判定的一个或更多动作列的集合。流表管理模块也可操作以接收数据以填充流表的 可配置键列和动作列,以及根据接收的数据填充流表。所述网络装置也包括分组处理模块。 分组处理模块可操作以从通过网络装置的网络接口接收的对于分组的转发判定来进行选 择。此选择根据用于在多个流表之间进行选择的可配置逻辑、流表和可配置逻辑要求的相 关报头字段的那些报头中每个分组的值来进行,以便为该分组选择流表之一以及为该分组 从选择的流表来选择条目。

附图说明

[0011] 通过参照下面的描述和用于示出本发明实施例的附图,可最好地理解本发明。在 图中:

[0012] 图1示出根据本发明的一个实施例的示范灵活及可扩展流处理系统;

[0013] 图2示出根据本发明的一个实施例的在解析模块内的处理配置的表示;

[0014] 图3示出根据本发明的一个实施例的在软件定义的网络中充当控制器的网络元件 中方法的流程图;

[0015] 图4示出根据本发明的一个实施例的在软件定义的网络中充当转发元件的网络元 件中方法的流程图;

[0016] 图5示出根据本发明的一个实施例的在软件定义的网络中充当用于做出转发判定 的转发元件的网络元件中方法的流程图;

[0017] 图6示出根据本发明的一个实施例的在软件定义的网络中充当用于识别流表条目 的转发元件的网络元件中方法的流程图;

[0018] 图7示出根据本发明的一个实施例的解析过程和键生成的表示;

[0019] 图8示出根据本发明的一个实施例的示范灵活及可扩展流处理系统;以及

[0020] 图9示出根据本发明的一个实施例的在灵活及可扩展流处理系统中使用的处理配 置的示范表示。

具体实施方式

[0021] 在下面的描述中,陈述了许多特定细节。然而,要理解的是,实践本发明的实施例 可无需这些特定细节。在其它情况下,公知的电路、结构和技术未详细显示以免混淆对此描 述的理解。通过包括的描述,本领域技术人员将能够在不进行不当实验的情况下实现适当 的功能性。

[0022] 说明书中对"一个实施例"、"一实施例"、"示例实施例"等的引用指所述实施例可 包括特定特征、结构或特性,但每个实施例可不一定包括特定特征、结构或特性。另外,此类 词语不一定指相同实施例。此外,在结合实某个施例描述某个特定特征、结构或特性时,认 为结合无论是否明确描述的其它实施例来实现此类特征、结构或特性是在本领域技术人员 的认知之内。

[0023] 为便于理解,虚线和/或加括号文本在图中用于表示某些项目的可选性质(例如, 本发明的给定实现不支持的特征;给定实现支持但在一些情况下使用并且在其它情况下不 使用的特征)。

[0024] 在下面的描述和权利要求中,可使用术语"親合"和"连接"及其衍生词。应理解,这 些术语无意作为彼此的同义词。"耦合"用于指示可相互直接物理或电接触或不直接物理或 电接触的两个或更多元件相互协作或交互。"连接"用于指示在相互耦合的两个或更多元件 之间通信的建立。

[0025] 在本文中使用时,网络元件(例如,路由器、交换器、桥接器)是一件连网设备,包括 硬件和软件,其在通信上与网络上的其它设备(例如,其它网络元件、计算机终端站)互连。 一些网络元件是"多服务网络元件",其为多个连网功能(例如,路由选择、桥接、交换、第2层 聚合、会话边界控制、服务质量和/或订户管理)提供支持和/或为多个应用服务(例如,数 据、话音和视频)提供支持。订户终端站(例如,服务器、工作站、膝上型计算机、上网本、掌上 型计算机、移动电话、智能电话、多媒体电话、因特网协议话音(V0IP)电话、用户设备、终端 便携式媒体播放器、GPS单元、游戏系统、机顶盒(STB))访问通过因特网提供的内容/服务 和/或在因特网上重叠(例如,隧道化通过)的虚拟专用网(VPN)上提供的内容/服务。内容 和/或服务一般由属于参与对等服务的服务或内容提供商或终端站的一个或更多终端站 (例如,服务器终端站)提供,并且可例如包括公共网页(例如,免费内容、店面、搜索服务)、 私人网页(例如,提供电子邮件服务的用户名/密码访问网页)和/或通过VPN的企业网络等。 一般情况下,订户终端站耦合(例如,通过耦合到接入网络(以有线或无线方式)的客户场所 设备)到边缘网络元件,所述边缘网络元件耦合(例如通过到其它边缘网络元件的一个或更 多核心网络元件)到其它终端站(例如,服务器终端站)。

[0026] 传统上,网络元件能够是将控制平面和数据平面(有时称为转发平面或媒体平面) 两者集成到相同网络元件中的多功能网络元件。如果网络元件是路由器(或者在实现路由 功能性),则控制平面一般确定要如何路由数据(例如,分组)(例如,用于数据的下一跳和用 于该数据的输出端口),以及数据平面负责转发该数据。例如,控制平面一般包括一个或更 多路由协议(例如,边界网关协议(BGP)、内部网关协议(IGP)(开放式最短路径优先(0SPF)、 路由信息协议(RIP)、中间系统到中间系统(IS-IS))、标签分布协议(LDP)、资源保留协议 (RSVP)),这些协议与其它网络元件进行通信以交换路由,并基于一个或更多路由选择度量 选择那些路由。备选的是,网络元件可只实现数据平面(转发平面)或只实现所有或部分控 制平面。职责的此分离在拆分式架构网络模型中是常见的。术语"拆分式架构网络"很大程 度上与术语"软件定义的网络"(SDN)同义,并且这些术语在本文中可交换使用。

[0027] 路由和邻接存储在控制平面上的一个或更多路由选择结构中(例如,路由信息库 (RIB)、标签信息库(LIB)、一个或更多邻接结构)。控制平面通过基于路由选择结构的信息 (例如,邻接和路由信息)为数据平面编程。例如,控制平面将邻接和路由信息编程到数据平 面上的一个或更多转发结构(例如,转发信息库(FIB)、标签转发信息库(LFIB)和一个或更 多邻接结构)中。在转发业务时,数据平面使用这些转发和邻接结构。

[0028] 基于某个路由度量(度量能够对不同的路由选择协议不同),每个路由选择协议将 路由条目下载到主RIB。每个路由选择协议能够在本地RIB (例如,0SPF本地RIB)中存储路由 条目,包括未下载到主RIB中的路由条目。管理主RIB的RIB模块从通过路由选择协议下载的 路由中选择路由(基于度量集合),并且将那些选择的路由(有时称为活动路由条目)下载到 数据平面。RIB模块也能够促使路由在路由选择协议之间再次分布。

[0029]多功能网络元件能够包括一个或更多线路卡的集合、一个或更多控制卡的集合和 可选的一个或更多服务卡(有时称为资源卡)的集合。这些卡通过一个或更多机制耦合在一 起(例如,耦合线路卡的第一全网状和耦合所有卡的第二全网状)。线路卡的集合构成数据 平面,而控制卡的集合提供控制平面并且通过线路卡与外部网络元件交换分组。服务卡的 集合能够提供专业化处理(例如,第4层到第7层服务(例如,防火墙、IPsec、IDS、P2P)、Vo IP 会话边界控制器、移动无线网关(GGSN、演进分组系统(EPS)网关))。

[0030] 不同于单片网络架构(单片网络架构要求复杂的网络管理功能分布在整个网络的 多功能网络元件的控制平面中,并且还要求集成到相同多功能网络元件中的复杂数据和控 制平面),基于流的软件定义的网络允许分离网络的数据平面和控制平面。数据平面能够实 现为分布在整个网络的简单的离散流交换器(转发元件),并且提供网络的智能的控制平面 在监视流交换器的集中式流控制器中实现。通过分开控制功能和数据转发功能,软件定义 的连网减轻了修改网络控制逻辑的任务,并且提供程序接口,开发人员能够在接口上构建 广泛的多种新路由选择和协议管理应用。这允许数据和控制平面独立演进和缩放,同时降 低了用于数据平面网络组件所必需的管理。

[0031] 在软件定义的网络的一个实施例中,控制平面通过在转发元件与控制器之间安 全、可靠的传输连接,通过控制平面信令协议控制转发平面。控制器一般包括提供基本处 理、I/O和连网性能的操作系统。中间件层提供软件定义的网络控制器的上下文到操作系 统,并且使用控制平面信令协议与各种转发平面元件进行通信。中间件层上的应用层提供 各种网络操作所要求的智能,如协议、网络情况意识和用户接口。在更抽象的级别,应用层 通过网络的逻辑视图进行工作,并且中间件层提供从逻辑视图到物理视图的转换。

[0032] 在软件定义的网络范例的一实施例中,每个转发元件是流交换使能的网络装置。 流交换使能的网络装置基于每个分组所属的流来转发分组,而不是基于一般在当前常规分 组交换IP网络中使用的分组内的目的地IP地址转发分组。流可定义为其报头匹配比特的给 定模式的分组集合。在此方面,传统IP转发也是基于流的转发,其中,流仅通过目的地IP地 址定义。但是,一般流定义允许考虑分组报头中的许多字段(例如,10个或更多),而不是只 考虑目的地IP地址或源IP地址。

[0033] 控制平面基于用于每个流的网络层计算和中间件层映射,将相关消息传送到转发 元件。转发元件处理这些消息,并且在其流表中将适当的流信息和对应动作编程。转发元件 将分组映射到流,并且基于这些流表转发分组。当然,流表可以多种数据结构实现,如映射、 列表、阵列、表、关系数据库等。此外,这些表内列和行的讨论是任意的;虽然一个实现可选 择在行中放置条目,但修改数据结构以在列中放置条目并不重要。另外,转发元件可需要具 有用于诸如DPI、NetFlow数据收集、0ΑΜ等此类导入操作的数据处理和数据生成能力。

[0034] 用于流处理的标准定义用于在控制与转发平面之间传输消息的协议,并且描述用 于分组的处理的模型。在流处理装置中用于处理分组的此模型包括报头解析、分组分类和 做出转发判定。

[0035] 报头解析描述如何基于协议的已知集合来解释分组(例如,以太网、虚拟局域网 (VLAN)、多协议标签交换(MPLS)、IPv4等)。报头的一些层包含包括有关如何将下一报头去 复用的信息的字段。例如,以太网报头包括描述下一层中报头的类型的字段。一些协议字段 用于构建将在分组分类中使用的匹配结构(或键)。例如,第一键字段能够是源媒体接入控 制(MAC)地址,并且第二键字段能够是目的地MAC地址。

[0036] 分组分类涉及在存储器中执行查找以通过基于匹配结构或键确定在转发表中对 应于此分组的最佳匹配流,将分组分类。可能许多流能够对应于分组;在此情况下,系统一 般配置成根据定义的方案从许多流中确定一个流。另外,表中的流条目能够定义如何匹配 分组和条目。存在几个匹配准则,如"完全"(键中的值要完全匹配表中的值)、"通配符"(键 中的值能够是任何值)、"最长前缀匹配"(通常用于匹配IP地址和路由条目)、"比特掩码" (键中仅一些比特用于匹配)和"范围"(键中的值需要在值的定义的有限范围中)。

[0037] 通过执行使用分组的动作。基于分组分类的前一步骤中识别的流条目,做出转发 判定并且执行动作。表中的每个流与要为每个对应分组执行的动作集合相关联。例如,动作 可以是将报头推送到分组上,使用特定端口转发分组,或者简单地丢弃分组。因此,用于带 有特定传送控制协议(TCP)目的地端口的IPv4分组的流条目能够包含指定应丢弃这些分组 的动作。

[0038] 如何实现解析、分类和动作的执行的描述一般在规范文档中记录。实现此规范文 档的节点能够相互进行交互操作。

[0039] 本发明的一实施例的一个方面描述用于描述解析、匹配和动作的新颖抽象。在将 用于表示转发元件分组处理的高端语言中,将显露这些抽象。不同于典型的软件定义的网 络,这些抽象将用于将在运行时并且不只是在配置时的转发元件编程。

[0040] 本发明的一实施例的另一方面将典型的分组解析和分组分类阶段联系在一起,通 过灵活解析由抽象的表示提供的任何类型的分组以生成用于流的分类的匹配键,允许转发 元件为协议不可知论。此类型的解析和分类提供了表述此类关系的更简单方式。

[0041] 本发明的一实施例的另外方面包括基于使用定义的抽象的处理的定义,提供用于 转发元件的实现。高端语言中指定的处理定义可变换成要在分组处理的解析和动作阶段中 均使用的中间代码表示。具有简单的中间代码表示允许相异转发元件使用相同处理模型代 码,并且由此进一步降低用于管理带有变化的配置和能力的转发元件的控制器内要求的复 杂性。

[0042] 本发明的实施例的各方面显示了未硬性固定到正式规范中或者未在低级别硬件 实现细节内的修改转发元件的行为的灵活方式。因此,容易快速适应模型以支持新协议或 者提供定制的分组处理方案。

[0043] 概述

[0044] 图1示出根据本发明的一个实施例的示范灵活及可扩展流处理系统。在此图形中, 处理配置102的一些或所有部分的表示由控制器110和转发元件120A利用。虽然此图示隐藏 了一个或更多相异转发元件120B-120N的内部工作,但是所示转发元件120A主要表示其特 性,除非另有指明。

[0045] 为了本公开的目的,可在某些情况中使用术语"转发元件" 120A和"相异转发元件" 120B-120N。除非另有指明或周围语言表明,否则有关转发元件120A描述的任何细节同样适 用于相异转发元件120B-120N,并且有关相异转发元件120B-120N的细节类似地适用于转发 元件120A。

[0046] 处理配置102包括用于指定要由转发元件120A实现的转发处理模型的三个主要抽 象。一个抽象是包括协议报头的相关报头字段的协议的可配置定义104。这些可配置定义 104指定将由网络内的转发元件120A和其它相异转发元件120B-120N解析的协议报头的类 型。因此,可配置定义104包括一个或更多分组协议报头定义的集合,其中,每个协议报头定 义包括报头名称,并且根据协议规范,根据报头内的一个或更多报头字段定义。这些报头字 段指示报头内每个定义的字段的位置和数据类型。在本发明的一实施例中,数据类型只是 一般字段,并且此字段的长度附加到协议报头定义。另外,在本发明的一实施例中,用于报 头的可配置定义104可不定义报头内的每个可能报头字段。在此类实施例中,报头定义包括 报头长度,它是用于基于报头的一个或更多报头字段内的值,计算报头的总长度的数学表 达式。例如,用于IPv4报头的以字节为单位的报头长度可定义为等于来自报头内"hlen"字 段的值乘以数字4。在此示例中,假设"hlen"字段内的值为5,则报头长度将计算为5*4个字 节或20个字节。

[0047] 处理配置102中的第二抽象是包括键组成的可配置流表定义108,它利用161协议 的可配置定义104的方面,包括协议报头的相关报头字段。可配置流表定义108用于定义在 分组分类中要使用的流表数量140A-140N及要用于匹配的每个表中可配置键列176的类型、 大小和数量。另外,可配置流表定义108的表示也用于创建在转发元件120A内使用的键生成 逻辑158,该逻辑指定如何使用分组的解析的协议报头字段生成键。此键生成逻辑158可在 此类系统内的各种位置创建,如由控制器110上的编译器114或甚至在单独转发元件(例如, 120A)上基于解析器配置包117创建。

[0048] 包括键组成的可配置流表定义108包括用于在转发元件120A中要使用的每个流表 140A-140N的表定义指令。每个表定义包括独特的表标识符(ID)以对应于特定流表(例如, 140A)和一个或更多字段语句(statement)的集合。每个字段语句包括识别键内键字段的相 对位置(和/或流表140A内可配置键列176之一的相对位置)、指示如何比较键字段和可配置 键列以确定它们是否匹配的匹配类型及指示哪些解析的协议报头字段要用作键字段及指 示表内可配置键列176的一个对应列的类型和大小的一个或更多键字段。匹配类型指定在 比较键字段和可配置键列时要使用的一个或更多匹配算法。例如,匹配算法可以是完全匹 配、最长前缀匹配、掩码或范围。用于字段语句的一个或更多键字段指示哪个解析的报头字 段将用于生成键的对应键字段部分。

[0049] 如果一个键字段完全定义用于某个字段语句,则在生成对应于该字段语句的键的 部分时,使用该键字段。然而,在本发明的一实施例中,可为某个字段语句声明多于一个键 字段。此配置允许使用键组成变体。键组成变体指定基于特定分组内存在的报头构建键的 不同方式。因此,在解析两个不同分组时,来自每个分组的不同报头字段可用于为在表定义 指令的表1D指示的流表内的匹配生成键。

[0050] 例如,考虑表定义包括带有字段ID"6"的字段语句和取决于分组中传输层(L4)报 头的两个键段可能性的情形。如果解析的分组包含TCP报头,则要在生成键内第6个字段中 使用TCP报头字段。然而,如果分组转而包含用户数据报协议(UDP)报头,则将在生成键第6 个字段中使用UDP报头字段。在此情形中,一个键组成变体包括TCP报头字段,并且一个键组 成变体包括UDP报头字段。无论哪个键组成变体用于构建键,相同流表和可配置键列将用于 匹配。

[0051] 包括键组成的可配置流表定义108的逻辑图示在图1中表示为表。对于每个表定义 (由表1D表示),可能有一个键组成(例如,表1D 1,键组成1),或者在本发明的一些实施例 中,可能有多于一个键组成或多个键组成变体(例如,表1D 2,键组成2和2')。

[0052] 处理配置102中的第三抽象是用于在流表之间进行选择的可配置逻辑106,它利用 160协议的可配置定义104的方面,包括协议报头的相关报头字段。在本发明的一实施例中, 此可配置逻辑106也在用于选择的流表的键组成变体之间进行选择。用于在流表之间进行 选择的可配置逻辑106定义在要解析的协议报头之间的关系和顺序。这些关系可在逻辑上 表示为某种类型的解析树,解析树如果具体化,则将示出要根据定义的处理配置102解析和 分类的可能分组(即,协议报头排序)。除定义在协议报头之间的关系外,用于在流表之间选 择的可配置逻辑106也基于分组中协议报头的顺序,定义哪个流表140A-140N要用于分组分 类。因此,不同解析路径可促使不同表被选择用于分类。例如,一个解析路径162可促使选择 与其它解析路径163或164不同的表1D。在一实施例中,这些解析路径也确定在构建用于选 择的流表的键时应使用哪个键组成变体。

[0053]用于在流表之间进行选择的可配置逻辑106定义协议报头排序关系,并且使用栈 指令确定用于分类的表。每个栈指令对应于分组协议报头,并且包括报头名称、键字段和一 个或更多规则的集合,每个规则包括键值和下一报头名称。键字段是在检查的分组报头内 的报头字段之一,该字段要与规则的键值进行比较,以便尝试确定要解析的下一报头。在键 字段匹配规则的键值时,解析使用具有对应于匹配的规则指示的下一报头名称的报头名称 的栈指令,要通过后一分组报头继续。在键字段未能匹配规则的键值时,根据栈指令指示的 表1D,为分组分类选择流表。如果栈指令未指示表1D,则用于在流表之间进行选择的可配置 逻辑106可指示要采取纠正动作(例如,丢弃分组,将分组传送到控制器等)。

[0054] 处理配置102的表示150以处理定义112的形式创建。控制器110可从远程用户或装 置接收处理定义112,或者它可创建处理定义112。在图1所示实施例中,控制器110包括接收 处理定义112的定义接收模块111。处理定义112提供151到转换器113以产生流表配置信息 115A,流表配置信息115A提供154到流表填充模块118并由其用于为流表140A-140N填充流 表条目。另外,转换器113提供处理定义112到编译器114,编译器114可产生152解析器代码 116。此解析器代码116和可选某个版本的流表配置信息115B构成解析器配置包117。

[0055] 转换器113的用途在一定程度上是将处理定义112转换成能够由相异转发元件 120A-120N用于处理分组的解析器配置包117。因此,通过使用其编译器114,通过从处理定 义112提供的正式抽象(即,某种类型的语法)生成解析器代码116形式的用于分组解析器的 代码,转换器113充当解析器生成器(即,编译器-编译器或编译器生成器)。解析器代码116 也可由转发元件(例如,120A)用于在分组上执行动作。因此,解析器代码116作为解析器配 置包117的一部分,包含协议的可配置定义104、用于在流表之间进行选择的可配置逻辑106 及来自处理配置102的可配置流表定义108的表示153。在一实施例中,解析器代码116是使 用小的指令集(例如,负载、存储、添加、转移、比较等)指定的中间级代码和在执行与分组有 关的动作时要用作临时数据存储装置的虚拟寄存器的定义集合。

[0056] 在分组处理的解析语法中使用的解析器代码116的部分可在逻辑上表示为有向 图。此类有向图中的每个节点表示一个协议报头,并且有向边缘表示基于报头的字段内的 值采用的路径。此类有向图的示例在图7中示出,其示出根据解析阶段700可操作以解析 UDP、TCP和MPLS分组的本发明的一个实施例的解析阶段700和键生成阶段701的表示。在解 析以太网702的第一协议报头以识别其字段时,基于以太网报头702的eth er_type字段的 值,做出转移判定。如果ether_type字段值为0x8847,则要解析的下一报头是MPLS报头704。 在一实施例中,基于MPLS报头704内的bos (栈底部)字段的值,做出转移判定。虽然bos字段 值为〇,但解析将通过也是MPLS报头704的下一报头继续。bos字段值为0时,解析阶段700结 束,并且键生成701开始。在另一实施例中,有关到达MPLS报头704的转移判定取决于bos字 段值和key_i s_matchab 1 e字段值,这表示在分组内可存在更多MPLS分组704的事件,但进一 步的检查是不必要的,因为用于分组分类的期望键可能已经被生成。因此,在key_is_ matchable字段值或bos字段值不为0时,解析阶段700结束,并且键生成701开始。类似地,如 果以太网报头702的ether_type字段值为0x8100 (而不是0x8847),则分组的下一报头将被 解析为IPv4报头708。此时,检查IPv4报头708的协议字段值:如果它是0x11,则解析将通过 作为UDP报头710的下一报头继续,并且如果它是0x06,则解析将通过作为TCP报头712的下 一报头继续。随后将解析UDP 710或TCP 712报头以识别其字段,并且解析阶段700结束,以 及键生成701开始。

[0057] 回到图1,解析器配置包117内的解析器代码116也包含用于在相异转发元件120B-120N内分组处理的动作执行阶段期间在分组上执行动作的指令。在转发元件120A中插入或 修改流时,由控制器110填充这些动作。能够定义两个类别的动作-与分组的协议无关的 动作和取决于分组的协议的动作。与协议无关的动作的示例包括将分组输出到端口,设置 用于分组的队列或者丢弃分组。另外,独立动作可包括将分组发送回解析器,这一般在它已 通过动作修改后进行。

[0058] 此外,通过利用包括处理配置102内协议报头的相关报头字段并且在处理定义112 内表示的协议的可配置定义104,可在分组上执行的协议相关动作。这通过分组处理技术的 协议特定定制提供了增大的灵活性,其中,可以精细粒度的方式修改具有某些协议报头的 分组。例如,协议相关动作可定义成将另外的报头推送到分组上或者从分组弹出报头。此 外,协议相关动作可能简单或复杂的方式更改某些分组报头内的字段。例如,可通过增大或 减小存活时间(TTL)字段(通常在IPv4报头中存在的字段),可以数字方式修改字段,或者基 于字段中的原值,可将目的地地址值替换成完全不同的值。另外,在此类修改后,动作可计 算用于报头或分组的新校验和。

[0059] 此配置允许通过支持在分组内有解析环或递归时执行的精细粒度动作,如在分组 中有多个相同类型的报头(例如,MPLS等)或者有封装或隧道化的业务(例如,以太网-MPLS-MPLS-以太网等)时,进一步控制分组处理。在此类情况下,动作可以是充分智能型以修改, 弹出或推送分组内的目标报头。随后可触发独立动作以将分组重新发回以做进一步解析。 当然,由于解析器代码116的性质,要在特定协议栈上执行的这些定制动作是可能的,因为 转发元件120A本身不知道应该如何在分组中布置报头,而只是遵循解析器代码116定义的 过程。例如,转发元件120A无需基本上设计成知道L3报头(例如,因特网协议(IP)、IPSec、网 间分组交换(IPX)等)应该在L2报头(例如,地址解析协议(ARP)、异步传送模式(ATM)、点对 点协议(PPP)等)后出现,而是只需要盲目依赖解析器代码116通过分组的报头移动。

[0060] 除创建解析器代码116外,转换器113也生成包括可配置流表定义108的表示的流 表配置115A信息,可配置流表定义包括键组成。某个版本115B的流表配置115A可包括在分 布172到转发元件120A-120N的解析器配置包117内。在由转发元件(例如,120A)接收解析器 配置包117时,配置模块121随后可利用流表配置115B传送信息167到流表管理模块126,引 导它创建或修改流表140A-140N。例如,配置模块121使用流表配置115A以便指示167流表管 理模块126有关多少流表140A-140N是必需的、每个表的键组成(要如何构成用于每个表的 键列144A-144N)及要如何构成流表140A-140N中的条目179A-179N。另外,转换器113创建的 流表配置115A提供154到流表填充模块118,流表填充模块通过将数据发送173到流表管理 模块126,使用包括键组成的可配置流表定义108的其表示以便在相异转发元件120A-120N 的流表140A-140N中正确填充流表条目179A-179N。

[0061] 因此,控制器110 (经流表填充模块118)与转发元件120A交互173以保持必需的流 表140A-140N的条目179A-179N。控制器110也经配置模块121与转发元件120A交互167以创 建或修改流表140A-140N。因此,流表140A-140N的所有此类配置和管理通过流表管理模块 126进行。

[0062] 每个流表包括可配置键列176和动作列178。配置键列176实现键组成,并且包括一 个或更多键列144A-144N,由此允许通过匹配键的部分和键列144A- 144N而进行分组分类。 如图1所示,这些可配置键列176可包括字面值(例如,80、23、10、192等)或通配符值(例 如,'*')。动作列178包括在分组被分类为属于该对应流时要执行的用于每个流条目的一个 或更多动作146A-146N。如图1所示,这些动作列178可包括广泛的多个动作,其中一些动作 由此一般地示为丢弃、输出、弹出和重新解析。在本发明的一实施例中,这些列包含动作ID 以识别位于别处的动作码,并且可包括在执行动作时要使用的变元值。

[0063] 在一实施例中,流表也包括一个或更多流选择列177。一个可能列是流ID列141,该 列指派独特的标识符到每个流条目以便于在转发元件120A内的模块之间和在转发元件 120A与控制器110之间的通信。例如,控制器110要修改流表140A中的一个或更多动作146A-146N时,它可轻松地传送流ID值141以快速识别要修改的条目。另一可能列是优先权值列 142,该列包括在分组的键匹配流表140A的多于一个条目时允许流优先处理的值。这一般在 通配符值在可配置键列176内时发生。例如,给定图1中所示情形时,具有对应于键列144A的 "80"的值和对应于键列144N的"192"的值的分组键可能可匹配流表140A中的两个流条目-第一所示条目179A和最后所示条目179D。假设两个条目均匹配键,并且假设用于第一条目 179A和最后条目179D的其它可配置键列(例如,144B)相同,则用于每个条目的优先权值142 用于确定将分组分类到哪个流。在第一流条目179A具有"Γ的优先权值142,并且最后条目 179D具有"7"的优先权值时,本发明的一个实施例可将带有最小优先权值的记录视为确定 项,并且因此分组将被分类为属于第一流表条目179A。备选的是,在将带有最大优先权值的 记录视为确定项的另一实施例中,分组将被分类为属于最后流条目179D。此配置要求控制 器110以此类方式维护流表140A-140N,以便防止发生优先权平局发生。这可以多种方式进 行,如为每个条目179A-179N指派不同优先权值142,或者只指派相同优先权值到互斥的条 目,意味着不可能发生带有共有优先权值142的两个条目可能匹配一个键。在其它实施例 中,如果发生优先权值142平局,则进行另外的平局打破过程,如选择表中更高的条目或者 带有最长前缀匹配或最精确匹配的条目(即,在可配置键列176内具有最少通配符的条目)。

[0064] 表1示出根据本发明的一个实施例的流表的示例。表包括两个键列,一个用于第一 MPLS标签,一个用于第二MPLS标签。该列也包括流选择列:存储用于表中每个条目的独特标 识符的流ID列141和存储用于条目选择的优先权值的优先权列。表还包括一个动作列,该列 存储在带有匹配两个键列的键并且由此被分类为属于特定流的分组上要执行的动作。

[0065] 表 1

[0066]

Figure CN103999430BD00151

[0067] 假设分组的解析选择如表1所示的流表,并且生成包含"2"作为第一 MPLS标签(即, MPLS标签0)和"2"作为第二MPLS标签(即,MPLS标签1)的键,则键将匹配由流ID"Γ及流ID "3"识别的流表的条目。在带有最低优先权值的匹配的条目表示流成员关系的一实施例中, 分组将被分类到流ID"3",因为其优先权值"Γ比流ID"1"的优先权值"5"更低,并且因此可 执行动作指示分组将被丢弃。在带有最高优先权值的条目表示流成员关系的一实施例中, 分组被分类在流ID "Γ下,并且其可执行动作指示分组将被输出。备选的是,在最早流表条 目表示流成员关系的一实施例中,分组将被立即分类为属于流ID"1",因为分组的键匹配键 列。在使用此"最早流表条目"配置的一实施例中,优先权值是不必要的,因为在该算法中固 有的是:在检测到带有匹配键的键列的第一条目时,自动将第一条目识别为匹配。

[0068] 回到图1,在解析器配置包117由转换器113产生后,解析器配置包117被发送148到 控制器110内的分布模块119,分布模块119又将解析器配置包117传送172到软件定义的网 络中的转发元件120A-120N。由于转发元件120A-120N在可用于存储和执行计算机代码的资 源方面可不同,因此,描述解析器配置包117的解析器代码116的特定能力由分布模块119传 递到每个转发元件120A-120N。例如,诸如解析器代码116的大小和解码器代码116要求的虚 拟寄存器的数量等特定能力可被传递,并且每个转发元件随后可根据可用于它的资源实现 这些能力。因此,控制器110能够将理解解析器配置包117的任何转发元件编程,而无需知道 转发元件的内部组件或如何为特定转发元件生成本机代码。

[0069] 转发元件(例如,120A)内的配置模块121接收分布模块119发送的解析器配置包 117。配置模块121将解码器代码116的表示从解码器配置包117分布到分组处理模块122的 段,分组处理模块122包含用于转发元件120A的主分组处理管道。例如,解析模块123接收解 码器代码116的表示174,从而使得它能够解析分组以选择流表和生成用于分组分类的键, 这些被发送166到匹配和动作模块124以便进行另外的分组处理。另外,为执行与分组有关 的动作,匹配和动作模块124依赖从配置模块121发送的解析器代码116的表示175。另外,配 置模块123也使用来自解析器配置包117的信息(如流表配置115B或解析器代码116)指示 167流表管理模块126创建必需的流表140A-140N。

[0070]图2示出处理配置102的表示可如何在包括判定模块202和键生成模块204的解析 模块123的一个实施例中使用。在接收分组170时,判定模炔基于用于在流表之间进行选择 的可配置逻辑106和由可编程逻辑106识别的分组的协议报头字段的值的表示157,选择流 表之一(例如,140A)。判定模块202将选择的流表140A标识符发送203到键生成模块204。在 本发明的一实施例中,判定模块202也选择在生成键时用于要使用的选择的流表140A的键 组成,并且将键组成变体与表标识符一起发送203到键生成模块204。

[0071] 键生成模块204根据包括键组成的可配置流表定义108,使用键生成逻辑的表示 158生成键。此键生成是基于选择的流表140A的键组成和由键组成识别的分组的协议报头 字段的值。键生成模块204将此键与选择的流表140A标识符一起发送166到匹配和动作模块 124以继续分组处理。

[0072] 解析模块123的操作方面在图7中进一步示出。如上所述,全长来自解析器配置包 117的解析器代码116解析700分组,以识别分组的协议报头字段和选择用于分类的流表。在 图2所示实施例中,判定模块202执行包括分组处理的解析阶段700的此识别和选择。接着, 在键生成阶段701中,根据选择的表的键组成构成键。例如,在解析路径将分组识别为包含 至少一个MPLS报头704时,将选择表"0",并且使用其键组成714基于在解析分组时识别的 MPLS标签生成键。在将分组识别为包括IPv4报头的另一示例中,将选择表"Γ,并且将使用 其键组成变体716之一以使用来自以太网、IPv4的字段和分组的UDP或TCP报头,生成键。在 本发明的一实施例中,根据上面在解析700阶段识别的报头,将使用不同键组成变体。如果 分组包含UDP报头710,则使用包括UDP dst_port和src_port字段的第一键组成变体717A。 备选的是,如果分组包含TCP报头712,则使用包括TCP dst_port和src_port字段的第二键 组成变体717B。在图2所示实施例中,键生成模块204执行此键生成701阶段。

[0073] 回到图1,在选择用于在流表之间进行选择的可配置逻辑106的表示以解析分组的 同时,一实施例中的解析模块123识别用于它检查的分组的每个识别的报头的每个定义的 字段。这些字段的值(或到这些字段或分组的位置的指针)存留在转发元件120A内的分组上 下文存储区域中,这允许分组管道中的每个模块在分组的处理期间快速访问此信息。以后 在分组处理管道中在匹配和动作模块可需要使用分组执行要求知道分组的报头布局的动 作(例如,弹出报头,编辑报头内的字段等)时,这特别有用。

[0074] 匹配和动作模块124接收和使用选择的流表标识符和键,以至少基于比较168键和 在选择的流表140A的可配置键列176中填充的键,识别选择的流表140A的一个条目。在识别 流表140A的匹配条目时,将来自动作列178的值返回到匹配和动作模块124。在一个实施例 中,也为实现各种目的而将一个或更多流选择列177返回到匹配和动作模块124,如在多个 条目(例如,179A、179D和179F)匹配键时选择一个流条目。在本发明的一实施例中,在键不 匹配选择的流表140A内的任何条目时,将分组传送回控制器110。控制器110的响应可判定 使用流表填充模块118,在选择的流表140A中创建新流表条目(例如,179N)。

[0075] 通过识别的条目指定的返回的169-个或更多动作146A-146N,匹配和动作模块 124在分组上执行动作。如上所述,可执行多种类型的协议独立和相关动作,这些动作能够 使分组被转发,丢弃,修改或重新解析。另外,键(或其部分)可发送到另一流表(例如,140B) 以尝试匹配该流表中的流条目。

[0076]利用系统的一种方式在图1中示出,图1使用加圆数字指示用于读取示出的项目的 顺序以便于理解本发明。在加圆数字1中,由流表管理模块126根据解析器配置包117内的每 个可配置流表定义108,通过根据从配置模块121接收的数据,定义由用于每个流表167的键 组成指定的一个或更多可配置键列176,创建流表140A-140N。在这些表已定义时,如加圆数 字2所示,由流表管理模块126根据来自控制器110的接收的数据173,将一个或更多流表条 目179A-179N填充到流表140A-140N的一个或更多流表中。在这些任务完成时,如加圆数字3 所示,转发元件120A接收分组170,分组随后进入解析模块123。如加圆数字4所示,解析模块 123利用来自解析器配置包117的解析器代码116,基于由可配置逻辑106识别的分组的协议 报头字段选择流表之一(例如,140A),并且基于来自可配置流表定义108的选择的流表140A 的组成和由可配置逻辑106识别的分组的协议报头字段的值,生成键;解析器配置包117包 括用于在流表之间进行选择的可配置逻辑106和包括键组成的可配置流表定义108的表示。 在加圆数字5中,选择的表1D和键由匹配和动作模块124用于至少基于比较键和在选择的流 表140A中填充的键,识别选择的流表140A的一个条目(例如,179A)。在加圆数字6中,由识别 的条目179A指定的一个或更多动作从流表140A被返回到匹配和动作模块124,并且被执行。 如果动作要求转发分组,则在加有虚线圆的数字7中,将要转发的分组和转发信息(例如,端 口、多播或单播等)发送171到出口模块。

[0077]图3示出根据本发明的一个实施例的在软件定义的网络中充当控制器110的网络 元件中方法的流程图。此流程图和其它流程图的操作将参照其它图形的示范实施例进行描 述。然而,应理解,流程图的操作能够通过与参照这些其它图形所述的那些实施例不同的本 发明的实施例执行,并且参照图这些其它图形所述的本发明的实施例能够执行与参照流程 图所述的那些实施例不同的操作。

[0078] 在图3所示实施例中,控制器110先接收302处理定义112,其中,处理定义112包括 以下项的表示:包括协议报头的相关报头字段的协议的可配置定义104;基于第一多个相关 报头字段、包括键组成的可配置流表定义108,其中,用于每个流表定义的键组成识别为该 流表定义选择的一个或更多相关报头字段的集合;以及用于基于第二多个相关报头字段, 在可配置流表定义106所定义的多个流表之间进行选择的可配置逻辑。在一实施例中,用于 在流表之间进行选择的可配置逻辑106也在用于选择的流表的键组成变体之间进行选择。 [0079] 控制器110随后转换304处理定义112以创建解析器配置包117,其中,解析器配置 包117包括可配置流表定义108和用于在流表之间进行选择的可配置逻辑106的第二表示。 在一实施例中,可配置逻辑的包括的表示是用于在流表之间进行选择,并且也用于在用于 选择的流表的键组成变体之间进行选择。在一个实施例中,解析器配置包117也包括基于可 配置流表定义108的键生成逻辑的表示158。

[0080] 通过编译的解析器代码116和可选的流表配置信息115B,控制器110将解析器配置 包117分布到多个转发元件120A-120N以促使每个转发元件:1)基于每个可配置流表定义 108创建流表(例如,140A),其中,每个流表140A-140N包括对于每个相关报头字段的可配置 键列176,相关报头字段由该流表所基于的流表定义中包括的键组成167识别,以及其中,流 表140A-140N的每个也包括一个或更多动作列178以存储转发判定;以及2)安装键生成逻辑 158。在本发明的一实施例中,解析器配置包117到多个转发元件120A-120N的分布可进一步 促使每个转发元件创建、更新或删除流表,而不是如上所述只创建流表。

[0081] 在流表140A-140N已配置,并且键生成逻辑158已安装时,控制器110传送308数据 以填充在所述多个转发元件120A-120N的每个转发元件内创建的流表140A-140N的可配置 键列176和动作列178,其中,用于每个流表140A-140N的可配置键列176的数据是区分该流 表的条目179A-179N的键。

[0082] 在本发明的一实施例中,控制器110可接收310处理定义112的更新。通过此更新, 控制器110转换更新的处理定义304以创建更新的解析器配置包117,该配置包117随后分布 306到转发元件120A-120N。由于流表140A-140N已经在所述多个转发元件120A-120N内存 在,因此,解析器配置包117的分布306可促使一个或更多转发元件120A-120N创建、更新或 删除流表140A-140N以及安装键生成逻辑158。

[0083]图4示出根据本发明的一个实施例的在软件定义的网络中充当转发元件(例如, 120A)的网络元件中方法的流程图。此图至少示出用于动态配置和更新转发元件120A以便 在分组处理中使用的步骤。

[0084] 转发元件120A通过与软件定义的网络内控制器装置的网络连接,接收402以下项 的表示:基于协议报头的第一多个相关报头字段、包括键组成的可配置流表定义108,其中, 用于每个流表定义的键组成识别为该流表定义选择的一个或更多相关报头字段的集合;以 及用于基于协议报头的第二多个相关报头字段,在流表之间进行选择的可配置逻辑106。在 一实施例中,可配置逻辑106也在用于选择的流表的键组成变体之间进行选择。

[0085] 通过该表示,转发元件120A也将基于每个可配置流表定义108创建404流表140A- 140N,其中,每个流表140A-140N包括对于每个相关报头字段的可配置键列176,相关报头字 段由该流表所基于的流表定义中包括的键组成识别,其中,每个流表也包括存储转发判定 的一个或更多动作列的集合。转发元件120A也将利用该表示安装406用于在流表之间进行 选择的可配置逻辑和安装408键生成逻辑。在一实施例中,安装的可配置逻辑106也在用于 选择的流表的键组成变体之间进行选择。

[0086] 转发元件120A因此能够接收410数据以填充流表140A-140N的条目179A-179N,其 中,每个条目包括在键列144A-144N内的键和146A-146N中一个或更多动作的集合。通过此 数据,转发元件120A根据接收的数据填充411 一个或更多流表140A-140N的一个或更多条目 179A-179N。

[0087] 在一实施例中,转发元件120A可再次436接收410数据以填充流表140A-140N的条 目179A-179N,其中,每个条目包括在键列144A-144N内的键和146A-146N中一个或更多动作 的集合。因此,转发元件120A将根据接收的数据,再次填充411 一个或更多流表140A-140N的 一个或更多条目179A-179N。

[0088] 在一实施例中,转发元件120A将接收来自控制器110的更新。此更新可以为可配置 流表定义的更新412形式和/或可配置逻辑的更新414形式。

[0089] 如果转发元件120A只接收442可配置流表定义108的更新412,则转发元件120A将 随后438根据更新412创建、更新或删除一个或更多流表140A-140N。

[0090] 如果转发元件120A只接收444可配置逻辑406的更新414,则转发元件120A将安装 用于在流表106之间进行选择的更新的可配置逻辑和安装408键生成逻辑。在一实施例中, 安装的更新的414可配置逻辑106也在用于选择的流表的键组成变体之间进行选择。

[0091] 然而,如果从控制器110接收的更新包括446可配置流表定义108的更新412和可配 置逻辑106的更新414两者,则转发元件120A将创建、更新和/或删除流表404以及安装可配 置逻辑406和键生成逻辑408。

[0092]图5示出根据本发明的一个实施例的在软件定义的网络中充当用于从转发判定进 行选择的转发元件(例如,120A)的网络元件中方法的流程图。图5示出一种方法,方法根据 用于在流表之间进行选择的可配置逻辑106、流表140A-140N和可配置逻辑106要求的相关 报头字段中每个分组的值,从通过使用一个或更多协议的网络装置的网络接口接收的对于 分组的转发判定来进行选择502,以便为该分组选择流表之一以及为该分组从选择的流表 来选择条目。转发元件120A将先接收504分组以进行解析。分组可从多个位置到达,包括转 发元件120A的网络接口或分组处理管道中的另一模块,如匹配和动作模块124。

[0093] 通过分组,转发元件120A将基于用于在流表之间进行选择的可配置逻辑106和由 可配置逻辑106进行选择所要求的第二多个相关报头字段的某些字段中分组的值,选择508 流表之一(例如,140A)。在一实施例中,可配置逻辑106也将选择用于选择的流表140A的键 组成变体。

[0094] 通过选择的流表140A和键,转发元件120A将至少基于比较选择的流表140A中填充 的键和从选择的流表的键组成识别的相关报头字段中分组的值生成的键,识别512选择的 流表140A的一个条目(例如,179A)。在一个条目179A已识别时,转发元件120A将执行514在 识别的条目179A的一个或更多动作列178的集合中指定的一个或更多动作的集合。

[0095] 在一实施例中,执行的动作178之一可要求分组由分组处理模块122重新解析516。 例如,在分组包含相同类型(例如,MPLS等)的连续报头时,在分组已通过动作之一修改时, 或者在分组的协议报头已通过另一协议封装时,可发生此情况。在此类情形中,转发元件 120A将再次选择流表之一508,识别选择的流表的一个条目512,并且执行由该条目指定的 动作514。

[0096]图6示出根据本发明的一个实施例的在软件定义的网络中充当用于识别流表条目 (例如,179A)的转发元件(例如,120A)的网络元件中方法的流程图。

[0097] 在流表(例如,140A)已被选择,并且键已为分组被生成后,转发元件120A将通过利 用对于填充的键内存在的通配符值的通配符匹配,比较604该键和选择的流表140A中填充 的键。在通配符匹配使能时,可能键将匹配多于一个流表条目的填充的键。因此,转发元件 120A将确定606多少填充的键匹配该键,这确定多少流表条目是匹配的。

[0098] 如果正好是一个流表条目匹配,则该条目是识别的条目512。然而,如果多于一个 流表条目匹配,则转发元件120A选择620匹配条目的集合内的一个条目。在一实施例中,此 选择基于由匹配条目的集合的每个条目指定的优先权值进行。例如,转发元件120A可选择 集合中具有最高优先权值的条目或者集合中具有最低优先权值的条目。在另一实施例中, 条目的选择基于在键与匹配条目之间的最精确匹配进行。例如,转发元件120A可选择在其 配置键列176中带有最少通配符值的条目,指示它具有与键的对应部分共同的最多字面键 列144A-144N。随后,选择的流表条目被用作识别的条目512。

[0099] 然而,如果该键不匹配任何流表条目,则转发元件120A必须采取纠正动作610。在 一实施例中,在要进行的动作的路径可通过系统范围的配置全局设置或者在每流表基础上 设置的情况下,出现判定点612。在一个配置中,在无匹配流表条目时,转发元件120A要将分 组传送614到控制器110。这使得控制器110能够分析分组,并且可能更新一个或更多转发元 件120A-120N以使得此类分组能够在将来匹配至少一个流表条目。在一备选配置中,转发元 件120A将简单地丢弃分组616。在业务类型和用户明确的网络中,此配置可防止对未经授权 装置的网络接入,或者防止未经授权的业务,如垃圾邮件、蠕虫和非法侵入攻击。

[0100]图8示出根据本发明的一个实施例的包括控制器110和相异转发元件810A-810K的 示范灵活及可扩展流处理系统。控制器110包括接收处理定义112的定义接收模块111。处理 定义112包括以下项的表示:包括协议报头的相关报头字段的协议的可配置定义104、用于 在流表之间进行选择的可配置逻辑106及包括键组成的可配置流表定义108。处理定义112 提供151到转移器113,转换器113使用编译器114产生152解析器代码116,解析器代码116变 成解析器配置包117的一部分。转换器113也产生由流表填充模块118用于填充流表140A-140N的流表配置115A信息。某个版本的流表配置115A可包括在解析器配置包117中。解析器 配置包117最后由每个相异转发元件810A-810K用于创建必需的流表140A-140N和执行分组 处理。

[0101] 解析器配置包117提供148到分布模块119,分布模块119将解析器配置包117的相 同副本156传送到相异转发元件810A- 810K。在此配置中,传送解析器配置包117的相同副 本简化了控制器110,因为它无需担心如何生成用于网络内各种网络元件的本机代码。备选 的是,控制器110可编程成生成和传送用于一个或更多转发元件配置的硬件特定机器代码, 在此情况下,接收方转发元件(例如,810A)将不需要编译器(例如,822)。

[0102] 在配置和填充每个相异转发元件810A-810K内流表时,利用转换器113生成的流表 配置115A-115B信息。通过利用来自提供的148解析器配置包117的流表配置115B (或在一实 施例中,解析器代码116),每个转发元件810A-810K能够定义,创建和/或修改用于每个流表 的可配置键列176,因为它知道必需列的数量及用于每个列的数据类型。此外,通过发送流 表数据802A-802K,控制器110的流表填充模块118能够利用提供的154流表配置115A为每个 流表140A-140N填充流表条目179A-179N。

[0103] 不同于对每个网络元件810A-810K相同的传送的156解析器配置包117,流表填充 模块118可操作以将自定义流表数据802A-802K发送到每个网络元件810A-810K。因此,控制 器110可在每个网络元件上填充不同类型的流表条目。这在处理此类软件定义的网络内的 分组方面提供了相当大的灵活性和能力。例如,边缘网络元件可轻松地配置成以与核心路 由器不同的方式处理业务。此外,借助于通过此流表数据802A-802K的传送进行的动态更 新,控制器110能够通过调整一个或更多相异网络元件810A-810K的流表条目和对应可执行 动作,迅速响应网络内业务的类型或频率的更改。

[0104] 接收解析器配置包117和流表数据802A-802K的相异网络元件810A-810K可利用不 同硬件配置,并且因此以不同方式实现分组处理逻辑。然而,所有网络元件810A-810K仍接 收相同解析器配置包117。例如,网络元件810A包含带有编译器822和第一类型的处理器826 的执行单元821。在接收解析器配置包117时,编译器822将解析器配置包117以本机指令编 译到分组解析器中或第一类型的机器代码824中,以便在网络元件的处理器826上执行。另 外,不同转发元件810B包括带有用于不同类型处理器846的不同类型编译器842的执行单元 841。尽管存在这些不同,但网络元件810B接收与第一网络元件810A相同的解析器配置包 117,对其进行编译以生成其自己的自定义机器代码844,并且在其处理器846上执行机器代 码844以执行分组处理。

[0105] 除在带有不同处理器和编译器的网络元件(例如,810A-810B)上运行外,相同解析 器配置包117也可在带有包括专用协处理器、核或集成电路的硬件实现的网络元件上执行。 例如,除具有通用处理器864外,网络元件810K具有包括能够直接解释接收156的解析器配 置包117的协处理器862的执行单元861。由于此协处理器能够直接解释解析器配置包117, 因此,用于其的编译器是不必要的。

[0106] 图9示出根据本发明的一个实施例的在灵活及可扩展流处理系统中使用的处理配 置的示范表示。此图形包括三个完全不同但互相关类型的信息:包括协议报头的相关报头 字段的协议的可配置定义104的报头指令表示904、用于在流表之间及在用于选择的流表 906的键组成变体之间进行选择的可配置逻辑的栈指令表示906及包括键组成的可配置流 表定义108的表定义指令表示902。下面详细描述根据本发明的一个实施例的这些表示的格 式。

[0107] 报头指令表示

[0108] 报头指令表示904定义要为网络中分组处理的协议和每个协议报头的相关报头字 段。这些报头指令表示904允许转发元件120A-120N动态配置成识别特定协议报头,并且因 此从硬件角度而言是协议不可知论的,这允许在开发新协议时方便修改。例如,如果开发新 对等(P2P)协议,则报头指令表示904可易于修改以定义协议的相关报头字段,并且随后分 布到网络中的转发元件120A-120N,允许适当处理新协议的分组。另外,报头指令表示904允 许集中声明每个报头内的有用(即,相关)字段,因为将仅识别在进一步解析判定中可能使 用或者在键内使用的字段。这防止了在处理分组的过程中最终将无用的报头字段的任何不 必要识别或提取。

[0109] 表2中示出用于报头指令表示904的语法的一个实施例。指令的第一部分是词 (word) "header (报头)",显示了指令是报头指令。"header_name"是表示用于报头的定义的 名称的值。例如,在图9中,第一报头指令表示904是用于以太网V2分组,并且header_name是 "扣以^2"。接着是将暂时描述的可选"1 61^11(长度)"关键字。

[0110] 表 2

[0111]

Figure CN103999430BD00211

[0112] 在报头指令表示904的花括号内是用于相关报头字段的一个或更多字段声明。每 个字段声明包含"field_type"和"field_name"。"field_name"占位符表示用于报头内特定 字段的名称。例如,在图9中,用于报头"etherv2"的第一报头指令表示904包括表示包含目 的地MAC地址的字段的"dst_addr"的"f ield name"。"field_type"占位符是用于描述报头 的字段的几个基本数据类型之一。例如,"field_type"可以是描述诸如uint8_t、uintl6_t、 11;[1^32_1:或11;[1^64_1:等无符号整数的基本整数类型。当然,也可使用其它数据类型,如带符 号的整数、字符、浮点或任何其它数据类型。在图9中,第一报头指令表示904利用表示存储 MAC地址的类型的"mac_addr_t"类型和用于十六比特带符号整数的"in116_t"。可选的是, "field_type"也可包含词"field(字段)",其中,字段声明也可包括可选的"field_size"。 在此情形中,"field"的"field_type"指示报头字段的值包含"field_si Ze"数量的比特。例 如,用于报头"vlan"的第二报头指令表示904包括3比特的"pep"字段、1比特的"cfi"字段及 12比特的"vid"字段。带有"field_si Ze"的此一般"field"也对将多个字段组合到一个字段 声明中有用,特别是如果在以后分组处理中将不使用这些字段。例如,考虑一些报头的前四 个字段未被认为相关,但第五字段被认为相关的情形。假设此报头的前四个字段的每个字 段大小为8比特,并且这前四个字段对于以后处理是不必要的,通过使用"field"的"field_ type"和32比特的"field_siZe",一个字段声明可将四个字段组合在一起。

[0Ί13] 回到第一花括号前指令的部分,可选的"length"关键字和"length_expr"占位符 允许基于报头的一个或更多字段,使用数字表达式定义报头的大小。例如,名为"ipv4"的第 四报头指令表示904以字节为单位,将每个"ipv4"报头的大小定义为报头内"hlen"字段中 存储的值的四倍。此"length"关键字和数学表达式的使用对处理可变长度报头特别有用。 另外,如果在报头的结尾有不必要(即,不相关)的字段,则报头指令表示904可不包括它们, 并且转而使用长度关键字和表达式定义报头的总长度。这阻止分组处理模块122识别和提 取将不再使用的报头字段。"length"关键字未指定时,基于报头内所有字段的长度之和计 算分组的长度。

[0114] 栈指令表示

[0115] 栈指令表示906构成用于在表之间及在用于选择的流表106的键组成变体之间进 行选择的可配置逻辑的核心。在定义协议报头如何相关和在处理期间如何从一个报头流到 下一报头中,栈指令表示906定义将解析哪些报头并且因此将识别什么字段。此外,栈指令 表示906指示在基于分组的报头的排序将分组分类时将使用哪个流表,并且还指示将使用 哪个键组成来生成键。处理分组时,分组处理模块122将识别分组的第一报头,并且开始根 据栈指令表示906偏历分组的报头。

[0116] 表3中示出用于栈指令表示906的语法的一个实施例。指令的第一部分"stack"显 示指令是栈指令。指令的一部分是带有"key_field"的"header_name"。这些占位符指示栈 指令要用于什么报头,以及在生成列和执行分类前确定是否应解析其它列时要检测该报头 的哪个字段。例如,在图9中,在解析以太网版本2 (V2)报头时要使用第一栈指令表示906, 因为header_name是"etherv2"。此外,来自 etherv2的 "ether_type" key_field将是在判定 是否继续解析另外的报头时使用的字段。

[0117] 表 3

[0118]

Figure CN103999430BD00221

[0119] 接着是可选的"stackable (可堆栈)"关键字和"stack_depth"值。可选的可堆栈关 键字指定此栈指令指示的报头的多个实例可在连续序列中堆栈在一起。此关键字对于描述 利用隧道化和封装的分组特别有用,因为在此类情形中可出现多个重复的报头。可选的是, 此类重复报头的检查的深度可受栈小便宜度值限制。在图9中,用于"mpls"的第三栈指令表 示906包括可选可堆栈关键字,而不是栈深度值。因此,可重复解析连续的MPLS报头,直至检 测到新的非MPLS报头,或者某一其它形式的控制停止解析,如在MPLS分组的检查的"key_ field"指示分组的处理的更改时。

[0120] 在花括号内有两种类型的语句:表语句和规则。在一实施例中,在栈指令内必须存 在这两种类型之一的至少一个语句。表语句以表关键字开始,并且如果分组的报头的解析 在此栈指令中终止,则随后是指示要用于分组分类(即,查找)的独特流表"table_id"。例 如,在图9中,用于"ipv4"的第二栈指令表示906包括"表Γ语句,因此,如果在检查此报头的 同时解析要结束,则由"Γ识别的流表将用于分类。

[0121] 接着,可包括可选"recursion (递归)"关键字和"r_count"(递归计数)以指示在分 组的解析期间可返回栈指示的报头。在此情况下,如果要返回特定类型的报头,则"table_ id"识别的流表将用于分类,并且进一步的报头解析将停止。r_c〇unt指示在报头遍历中解 析应停止时的点。因此,_r_count指示第一次再访问报头时,报头解析应停止,并且分类 应开始。类似地,2的^(: 〇11拉指示第二次再访问报头时,报头解析应停止,并且分类应开始。 例如,如果在栈指令内存在"table 1 recursion 1"的表语句,贝lj在第一次再访问栈指令 时,解析将停止,并且分类将使用由值"Γ识别的流表开始。

[0122] 栈指令内第二类型的语句称为规则,并且包括带有词"next"和"header_name"的 "key_Value"。此规则语句提供用于在逻辑上确定报头解析应是否以及如何继续所必需的 数据。比较由此栈指令的第一部分定义的分组的header_name .key_field内的值和每个这 些规则的每个key_value。如果key_f ield等于规则中的key_value,则解析将通过将具有类 型header_name的分组的下一报头继续,并且对应的栈将被分析以便做出进一步判定。如果 声明了多于一个规则,则将按顺序检查每个规则,并且因此对于分组只有一个路径是可能 的。此外,如果key_field与任何规则的key_value不匹配,并且如果没有为栈定义的表语 句,则纠正动作将进行。纠正动作的示例包括丢弃分组或者将分组发送到控制器110。

[0123] 例如,在图9中,用于"etherV2"的第一栈指令表示906包含两个规则,并且在处理 etherv2报头中,其ether_type字段的值将与0x8847和0x0800以此顺序进行比较。如果 ether_type字段等于0x8847,则解析将通过"mpls"报头继续。如果不相等,则ether_type字 段将与0x0800进行比较:如果它们相等,则解析将通过"ipv4"报头继续,但如果它们不相 等,则分组将被丢弃或者转发到控制器110。

[0124] 用于"ipv4"的第二栈指令表示906显示了每个"下一"报头不具有对应栈指令的情 况。例如,如果"proto"字段等于0x11,则处理要通过"udp"报头继续。然而,没有无 udp栈指 令表示906,因此,将使用udp报头指令表示904识别udp报头的字段,并且将关于ipv4栈指令 表示906的处理视为结束,因此,"表Γ将用于分类目的。

[0125] 另外,规则可包含通配符星号(*)以替代key_valUe。在此情形中,每个key_field 将匹配星号,因此,解析将通过如规则的"next header_name"部分所示的下一报头分组继 续。

[0126] 通过使用规则和表语句,用于可识别分组的解析规则得以定义,并且这些路径选 择在键生成期间要使用的用于分类的流表和键组成变体。尽管在栈内结束解析并且涉及用 于分类的特定流表,但浏览栈的顺序确定用于构建键的键组成变体。例如,在图9中,如果解 析要在用于"ipv4"的第二栈指令表示906中结束,则与"表Γ相关联的流表将用于分类。然 而,根据最后解析的报头是"udp"报头、"tcp"报头还是另一类型的报头,生成的键将不同, 因为可在键中使用来自那些报头的字段。因此,此解析顺序将确定将与下述表定义指令表 示902-起使用的键组成变体。

[0127] 表定义指令表示

[0128] 表定义指令表示902构成包括键组成的可配置流表定义108的核心。这些指令指定 用于分组分类的流表的类型和大小。此外,解析和分类阶段密切相关,因为表定义指令表示 902也指定用于将流表编索引的键组成和变体。

[0129] 表4中示出用于表定义指令表示902的语法的一个实施例。指令的第一部分包括词 "table (表)"和独特的"table_id"标识符,它们一起指示指令的类型和指令涉及的独特流 表。

[0130] 表 4

[0131]

Figure CN103999430BD00241

[0132] 在花括号内有一个或更多字段语句,每个语句以词"field"和"field_id"开始。每 个字段语句表示流表中一个可配置键列176和用于该表的键的一部分。在一实施例中, field_id是表示键内字段的位置的整数。接着,在花括号的另一集合内是"matching_ type"。此值可包括在通过比较键与列而将分组分类时在流表内要允许的匹配的类型的一 个或更多选定。例如,matching_type可包括用于要求完全匹配的"exact"、用于最长前缀匹 配的"lpm"、用于使用特定掩码的"mask"或"range"(带有开始和结束两个变元)。例如,在图 9中,用于"表0"的第一表定义指令表示902包括两个字段语句,每个要求完全匹配。在"表Γ 中,四个字段要求完全匹配,而字段2和3允许24比特的前缀匹配。在matching_type后,每个 字段语句包括"header_name"和"key_f ield",这表示应用于构建键的此部分的解析的报 头。例如,在图9中,用于"表Γ的第二表定义指令表示902规定键的第一部分应来自分组的 "etherv2"报头的"dst"字段,并且键的第三部分应来自分组的"ipv4"报头的"src_addr"字 段。header_name和key_field值可还使用括号指定以指示已解析的特定报头或字段。这通 过报头递归而特别有用,其中,括号详细描述递归深度,枚举值应来源于递归的哪个级别。 类似地,在一个报头类型(或key_field)的多个实例位置相互靠近时,此符号允许选择特定 报头(或字段)。例如,在图9中,用于"表0"的第一表定义指令表示902规定第一字段将来自 第一解析的MPLS报头,并且第二字段将来自第二解析的MPLS报头。

[0133] 表4中也显示了字段语句的可选修改。在利用带有两个报头/字段备选(作为逻辑 三元算子)的问号中,定义了两个键组成变体,允许为相同表构建不同键。例如,在图9中,由 于用于字段4和5的字段语句,用于"表Γ的第二表定义指令表示902提供两个键组成变体。 这些字段语句的每个语句基于如栈指令表示906定义的解析的路径,定义单独的键。如果 "udp"报头已解析,贝lj字段4将利用"udp. dst_port"值,并且字段5将利用"udp. src_port" 值;如果转过来是"tcp"报头已解析,则字段4将利用"tcp. dst_p〇rt"值,并且字段5将利用 "tcp.src_port"值。因此,此三元字段语句提供用于键组成变体,而键组成变体的选择是基 于用于在表之间及在用于选择的流表的键组成变体之间进行选择的可配置逻辑106。

[0134] 本发明的不同实施例可使用软件、固件和/或硬件的不同组合实现。因此,所述图 中所示技术可使用一个或几个电子装置(例如,终端站、网络元件)上存储和执行的代码和/ 或数据来实现。此类计算装置使用计算机可读媒体存储和传递(在内部和/或通过网络与其 它电子装置)代码和数据,如非暂时性计算机可读存储媒体(例如,磁盘、光盘、随机存取存 储器、只读存储器、闪存装置、相变存储器、三元内容可寻址存储器(TCAM)等)和暂时性计算 机可读传送媒体(例如,电气、光学、声学或其它形式传播信号-如载波、红外信号、数字信 号)。另外,此类电子装置一般情况下包括耦合到诸如一个或更多存储装置(非暂时性机器 可读存储媒体)、用户输入/输出装置(例如,键盘、触摸屏和/或显示器)和网络连接等一个 或更多其它组件的一个或更多处理器(例如,现场可编程门阵列(FPGA)、图形处理单元 (GPU)、网络处理单元(NPU)等)的集合。处理器的集合与其它组件的耦合一般情况下是通过 一个或更多总线和桥接器(也称为总线控制器)、环或芯片上网络。因此,给定电子装置的存 储装置一般情况下存储代码和/或数据以便在该电子装置的一个或更多处理器的集合上执 行。

[0135]例如,虽然图中的流程图示出本发明的某些实施例执行的操作的特定顺序,但应 理解,此类顺序是示范性的(例如,备选实施例可以不同的顺序来执行操作,组合某些操作, 重叠某些操作等)。此外,虽然本发明已根据几个实施例描述,但本领域的技术人员将认识 到本发明不限于所述实施例,而是能通过随附权利要求的精神和范围内的修改和变化来实 践。描述因此要视为是说明性的而不是限制性的。

Claims (20)

1. 一种由充当软件定义的网络内转发元件的网络装置所执行的方法,包括以下步骤: 通过与所述软件定义的网络内控制器装置的网络连接,接收以下项的表示: 基于协议报头的第一多个相关报头字段、包括键组成的可配置流表定义,其中用于所 述流表定义的每个流表定义的键组成识别为该流表定义所选择的所述相关报头字段中一 个或更多字段的集合,以及 用于基于协议报头的第二多个相关报头字段在所述可配置流表定义所定义的流表之 间进行选择的可配置逻辑; 基于所述可配置流表定义的每个流表定义来创建流表,其中所述流表的每个流表包括 对于由该流表所基于的流表定义中包括的键组成所识别的每个相关报头字段的可配置键 列,其中所述流表的每个流表也包括存储转发判定的一个或更多动作列的集合; 安装用于在流表之间进行选择的所述可配置逻辑; 接收数据以填充所述流表的可配置键列和动作列; 根据所接收的数据来填充所述流表;以及 根据用于在流表之间进行选择的所述可配置逻辑、所述流表和所述可配置逻辑要求的 相关报头字段中每个分组的值,从通过使用一个或更多协议的所述网络装置的网络接口所 接收的对于分组的转发判定来进行选择,以便为该分组选择所述流表之一以及为该分组从 所选择的流表来选择条目。
2. 如权利要求1所述的方法,其中从所述转发判定来进行选择的所述步骤包括对于所 述分组的第一分组的以下步骤: 根据需要访问所述第二多个相关报头字段中所述第一分组的值以便所述可配置逻辑 选择所述流表之一;以及 基于所选择的流表的键组成所识别的相关报头字段中所述第一分组的值,生成用于所 选择的流表的键。
3. 如权利要求1所述的方法,还包括: 通过与所述软件定义的网络内所述控制器装置之间的所述网络连接,接收键生成逻辑 的表示以从所述分组的值根据所述键组成来生成键,以便与所述流表的条目进行比较;以 及 安装所述键生成逻辑。
4. 如权利要求1所述的方法,还包括根据所述键组成,从所述分组的值来创建键生成逻 辑以生成键,以便与所述流表的条目进行比较。
5. 如权利要求1所述的方法,其中从所述转发判定来进行选择的所述步骤包括对于所 述分组的第一分组的以下步骤: 基于所述可配置逻辑和由所述可配置逻辑进行选择所要求的所述第二多个相关报头 字段的某些字段中所述第一分组的值,选择所述流表之一; 至少基于比较所选择的流表中填充的键和从所选择的流表的键组成所识别的相关报 头字段中所述第一分组的值生成的键,识别所选择的流表的一个条目;以及 执行所识别的条目的一个或更多动作列的集合中指定的一个或更多动作的集合。
6. 如权利要求5所述的方法,其中选择所述流表之一的所述步骤还包括基于用于在所 述流表之间进行选择的所述可配置逻辑和所述可配置逻辑识别的所述第一分组中的协议 报头来选择键组成变体的步骤。
7. 如权利要求5所述的方法,其中从所述转发判定来进行选择的所述步骤还包括将不 匹配为分组选择的流表的任何条目的那些分组传送到所述控制器装置。
8. 如权利要求5所述的方法,其中利用对于所填充的键内存在的通配符值的通配符匹 配,执行对所选择的流表中填充的键和所生成的键的比较。
9. 如权利要求8所述的方法,其中识别所选择的流表的一个条目的所述步骤还包括,响 应匹配所选择的流表的两个或更多条目的集合,基于条目的匹配集合所指定的优先权值来 选择条目的匹配集合中的条目。
10. 如权利要求8所述的方法,其中识别所选择的流表的一个条目的所述步骤还包括, 响应匹配所选择的流表的两个或更多条目的集合,基于键与条目的匹配集合之间最精确的 匹配来选择条目的匹配集合中的条目。
11. 一种充当流交换使能的转发元件的网络装置,包括: 配置模块,可操作以: 接收以下项的表示: 基于协议报头的第一多个相关报头字段、包括键组成的可配置流表定义,其中用于所 述流表定义的每个流表定义的键组成识别为该流表定义所选择的所述相关报头字段中一 个或更多字段的集合,以及 用于基于协议报头的第二多个相关报头字段,在所述可配置流表定义所定义的多个流 表之间进行选择的可配置逻辑,以及 安装用于在所述多个流表之间进行选择的所述可配置逻辑; 流表管理模块,可操作以: 基于所述可配置流表定义中的每个定义来创建流表,其中所述流表中的每个流表要包 括对于由该流表所基于的流表定义中包括的键组成所识别每个相关报头字段的可配置键 列,其中所述流表的每个流表要包括存储转发判定的一个或更多动作列的集合, 接收数据以填充所述流表的可配置键列和动作列,以及 根据所接收的数据来填充所述流表;以及 分组处理模块,可操作以根据用于在所述多个流表之间进行选择的所述可配置逻辑、 所述流表和所述可配置逻辑所要求的所述相关报头字段的那些字段中每个分组的值,从通 过所述网络装置的网络接口接收的对于分组的转发判定来进行选择,以便为该分组选择所 述流表之一以及为该分组从所选择的流表来选择条目。
12. 如权利要求11所述的网络装置,其中所述分组处理模块还包括: 解析模块,包括: 判定模块,可操作以基于所述可配置逻辑和由所述可配置逻辑进行选择所要求的所述 第二多个相关报头字段的某些字段中每个分组的值,为每个分组选择所述流表之一,以及 键生成模块,可操作以为每个分组接收来自所述判定模块的所选择的流表的指示,并 且配置成从所选择的流表的键组成所识别的相关报头字段中该分组的值,为每个分组生成 键;以及 匹配和动作模块,可操作以为每个分组接收所选择的流表的指示和来自所述键生成模 块的键,并且配置成: 至少基于比较该键和所选择的流表中填充的键来识别所选择的流表的一个条目,以及 执行所识别的条目所指定的一个或更多动作的集合。
13. 如权利要求12所述的网络装置,其中: 所述判定模块还配置成在所述可配置逻辑对于给定分组要求时,基于所述可配置逻辑 所识别的给定分组内的协议报头来选择键组成变体;以及 所述键生成模块还配置成基于所选择的组成变体来生成对于所述给定分组的键。
14. 如权利要求12所述的网络装置,其中所述匹配和动作模块配置成,响应在比较键和 所选择的流表中填充的键时匹配了所选择的流表的零个条目,将该分组传送到控制器装 置。
15. 如权利要求12所述的网络装置,其中所述配置模块也可操作以: 接收键生成逻辑的表示;以及 在所述键生成模块中安装所述键生成逻辑。
16. 如权利要求12所述的网络装置,其中所述键生成模块还配置成从所述流表定义的 表示来创建键生成逻辑。
17. 如权利要求12所述的网络装置,其中所述匹配和动作模块配置成通过利用对于所 填充的键内存在的通配符值的通配符匹配,比较键和所选择的流表中填充的键。
18. 如权利要求17所述的网络装置,其中所述匹配和动作模块响应在比较键和所选择 的流表中填充的键时匹配所选择的流表的两个或更多条目的集合,配置成基于条目的匹配 集合指定的优先权值而在条目的匹配集合之间进行选择。
19. 如权利要求17所述的网络装置,其中所述匹配和动作模块响应匹配所选择的流表 的两个或更多条目的集合,配置成基于最精确匹配而在条目的匹配集合之间进行选择。
20. 如权利要求17所述的网络装置,其中所述匹配和动作模块配置成通过选择它确定 具有匹配该键的填充的键的第一流表条目来识别所选择的流表的一个条目。
CN201280063405.9A 2011-12-22 2012-12-20 用于软件定义的网络中灵活及可扩展流处理的转发元件 CN103999430B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US13/335902 2011-12-22
US13/335,902 US8718064B2 (en) 2011-12-22 2011-12-22 Forwarding element for flexible and extensible flow processing software-defined networks
PCT/IB2012/057565 WO2013093858A1 (en) 2011-12-22 2012-12-20 Forwarding element for flexible and extensible flow processing in software-defined networks

Publications (2)

Publication Number Publication Date
CN103999430A CN103999430A (zh) 2014-08-20
CN103999430B true CN103999430B (zh) 2017-03-22

Family

ID=47722317

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280063405.9A CN103999430B (zh) 2011-12-22 2012-12-20 用于软件定义的网络中灵活及可扩展流处理的转发元件

Country Status (4)

Country Link
US (2) US8718064B2 (zh)
EP (1) EP2795873B1 (zh)
CN (1) CN103999430B (zh)
WO (1) WO2013093858A1 (zh)

Families Citing this family (200)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9456054B2 (en) 2008-05-16 2016-09-27 Palo Alto Research Center Incorporated Controlling the spread of interests and content in a content centric network
US9497039B2 (en) 2009-05-28 2016-11-15 Microsoft Technology Licensing, Llc Agile data center network architecture
US8923293B2 (en) 2009-10-21 2014-12-30 Palo Alto Research Center Incorporated Adaptive multi-interface use for content networking
US9391716B2 (en) 2010-04-05 2016-07-12 Microsoft Technology Licensing, Llc Data center using wireless communication
US9521586B2 (en) * 2012-03-02 2016-12-13 Ntt Docomo, Inc. Mobile communication system, communication system, node, flow-control network, and communication-control method
CN102624560B (zh) * 2012-03-12 2016-06-29 深圳市天威视讯股份有限公司 一种分布式部署、集中式控制的有线电视网络宽带接入系统
CN103220225B (zh) * 2012-05-21 2015-07-08 华为技术有限公司 报文处理方法及设备、系统
US9280546B2 (en) 2012-10-31 2016-03-08 Palo Alto Research Center Incorporated System and method for accessing digital content using a location-independent name
US9400800B2 (en) 2012-11-19 2016-07-26 Palo Alto Research Center Incorporated Data transport by named content synchronization
US10430839B2 (en) 2012-12-12 2019-10-01 Cisco Technology, Inc. Distributed advertisement insertion in content-centric networks
US9252972B1 (en) * 2012-12-20 2016-02-02 Juniper Networks, Inc. Policy control using software defined network (SDN) protocol
FI124397B (en) * 2013-01-04 2014-08-15 Tellabs Oy Method and apparatus for determining search system for a network element of software-defined network
US10091102B2 (en) * 2013-01-09 2018-10-02 Cisco Technology, Inc. Tunnel sub-interface using IP header field
US9906445B2 (en) * 2013-02-01 2018-02-27 Texas Instruments Incorporated Packet processing match and action pipeline structure with dependency calculation removing false dependencies
US9450981B2 (en) * 2013-03-14 2016-09-20 Radware, Ltd. System and method thereof for mitigating denial of service attacks in virtual networks
US9978025B2 (en) * 2013-03-20 2018-05-22 Cisco Technology, Inc. Ordered-element naming for name-based packet forwarding
US9848068B2 (en) * 2013-04-16 2017-12-19 Telefonaktiebolaget L M Ericsson (Publ) Method for providing a parser to extract information from fields of a data packet header
US9935791B2 (en) 2013-05-20 2018-04-03 Cisco Technology, Inc. Method and system for name resolution across heterogeneous architectures
US9185120B2 (en) 2013-05-23 2015-11-10 Palo Alto Research Center Incorporated Method and system for mitigating interest flooding attacks in content-centric networks
WO2014186986A1 (zh) * 2013-05-24 2014-11-27 华为技术有限公司 流转发方法、设备及系统
US9270754B2 (en) * 2013-06-06 2016-02-23 Cisco Technology, Inc. Software defined networking for storage area networks
US20140369363A1 (en) * 2013-06-18 2014-12-18 Xpliant, Inc. Apparatus and Method for Uniquely Enumerating Paths in a Parse Tree
CN103354522B (zh) 2013-06-28 2016-08-10 华为技术有限公司 一种多级流表查找方法和装置
CN104301225B (zh) * 2013-07-17 2017-12-29 华为技术有限公司 一种流转发方法和通信设备
US9444722B2 (en) 2013-08-01 2016-09-13 Palo Alto Research Center Incorporated Method and apparatus for configuring routing paths in a custodian-based routing architecture
CN103428771B (zh) * 2013-09-05 2017-02-15 迈普通信技术股份有限公司 通信方法、软件定义网络sdn交换机及通信系统
US9900673B2 (en) 2013-09-19 2018-02-20 Hewlett Packard Enterprise Development Lp Software defined optical network
CN104580027B (zh) * 2013-10-25 2018-03-20 新华三技术有限公司 一种OpenFlow报文转发方法及设备
US9407549B2 (en) 2013-10-29 2016-08-02 Palo Alto Research Center Incorporated System and method for hash-based forwarding of packets with hierarchically structured variable-length identifiers
US9282050B2 (en) 2013-10-30 2016-03-08 Palo Alto Research Center Incorporated System and method for minimum path MTU discovery in content centric networks
US9276840B2 (en) 2013-10-30 2016-03-01 Palo Alto Research Center Incorporated Interest messages with a payload for a named data network
US9401864B2 (en) 2013-10-31 2016-07-26 Palo Alto Research Center Incorporated Express header for packets with hierarchically structured variable-length identifiers
US9847951B2 (en) 2013-11-04 2017-12-19 Ciena Corporation Dynamic bandwidth allocation systems and methods using content identification in a software-defined networking controlled multi-layer network
CN105122747B (zh) * 2013-11-07 2018-06-26 华为技术有限公司 Sdn网络中的控制设备和控制方法
US10129365B2 (en) 2013-11-13 2018-11-13 Cisco Technology, Inc. Method and apparatus for pre-fetching remote content based on static and dynamic recommendations
US9311377B2 (en) 2013-11-13 2016-04-12 Palo Alto Research Center Incorporated Method and apparatus for performing server handoff in a name-based content distribution system
US10101801B2 (en) 2013-11-13 2018-10-16 Cisco Technology, Inc. Method and apparatus for prefetching content in a data stream
EP3011449A1 (en) * 2013-11-27 2016-04-27 Huawei Technologies Co., Ltd. Method and controller for clustering applications in a software-defined network
US10089655B2 (en) 2013-11-27 2018-10-02 Cisco Technology, Inc. Method and apparatus for scalable data broadcasting
US9503358B2 (en) 2013-12-05 2016-11-22 Palo Alto Research Center Incorporated Distance-based routing in an information-centric network
US20150195387A1 (en) * 2014-01-08 2015-07-09 Cavium, Inc. Methods and systems for flexible packet classification
US9379979B2 (en) 2014-01-14 2016-06-28 Palo Alto Research Center Incorporated Method and apparatus for establishing a virtual interface for a set of mutual-listener devices
US10172068B2 (en) 2014-01-22 2019-01-01 Cisco Technology, Inc. Service-oriented routing in software-defined MANETs
US10098051B2 (en) 2014-01-22 2018-10-09 Cisco Technology, Inc. Gateways and routing in software-defined manets
US9374304B2 (en) 2014-01-24 2016-06-21 Palo Alto Research Center Incorporated End-to end route tracing over a named-data network
WO2015119591A1 (en) * 2014-02-04 2015-08-13 Hewlett-Packard Development Company, L.P. Network switch extension
US9954678B2 (en) 2014-02-06 2018-04-24 Cisco Technology, Inc. Content-based transport security
US9531679B2 (en) 2014-02-06 2016-12-27 Palo Alto Research Center Incorporated Content-based transport security for distributed producers
US20170171050A1 (en) * 2014-02-16 2017-06-15 B.G. Negev Technologies and Application Ltd., at Ben-Gurion University A system and method for integrating legacy flow-monitoring systems with sdn networks
US9678998B2 (en) 2014-02-28 2017-06-13 Cisco Technology, Inc. Content name resolution for information centric networking
US10089651B2 (en) 2014-03-03 2018-10-02 Cisco Technology, Inc. Method and apparatus for streaming advertisements in a scalable data broadcasting system
US9836540B2 (en) 2014-03-04 2017-12-05 Cisco Technology, Inc. System and method for direct storage access in a content-centric network
CN103825824A (zh) * 2014-03-04 2014-05-28 华为技术有限公司 一种报文处理方法及装置
US9473405B2 (en) 2014-03-10 2016-10-18 Palo Alto Research Center Incorporated Concurrent hashes and sub-hashes on data streams
US9626413B2 (en) 2014-03-10 2017-04-18 Cisco Systems, Inc. System and method for ranking content popularity in a content-centric network
US9391896B2 (en) 2014-03-10 2016-07-12 Palo Alto Research Center Incorporated System and method for packet forwarding using a conjunctive normal form strategy in a content-centric network
US9407432B2 (en) 2014-03-19 2016-08-02 Palo Alto Research Center Incorporated System and method for efficient and secure distribution of digital content
US20150271075A1 (en) * 2014-03-20 2015-09-24 Microsoft Corporation Switch-based Load Balancer
US9916601B2 (en) 2014-03-21 2018-03-13 Cisco Technology, Inc. Marketplace for presenting advertisements in a scalable data broadcasting system
US9363179B2 (en) 2014-03-26 2016-06-07 Palo Alto Research Center Incorporated Multi-publisher routing protocol for named data networks
US9363086B2 (en) 2014-03-31 2016-06-07 Palo Alto Research Center Incorporated Aggregate signing of data in content centric networking
US9716622B2 (en) 2014-04-01 2017-07-25 Cisco Technology, Inc. System and method for dynamic name configuration in content-centric networks
US9473576B2 (en) 2014-04-07 2016-10-18 Palo Alto Research Center Incorporated Service discovery using collection synchronization with exact names
US10075521B2 (en) 2014-04-07 2018-09-11 Cisco Technology, Inc. Collection synchronization using equality matched network names
US9390289B2 (en) 2014-04-07 2016-07-12 Palo Alto Research Center Incorporated Secure collection synchronization using matched network names
US9451032B2 (en) 2014-04-10 2016-09-20 Palo Alto Research Center Incorporated System and method for simple service discovery in content-centric networks
CN103997513B (zh) * 2014-04-21 2017-08-01 北京邮电大学 一种可编程虚拟网络服务系统
CN105099913B (zh) 2014-04-21 2018-07-20 新华三技术有限公司 一种报文转发方法及设备
US9203885B2 (en) 2014-04-28 2015-12-01 Palo Alto Research Center Incorporated Method and apparatus for exchanging bidirectional streams over a content centric network
CN106233681A (zh) * 2014-05-01 2016-12-14 日本电气株式会社 通信装置、控制装置、通信系统、接收分组处理方法、通信装置控制方法及程序
US9992281B2 (en) 2014-05-01 2018-06-05 Cisco Technology, Inc. Accountable content stores for information centric networks
US20150326457A1 (en) * 2014-05-08 2015-11-12 Microsoft Corporation Fine-grained network monitoring
US9237129B2 (en) * 2014-05-13 2016-01-12 Dell Software Inc. Method to enable deep packet inspection (DPI) in openflow-based software defined network (SDN)
US9609014B2 (en) 2014-05-22 2017-03-28 Cisco Systems, Inc. Method and apparatus for preventing insertion of malicious content at a named data network router
US9455835B2 (en) 2014-05-23 2016-09-27 Palo Alto Research Center Incorporated System and method for circular link resolution with hash-based names in content-centric networks
US9276751B2 (en) 2014-05-28 2016-03-01 Palo Alto Research Center Incorporated System and method for circular link resolution with computable hash-based names in content-centric networks
US9641429B2 (en) 2014-06-18 2017-05-02 Radware, Ltd. Predictive traffic steering over software defined networks
US9516144B2 (en) 2014-06-19 2016-12-06 Palo Alto Research Center Incorporated Cut-through forwarding of CCNx message fragments with IP encapsulation
US9537719B2 (en) 2014-06-19 2017-01-03 Palo Alto Research Center Incorporated Method and apparatus for deploying a minimal-cost CCN topology
US9467377B2 (en) 2014-06-19 2016-10-11 Palo Alto Research Center Incorporated Associating consumer states with interests in a content-centric network
US9426113B2 (en) 2014-06-30 2016-08-23 Palo Alto Research Center Incorporated System and method for managing devices over a content centric network
US20160006663A1 (en) * 2014-07-02 2016-01-07 Telefonaktiebolaget L M Ericsson (Publ) Method and system for compressing forward state of a data network
US9699198B2 (en) 2014-07-07 2017-07-04 Cisco Technology, Inc. System and method for parallel secure content bootstrapping in content-centric networks
US9959156B2 (en) 2014-07-17 2018-05-01 Cisco Technology, Inc. Interest return control message
US9621354B2 (en) 2014-07-17 2017-04-11 Cisco Systems, Inc. Reconstructable content objects
US9729616B2 (en) 2014-07-18 2017-08-08 Cisco Technology, Inc. Reputation-based strategy for forwarding and responding to interests over a content centric network
US9590887B2 (en) 2014-07-18 2017-03-07 Cisco Systems, Inc. Method and system for keeping interest alive in a content centric network
US9535968B2 (en) 2014-07-21 2017-01-03 Palo Alto Research Center Incorporated System for distributing nameless objects using self-certifying names
US9882964B2 (en) 2014-08-08 2018-01-30 Cisco Technology, Inc. Explicit strategy feedback in name-based forwarding
US9503365B2 (en) 2014-08-11 2016-11-22 Palo Alto Research Center Incorporated Reputation-based instruction processing over an information centric network
US9729662B2 (en) 2014-08-11 2017-08-08 Cisco Technology, Inc. Probabilistic lazy-forwarding technique without validation in a content centric network
US9391777B2 (en) 2014-08-15 2016-07-12 Palo Alto Research Center Incorporated System and method for performing key resolution over a content centric network
US9800637B2 (en) 2014-08-19 2017-10-24 Cisco Technology, Inc. System and method for all-in-one content stream in content-centric networks
US9467492B2 (en) 2014-08-19 2016-10-11 Palo Alto Research Center Incorporated System and method for reconstructable all-in-one content stream
CN105556916B (zh) * 2014-08-25 2019-03-08 华为技术有限公司 网络流的信息统计方法和装置
US9497282B2 (en) 2014-08-27 2016-11-15 Palo Alto Research Center Incorporated Network coding for content-centric network
US10204013B2 (en) 2014-09-03 2019-02-12 Cisco Technology, Inc. System and method for maintaining a distributed and fault-tolerant state over an information centric network
US9692684B2 (en) * 2014-09-05 2017-06-27 Telefonaktiebolaget L M Ericsson (Publ) Forwarding table precedence in SDN
US9553812B2 (en) 2014-09-09 2017-01-24 Palo Alto Research Center Incorporated Interest keep alives at intermediate routers in a CCN
WO2016045056A1 (zh) * 2014-09-25 2016-03-31 华为技术有限公司 交换机及业务请求报文的处理方法
US20160094460A1 (en) * 2014-09-30 2016-03-31 Vmware, Inc. Packet Key Parser for Flow-Based Forwarding Elements
US9722935B2 (en) * 2014-10-16 2017-08-01 Huawei Technologies Canada Co., Ltd. System and method for transmission management in software defined networks
US10069933B2 (en) 2014-10-23 2018-09-04 Cisco Technology, Inc. System and method for creating virtual interfaces based on network characteristics
US9635148B2 (en) * 2014-10-31 2017-04-25 Aruba Networks, Inc. Partitioning data sets for transmission on multiple physical links
US10285110B2 (en) 2014-11-04 2019-05-07 At&T Intellectual Property I, L.P. Intelligent traffic routing
US9825858B2 (en) * 2014-11-25 2017-11-21 Huawei Technologies Co., Ltd. Method to optimize flow-based network function chaining
US9536059B2 (en) 2014-12-15 2017-01-03 Palo Alto Research Center Incorporated Method and system for verifying renamed content using manifests in a content centric network
US9590948B2 (en) 2014-12-15 2017-03-07 Cisco Systems, Inc. CCN routing using hardware-assisted hash tables
US10237189B2 (en) 2014-12-16 2019-03-19 Cisco Technology, Inc. System and method for distance-based interest forwarding
US9846881B2 (en) 2014-12-19 2017-12-19 Palo Alto Research Center Incorporated Frugal user engagement help systems
US9473475B2 (en) 2014-12-22 2016-10-18 Palo Alto Research Center Incorporated Low-cost authenticated signing delegation in content centric networking
US10003520B2 (en) 2014-12-22 2018-06-19 Cisco Technology, Inc. System and method for efficient name-based content routing using link-state information in information-centric networks
US9660825B2 (en) 2014-12-24 2017-05-23 Cisco Technology, Inc. System and method for multi-source multicasting in content-centric networks
US9537872B2 (en) 2014-12-31 2017-01-03 Dell Software Inc. Secure neighbor discovery (SEND) using pre-shared key
GB2525701B (en) 2015-01-08 2016-11-30 Openwave Mobility Inc A software defined network and a communication network comprising the same
US9853873B2 (en) 2015-01-10 2017-12-26 Cisco Technology, Inc. Diagnosis and throughput measurement of fibre channel ports in a storage area network environment
US9602596B2 (en) 2015-01-12 2017-03-21 Cisco Systems, Inc. Peer-to-peer sharing in a content centric network
US9946743B2 (en) 2015-01-12 2018-04-17 Cisco Technology, Inc. Order encoded manifests in a content centric network
US9954795B2 (en) 2015-01-12 2018-04-24 Cisco Technology, Inc. Resource allocation using CCN manifests
US9832291B2 (en) 2015-01-12 2017-11-28 Cisco Technology, Inc. Auto-configurable transport stack
US9916457B2 (en) 2015-01-12 2018-03-13 Cisco Technology, Inc. Decoupled name security binding for CCN objects
US9462006B2 (en) 2015-01-21 2016-10-04 Palo Alto Research Center Incorporated Network-layer application-specific trust model
US9998425B2 (en) 2015-01-27 2018-06-12 Sonicwall Inc. Dynamic bypass of TLS connections matching exclusion list in DPI-SSL in a NAT deployment
US9552493B2 (en) 2015-02-03 2017-01-24 Palo Alto Research Center Incorporated Access control framework for information centric networking
US10333840B2 (en) 2015-02-06 2019-06-25 Cisco Technology, Inc. System and method for on-demand content exchange with adaptive naming in information-centric networks
US10153972B2 (en) * 2015-02-13 2018-12-11 Nxp Usa, Inc. Method and apparatus for coding a user defined constant into a key composition rule using variable length command
US20180048593A1 (en) * 2015-02-17 2018-02-15 Hewlett Packard Enterprise Development Lp Flow entry generating and packet processing based on flow entry
US10075401B2 (en) 2015-03-18 2018-09-11 Cisco Technology, Inc. Pending interest table behavior
US9729680B2 (en) * 2015-04-23 2017-08-08 Nxp Usa, Inc. Methods and systems to embed valid-field (VF) bits in classification keys for network packet frames
CN106209614B (zh) * 2015-04-30 2019-09-17 新华三技术有限公司 一种网包分类方法和装置
US10222986B2 (en) 2015-05-15 2019-03-05 Cisco Technology, Inc. Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system
US9954751B2 (en) 2015-05-29 2018-04-24 Microsoft Technology Licensing, Llc Measuring performance of a network using mirrored probe packets
US10116605B2 (en) 2015-06-22 2018-10-30 Cisco Technology, Inc. Transport stack name scheme and identity management
US10075402B2 (en) 2015-06-24 2018-09-11 Cisco Technology, Inc. Flexible command and control in content centric networks
CN105022592B (zh) * 2015-06-30 2018-01-05 北京空间机电研究所 一种遥感相机磁性随机存储器的控制系统
US20180212878A1 (en) * 2015-07-21 2018-07-26 Hewlett Packard Enterprise Development Lp Using a single cache table
US9948518B2 (en) * 2015-07-22 2018-04-17 International Business Machines Corporation Low latency flow cleanup of openflow configuration changes
US9986034B2 (en) 2015-08-03 2018-05-29 Cisco Technology, Inc. Transferring state in content centric network stacks
US9832123B2 (en) 2015-09-11 2017-11-28 Cisco Technology, Inc. Network named fragments in a content centric network
US10355999B2 (en) 2015-09-23 2019-07-16 Cisco Technology, Inc. Flow control with network named fragments
US10313227B2 (en) 2015-09-24 2019-06-04 Cisco Technology, Inc. System and method for eliminating undetected interest looping in information-centric networks
US9977809B2 (en) 2015-09-24 2018-05-22 Cisco Technology, Inc. Information and data framework in a content centric network
US10454820B2 (en) 2015-09-29 2019-10-22 Cisco Technology, Inc. System and method for stateless information-centric networking
US10263965B2 (en) 2015-10-16 2019-04-16 Cisco Technology, Inc. Encrypted CCNx
CN107615710A (zh) * 2015-10-20 2018-01-19 华为技术有限公司 Sdn交换机中的直接回复动作
EP3369212A1 (en) * 2015-10-26 2018-09-05 Telefonaktiebolaget LM Ericsson (PUBL) Length control for packet header sampling
US9794238B2 (en) 2015-10-29 2017-10-17 Cisco Technology, Inc. System for key exchange in a content centric network
US9807205B2 (en) 2015-11-02 2017-10-31 Cisco Technology, Inc. Header compression for CCN messages using dictionary
US9690894B1 (en) * 2015-11-02 2017-06-27 Altera Corporation Safety features for high level design
US10009446B2 (en) 2015-11-02 2018-06-26 Cisco Technology, Inc. Header compression for CCN messages using dictionary learning
US10021222B2 (en) 2015-11-04 2018-07-10 Cisco Technology, Inc. Bit-aligned header compression for CCN messages using dictionary
US10097521B2 (en) 2015-11-20 2018-10-09 Cisco Technology, Inc. Transparent encryption in a content centric network
US10425302B2 (en) 2015-11-23 2019-09-24 International Business Machines Corporation Scalable end-to-end quality of service monitoring and diagnosis in software defined networks
US9912776B2 (en) 2015-12-02 2018-03-06 Cisco Technology, Inc. Explicit content deletion commands in a content centric network
US10097346B2 (en) 2015-12-09 2018-10-09 Cisco Technology, Inc. Key catalogs in a content centric network
US10078062B2 (en) 2015-12-15 2018-09-18 Palo Alto Research Center Incorporated Device health estimation by combining contextual information with sensor data
US10257271B2 (en) 2016-01-11 2019-04-09 Cisco Technology, Inc. Chandra-Toueg consensus in a content centric network
WO2017121471A1 (en) * 2016-01-13 2017-07-20 Huawei Technologies Co., Ltd. Dynamic forwarding rules in sdn
US9949301B2 (en) 2016-01-20 2018-04-17 Palo Alto Research Center Incorporated Methods for fast, secure and privacy-friendly internet connection discovery in wireless networks
US10305864B2 (en) 2016-01-25 2019-05-28 Cisco Technology, Inc. Method and system for interest encryption in a content centric network
US10043016B2 (en) 2016-02-29 2018-08-07 Cisco Technology, Inc. Method and system for name encryption agreement in a content centric network
US10003507B2 (en) 2016-03-04 2018-06-19 Cisco Technology, Inc. Transport session state protocol
US10038633B2 (en) 2016-03-04 2018-07-31 Cisco Technology, Inc. Protocol to query for historical network information in a content centric network
US10051071B2 (en) 2016-03-04 2018-08-14 Cisco Technology, Inc. Method and system for collecting historical network information in a content centric network
US9832116B2 (en) 2016-03-14 2017-11-28 Cisco Technology, Inc. Adjusting entries in a forwarding information base in a content centric network
US10212196B2 (en) 2016-03-16 2019-02-19 Cisco Technology, Inc. Interface discovery and authentication in a name-based network
US10067948B2 (en) 2016-03-18 2018-09-04 Cisco Technology, Inc. Data deduping in content centric networking manifests
US10091330B2 (en) 2016-03-23 2018-10-02 Cisco Technology, Inc. Interest scheduling by an information and data framework in a content centric network
US10033639B2 (en) 2016-03-25 2018-07-24 Cisco Technology, Inc. System and method for routing packets in a content centric network using anonymous datagrams
EP3226494A1 (en) * 2016-03-30 2017-10-04 Intel Corporation Switch, devices and methods for receiving and forwarding ethernet packets
US10320760B2 (en) 2016-04-01 2019-06-11 Cisco Technology, Inc. Method and system for mutating and caching content in a content centric network
US9930146B2 (en) 2016-04-04 2018-03-27 Cisco Technology, Inc. System and method for compressing content centric networking messages
US10425503B2 (en) 2016-04-07 2019-09-24 Cisco Technology, Inc. Shared pending interest table in a content centric network
US10027578B2 (en) 2016-04-11 2018-07-17 Cisco Technology, Inc. Method and system for routable prefix queries in a content centric network
US10404450B2 (en) 2016-05-02 2019-09-03 Cisco Technology, Inc. Schematized access control in a content centric network
US10320675B2 (en) 2016-05-04 2019-06-11 Cisco Technology, Inc. System and method for routing packets in a stateless content centric network
US10547589B2 (en) 2016-05-09 2020-01-28 Cisco Technology, Inc. System for implementing a small computer systems interface protocol over a content centric network
US10084764B2 (en) 2016-05-13 2018-09-25 Cisco Technology, Inc. System for a secure encryption proxy in a content centric network
US10063414B2 (en) 2016-05-13 2018-08-28 Cisco Technology, Inc. Updating a transport stack in a content centric network
US10140172B2 (en) 2016-05-18 2018-11-27 Cisco Technology, Inc. Network-aware storage repairs
US10103989B2 (en) 2016-06-13 2018-10-16 Cisco Technology, Inc. Content object return messages in a content centric network
US10305865B2 (en) 2016-06-21 2019-05-28 Cisco Technology, Inc. Permutation-based content encryption with manifests in a content centric network
US10148572B2 (en) 2016-06-27 2018-12-04 Cisco Technology, Inc. Method and system for interest groups in a content centric network
US10009266B2 (en) 2016-07-05 2018-06-26 Cisco Technology, Inc. Method and system for reference counted pending interest tables in a content centric network
US9992097B2 (en) 2016-07-11 2018-06-05 Cisco Technology, Inc. System and method for piggybacking routing information in interests in a content centric network
US10122624B2 (en) 2016-07-25 2018-11-06 Cisco Technology, Inc. System and method for ephemeral entries in a forwarding information base in a content centric network
US10069729B2 (en) 2016-08-08 2018-09-04 Cisco Technology, Inc. System and method for throttling traffic based on a forwarding information base in a content centric network
US10033642B2 (en) 2016-09-19 2018-07-24 Cisco Technology, Inc. System and method for making optimal routing decisions based on device-specific parameters in a content centric network
US10212248B2 (en) 2016-10-03 2019-02-19 Cisco Technology, Inc. Cache management on high availability routers in a content centric network
US10447805B2 (en) 2016-10-10 2019-10-15 Cisco Technology, Inc. Distributed consensus in a content centric network
US10257122B1 (en) * 2016-10-12 2019-04-09 Barefoot Networks, Inc. Distributing key-value pairs to forwarding elements for caching
US10135948B2 (en) 2016-10-31 2018-11-20 Cisco Technology, Inc. System and method for process migration in a content centric network
US10243851B2 (en) 2016-11-21 2019-03-26 Cisco Technology, Inc. System and method for forwarder connection information in a content centric network
US20180176139A1 (en) * 2016-12-15 2018-06-21 Arbor Networks Correlating discarded network traffic with network policy events through augmented flow
US10545914B2 (en) 2017-01-17 2020-01-28 Cisco Technology, Inc. Distributed object storage
US10243823B1 (en) 2017-02-24 2019-03-26 Cisco Technology, Inc. Techniques for using frame deep loopback capabilities for extended link diagnostics in fibre channel storage area networks
US10254991B2 (en) 2017-03-06 2019-04-09 Cisco Technology, Inc. Storage area network based extended I/O metrics computation for deep insight into application performance
US10397116B1 (en) * 2017-05-05 2019-08-27 Amazon Technologies, Inc. Access control based on range-matching
US10303534B2 (en) 2017-07-20 2019-05-28 Cisco Technology, Inc. System and method for self-healing of application centric infrastructure fabric memory
US10404596B2 (en) 2017-10-03 2019-09-03 Cisco Technology, Inc. Dynamic route profile storage in a hardware trie routing table

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1890572A (zh) * 2003-12-05 2007-01-03 朗米·谢尔雅·冈达 支持用于以太网的sdh/sonet aps桥接选择器功能
CN1934534A (zh) * 2004-03-23 2007-03-21 诺基亚公司 具有软件定义的可交换协议体系结构的通用电信节点
US7492763B1 (en) * 2004-07-16 2009-02-17 Applied Micro Circuits Corporation User-specified key creation from attributes independent of encapsulation type
CN102217228A (zh) * 2007-09-26 2011-10-12 Nicira网络公司 管理和保护网络的网络操作系统

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040167857A1 (en) * 1995-12-20 2004-08-26 Nb Networks Systems and methods for prevention of peer-to-peer file sharing
US5793954A (en) 1995-12-20 1998-08-11 Nb Networks System and method for general purpose network analysis
US6651102B2 (en) * 1995-12-20 2003-11-18 Nb Networks Systems and methods for general purpose data modification
US6453360B1 (en) * 1999-03-01 2002-09-17 Sun Microsystems, Inc. High performance network interface
US6970462B1 (en) * 2000-04-24 2005-11-29 Cisco Technology, Inc. Method for high speed packet classification
AT370578T (de) * 2000-06-15 2007-09-15 Ericsson Telefon Ab L M Verfahren und anordnung zur behandlung der informationpakete durch vom nutzer auswählbare relaisknoten
US7526480B2 (en) 2001-06-08 2009-04-28 Cisco Technology, Inc. Method and apparatus for controlled access of requests from virtual private network devices to managed information objects using simple network management protocol and multi-topology routing
JP3875107B2 (ja) * 2002-01-10 2007-01-31 株式会社エヌ・ティ・ティ・ドコモ パケット交換システム、パケット交換方法、ルーティング装置、パケットデータ及びその生成方法
WO2003067843A1 (en) * 2002-02-06 2003-08-14 Wuhan Fiberhome Networks Co., Ltd Resilient multiple service ring
JP3936883B2 (ja) * 2002-04-08 2007-06-27 株式会社日立製作所 フロー検出装置およびフロー検出機能を備えたパケット転送装置
US7236493B1 (en) * 2002-06-13 2007-06-26 Cisco Technology, Inc. Incremental compilation for classification and filtering rules
US7362744B2 (en) * 2002-08-15 2008-04-22 International Business Machines Corporation Database management system and method of using it to transmit packets
US7394809B2 (en) 2003-03-31 2008-07-01 Intel Corporation Method and apparatus for packet classification using a forest of hash tables data structure
US7317723B1 (en) * 2004-02-03 2008-01-08 Cisco Technology, Inc. Action based termination of multidimensional lookup
US7746793B2 (en) 2004-06-18 2010-06-29 Cisco Technology, Inc. Consistency between MPLS forwarding and control planes
US7583593B2 (en) 2004-12-01 2009-09-01 Cisco Technology, Inc. System and methods for detecting network failure
KR100700717B1 (ko) 2004-12-22 2007-03-27 한국전자통신연구원 컨텐트 구분에 의한 전송시스템의 클러스터링 장치 및 방법
US7447167B2 (en) 2005-03-28 2008-11-04 Cisco Technology, Inc. Method and apparatus for the creation and maintenance of a self-adjusting repository of service level diagnostics test points for network based VPNs
US7408941B2 (en) 2005-06-14 2008-08-05 Cisco Technology, Inc. Method for auto-routing of multi-hop pseudowires
US7599303B2 (en) 2005-07-26 2009-10-06 Cisco Technology, Inc. System and methods for sending trace messages
KR100684326B1 (ko) 2005-11-22 2007-02-12 삼성전자주식회사 휴대 인터넷 시스템에서 ip 패킷의 서비스 품질을분류하기 위한 장치 및 방법
US7912934B1 (en) 2006-01-09 2011-03-22 Cisco Technology, Inc. Methods and apparatus for scheduling network probes
US7839847B2 (en) 2006-05-08 2010-11-23 Cisco Technology, Inc. Methods and apparatus providing VPN traffic matrix construction
US7782790B1 (en) 2006-06-16 2010-08-24 Cisco Technology, Inc. Extensions to the path verification protocol to support link bundling constructs
US7782859B2 (en) * 2007-05-07 2010-08-24 Cisco Technology, Inc. Enhanced packet classification
US7808919B2 (en) 2008-03-18 2010-10-05 Cisco Technology, Inc. Network monitoring using a proxy
US20090259577A1 (en) * 2008-04-10 2009-10-15 Cisco Technology, Inc. Providing Billing Instructions Associated With a New Protocol in a Network Environment
US8369325B2 (en) * 2009-06-30 2013-02-05 Oracle America, Inc. Method and apparatus for packet classification and spreading in a virtualized system
US20120275466A1 (en) 2010-10-21 2012-11-01 Texas Instruments Incorporated System and method for classifying packets
US9001827B2 (en) * 2010-12-17 2015-04-07 Big Switch Networks, Inc. Methods for configuring network switches

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1890572A (zh) * 2003-12-05 2007-01-03 朗米·谢尔雅·冈达 支持用于以太网的sdh/sonet aps桥接选择器功能
CN1934534A (zh) * 2004-03-23 2007-03-21 诺基亚公司 具有软件定义的可交换协议体系结构的通用电信节点
US7492763B1 (en) * 2004-07-16 2009-02-17 Applied Micro Circuits Corporation User-specified key creation from attributes independent of encapsulation type
CN102217228A (zh) * 2007-09-26 2011-10-12 Nicira网络公司 管理和保护网络的网络操作系统

Also Published As

Publication number Publication date
US9077668B2 (en) 2015-07-07
US8718064B2 (en) 2014-05-06
EP2795873A1 (en) 2014-10-29
WO2013093858A1 (en) 2013-06-27
US20140204948A1 (en) 2014-07-24
EP2795873B1 (en) 2015-09-23
US20130163426A1 (en) 2013-06-27
CN103999430A (zh) 2014-08-20

Similar Documents

Publication Publication Date Title
CN106209490B (zh) 选择和监控多个服务关键性能指标的方法和系统
Bianchi et al. OpenState: programming platform-independent stateful openflow applications inside the switch
EP2961100A1 (en) Graph database for services planning and configuration in network services domain
Jin et al. Covisor: A compositional hypervisor for software-defined networks
US9438512B2 (en) Stacking metadata contexts for service chains
JP5864758B2 (ja) バーチャルスイッチを介してネットワークトラフィックをコントロールするシステム及び方法
Chiesa et al. Traffic engineering with equal-cost-multipath: An algorithmic perspective
US9401844B2 (en) Methods and apparatus to dynamically control connectivity within virtual private networks
CN103546451B (zh) 用于管理覆盖网络中的流量的系统和方法
CN105765926B (zh) 可配置的服务代理映射方法、装置及存储介质
CN105706401B (zh) 具有跨硬件模块的基于表管理的分层路由方法及系统
EP2854347B1 (en) Session-aware service chaining within computer networks
CN105306333B (zh) 用于跨越多个网络进行服务链接的方法和控制器
CN105103492B (zh) 控制网络拓扑
US20180131616A1 (en) Tactical traffic engineering based on segment routing policies
CN104333511B (zh) 确定业务传输路径的方法、装置及系统
EP3300320B1 (en) Packet prioritization in a software-defined network implementing openflow
CN102238083B (zh) 用于适配分组处理流水线的系统和方法
Quinn et al. Service function chaining: Creating a service plane via network service headers
CN106170952B (zh) 用于在数据网络中部署最大冗余树的方法和系统
CN102792646B (zh) 通信系统、控制装置、通信方法
Qazi et al. SIMPLE-fying middlebox policy enforcement using SDN
CN105051688B (zh) 经扩展的标记联网
EP2544417B1 (en) Communication system, path control apparatus, packet forwarding apparatus and path control method
CN103119901B (zh) 通信系统、控制装置、分组处理操作设置方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant