CN112585915A - 控制网络系统中数据传输的装置和方法 - Google Patents
控制网络系统中数据传输的装置和方法 Download PDFInfo
- Publication number
- CN112585915A CN112585915A CN201980013700.5A CN201980013700A CN112585915A CN 112585915 A CN112585915 A CN 112585915A CN 201980013700 A CN201980013700 A CN 201980013700A CN 112585915 A CN112585915 A CN 112585915A
- Authority
- CN
- China
- Prior art keywords
- layer
- programmable chip
- network
- pipeline
- service
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供了一种用于控制网络系统中的数据传输的装置。该装置包括配置为在网络系统中转发数据的可编程芯片,配置为存储指令集的一个或更多个存储设备以及配置为执行该指令集以使所述装置执行以下步骤的一个或更多个处理器:经由第一接口控制所述可编程芯片在数据链路层或网络层提供交换功能;并通过第二接口控制可编程芯片以提供第4层到第7层网络服务。
Description
技术领域
本公开涉及网络系统,尤其涉及用于控制网络系统中的数据传输的装置和方法。
背景技术
在云计算技术中,提供了多种类型的云计算服务,包括基础设施即服务(IaaS)、软件即服务(SaaS)和/或平台即服务(PaaS)。用户可以通过分组交换网络访问数据中心中由应用程序服务提供商托管的基于云的应用程序,而分组交换网络是数据通信基础结构的骨干。
然而,在传统架构中,网络中数据包的交换和转发通常是通过固定功能交换机来实现的。交换机的功能和能力由交换机供应商而非网络运营商决定。因此,这些交换机在响应运营商不断变化的要求方面提供了有限的灵活性。另外,软件开发受到供应商支持的特定协议格式的限制,这会导致跨不同硬件平台开发软件的大量投资和成本。
发明内容
本公开提供一种用于控制网络系统中的数据传输的装置。该装置包括配置为在网络系统中转发数据的可编程芯片,配置为存储指令集的一个或更多个存储设备以及配置为执行所述指令集以使所述装置执行如下步骤的一个或更多个处理器:通过第一接口控制可编程芯片在数据链路层或网络层提供交换功能;和通过第二接口控制可编程芯片以提供第4层到第7层网络服务。
本公开提供一种用于控制网络系统中的数据传输的方法。该方法包括:通过第一接口控制可编程芯片以在数据链路层或网络层提供交换功能;以及通过第二接口控制所述可编程芯片以提供第4层到第7层网络服务。
本公开提供了一种非暂时性计算机可读介质,其存储有指令集,所述指令集可由装置的一个或更多个处理器执行以使该装置执行用于控制网络系统中的数据传输的方法,所述用于控制网络系统中数据传输的方法包括:通过第一接口控制可编程芯片以在数据链路层或网络层提供交换功能;以及通过第二接口控制所述可编程芯片以提供第4层到第7层网络服务。
本公开提供了一种控制器。该控制器包括一个或更多个存储设备,其被配置为存储指令集,以及一个或更多个处理器,其被配置为执行该指令集,以使该控制器:通过第一接口控制可编程芯片以在数据链路层或网络层提供交换功能:并通过第二接口控制所述可编程芯片以提供第4层到第7层网络服务。
附图说明
在以下详细描述和附图中示出了本公开的实施例和各个方面。图中所示的各种特征未按比例绘制。
图1是示出了与本公开的实施例一致的示例性网络系统的示意图。
图2是示出与本公开的实施例一致的图1所示的网络系统的示例性网络架构的示意图。
图3是示出与本公开的实施例一致的在网络设备中运行的示例性主机系统的示意图。
图4是示与本公开的实施例一致的图3的网络设备中的用于处理数据包的示例性数据流的示意图。
图5是示出了与本公开的实施例一致的将服务运行时应用程序编程接口(API)加载到主机系统中以及将二进制代码加载到程序可编程芯片的示意图。
图6是示出与本公开的实施例一致的示例性可编程芯片的示意图。
图7A是示出与本公开的实施例一致的流水线中的示例性数据包处理的示意图。
图7B是示出与本公开的实施例一致的流水线中的示例性数据包处理的示意图。
图8是示出了与本公开的实施例一致的示例性数据包处理和通过程序可编程芯片中的流水线转发的示意图。
图9是与本公开的实施例一致的用于控制网络系统中的数据传输的示例性方法的流程图。
具体实施方式
以下描述参考附图,其中除非另外表示,否则不同附图中的相同数字表示相同或相似的元件。在示例性实施例的以下描述中阐述的实施方式并不代表与本公开一致的所有实施方式。相反,它们仅仅是与如所附权利要求中所述的与本公开相关的方面一致的装置和方法的示例。
本公开的实施例通过提供用于网络系统中的控制数据传输的装置和方法来缓解上述问题。在各种实施例中,根据服务模型生成诸如服务运行时应用程序编程接口(API)之类的接口以及用于对可编程芯片进行编程的服务代码。在主机中央处理单元(CPU)的控制下对可编程芯片进行编程以提供开放系统互连(OSI)模型的第2层(即数据链路层)或第3层(即网络层)的交换功能,以及OSI模型的第4层到第7层(即分别是传输层、会话层、表示层和应用层)中的一种或多种网络服务。可编程芯片可以被配置为用于第4层到第7层(L4-L7)网络服务的序列化流水线和用于第2层或第3层(L2或L3)交换功能的流水线。
在运行于主机CPU中的主机系统中,与L2或L3交换功能关联的应用程序通过构建在与服务运行时API不同的接口(例如硬件抽象层(例如,交换机抽象接口))上的网络操作系统与可编程芯片进行通信。与L4-L7网络服务相关的应用程序通过根据描述L4-L7的一个或更多个网络服务的服务模型生成的服务运行时API与可编程芯片进行通信。
因此,本公开的实施例可以克服当前交换技术的缺点。利用各种实施例中公开的装置和方法,可以在可编程芯片中执行L4-L7网络服务,而不会干扰固定交换功能。因此,包括内容传递网络(CDN)和边缘计算在内的各种网络系统都可以从此组合框架中受益。
请参考图,图1是示出了与本公开的实施例一致的示例性网络系统100的示意图。网络系统100可以是数据中心、边缘计算系统或云计算系统的网络。如图1所示,网络系统100可以包括布置在多个机架中的多个服务器,例如,机架R1-R6(即,R1、R2、...和R6)。机架R1-R6中的服务器分别连接到架顶式交换机SW11-SW16(即,SW11、SW12、...和SW16)。在一些实施例中,网络系统100可以应用叶-骨干架构,其中架顶式交换机SW11-SW16是叶交换机,并且完全网状连接到骨干交换机SW21-SW23(即,SW21、SW22和SW23)。要注意的是,图1所示的网络拓扑仅是示例,并不意味着限制本公开。在各种实施例中,可以在网络系统100中应用不同的架构或拓扑以在数据中心中构建服务器网络,以便在服务器之间传输数据并执行各种应用,例如流量统计、工作负载分析、调度、负载平衡、防火墙、和/或其他安全服务。
请参考图2。图2是示出与本公开的实施例一致的网络系统100的示例性网络架构200的示意图。图1的网络系统100中所示的架顶式交换机SW11-SW16和骨干交换机SW21-SW23的交换功能可以通过部署多个网络设备300来实现。网络设备300是用于网络系统100中控制数据传输的设备。每个网络设备300可以包括控制器310,该控制器310包括主机CPU312和主机存储器314、网络接口控制器(NIC)320、可编程芯片330和多个用于流量进出的端口340。主机存储器314在控制平面210中连接到主机CPU 312并与之关联。可编程芯片330在数据平面220中,也称为转发平面,并且被配置为在网络系统100中转发数据。
控制平面210可以通过生成一个或更多个匹配表来确定数据流量中数据包的目的地,该表包括用于数据包的交换/路由信息。也就是说,一个或更多个匹配表包含用于标识应将数据包发送到何处的信息。可以将一个或更多个匹配表向下传递到数据平面220中的可编程芯片330。因此,数据平面220可以沿着根据匹配表确定的路径将数据包转发到下一跳,分别到选定的目的地。控制平面210还可以更新或删除存储在可编程芯片330中的一个或更多个匹配表,以便生成数据流量的新策略。
主机存储器314包括一个或更多个存储设备,所述存储设备被配置为存储一组指令。主机CPU 312包括一个或更多个处理器,所述处理器被配置为执行存储在主机存储器314中的指令集,以使网络设备300执行用于控制网络系统100中的数据传输的操作。作为控制平面210和数据平面220之间的接口层NIC320的被配置为提供在可编程芯片330和主机CPU 312之间传输数据的通道。在一些实施例中,数据还可以经由其他适当的接口,例如外围组件高速互连(PCI-E)接口,在可编程芯片330和主机CPU 312之间传输。
可编程芯片330,也称为开关硅,可以是可编程专用集成电路(可编程ASIC)或现场可编程门阵列(FPGA)。端口340中的每一个都连接到可编程芯片330中的多个流水线之一,从而可以在有或没有主机CPU 312的帮助下,由可编程芯片330处理和转发在网络中传输的数据包。在一些实施例中,端口340可以以不同的速度运行,例如100GbE、50GbE、40GbE、25GbE、10GbE或任何其他可能的值。
例如,当经由端口340之一将进入的数据包发送到网络设备300时,可以首先由可编程芯片330处理进入的数据包。如果在匹配表中存在用于进入的数据包的匹配路由,则可编程芯片330可以根据该匹配路由将进入的数据包直接转发到下一跳。可以在相对短的时间内执行上述过程,因此,数据平面220也可以称为快速路径。如果在匹配表中找不到匹配的路由,则可以将进入的数据包视为新路由的第一个数据包。在这种情况下,进入的数据包将通过NIC 320发送到主机CPU 312进行进一步处理。即,在一些实施例中,仅当在数据平面220中缺少用于进入的数据包的匹配路由时,才可以调用控制平面210。如上所述,主机CPU312然后可以确定应当将数据包发送至何处,并使可编程芯片330相应地更新匹配表。例如,主机CPU 312可以指示可编程芯片330将新路由信息添加到匹配表。可替代的,主机CPU 312可以生成包括新路由的信息的新匹配表,并将所述新表向下传递给可编程芯片330。因此,该流路由中的后续数据包可以由可编程芯片330基于更新的匹配表处理。与数据平面220的过程相比,控制平面210的上述过程通常花费更多的时间,因此控制平面210有时被称为慢速路径。为了易于理解,下面将结合附图进一步详细讨论可编程芯片330的详细操作。
在一些实施例中,网络设备300可以包括其他组件以支持网络设备300的操作。例如,网络设备300可以包括基板管理控制器(BMC),包括一个或更多个配置为冷却网络设备300的风扇模块的风扇板,用于提供网络设备300所需功率的功率转换器模块以及一个或更多个总线接口以连接网络设备300中的组件。例如,经由集成电路间总线(I2C总线)可以将BMC、风扇板和功率转换器模块连接到主机CPU 312。
请参考图3,图3是示出与本公开的实施例一致的在网络设备300中运行的示例性主机系统400的示意图。主机系统400中的模块和组件可以是存储在主机存储器314中的一个或更多个存储设备中并且由主机CPU 312中的一个或更多个硬件处理器执行的软件代码,以提供相应的功能或环境。如图3所示,主机系统400可以包括用户空间410和内核空间420。用户空间410运行对主机系统400提供的资源具有有限访问权限的进程。例如,主机系统400可以被配置为提供各种云计算服务和进程可以在用户空间410中建立以向云服务的用户提供计算。更具体地,可以在用户空间410中部署命令行接口(CLI)411、一个或更多个应用程序412、一个或更多个应用程序413、交换机抽象接口(SAI)414、服务运行时API 415、软件开发环境(SDE)、用户空间输入/输出用户空间驱动器(UIO用户空间驱动器)417中的一个或更多个。
主机系统400被配置为从操作和维护(O&M)平台500接收命令。O&M平台500可以提供各种软件工具,包括管理模块510,提供用于监视、报告和报警的工具的监视和报告模块520,以及数据分析模块530。因此,操作员可以通过O&M平台500管理和监视云服务(例如软件即服务(SaaS)应用程序)。主机系统400可以通过命令行接口(CLI)411使用表示状态转移(REST)架构样式API(例如RESTful API)与O&M平台500进行通信,并相应地执行各种任务,例如在主机系统400中安装或更新配置文件以及安装或更新一个或更多个数据库。
应用程序412被配置为提供L2或L3交换功能,并且应用程序413被配置为提供L4-L7的一个或更多个网络服务。更具体地,在建立在诸如交换机抽象接口(SAI)414的第一接口上的网络操作系统(NOS)上运行的应用程序412可以控制可编程芯片330以提供固定的交换功能。SAI 414是硬件抽象层,并且定义了标准化的API以向从不同的网络硬件供应商提供的各种可编程芯片330提供一致的编程接口。也就是说,在NOS上运行的一个或更多个应用程序412与可编程芯片330解耦,因此能够支持由不同可编程芯片供应商提供的多个硬件平台。因此,SAI 414使运营商可以利用芯片、CPU、功率、端口密度、光学和速度方面的快速发展,同时保留他们对跨多个平台的统一软件解决方案的投资。
例如,用于云中开放网络软件(SONiC)的开放源NOS是可以在SAI 414上构建的平台。SAI 414允许不同的ASIC或FPGA通过其自己的内部实现来运行SONiC。SONiC可以提供各种基于docker的服务来管理和控制数据包处理,并支持网络应用程序和协议,例如链路层发现协议(LLDP)、简单网络管理协议(SNMP)、链路聚合组(LAG)、边界网关协议(BGP)、动态主机配置协议(DHCP)、Internet协议版本6(IPv6)等。
在一些实施例中,NOS还可以支持用于网络设备300中所需的硬件传感器或其他设备专用硬件的驱动器。这些硬件传感器可以用于监视温度、风扇速度、电压等,以在相应的阈值生成警报来警告网络设备300的异常运行状态。构建在SAI 414上的一个或更多个应用412、SAI 414和SONiC可以提供对可编程芯片330中的固定交换功能的管理和控制,还可以提供用于运营商的工具和环境,以通过O&M平台操作和维护网络系统100。
此外,主机系统400还可以运行提供其他扩展网络功能的应用程序413。例如,尽管一个或更多个应用程序412在OSI模型的L2或L3处提供交换功能,但是一个或更多个应用程序413可在OSI模型的L4-L7中提供一种或多种网络服务,例如负载均衡器、包括防火墙、统一资源定位器(URL)过滤、分布式拒绝服务(DDoS)攻击保护或可在数据中心、边缘计算系统或云计算系统中使用的其他网络服务的安全功能。一个或更多个应用程序413可以使用诸如加载在用户空间410中的服务运行时API 415之类的第二接口访问、操纵和响应主机CPU312中或可编程芯片330中的数据。一个或更多个应用程序413和服务运行时API 415提供高性能的环境,以在主机CPU 312或可编程芯片330中运行自行开发的L4-L7网络功能。
在一些实施例中,SDE 416包括ASIC SDE或FPGA SDE以支持可编程芯片330。SDE416为开发人员提供工具,例如编译器、模型、应用程序、抽象API、调试和可视性工具、驱动器等,以建立高效和可扩展的网络系统。SDE 416可用于简化与网络操作系统集成的应用程序412、413的开发、调试和优化。
主机系统400的内核空间420可以以“内核模式”运行代码。这些代码也可以称为“内核”,它是主机系统400的内核部分。内核接口421、内核网络堆栈422、用户空间输入/输出内核驱动器(UIO内核驱动器)423和内核驱动器424可以部署在内核空间420中。
在一些实施例中,内核接口421包括用于处理用户空间410和内核空间420之间的通信的系统调用接口。内核网络堆栈422包括用于交换和路由操作的传输控制协议/因特网协议栈(TCP/IP栈)。UIO内核空间驱动器423被配置为设置UIO框架并作为在用户空间410中部署的UIO用户空间驱动器417下的一层运行。由于可以在UIO用户空间驱动器417中完成某些任务,因此可以提供该UIO框架来提高网络性能。由于UIO框架中不需要系统调用,因此设备访问效率很高。因此,可以通过内核空间420中的这些组件来处理经由NIC 320在主机系统400和可编程芯片330之间的通信任务。例如,内核空间420中的内核驱动器424可以通过NIC 320或其它连接主机CPU 312和可编程芯片330的接口将数据(例如,由用户空间410中的应用程序412、413生成的配置信息)写入可编程芯片330。
各种形式的介质可涉及将一个或更多个指令的一个或更多个序列传送给处理器以执行。例如,这些指令最初可以在远程计算机的磁盘或固态驱动器上执行。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线传送这些指令。网络设备300本地的调制解调器可以接收在电话线上的数据,并使用红外发射器将数据转换为红外信号。红外探测器可以接收红外信号中携带的数据,适当的电路可以将数据放置在总线上,所述总线将数据携带到存储设备中的主存储器中,处理器从所述主存储器中检索并执行所述指令。
为了进一步理解主机系统400中的操作,请参考图4,其为与公开的实施例一致的网络设备300中用于处理数据包的数据流示意图。如图4所示,对于由应用程序412提供的交换功能,可以处理由应用程序412生成的配置信息(例如,匹配表),并通过交换机抽象接口414将其加载到可编程芯片330中,从而使得可编程芯片330可以适当地处理和转发所述数据包。另一方面,对于由应用程序413提供的扩展的网络服务,可以处理由应用程序413生成的配置信息(例如,匹配表),并通过加载的服务运行时API 415将其加载到可编程芯片330中,从而使可编程芯片330可以适当地处理和转发目标数据包以执行一个或更多个扩展的网络服务。
例如,一个或更多个扩展网络服务可以包括在OSI模型的第四层负载均衡器。所述负载均衡器收到连接请求后,从一组候选对象(例如,前端服务器Server1、Server2、...和Server N)中选择目标(例如,前端服务器Server2),并打开一个到所选目标的连接以转发数据包。因此,可以将传入流量分布在多个目标服务器上,从而增加了应用程序的可用性。
图5是示出与本公开的实施例一致的将服务运行时API 415加载到主机系统400中以及将二进制代码加载到程序可编程芯片330中以执行上述网络服务的过程的示意图。如图5所示,可以在服务模型510中描述扩展网络服务。服务模型510指定扩展网络服务和挂钩的功能,其中应当使用服务模型语言在可编程芯片330中执行每个功能。
服务模型编译器520被配置为加载服务模型510并根据服务模型510生成服务运行时API 530和服务代码540。更具体地说,服务模型编译器520可以识别可编程芯片330,并编译服务模型510以响应于可编程芯片330的标识来生成服务运行时API 530和服务代码540。可替代地说明,所生成的服务运行时API 530和服务代码540是平台相关的并且对应于可编程芯片330,以便支持该可编程芯片330的平台和硬件。在一些实施例中,服务模型编译器520可以生成不同编程语言的相应服务代码540以支持不同硬件平台。例如,服务代码540可以用领域特定的语言编写,例如编程协议独立数据包处理器(P4)语言,该语言包括围绕网络数据转发优化的许多构造。因此,开发人员可以使用服务模型描述语言来定义和开发扩展网络服务,以提供服务模型540,并且服务模型编译器520可以为从多供应商提供的可编程芯片330生成不同的服务运行时API 530和服务代码540。
平台相关的服务代码540与用于固定交换功能(例如第2层或第3层交换)的固定功能代码550一起被输入编译器560。固定功能代码550可以用与服务代码540相同的编程语言编写。因此,平台相关的编译器560(例如P4编译器)能够使用固定功能代码550编译服务代码540,并根据服务代码540和固定功能代码550生成可执行代码570。
在一些实施例中,可执行代码570可以是要加载到网络设备300中的目标特定配置二进制代码。因此,可以使用根据服务代码540和固定功能代码550编译的可执行代码570来对可编程芯片330进行编程,以在主机系统400的控制下提供固定的交换功能和一个或更多个扩展网络服务。因此,主机系统400可以经由交换抽象接口412控制可编程芯片330以在OSI模型的数据链路层(例如,第2层)或网络层(即,第3层)提供交换功能,并通过服务运行时API 414控制可编程芯片330,以在OSI模型的L4-L7中提供一个或更多个网络服务。
请参考图6,其为与本公开的实施例一致的示例性可编程芯片330的示意图。在一些实施例中,可编程芯片330包括一个或更多个流水线(例如,流水线331、332、333、334)和具有共享包缓冲器的流量管理器335。流水线331、332、333、334中的每个流水线都由流量进入或流出的多个端口共享。在一些实施例中,共享包缓冲器可以在可编程芯片330中的流水线331、332、333、334的端口之间动态共享。流水线331、332、333、334包括接收媒体访问控制(接收MAC)R11、R12、R21、R22,入口流水线IN11、IN12、IN21、IN22,发送媒体访问控制(发送MAC)T11、T12、T21、T22和出口流水线E11、E12、E21、E22。
到达接收MAC R11、R12、R21,R22的数据包由相应的入口流水线IN11、IN12、IN21、IN22处理,然后排队在连接入口和出口端口的共享数据包缓冲区中。在被调度传输时,数据包通过出口流水线E11、E12、E2、E22传递到传输MAC T11、T12、T21、T22。
在一些实施例中,流水线331、332中的每一个具有被配置为从网络设备300的对应端口340接收数据的入口端口,以及被配置为将数据转发到网络设备300的对应端口340的出口端口。另一方面,流水线333、334中的每个具有入口端口和出口端口,其中入口端口被配置为从相应的出口端口接收数据。即,流水线333、334形成内部环回而不暴露于网络设备300的端口340,并且数据包从出口流水线E21、E22再循环到对应的入口流线IN21、IN22。
图7A和图7B是示出与本公开的实施例一致的流水线700中的示例性数据包处理的示意图。图6中所示的入口流水线IN11、IN12、IN21、IN22和出口流水线E11、E12、E21、E22中的任何一个都可以具有与流水线700相同或相似的组件。流水线700包括仲裁器710、逆解析器(deparser)720、匹配动作流水线730、解析器740和队列模块750。
请参照图7A,在一些实施例中,仲裁器710基于输入通道的优先级从挂起的数据包中选择数据包,并将选定的数据包发送到解析器720。可以从端口340,经由NIC 320从主机CPU 312接收数据包,或者从出口流水线(例如,出口流水线E21,E22)中的一个再循环该数据包。解析器720被配置为分析进入的数据包并且将数据包映射到称为数据包报头向量(PHV)PHV1的相应的字段集合,所述字段沿着流水线700携带报头和元数据。可选地,解析器720通过以下方式将数据包报头与数据包有效载荷PL1分开:提取数据包报头的不同字段,并将这些字段存储在PHV PHV1中。
在一些实施例中,PHV PHV1包括一组不同大小的寄存器或容器。例如,PHV PHV1可以包括六十四个8位寄存器,九十六个16位寄存器和六十四个32位寄存器(总共224个包含4096位的寄存器),但是本公开不限于此。在各种实施例中,PHV PHV1可以具有任何不同数量的不同大小的寄存器。解析器720可以将每个提取的数据包报头存储在PHV PHV1的一个或更多个寄存器的特定子集中。例如,解析器可以将第一报头字段存储在一个16位寄存器中,并将第二报头字段存储在8位寄存器和32位寄存器的组合中,如果第二个报头字段长度(例如为40位)超过单个寄存器的长度。
然后,PHV PHV1通过匹配动作流水线730。如图7B所示,在一些实施例中,匹配动作流水线730可以包括一组MAU 731、732、733、734。MAU 731、732、733、734的每个都包含用于做出转发和数据包重写决定的匹配表。应当注意,为了易于描述,简化了图示的匹配动作流水线730。在一些实施例中,匹配动作流水线730可以包括任何数量的匹配动作阶段。例如,在匹配动作流水线730中可以包括32个MAU。
请继续参照图7B,在一些实施例中,MAU 731、732、733、734中的任何一个包括一个或更多个被配置为保持匹配表的存储单元M1-Mn,以及一个或更多个被配置为从存储单元读取数据的算术逻辑单元(ALU)A1-An,也被称为作为动作单元。例如,存储单元M1-Mn可以是专用的静态随机存取存储器(SRAM)和/或三态内容可寻址存储器(TCAM)。因此,MAU 731、732、733、734可以被配置为针对匹配表来匹配报头字段的特定集合,并基于匹配结果来采取动作。例如,可能的动作可以是将数据包分配给输出端口和队列、丢弃数据包,修改报头字段中的一个或更多个等。在一些实施例中,存储器单元M1-Mn可以布置在行和列的网格中,其中水平和垂直路由资源将存储单元M1-Mn连接到ALU A1-An,以便执行匹配和操作操作。
请继续7B所示,当PHV通过MAU 731、732、733、734时,从数据包字段的集合中提取密钥,并且来自一个匹配表的流水线状态也可以用作另一个匹配表的密钥。在一些实施例中,MAU 731、732、733、734中的任何一个可以包含多个匹配表以执行多个并行查找以确定动作,并且可以将来自活动表的动作组合在动作引擎中。
请参考图7A,基于在匹配动作流水线730中的不同阶段期间对不同的报头数据采取的动作,匹配动作流水线730可以输出包括与从解析器720接收的PHV(即,PHV1)相同的报头数据的PHV PHV2,或者输出包括与从解析器720接收的PHV(即,PHV1)不同的数据的修改的PHV(即,PHV2)。在经过匹配动作流水线730之后,输出的PHV PHV2被传递给逆解析器740。逆解析器740被配置为接收从匹配动作流水线730输出的PHV PHV2,并通过将输出的PHVPHV2和从解析器720接收的数据包的有效载荷PL1一起放回来重新组合修改的数据包。逆解析器740然后经由队列模块750将数据包发送到流水线700之外。
取决于激活的操作和流水线的类型,数据包可以被发送到共享数据包缓冲器中进行排队,并由流量管理器335进行管理以进行传输,可以经由NIC 320从可编程芯片330发送到主机CPU 312或到相应的端口340,再循环到入口流水线之一(例如入口流水线IN21,IN22)或丢弃。
因此,由流水线700输出的数据包可以是与具有相同报头的相应输入数据包相同的数据包,或基于应用于流水线700中的报头的动作,与输入数据包相比可以具有不同的报头。例如,对于某些标头字段,输出数据包可能具有不同的报头字段值,和/或不同的报头字段的集合。
应当注意,可编程芯片330中的所示组件仅是示例性的。为了易于描述,简化了流量管理器335(图6)和流水线700(图7A和图7B)。例如,在一些实施例中,输入数据包被许多不同的输入通道(例如64个通道)接收,并且输出数据包从不同的输出通道(例如64个通道)发送到可编程芯片330之外。另外,在一些实施例中,可以在流水线700中采用许多解析器块(例如,16个解析器块)以提供给匹配动作流水线730。
图8是示出了与本公开的实施例一致的由程序可编程芯片330执行以通过流水线331、332、333、334处理和转发示例性数据包的过程的示意图。例如,流水线331、332、333、334可以由可编程芯片330通过使用平台相关的编译器560生成的可执行代码570来配置。在一些实施例中,分配给网络设备300的端口340的流水线331、332可以被配置为通过在流水线331、332中配置MAU以执行L2和L3操作,以在数据链路层或网络层提供交换功能。另一方面,形成内部环回的流水线333、334可以被配置为通过配置流水线333、334中的MAU以执行用于执行L4-L7操作的自定义代码来提供服务模型510中所描述的L4-L7网络服务。
更具体地,服务模型510可以定义L4-L7网络服务应处理哪些数据包,以及应将数据包转发到哪些流水线以进行处理。因此,目标数据包在被调度到流水线331、332中的出口流水线E11,E12之前,被循环到额外的阶段(例如流水线333、334中的出口流水线E21、E22和入口流水线IN21、IN22)。
图8中的数据包是在没有扩展网络服务的情况下由交换功能处理的数据包。如图所示,可编程芯片330从网络设备300的端口340的对应输入端口接收数据包P1,并且经由对应的接收MAC(例如,MAC R11之一)将数据包P1传递到对应的入口流水线(例如,入口流水线IN 11)。然后,可编程芯片330处理流水线311中的数据包P1,并确定数据包P1是否是由使用MAU的L4-L7网络服务处理的目标。然后将处理后的数据包P1传递到流量管理器335。响应于确定数据包P1是没有L4-L7网络服务的要处理的数据包,流量管理器335经由相应的出口流水线(例如,出口流水线E12)和相应的传输MAC(例如,MAC T12中的一个)将处理后的数据包P1'转发至网络设备300的端口340的输出端口。因此,L2或L3处的交换功能可以由流量管理器335和分配给网络设备300的端口340的流水线331、332执行,而无需通过流水线333、334。因此,主机系统400中的应用程序412可以控制可编程芯片330,以经由SAI 414和内核空间420中的组件,通过添加、删除或更新在流水线331、332的MAU 720中相应的匹配表,来提供L2或L3处的交换功能。
另一方面,图8中的数据包P2是要使用扩展网络服务处理的目标数据包。类似于数据包P1,可编程芯片330也从网络设备300的端口340的相应输入端口接收数据包P2,并在流水线311中处理数据包P2,并确定数据包P2是否是使用MAU的L4-L7网络服务处理的目标。响应于确定数据包P2是将由L4-L7网络服务处理的目标,流量管理器335将处理后的数据包P2'转发到具有内部环回的对应流水线(例如,流水线333)以执行期望的L4-L7网络服务。更具体地,数据包P2'首先通过相应的出口流水线(例如,出口流水线E21),然后经由再循环路径循环回到同一流水线333中的相应的入口流水线(例如,入口流水线IN21)。因此,可编程芯片330处理流水线333中的数据包P2'以用于L4-L7网络服务,例如负载均衡器。在流水线333中处理了数据包P2'之后,可编程芯片330再次将进一步处理的数据包P2”从流水线333转发到流水线332,然后经由相应的出口流水线(例如,出口流水线E12)和相应的发送MAC(例如,MAC T12之一)将已处理的数据包P2”转发到网络设备300的端口340的相应输出端口。
相应地,主机系统400中的应用程序413可以经由加载在用户空间410中的服务运行时API 415和内核空间420中的组件,通过添加、删除或更新流水线333、334中的MAU 720中的相应匹配表,来控制可编程芯片330以提供L4-L7网络服务。因此,在调度目标数据包分别到流水线331、332中的流水线E11E12出口之前,可以通过在流水线333、334中循环目标数据包而不暴露到网络设备300的端口340来进一步执行L4-L7中的扩展网络服务。
在各个实施例中,可以通过对可编程芯片330进行编程并更新在流水线333、334中使用的匹配表来将具有内部环回的流水线333、334配置为用于不同需要的网络服务。例如,在一些实施例中,对可编程芯片330进行编程以在服务运行时API 415的控制下执行负载平衡,以在网络系统中的多个服务器之间共享流量。
另外,还可以对可编程芯片330进行编程以在服务运行时API 415的控制下执行安全应用程序。例如,安全应用程序可以包括入侵检测系统(IDS)、入侵防御系统(IPS)、分布式拒绝服务(DDoS)攻击保护、URL过滤、Web应用程序防火墙(WAF)或其的任意组合。
此外,还可以对可编程芯片330进行编程,以在服务运行时API 415的控制下在L4-L7中执行网关应用程序。网关应用程序可以包括虚拟私有云网关(XGW)、网络地址转换(NAT)网关、虚拟专用网络(VPN)网关、公共网络网关、网关线路、路由或其任意组合。在一些实施例中,可编程芯片330可以被编程以利用单个流水线或多个流水线同时执行两个或更多个L4-L7网络服务。要注意的是,尽管以上提到了各种L4-L7网络服务作为示例,但是本公开不限于此。本领域技术人员可以使用服务模型描述语言来定义和开发各种应用程序,以提供用于生成服务运行时API和对可编程芯片330进行编程的对应服务模型。
在一些实施例中,当在流水线331、332中的入口流水线IN11、IN12中处理数据包时,可以通过各种特性来确定数据包是否是由L4-L7网络服务处理的目标。例如,对于一负载均衡器,可以将具有属于虚拟服务IP(VIP)之一的目标IP的数据包定义为负载均衡器要处理的目标。因此,流量管理器335可以将所述目标转发到相应的流水线以执行负载均衡功能。
鉴于上述情况,流水线331、332中的入口流水线IN11、IN12和出口流水线E11、E12在L2或L3处提供交换功能,而流水线333、334中的入口流水线IN21、IN22和出口流水线E21、E22在交换流水线的服务链中的L4-L7中提供扩展网络服务。通过对流水线331、332和流水线333、334进行序列化,这种折叠的流水线结构提供了可用于定制服务的附加阶段资源,并在可编程芯片330中节省了流水线资源。此外,由于NIC 320提供了高带宽通道以允许主机CPU 312处理流量,主机CPU 312可用于处理需要复杂的控制逻辑的L4-L7流量。由于用于在L4-L7中提供扩展网络服务的平台相关代码已被钩在(hook)上述流水线框架,可以避免固定交换功能和扩展网络服务之间的干扰。
图9是与本公开的实施例一致的用于在网络系统100中控制数据传输的示例性方法900的流程图。例如,方法900可以由网络设备(例如,图2中具有主机CPU 312和可编程芯片330的网络设备300)执行或实现。如图9所示,在一些实施例中,方法900包括步骤910-940,将在以下段落中讨论。
在步骤910中,服务模型编译器(例如,图5中的服务模型编译器520)生成服务运行时API(例如,图5中的服务运行时API 530)作为第二接口,并根据服务模型(例如,图5中的服务模型510)生成服务代码(例如,图5中的服务代码540)。在一些实施例中,步骤910包括识别可编程芯片330,并且响应于可编程芯片330的识别,由服务模型编译器520编译服务模型510以生成服务运行时API 530和服务代码540。每个所生成的服务运行时API 530和服务代码540与平台有关,并且对应于可编程芯片330,以支持可编程芯片330的硬件平台。
在步骤920中,网络设备(例如,图5中的网络设备300)使用根据服务代码生成的可执行代码(例如,图5中的可执行代码570)对可编程芯片(例如,图5中的可编程芯片330)进行编程。例如,在图5所示的实施例中,平台相关的编译器560利用在SAI 414上建立的NOS中提供的固定功能代码550来编译服务代码540,并根据服务代码540和固定功能代码550生成可执行代码570。
更具体地,在步骤920中,通过加载可执行代码,网络设备300可以使用可执行代码来对可编程芯片330进行编程,以将第一流水线(例如,图6和图8中的流水线331、332)配置为在数据链路层或网络层提供交换功能,并配置第二流水线(例如,图6和图8中的流水线333、334)以提供L4-L7网络服务。
在步骤930中,主机系统(例如,图5中的主机系统400)经由第一接口(例如,图5中的SAI 414)控制可编程芯片以在数据链路层或网络层提供交换功能。在一些实施例中,第一接口可以是硬件抽象层。
在步骤940中,主机系统通过第二接口(例如,图5中的服务运行时API 415)控制可编程芯片以提供L4-L7网络服务。在一些实施例中,步骤940包括在第二接口的控制下执行负载均衡以在服务器之间共享流量。在一些实施例中,步骤940包括在第二接口的控制下执行安全应用或网关应用。该安全应用程序可以包括IDS、IPS、DDoS攻击防护、URL过滤、WAF、任何其他网络安全服务或其任意组合。网关应用程序可以包括XGW、NAT网关、VPN网关、公共网络网关、网关线路、路由、任何其他网络网关服务或其任意组合。
更具体地,在步骤930和940中,可编程芯片将数据包从网络设备300的输入端口接收到第一流水线中。然后,可编程芯片在第一流水线(例如,图6和图8中的流水线331、332)中处理数据包,并确定该数据包是否是L4-L7网络服务要处理的目标。响应于确定该数据包是要在没有L4-L7网络服务的情况下被处理的数据包(例如,图8中的数据包P1),流量管理器(例如,图6和图8中的流量管理器335)将处理后的数据包(例如,图8中的数据包P1')转发到网络设备300的输出端口。因此,主机系统400可以通过SAI 414控制可编程芯片330以在数据链路层或者网络层提供交换功能。
另一方面,响应于确定数据包是L4-L7网络服务要处理的目标(例如,图8中的数据包P2),流量管理器转发处理后的数据包(例如,图8中的数据包P2')到第二流水线(例如,图6和图8中的流水线333、334)以进一步在第二流水线中处理数据包。在第二流水线中处理了数据包之后,流量管理器再次将处理后的数据包(例如,图8中的数据包P2”)从第二流水线转发至第一流水线,并将处理后的数据包转发至网络设备300的输出端口。因此,主机系统400可以通过服务运行时API 415控制可编程芯片330以提供L4-L7网络服务。
因此,通过步骤910-940中的上述操作,主机系统400可以提供一个框架,该框架运行L2或L3处的固定交换功能以及L4-L7中的一个或更多个扩展网络服务。
鉴于以上内容,如本公开的各种实施例中所提出的,提供了开放接口供用户开发各种网络服务或应用程序,该应用程序运行在可编程芯片和/或在设备中的主机CPU以控制数据在网络系统中传输。可编程芯片可以被编程为使用未直接分配给设备的端口的流水线来执行网络服务或应用,而分配给所述端口的流水线执行固定的交换功能。通过将固定交换功能和扩展的网络服务或应用解耦,该装置能够在第二接口的控制下在L4-L7中提供扩展的网络服务,而不会干扰由第一接口(例如硬件抽象层(例如,交换机抽象接口))上的开源软件(例如,SONiC)提供的固定交换功能。此外,通过生成用于编程的平台相关的服务运行时API和平台相关的服务代码,可以在由不同网络硬件供应商提供的各种硬件平台中实现此组合的服务框架,这为在数据中心、边缘计算和/或云计算系统中提供网络服务或应用程序提供了灵活性系统。
通过在交换设备中组合网络操作系统和负载平衡或其他L4-L7网络服务,可以减少诸如内容交付网络(CDN)或边缘计算之类的各种应用中的运行成本,而不会损害交换性能。此外,运营商可以通过网络操作系统中提供的各种操作和维护工具来管理和监视网络,从而提高了维护网络系统的效率。
在方法步骤或过程的一般上下文中描述了本文描述的各种示例实施例,该方法步骤或过程可以在一个方面可由在暂时性或非暂时性计算机可读介质中体现的计算机程序产品实现,包括由网络环境中的计算机执行的计算机可执行指令,例如程序代码。非暂时性介质的常见形式包括,例如,软盘、软盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、CD-ROM、任何其他光数据存储介质、RAM、PROM和EPROM,FLASH-EPROM或任何其他闪存、NVRAM、高速缓存、寄存器、任何其他存储芯片或盒式磁带及其网络版本。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序,对象、组件、数据结构等。计算机可执行指令、相关联的数据结构和程序模块代表用于执行本文公开的方法的步骤的程序代码的示例。这样的可执行指令或相关联的数据结构的特定序列表示用于实现在这样的步骤或过程中描述的功能的相应动作的示例。
在前述说明书中,已经参考了可以随实施方式而变化的许多具体细节来描述实施例。可以对所描述的实施例进行某些改变和修改。考虑到本文公开的说明书和实践,其他实施例对于本领域技术人员而言是显而易见的。说明书和示例旨在仅被认为是示例性的,本公开的真实范围和精神由所附权利要求指示。附图中所示的步骤顺序仅出于说明的目的,并不旨在限于任何特定的步骤顺序。这样,本领域技术人员可以理解,在实现相同方法的同时,可以以不同的顺序执行这些步骤。
如本文所用,除非另有明确说明,否则术语“或”涵盖所有可能的组合,除非不可行。例如,如果声明数据库可以包括A或B,则除非另有明确说明或不可行,否则数据库可以包括A,或B,或A和B。作为第二个示例,如果声明数据库可能包含A,B或C,则除非另有说明或不可行,否则数据库可能包含A,或B,或C,或A和B,或A和C,或B和C,或A和B和C。
在附图和说明书中,已经公开了示例性实施例。然而,可以对这些实施例进行许多变化和修改。因此,尽管采用了特定术语,但是它们仅在一般性和描述性意义上使用,而不是出于限制的目的,实施例的范围由所附权利要求限定。
Claims (36)
1.一种用于控制网络系统中的数据传输的装置,包括:
可编程芯片,所述可编程芯片被配置为在网络系统中转发数据;
一个或更多个存储设备,所述一个或更多个存储设备被配置为存储指令集;和
一个或更多个处理器,所述一个或更多个处理器被配置为执行所述指令集以使所述装置执行:
通过第一接口控制所述可编程芯片在数据链路层或网络层提供交换功能;和
通过第二接口控制所述可编程芯片以提供第4层到第7层网络服务。
2.根据权利要求1所述的装置,其中,所述可编程芯片包括:
第一流水线,所述第一流水线还包括:入口端口,所述入口端口被配置为从所述设备的相应端口接收数据;和,出口端口,所述出口端口被配置为将数据转发到所述设备的相应端口;
和
第二流水线,所述第二流水线还包括:入口端口和出口端口,所述第二流水线的所述入口端口被配置为从所述第二流水线的所述出口端口接收数据。
3.根据权利要求2所述的装置,其中,所述一个或更多个处理器被配置为执行所述指令集,以使所述装置:
生成服务运行时应用程序编程接口(API)作为所述第二接口,并根据服务模型生成服务代码;和
通过使用根据所述服务代码编译的可执行代码对所述可编程芯片进行编程。
4.根据权利要求3所述的装置,其中,所述一个或更多个处理器被配置为执行所述指令集,以使所述装置通过使用所述可执行代码来对所述可编程芯片进行编程以:
配置所述第一流水线以在所述数据链路层或网络层提供交换功能。
5.根据权利要求3和4中任一项所述的装置,其中,所述一个或更多个处理器被配置为执行所述指令集,以使所述装置通过使用所述可执行代码来对所述可编程芯片进行编程以:
配置所述第二流水线以提供所述第4层到第7层网络服务。
6.根据权利要求3-5中的任一项所述的装置,其中,所述一个或更多个处理器被配置为执行所述指令集,以使所述装置对所述可编程芯片进行编程以:
从所述端口的输入端口接收数据包;
在所述第一流水线中对所述数据包进行处理,确定所述数据包是否为所述第4层到第7层网络服务要处理的目标;和
响应于确定所述数据包是没有所述第4层到第7层网络服务的要处理的数据包,将处理后的数据包转发到所述端口的输出端口。
7.根据权利要求6所述的装置,其中,所述一个或更多个处理器被配置为执行所述指令集,以使所述装置对所述可编程芯片进行编程以:
响应于确定所述数据包是所述第4层到第7层网络服务要处理的目标,将所述数据包转发到所述第二流水线;
在所述第二流水线中处理所述数据包;
将处理后的数据包从所述第二流水线转发到所述第一流水线;和
将处理后的数据包转发到所述端口的输出端口。
8.根据权利要求3至7中任一项所述的装置,其中,所述一个或更多个处理器被配置为执行所述指令集,以使得所述装置通过以下方式生成所述服务运行时API作为所述第二接口以及所述服务代码:
识别所述可编程芯片;和
响应于所述可编程芯片的识别,经由服务模型编译器编译所述服务模型以生成所述服务运行时API和服务代码,所生成的服务运行时API和服务代码中的每一个都依赖于平台并且对应于所述可编程芯片。
9.根据权利要求1至8中任一项所述的装置,其中,所述一个或更多个处理器被配置为执行所述指令集,以使所述装置:
经由所述第二接口控制所述可编程芯片以执行负载均衡以在多个服务器之间共享流量。
10.根据权利要求1至9中任一项所述的装置,其中,所述一个或更多个处理器被配置为执行所述指令集,以使所述装置:
通过所述第二接口控制所述可编程芯片执行安全应用,其中,所述安全应用包括入侵检测系统(IDS)、入侵防御系统(IPS)、分布式拒绝服务(DDoS)攻击保护、URL过滤、Web应用程序防火墙(WAF)、或其任意组合。
11.根据权利要求1-10中的任一项所述的装置,其中,所述一个或更多个处理器被配置为执行所述指令集,以使所述装置:
通过所述第二接口控制所述可编程芯片执行网关应用,其中,所述网关应用包括虚拟私有云网关(XGW)、网络地址转换(NAT)网关、虚拟专用网(VPN)网关、公共网络网关、网关线路、路由或其任何组合。
12.根据权利要求1-11中任一项所述的装置,还包括:
网络接口控制器,所述网络接口控制器被配置为在所述可编程芯片与所述一个或更多个处理器之间传输数据。
13.一种用于控制网络系统中的数据传输的方法,包括:
通过第一接口控制可编程芯片以在数据链路层或网络层提供交换功能;和
通过第二接口控制所述可编程芯片以提供第4层到第7层网络服务。
14.如权利要求13所述的用于控制网络系统中的数据传输的方法,还包括:
生成服务运行时应用程序编程接口(API)作为所述第二接口,并根据服务模型生成服务代码;和
通过使用根据所述服务代码生成的可执行代码对所述可编程芯片进行编程。
15.根据权利要求14所述的用于控制网络系统中的数据传输的方法,其中,使用所述可执行代码对所述可编程芯片进行编程包括:
配置第一流水线以在数据链路层或网络层提供交换功能;和
配置第二条流水线以提供所述第4层到第7层网络服务。
16.如权利要求15所述的用于控制网络系统中的数据传输的方法,还包括:
从输入端口接收数据包到所述第一流水线;
在所述第一流水线中处理所述数据包,并确定所述数据包是否为所述第4层到第7层网络服务要处理的目标;和
响应于确定所述数据包是没有所述第4层到第7层网络服务的要处理的数据包,将处理后的数据包转发到输出端口。
17.根据权利要求16所述的用于控制网络系统中的数据传输的方法,还包括:
响应于确定所述数据包是所述第4层到第7层网络服务要处理的目标,将所述数据包转发到所述第二流水线;
在所述第二流水线中处理数据包;
将处理后的数据包从所述第二流水线转发到所述第一流水线;和
将处理后的数据包转发到输出端口。
18.根据权利要求14至17中任一项所述的用于控制网络系统中的数据传输的方法,其中,生成所述服务运行时API作为所述第二接口,以及根据所述服务模型来生成所述服务代码包括:
识别所述可编程芯片;和
响应于所述可编程芯片的识别,经由服务模型编译器编译所述服务模型以生成所述服务运行时API和服务代码,所生成的服务运行时API和服务代码中的每一个都依赖于平台并且对应于所述可编程芯片。
19.根据权利要求13至18中任一项所述的用于控制网络系统中的数据传输的方法,其中,控制所述可编程芯片以提供所述第4层到第7层网络服务包括:
经由所述第二接口控制所述可编程芯片执行负载均衡以在多个服务器之间共享流量。
20.根据权利要求13至19中任一项所述的用于控制网络系统中的数据传输的方法,其中,控制所述可编程芯片以提供所述第4层到第7层网络服务包括:
通过所述第二接口控制所述可编程芯片执行安全应用,其中,所述安全应用包括入侵检测系统(IDS)、入侵防御系统(IPS)、分布式拒绝服务(DDoS)攻击保护、URL过滤、Web应用程序防火墙(WAF)、或其任意组合。
21.根据权利要求13至20中任一项所述的用于在网络系统中控制数据传输的方法,其中,控制所述可编程芯片以提供所述第4层到第7层网络服务包括:
通过所述第二接口控制所述可编程芯片执行网关应用,其中,所述网关应用包括虚拟私有云网关(XGW)、网络地址转换(NAT)网关、虚拟专用网(VPN)网关、公共网络网关、网关线路、路由或其任何组合。
22.一种非暂时性计算机可读介质,其存储有指令集,所述指令集可由装置的一个或更多个处理器执行以使所述装置执行用于控制网络系统中的数据传输的方法,所述用于控制网络系统中数据传输的方法包括:
通过第一接口控制可编程芯片以在数据链路层或网络层提供交换功能;和
通过第二接口控制所述可编程芯片以提供第4层到第7层网络服务。
23.根据权利要求22所述的非暂时性计算机可读介质,其中可由所述装置的一个或更多个处理器执行的所述指令集使所述装置进一步执行:
配置第一流水线以在所述数据链路层或网络层提供交换功能;和
配置第二条流水线以提供所述第4层到第7层网络服务。
24.根据权利要求23所述的非暂时性计算机可读介质,其中可由所述装置的一个或更多个处理器执行的所述指令集使所述装置进一步执行:
从输入端口接收数据包到所述到第一流水线;
在所述第一流水线中处理该数据包,并确定该数据包是否所述为第4层到第7层网络服务要处理的目标;和
响应于确定该数据包是没有所述第4层到第7层网络服务的要处理的数据包,将处理后的数据包转发到输出端口。
25.根据权利要求24所述的非暂时性计算机可读介质,其中可由所述装置的一个或更多个处理器执行的所述指令集使所述装置进一步执行:
响应于确定所述数据包是所述第4层到第7层网络服务要处理的目标,将所述数据包转发到所述第二流水线;
在所述第二流水线中处理数据包;
将处理后的数据包从所述第二流水线转发到所述第一流水线;和
将处理后的数据包转发到输出端口。
26.根据权利要求22-25中的任一项所述的非暂时性计算机可读介质,其中,可由所述装置的一个或更多个处理器执行的所述指令集使所述装置进一步执行:
经由所述第二接口控制所述可编程芯片执行负载均衡以在多个服务器之间共享流量。
27.根据权利要求22-26中任一项所述的非暂时性计算机可读介质,其中,可由所述装置的一个或更多个处理器执行的所述指令集使所述装置进一步执行:
通过所述第二接口控制所述可编程芯片执行安全应用,其中,所述安全应用包括入侵检测系统(IDS)、入侵防御系统(IPS)、分布式拒绝服务(DDoS)攻击保护、URL过滤、Web应用程序防火墙(WAF)、或其任意组合。
28.根据权利要求22-27中的任一项所述的非暂时性计算机可读介质,其中,可由所述装置的一个或更多个处理器执行的所述指令集使所述装置进一步执行:
通过所述第二接口控制所述可编程芯片执行网关应用,其中,所述网关应用包括虚拟专用云网关(XGW)、网络地址转换(NAT)网关、虚拟专用网(VPN)网关、公共网络网关、网关线路、路由或其任何组合。
29.根据权利要求22-28中任一项所述的非暂时性计算机可读介质,其中,可由所述装置的一个或更多个处理器执行的所述指令集使所述装置进一步执行:
识别所述可编程芯片;和
响应于所述可编程芯片的识别,经由服务模型编译器编译服务模型以生成作为第二接口的服务运行时应用程序编程接口(API)和服务代码,所生成的服务运行时API和服务代码的每一个都依赖于平台并对应于所述可编程芯片。
30.一种控制器,包括:
一个或更多个存储设备,所述一个或更多个存储设备被配置为存储集指令;和
一个或更多个处理器,一个或更多个处理器配置为执行所述指令集以使控制器执行以下操作:
通过第一接口控制可编程芯片以在数据链路层或网络层提供交换功能;和
通过第二接口控制所述可编程芯片以提供第4层到第7层网络服务。
31.根据权利要求30所述的控制器,其中,所述控制器被配置为对所述可编程芯片进行编程以配置所述可编程芯片的第一流水线以在所述数据链路层或所述网络层处提供所述交换功能。
32.根据权利要求30和31中的任一项所述的控制器,其中,所述控制器被配置为对所述可编程芯片进行编程,以配置所述可编程芯片的第二流水线以提供所述第4层到第7层的网络服务。
33.根据权利要求30-32中任一项所述的控制器,其中,所述一个或更多个处理器被配置为执行所述指令集,以使所述控制器:
经由所述第二接口控制所述可编程芯片以执行负载均衡以在多个服务器之间共享流量。
34.根据权利要求30-33中的任一项所述的控制器,其中,所述一个或更多个处理器被配置为执行所述指令集以使所述控制器:
通过所述第二接口控制所述可编程芯片执行安全应用,其中,所述安全应用包括入侵检测系统(IDS)、入侵防御系统(IPS)、分布式拒绝服务(DDoS)攻击保护、URL过滤、Web应用程序防火墙(WAF)、或其任意组合。
35.根据权利要求30-33中的任一项所述的控制器,其中,所述一个或更多个处理器被配置为执行所述指令集,以使所述控制器:
通过所述第二接口控制所述可编程芯片执行网关应用,其中,所述网关应用包括虚拟私有云网关(XGW)、网络地址转换(NAT)网关、虚拟专用网(VPN)网关、公共网络网关、网关线路、路由或其任何组合。
36.根据权利要求30-35中的任一项所述的控制器,其中,所述一个或更多个处理器被配置为执行所述指令集,以使所述控制器:
识别所述可编程芯片;和
响应于所述可编程芯片的识别,经由服务模型编译器编译服务模型以生成作为第二接口的服务运行时应用程序编程接口(API)以及服务代码,所生成的服务运行时API和服务代码的每一个都依赖于平台并对应于可编程芯片。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/098397 WO2021016869A1 (en) | 2019-07-30 | 2019-07-30 | Apparatus and method for controlling data transmission in network system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112585915A true CN112585915A (zh) | 2021-03-30 |
CN112585915B CN112585915B (zh) | 2023-04-07 |
Family
ID=74229807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980013700.5A Active CN112585915B (zh) | 2019-07-30 | 2019-07-30 | 控制网络系统中数据传输的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210409487A1 (zh) |
CN (1) | CN112585915B (zh) |
TW (1) | TW202105971A (zh) |
WO (1) | WO2021016869A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254385A (zh) * | 2021-06-02 | 2021-08-13 | 南京蓝洋智能科技有限公司 | 一种网络结构、并行推理模型的编译加载方法及芯片系统 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11477197B2 (en) | 2018-09-18 | 2022-10-18 | Cyral Inc. | Sidecar architecture for stateless proxying to databases |
US11477217B2 (en) | 2018-09-18 | 2022-10-18 | Cyral Inc. | Intruder detection for a network |
US11606358B2 (en) | 2018-09-18 | 2023-03-14 | Cyral Inc. | Tokenization and encryption of sensitive data |
US11909768B2 (en) * | 2019-08-13 | 2024-02-20 | Secure Telligence LLC | Methods, systems, and devices related to managing in-home network security using artificial intelligence service to select among a plurality of security functions for processing |
US11818022B2 (en) * | 2020-06-30 | 2023-11-14 | Pensando Systems Inc. | Methods and systems for classifying traffic flows based on packet processing metadata |
US11374858B2 (en) | 2020-06-30 | 2022-06-28 | Pensando Systems, Inc. | Methods and systems for directing traffic flows based on traffic flow classifications |
US20230064845A1 (en) * | 2021-08-31 | 2023-03-02 | Pensando Systems Inc. | Methods and systems for orchestrating network flow tracing within packet processing pipelines across multiple network appliances |
US11949605B2 (en) * | 2021-10-28 | 2024-04-02 | Avago Technologies International Sales Pte. Limited | Systems for and methods of unified packet recirculation |
CN115086450B (zh) * | 2022-06-01 | 2023-11-17 | 珠海高凌信息科技股份有限公司 | 一种可编程数据平面装置、流表更新方法及交换机 |
CN115296995B (zh) * | 2022-06-30 | 2024-03-12 | 北京达佳互联信息技术有限公司 | 交换机配置方法、装置、电子设备及存储介质 |
CN115002050B (zh) * | 2022-07-18 | 2022-09-30 | 中科声龙科技发展(北京)有限公司 | 工作量证明芯片 |
CN117408220B (zh) * | 2023-12-15 | 2024-02-23 | 湖北工业大学 | 一种可编程交换架构芯片资源排布方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050108518A1 (en) * | 2003-06-10 | 2005-05-19 | Pandya Ashish A. | Runtime adaptable security processor |
CN101321163A (zh) * | 2008-07-03 | 2008-12-10 | 江苏华丽网络工程有限公司 | 融合多层并行处理的网络接入设备一体化硬件实现方法 |
US20120324442A1 (en) * | 2011-06-14 | 2012-12-20 | Futurewei Technologies, Inc. | System and Method for an In-Server Virtual Switch |
US20120331147A1 (en) * | 2011-06-23 | 2012-12-27 | Cisco Technology, Inc. | Hierarchical defragmentation of resources in data centers |
US20130343389A1 (en) * | 2012-06-21 | 2013-12-26 | Jonathan Stroud | High-speed cld-based pipeline architecture |
CN103558812A (zh) * | 2013-08-29 | 2014-02-05 | 清华大学 | 基于fpga和arm的mvb网络四类设备网卡 |
CN103685033A (zh) * | 2013-12-19 | 2014-03-26 | 武汉邮电科学研究院 | Sdn架构中支持分组交换和电路交换的通用流表及方法 |
US20160173371A1 (en) * | 2014-12-11 | 2016-06-16 | Brocade Communications Systems, Inc. | Multilayered distributed router architecture |
CN107210966A (zh) * | 2014-08-18 | 2017-09-26 | 瑞典爱立信有限公司 | 在软件定义组网(sdn)系统中使用l4‑l7报头转发没有重组的分组片段 |
US20170339247A1 (en) * | 2016-05-23 | 2017-11-23 | Citrix Systems, Inc. | Systems and methods for provisioning network automation by logically separating l2-l3 entities from l4-l7 entities using a software defined network (sdn) controller |
US20180176145A1 (en) * | 2016-12-18 | 2018-06-21 | Cisco Technology, Inc. | Switch fabric based load balancing |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105409184B (zh) * | 2013-08-28 | 2019-05-17 | 阿尔卡特朗讯 | 住宅网关设备和网络侧控制设备 |
US11388082B2 (en) * | 2013-11-27 | 2022-07-12 | Oracle International Corporation | Methods, systems, and computer readable media for diameter routing using software defined network (SDN) functionality |
CN108199958B (zh) * | 2017-12-29 | 2021-04-09 | 深信服科技股份有限公司 | 一种通用的安全资源池服务链实现方法及系统 |
-
2019
- 2019-07-30 CN CN201980013700.5A patent/CN112585915B/zh active Active
- 2019-07-30 WO PCT/CN2019/098397 patent/WO2021016869A1/en active Application Filing
- 2019-07-30 US US16/765,751 patent/US20210409487A1/en not_active Abandoned
-
2020
- 2020-05-28 TW TW109117867A patent/TW202105971A/zh unknown
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050108518A1 (en) * | 2003-06-10 | 2005-05-19 | Pandya Ashish A. | Runtime adaptable security processor |
CN101321163A (zh) * | 2008-07-03 | 2008-12-10 | 江苏华丽网络工程有限公司 | 融合多层并行处理的网络接入设备一体化硬件实现方法 |
US20120324442A1 (en) * | 2011-06-14 | 2012-12-20 | Futurewei Technologies, Inc. | System and Method for an In-Server Virtual Switch |
US20120331147A1 (en) * | 2011-06-23 | 2012-12-27 | Cisco Technology, Inc. | Hierarchical defragmentation of resources in data centers |
US20130343389A1 (en) * | 2012-06-21 | 2013-12-26 | Jonathan Stroud | High-speed cld-based pipeline architecture |
CN103558812A (zh) * | 2013-08-29 | 2014-02-05 | 清华大学 | 基于fpga和arm的mvb网络四类设备网卡 |
CN103685033A (zh) * | 2013-12-19 | 2014-03-26 | 武汉邮电科学研究院 | Sdn架构中支持分组交换和电路交换的通用流表及方法 |
CN107210966A (zh) * | 2014-08-18 | 2017-09-26 | 瑞典爱立信有限公司 | 在软件定义组网(sdn)系统中使用l4‑l7报头转发没有重组的分组片段 |
US20160173371A1 (en) * | 2014-12-11 | 2016-06-16 | Brocade Communications Systems, Inc. | Multilayered distributed router architecture |
US20170339247A1 (en) * | 2016-05-23 | 2017-11-23 | Citrix Systems, Inc. | Systems and methods for provisioning network automation by logically separating l2-l3 entities from l4-l7 entities using a software defined network (sdn) controller |
US20180176145A1 (en) * | 2016-12-18 | 2018-06-21 | Cisco Technology, Inc. | Switch fabric based load balancing |
Non-Patent Citations (2)
Title |
---|
A. T. LAWNICZAK, A. GERISCH AND B. DI STEFANO: "Development and performance of cellular automaton model of OSI network layer of packet-switching networks", 《CCECE 2003 - CANADIAN CONFERENCE ON ELECTRICAL AND COMPUTER ENGINEERING. TOWARD A CARING AND HUMANE TECHNOLOGY 》 * |
李华英: "网络交换机的设置和选择", 《建筑电气》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254385A (zh) * | 2021-06-02 | 2021-08-13 | 南京蓝洋智能科技有限公司 | 一种网络结构、并行推理模型的编译加载方法及芯片系统 |
Also Published As
Publication number | Publication date |
---|---|
US20210409487A1 (en) | 2021-12-30 |
CN112585915B (zh) | 2023-04-07 |
TW202105971A (zh) | 2021-02-01 |
WO2021016869A1 (en) | 2021-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112585915B (zh) | 控制网络系统中数据传输的装置和方法 | |
US10949379B2 (en) | Network traffic routing in distributed computing systems | |
US11611637B2 (en) | Scheduling services on a platform including configurable resources | |
US20210344692A1 (en) | Providing a virtual security appliance architecture to a virtual cloud infrastructure | |
CN114189571B (zh) | 用于实施加速网络分组处理的装置和方法 | |
US11184295B2 (en) | Port mirroring based on remote direct memory access (RDMA) in software-defined networking (SDN) environments | |
CN109547580B (zh) | 一种处理数据报文的方法和装置 | |
EP4057595A1 (en) | Facilitating flow symmetry for service chains in a computer network | |
US10877822B1 (en) | Zero-copy packet transmission between virtualized computing instances | |
US11595303B2 (en) | Packet handling in software-defined net working (SDN) environments | |
US10581730B2 (en) | Packet processing using service chains | |
US10931552B1 (en) | Connectivity check with service insertion | |
Van Tu et al. | Accelerating virtual network functions with fast-slow path architecture using express data path | |
Bremler-Barr et al. | Openbox: Enabling innovation in middlebox applications | |
US10630596B1 (en) | Forwarding action redirection | |
Tan et al. | rrBox: A remote dynamically reconfigurable network processing middlebox | |
Tseng et al. | A low latency service function chain with SR-I/OV in software defined networks | |
TWI826194B (zh) | 相容於雲原生虛擬網路層的使用者層功能(upf)封包處理方法及計算裝置 | |
US20230164086A1 (en) | Systems and methods for network traffic trunking | |
EP4304148A1 (en) | Edge services using network interface cards having processing units | |
US20230140555A1 (en) | Transparent network service chaining | |
Cerović | Resilient and highly performant network architecture for virtualized data centers | |
Ji | DE4NF: High Performance Nfv Frameworkwith P4-Based Event System | |
Abranches | Synergistic Server-Based Network Processing Stack | |
CN118176708A (zh) | 透明的网络服务链接 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |