网络设备中网络设备组件的实现的制作方法

文档序号:7977985阅读:138来源:国知局
网络设备中网络设备组件的实现的制作方法【专利摘要】一种网络设备包括具有网络设备组件的实现以处理由网络设备所接收的数据的运行引擎、以及通过将网络设备数据用于编译器优化来编译一般表示而动态地生成网络设备组件的实现的编译器。【专利说明】网络设备中网络设备组件的实现【
背景技术
】[0001]计算机网络包括促进诸如路由器、交换器、防火墙、管理装置、安全装置等之类的计算机(一般被称为“网络设备”)之间的通信的各种设备。网络设备能够包括由不同组件(“网络设备组件”)所实现的各种功能。一些网络设备组件被要求在网络设备的寿命期间被改变(例如,在现场中修改组件)。例如,网络设备能够包括用于实现特定安全功能的网络安全组件(例如,用于过滤分组来识别特定类型的攻击的安全过滤器)。因为发现了新类型的安全漏洞,所以网络安全组件应该被更新以弥补新威胁。因此,网络设备能够包括修改其相应的网络设备组件的实现的能力。【专利附图】【附图说明】[0002]参考以下附图来描述本发明的一些实施例:图1是根据一种示例性实现的网络设备的框图;图2是根据另一种示例性实现的网络设备的框图;图3是示出根据一种示例性实现的在网络设备中实现网络设备组件的方法300的流程图;以及图4是示出根据另一种示例性实现的在网络设备中实现网络设备组件的方法的流程图。【具体实施方式】[0003]描述了在网络设备中网络设备组件的实现。各种方法能够被用来在网络设备中安装和更新网络设备组件。在一种方法中,网络设备以源形式(例如,编程语言形式)接收网络设备组件。然后网络设备使用解释器来评估该源以实现网络设备组件。在另一种方法中,网络设备以可执行形式(例如,具有特定处理器的原生指令的机器代码)接收网络设备组件。供应商能够离线地(例如,在网络设备的外部)编译源并且然后给网络设备提供可执行文件(executable)以实现网络设备组件。[0004]解释方法仅能够使用专门的解释、复杂和有限的技术来实现高性能。同时,专门的解释器具有会限制能够被实现的网络设备组件的类型的有限表示法(notation)。解释器能够被一般化,但是以性能为代价。外部编译方法提供较高的性能,但是结果所得的可执行文件是硬件-依赖的。相同的可执行文件不能够被递送到具有不同架构(例如,MIPS、x86等)的网络设备。这要求供应商为不同的网络设备产生若干不同的可执行文件。进一步地,以上所讨论的方法不把诸如部署-特定数据(例如,网际协议(IP)地址、网络部署位置等)和域-特定运行时间数据(例如,依赖于业务的统计)之类的网络设备数据包含到网络设备组件实现中。这两种方法必须转而从网络设备中的存储器来提取网络设备信息,导致显著开销成本并且在网络设备组件的性能方面下降。[0005]在实施例中,网络设备中的运行引擎包括处理由网络设备所接收的数据的网络设备组件的实现。网络设备中的编译器通过将网络设备数据用于编译器优化来编译一般表示而动态地生成网络设备组件的实现。在网络设备中将编译过程和运行引擎放置在一起提供了增强的性能和硬件独立性这二者。一般表示可移植到具有不同架构的网络设备。通过产生可执行代码,避免了与解释关联的开销。进一步地,网络设备数据被用于编译器优化,允许可执行表示中的设备-特定优化。以下通过参考若干示例描述了各种实施例。[0006]图1是根据一种示例性实现的网络设备100的框图。网络设备100通常经由输入/输出(IO)接口101接收和发送诸如计算机网络上的业务之类的数据。网络设备100能够是诸如路由器、交换机、防火墙、安全装置、管理装置、以及在计算机网络中促进通信的相似类型设备之类的任何类型的网络设备。网络设备100包括编译器102和运行引擎104。网络设备100存储一般表示106和网络设备数据108。运行引擎104包括网络设备组件110的实现。[0007]一般表示106包括网络设备组件的人类-可读的或部分人类-可读的描述。一般表示106能够包括定义网络设备组件的源代码。能够使用编程语言(例如,C或C++)、标记语言(例如,可扩展标记语言(XML))、或相似类型源语言来编写源代码。在示例中,部分源代码能够在网络设备100的外部被预编译。因此,一般表示106能够具有人类-可读的部分(例如,源代码)和机器-可读的部分(例如,从源被预编译的机器或目标代码)、或不具有预编译部分的人类-可读部分。一般表示106的任何预编译部分能够是设备-独立的,以使得一般表示106能够被部署到具有各种硬件架构的网络设备。一般表示106的任何源代码部分也能够是设备-独立的。网络设备100能够通过IO接口101接收一般表示106(例如,一般表示106能够通过网络被发送到网络设备100)。[0008]网络设备数据108包括由或者为网络设备100而生成的域-特定数据。“域-特定”数据包括与网络设备100的特定功能或“域”相关的数据。因此,如果网络设备100处理数据的分组,那么网络设备数据108能够包括与分组处理的功能相关的数据。在示例中,网络设备数据108能够包括被用来配置网络设备100的数据(“配置数据”)。配置数据能够包括特定于在网络中部署网络设备100的参数、属性、设置等(例如,特定的网际协议(IP)地址、网络部署位置等)。在另一个示例中,网络设备数据108能够包括由网络设备100在操作或“运行时间”期间所生成的数据(“运行时间数据”)。运行时间数据能够包括由网络设备100(例如,在分组处理期间)所生成的统计、或此类统计的任何分析。运行时间数据能够由网络设备100的任何网络设备组件来生成。在示例中,运行时间数据通过运行引擎104中的网络设备组件110的实现来生成。网络设备数据108能够包括配置数据和运行时间数据的任何组合。[0009]编译器102将一般表不106作为参数输入来获取。编译器102处理一般表不106来生成可执行表示112。可执行表示112能够包括运行引擎104可执行(例如,机器代码)以实现网络设备组件110的代码。能够在网络设备100的寿命期间修改一般表示106(例如,升级、打补丁等)任何次数。在接收新版本的一般表示106时,编译器102能够生成新的可执行表示112从而生成网络设备组件110的新实现。因此,编译器102能够在网络设备100内动态地生成可执行表示112。[0010]编译器102还能够将网络设备数据108作为参数输入来获取。当生成可执行表示112时,编译器102能够将网络设备数据108用于编译器优化。也就是说,能够基于网络设备数据108来为网络设备100“优化”可执行表示112。[0011]编译器102能够使用网络设备数据108中的配置数据来包括可执行表示112中的设备-依赖参数(例如,特定于网络设备100的配置的“硬-编码”参数)。例如,编译器102能够将被配置用于网络设备100的特定IP地址硬编码成可执行表示112。以该方式,运行引擎104能够从指令流(例如,从可执行表示112自身)获取设备-依赖参数,而不必引入从网络设备100中的数据存储器获取参数的开销。给定网络设备100所处理的特定业务,编译器102能够使用网络设备数据108中的运行时间数据而将可执行表示112配置成以更好的性能来操作。例如,网络设备组件能够是分析业务的安全组件。因为网络设备100可以面对大型域名服务(DNS)群,所以网络设备100能够在操作期间收集诸如端口53上的大量用户数据报协议(UDP)业务之类的业务统计。编译器102能够使用此类业务统计来对可执行表示112中的比较树进行优化,以使得更快地处理端口53上的UDP业务的常见情况。通常,编译器102能够使用运行时间数据来执行可执行表示112的域-特定优化。[0012]从以上示例能够看出:编译器102能够基于网络设备数据108来在结果所得的可执行表示112中插入各种优化。[0013]运行引擎104将可执行表示112作为参数输入来获取。运行引擎104通过运行可执行表示112来实现网络设备组件110。网络设备组件110能够是由网络设备100所执行的诸如交换功能、路由功能、安全功能等之类的任何类型的功能。网络设备组件110能够在IO接口101上处理由网络设备100接收的业务。能够通过将一般表示106提供到网络设备100来安装网络设备组件110。能够通过提供新版本的一般表示106、或通过某一其他命令(例如,基于新的网络设备数据108来修改网络设备组件110以包含优化的命令)来修改网络设备组件110。[0014]图2是根据另一种示例性实现的网络设备200的框图。网络设备200包括处理器202、支持电路204、10接口206、存储器208、以及一个或多个硬件外围设备210。处理器202包括任何类型的微处理器、微控制器、微计算机、或本领域中已知的相似类型计算设备。用于处理器的支持电路204能够包括高速缓存、电源、时钟电路、数据寄存器、IO电路等等。IO接口206能够被直接地耦合到存储器208、或通过处理器202被耦合到存储器208。IO接口206能够接收被应用到网络设备200的外部输入。存储器208能够包括随机访问存储器、只读存储器、高速缓存存储器、磁性读/写存储器等、或此类存储器设备的任何组合。一个或多个硬件外围设备210能够包括代表处理器202和网络设备200执行功能的各种硬件电路。[0015]存储器208为网络设备200存储包括源表示212和网络设备数据214的数据。源表不212能够包括由诸如编程语目(例如,C或C++)、标记语目(例如,XML)等之类的语目所定义的集合语义。源表示212使用语义来定义网络设备组件。在示例中,能够在网络设备200的外部来对部分的语义进行预编译。因此,源表示212能够具有语义(例如,源代码)和机器-可读部分(例如,从源被预编译的机器或目标代码)的集合、或不具有预编译部分的语义的集合。源表示212的任何预编译部分能够是设备-独立的,以使得源表示212能够被部署到具有各种硬件架构的网络设备。源表示212中的任何语义描述也能够是设备-独立的。[0016]网络设备数据214包括由或者为网络设备200而生成的数据。网络设备数据214能够包括被用来配置网络设备200的部署的数据(“部署数据”)。部署数据能够包括特定于在网络中部署网络设备100的参数、属性、设置等(例如,特定的网际协议(IP)地址、网络部署位置等)。网络设备数据214还能够包括运行时间数据。运行时间数据能够包括由网络设备200在网络业务处理期间所生成的统计、或此类统计的任何分析。运行时间数据能够由网络设备200的任何网络设备组件来生成。[0017]在示例中,处理器202实现编译器216、控制器218、和运行环境220来提供以下所描述的功能。存储器208能够存储由处理器202运行或解释的代码240以实现编译器216、控制器218、和运行环境220。[0018]特别地,编译器216将源表示212作为参数输入来获取。编译器216处理源表示212以生成可执行表示222。可执行表示222能够包括由处理器202在运行环境220内可执行的来实现网络设备组件224的机器可读代码。编译器216还能够将网络设备数据214作为参数输入来获取。当生成可执行表示222时,编译器216能够将网络设备数据214用于编译器优化。也就是说,能够基于网络设备数据214来为网络设备200“优化”可执行表示222。以上参考图1讨论了可以被采用的各种类型的优化。[0019]运行环境220提供可执行表示222和处理器202之间的接口或“操作系统”来提供运行引擎。在由运行环境220所提供的运行引擎内运行可执行表示222以实现网络组件224。[0020]控制器218能够为网络设备200提供各种控制功能。控制器218能够通过IO接口206来请求并获取源表示212(例如,源表示212能够通过网络被发送到网络设备200)。能够在网络设备100的寿命期间修改源表示212(例如,升级、打补丁等)任何次数。在接收新版本的源表示212时,控制器218能够使编译器216生成新的可执行表示222从而生成网络设备组件224的新实现。因此,控制器218能够在网络设备200内引起可执行表示222的动态生成,以及因此相应的网络组件224的动态实现和重新-实现。[0021]控制器218还能够使编译器216用不同的网络设备数据214来重新编译相同版本的源表示212。控制器218能够使编译器216用从网络设备数据214所获取的不同的优化来生成新的可执行表示222。例如,在运行可执行表示222之后,能够通过处理网络业务的网络设备组件224的实现来收集各种统计。如以上参考图1所讨论的,这些统计能够被用来提供可执行表示222的进一步优化。[0022]编译器216、控制器218、和运行环境220已被描述为由处理器202所实现的组件群组230。在一些示例中,编译器216、控制器218、或运行环境220(或其任何组合)能够被实现为一个或多个硬件外围设备210上的专用电路。例如,一个或多个硬件外围设备210能够包括诸如现场可编程门阵列(FPGA)之类的能够被编程以实现编译器216、控制器218、和/或运行环境220的功能的可编程逻辑设备(PLD)。组件群组230能够被实现为运行代码的处理器和一个或多个硬件外围设备中的专用电路的组合。同样地,至少一个网络组件226能够被实现为一个或多个硬件外围设备210上的电路。例如,可执行表示222能够采用用于PLD的配置数据的形式,以使得PLD将网络设备组件226实现为专用电路。通常地,不管此类元件是由处理器202、一个或多个硬件外围设备210、还是这二者来实现,组件群组230和一个或多个网络组件226都包括处理器电路。[0023]为了清晰的目的,通过示例,参考被编译成实现给定网络设备组件的单个源表示描述了网络设备200。在更一般的示例中,网络设备200能够实现多个网络设备组件,每个网络设备组件通过编译相应的源表示来生成。网络设备组件能够被实现为处理器可读代码、硬件、或其组合。[0024]图3是示出根据一种示例性实现的在网络设备中实现网络设备组件的方法300的流程图。方法300开始于步骤302,其中在网络设备处获取网络设备组件的源表示。在步骤304处,获取在网络设备中存储的数据。在步骤306处,在网络设备中通过将所述数据用于编译器优化来编译源表示,以生成网络设备组件的可执行表示。在步骤308处,将可执行表示提供到网络设备的运行引擎作为网络设备组件的实现。在示例中,在步骤304处所获取的数据包括由运行引擎所生成的运行时间数据。在步骤304处所获取的数据还能够包括表示网络设备的配置的部署数据。在步骤304处所获取的数据能够包括部署数据和运行时间数据的组合。在示例中,源表示包括源代码或者源代码和预编译源代码的组合。[0025]图4是示出根据另一种示例性实现的在网络设备中实现网络设备组件的方法400的流程图。方法400开始于步骤402,其中在网络设备的运行引擎中生成网络设备组件的实现。例如,可以在步骤402中运行方法300。在步骤404处,运行该网络设备实现。网络设备实现能够被运行以处理数据(例如,网络业务)和产生运行时间数据作为结果(例如,业务统计)。在步骤406处,收集运行时间数据和/或部署数据以用于编译器优化。在步骤408处,使用所收集的用于编译器优化的数据来重新编译源表示,以生成新的可执行表示。在步骤410处,将新的可执行表示提供到运行引擎。方法400能够返回到步骤404并且重复以进一步对网络设备组件的可执行表示进行优化。[0026]描述了在网络设备中网络设备组件的实现。在各种示例中,网络设备包括与运行时间运行环境放置在一起的编译器,以便根据具有网络域优化的源表示来动态地生成网络设备组件的实现。将编译过程与运行时间运行环境放置在一起提供了减少的开销、部署/配置特定的优化、以及运行时间数据特定的优化。[0027]以上所描述的技术可以被包含在计算机可读介质中来用于将计算系统配置成执行该方法。计算机可读介质可以包括例如并且不限于任何数目的以下各项:包括磁盘和磁带存储介质的磁性存储介质;诸如光盘介质(例如,CD-ROM、CD-R等)和数字视频光盘存储介质之类的光学存储介质;全息存储器;包括诸如闪存、EEPROM、EPROM、ROM之类的基于半导体的存储单元的非易失性存储器存储介质;铁磁数字存储器;包括寄存器、缓冲器或高速缓存、主存储器、RAM等之类的易失性存储介质,这仅举了几个例子而已。其他的新的和各种类型的计算机-可读介质可以被用来存储本文所讨论的机器可读代码。[0028]在前面的描述中,许多细节被阐述以提供对本发明的理解。然而,本领域的技术人员将理解的是,本发明可以在没有这些细节的情况下被实施。虽然参考有限数目的实施例公开了本发明,但是本领域技术人员将从其领会许多修改和变形。意图是:所附权利要求涵盖落入本发明的真实精神和范围内的此类修改和变形。【权利要求】1.一种用于在网络设备中实现网络设备组件的装置,包括:具有网络设备组件的实现来处理由网络设备所接收的数据的运行引擎;以及通过将网络设备数据用于编译器优化来编译一般表示而生成网络设备组件的实现的编译器。2.权利要求1的装置,其中网络设备数据包括由运行引擎所生成的运行时间数据。3.权利要求2的装置设备,其中运行时间数据由网络设备组件来生成。4.权利要求1的装置,其中网络设备数据包括表示网络设备的配置的配置数据。5.权利要求1的装置,其中一般表示包括源代码或预编译的源代码中的至少一个。6.一种网络设备,包括接收网络设备组件的源表示的输入/输出(IO)接口,所述源表示未被编译或被部分地编译;存储源表示和网络设备数据的存储器;以及被耦合到所述存储器的处理器电路,所述处理器电路通过将网络设备数据用于编译器优化来编译源表示而生成网络设备组件的可执行表示,并且运行所述可执行表示以实现网络设备组件。7.权利要求6的网络设备,其中网络设备数据包括由处理器电路所生成的运行时间数据。8.权利要求7的网络设备,其中由处理器电路所实现的网络设备组件生成运行时间数据。9.权利要求6的网络设备,其中网络设备数据包括表示网络设备的配置的部署数据。10.权利要求6的网络设备,其中源表示包括源代码或预编译的源代码中的至少一个。11.一种在网络设备中实现网络设备组件的方法,包括:获取网络设备处的网络设备组件的源表示;获取在网络设备中存储的数据;通过将所述数据用于编译器优化来编译网络设备中的源表示,以生成网络设备组件的可执行表示;以及将可执行表示提供到网络设备的运行引擎作为网络设备组件的实现。12.权利要求11的方法,其中获取数据的步骤包括:获取由运行引擎所生成的运行时间数据。13.权利要求11的方法,进一步包括:在运行引擎中运行网络设备组件的实现来生成运行时间数据;通过将运行时间数据、或运行时间数据和所述数据的组合用于编译器优化来重新编译源表示,以生成网络设备组件的另一个可执行表示;以及将所述另一个可执行表示提供到运行引擎作为网络设备组件的另一个实现。14.权利要求11的方法,其中获取数据的步骤包括:获取表示网络设备的配置的部署数据。15.权利要求11的方法,其中获取源表示的步骤包括:获取源代码或预编译的源代码中的至少一个。【文档编号】H04L12/22GK103563300SQ201180071104【公开日】2014年2月5日申请日期:2011年5月25日优先权日:2011年5月25日【发明者】D.M.科尔布利申请人:惠普发展公司,有限责任合伙企业
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1