CN100442768C - 一种在网络处理器中加载指令代码的方法和路由设备 - Google Patents
一种在网络处理器中加载指令代码的方法和路由设备 Download PDFInfo
- Publication number
- CN100442768C CN100442768C CNB2005100912056A CN200510091205A CN100442768C CN 100442768 C CN100442768 C CN 100442768C CN B2005100912056 A CNB2005100912056 A CN B2005100912056A CN 200510091205 A CN200510091205 A CN 200510091205A CN 100442768 C CN100442768 C CN 100442768C
- Authority
- CN
- China
- Prior art keywords
- processing unit
- network processing
- module
- instruction code
- file destination
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种在网络处理器中加载指令代码的方法和路由设备,其核心均为:将网络处理器的指令代码分割为多个功能模块,从所述各功能模块中确定网络处理器需要的功能模块,将所述需要的功能模块加载到网络处理器中。本发明能够使网络处理器中加载的指令代码与网络处理器的实际需要紧密结合,使网络处理器中加载的指令代码具有针对性,避免了不必要的指令代码消耗网络处理器指令存储空间的现象,使网络处理器的指令存储空间能够得到高效利用,有效解决了网络处理器指令存储空间有限的问题,实现了降低路由设备实现成本的目的。
Description
技术领域
本发明涉及网络通讯技术领域,具体涉及一种在网络处理器中加载指令代码的方法和路由设备。
背景技术
在数据通信领域中,为了提高报文转发效率,大容量路由器普遍采用分布式的转发结构,如附图1所示。
图1中,数据包的路由查找由转发引擎完成,不同转发引擎之间的包交换由交换网来实现。每个转发引擎对应一个接口板,占用路由器机框的一个槽位。路由计算由独立于转发引擎和交换网的处理器来完成。
这种体系结构的路由器的突出特点是转发层和控制层分离,使转发引擎的功能单一化,使转发引擎在设计上更突出包转发的特点,从而使高速大容量的包转发成为可能。
路由器中的转发引擎通常可采用逻辑芯片、专用集成电路(ASIC)或网络处理器(Network Processor)来实现。
采用逻辑芯片作为转发引擎能够具有较高的转发效率,但是,转发引擎的可维护性比较差。
采用专用集成电路作为转发引擎能够具有非常高的转发效率,但是,同时具有成本高、开发周期长、增加新功能困难等缺点。
网络处理器结合了ASIC和通用CPU的特点,即具有ASIC的转发效率,又支持软件编程的灵活性。采用网络处理器作为转发引擎不但具有非常高的转发效率,还具有成本低、开发周期短、方便增加新功能等优点。
目前,在网络处理器中加载指令代码的方法为:根据路由器支持的接口类型统一编译生成的目标文件,将该目标文件加载到网络处理器的指令存储空间中。
路由设备支持的接口类型一般比较丰富,而且,随着IP网络的迅猛发展,路由器的功能以及支持的接口种类、数量都在迅速膨胀,主流路由器在IP转发和MPLS转发的基础上,大部分都具备三层VPN(虚拟专用网)、二层VPN、IPV6、IP隧道功能,同时,路由器还需要提供POS(基于SDH的分组转发)、以太网、ATM(异步传输模式)、E1、T1、E3、帧中继、RPR(弹性分组环)、通道化E1等接口。
由于不同接口有其特殊性,很难做到指令代码重用,所以,不同的接口一般都需要相应的指令代码进行特殊处理,路由设备支持的接口越多,相应的代码量就越大,增加上述转发功能和接口意味着网络处理器中目标文件的膨胀。
路由器中网络处理器的指令存储空间是一定的,也就是说网络处理器能够容纳的代码量是固定的,所以,网络处理器会面临指令存储空间不够的问题,即使目前网络处理器的指令存储空间够用,随着路由器新接口类型、新功能的出现也会出现网络处理器的指令存储空间不够的问题。
目前,解决网络处理器指令存储空间问题的方法主要有如下三种:
方法一:裁减软件功能方法。
在网络处理器的指令存储空间不能够容纳路由器全部转发功能的指令代码时,网络处理器中只存储一部分转发功能的指令代码,即网络处理器只加载部分转发功能编译生成的目标文件,使路由器只提供部分转发功能。
方法一的缺点非常明显,对于购买路由器的用户来说,每个转发引擎必须放弃一部分业务转发功能,要实现全部的转发功能,需要购买多个转发引擎,从而通过提高转发引擎的数量、牺牲路由器的槽位来弥补单个转发引擎在转发功能上的不足。
方法二、在一个接口板上使用两个网络处理器配合工作,每个网络处理器承担一部分转发功能,这两个网络处理器在逻辑上构成一个转发引擎,从而完成一个网络处理器无法实现的转发功能。
方法二的缺点也非常明显,路由器硬件成本高。
方法三、一个转发引擎使用一个网络处理器,同时使用FPGA来完成一部分网络处理器的功能,通过这种办法减少了网络处理器中指令存储空间需要存储的代码量。
方法三的缺点同样也很明显,硬件成本高。
发明内容
本发明的目的在于,提供一种在网络处理器中加载指令代码的方法和路由设备,通过在网络处理器中仅加载其需要的功能模块,在不增加硬件成本的同时,有效解决了网络处理器指令存储空间有限的问题。
为达到上述目的,本发明提供的一种在网络处理器中加载指令代码的方法,包括:
a、将网络处理器的指令代码分割为多个功能模块;
b、从所述多个功能模块中确定网络处理器需要的功能模块;
c、将所述需要的功能模块的目标文件合成一个新的目标文件加载到网络处理器的指令存储空间中。
所述步骤a具体包括:
将网络处理器的指令代码分割为公共模块和各接口模块。
所述步骤b具体包括:确定网络处理器支持的接口类型;将公共模块和网络处理器支持的接口类型对应的接口模块确定为网络处理器需要的功能模块。
所述步骤b具体包括:
在网络处理器启动时,控制处理器分析确定网络处理器支持的接口类型;
控制处理器将公共模块和网络处理器支持的接口类型对应的接口模块确定为网络处理器需要的功能模块。
所述多个功能模块以单独编译的目标文件的形式存在。
所述步骤c具体包括:控制处理器将网络处理器支持的接口类型对应的各目标文件和公共模块的目标文件合成一个新的目标文件下载到网络处理器中。
所述网络处理器为:分布式转发结构的路由器中的转发引擎。
所述多个功能模块的代码量均不超过网络处理器的指令存储空间。
本发明还提供一种路由设备,包括:加载指令代码装置,所述加载指令代码装置包括:
存储模块:存储将网络处理器的指令代码分割后的各功能模块;
确定模块:从所述存储模块存储的各功能模块中确定网络处理器需要的功能模块;
加载模块:将所述确定模块确定的功能模块的目标文件合成一个新的目标文件加载到网络处理器的指令存储空间中。
所述加载模块包括:
编译子模块:将所述确定模块确定的功能模块的目标文件合成一个新的目标文件;
加载子模块:将所述编译子模块合成的新的目标文件加载到网络处理器中。
通过上述技术方案的描述可知,通过将网络处理器的指令代码划分为多个小的功能模块,使网络处理器中加载的指令代码能够与网络处理器的实际需要紧密结合,如与网络处理器支持的转发功能紧密结合,使网络处理器中加载的指令代码具有针对性,避免了不必要的指令代码消耗网络处理器指令存储空间的现象,使网络处理器的指令存储空间能够得到高效利用;通过在网络处理器启动时,控制处理器动态分析网络处理器支持的接口类型,使动态加载在网络处理器中的指令代码能够与网络处理器支持的转发功能准确吻合;从而通过本发明提供的技术方案有效解决了网络处理器指令存储空间有限的问题,实现了降低路由设备实现成本的目的。
附图说明
图1是分布式转发结构路由器的结构示意图;
图2是本发明的在网络处理器中加载指令代码的方法流程图。
具体实施方式
由于路由设备中网络处理器支持的接口类型是有限的,将网络处理器的指令代码统一编译生成一个目标文件,就会造成网络处理器不支持的接口对应的指令代码也下载到网络处理器的指令存储空间中了,从而,造成了指令存储空间的浪费。如果能够根据网络处理器的实际需要如网络处理器支持的接口类型等将相应的指令代码下载到网络处理器的指令存储空间,就能够使网络处理器的指令存储空间得到高效利用。
因此,本发明的在网络处理器中加载指令代码的方法和路由设备的核心均为:从网络处理器的指令代码划分后的各功能模块中确定网络处理器需要的功能模块,并将这些需要的功能模块加载到网络处理器中。
下面基于本发明的核心思想对本发明提供的技术方案做进一步的描述。
本发明中的网络处理器为:分布式转发结构的路由器中的转发引擎。
本发明需要改变网络处理器的全部指令代码统一编译为目标文件的方法,对网络处理器的全部指令代码进行分割,分割的方法为:将网络处理器的全部指令代码分割为公共模块和各种路由器接口类型对应的接口模块。这些功能模块可以以目标文件的形式存在,即对公共模块单独编译,对各种路由器接口类型对应的接口模块也分别编译。这样,就生成了多个目标文件,且每个目标文件对应的代码量都应该不超过网络处理器的指令存储空间。
将指令代码分割编译后,应确定网络处理器需要的功能模块。确定网络处理器需要的功能模块的方法可以为:根据网络处理器支持的接口类型来确定网络处理器需要的功能模块。这样,网络处理器需要的功能模块可以包括:网络处理器支持的接口类型对应的各接口模块和公共模块。
为保证加载到网络处理器的指令存储空间中的功能模块的准确性,本发明向网络处理器加载功能模块的过程可以在网络处理器启动的时候动态进行,并可以由控制处理器来实现向网络处理器加载功能模块的过程。控制处理器具有对网络处理器的管理功能。
控制处理器在网络处理器启动时,动态分析网络处理器支持的接口类型,并根据网络处理器所支持的接口类型,从各分割的目标文件中选取相应的目标文件,即公共模块的目标文件和网络处理器支持的接口类型对应的目标文件,将选取的目标文件组合生成一个新的目标文件,并将这个新的目标文件加载到网络处理器的指令存储空间中。
由于网络处理器支持的接口类型只能是路由器支持的接口类型的一部分,所以,采用本发明的方法,能够避免将网络处理器不支持的接口类型的指令代码加载到网络处理器中,从而,有效解决了网络处理器指令存储空间有限的问题。同时,路由器新支持的接口类型不会进一步的消耗代码空间。
本发明的在网络处理器中加载指令代码的方法如附图2所示。
图2中,在步骤1、网络处理器启动时,控制处理器获取各功能模块即各目标文件的存储地址的文件指针。
到步骤2、网络处理器根据各目标文件的文件指针获取公共模块的目标文件。
到步骤3、控制处理器分析该网络处理器支持的接口类型。
到步骤4、控制处理器根据该网络处理器支持的接口类型选择相应的目标文件。控制处理器选择的目标文件可能是一个或多个。
到步骤5、控制处理器将选择的接口类型对应的目标文件和公共模块的目标文件合成一个新的目标文件,这样,网络处理器不支持的接口类型对应的指令代码就不用出现在新生成的目标文件中了。
控制处理器将这个新的目标文件下载到网络处理器的指令存储空间中,这样,不必要的指令代码就不会消耗网络处理器的指令存储空间了,使网络处理器的指令存储空间能够得到高效利用,从而有效解决了网络处理器指令存储空间有限的问题,降低了路由设备的实现成本。
本发明提供的路由设备中设置有加载指令代码装置,且加载指令代码装置的功能由存储模块、确定模块和加载模块来实现,其中加载模块的功能由编译子模块和加载子模块来实现。
存储模块主要用于存储网络处理器指令代码分割后的各功能模块,如存储公共模块、各接口类型对应的功能模块。各功能模块都以目标文件的形式存储。各目标文件的代码量都应不超过网络处理器的指令存储空间。
确定模块主要用于在网络处理器启动时,动态确定网络处理器支持的接口类型,并从存储模块存储的各功能模块中确定网络处理器支持的接口类型对应的功能模块。
编译子模块主要用于将确定模块确定的网络处理器支持的接口类型对应的目标文件和公共模块的目标文件合成一个新的目标文件。
加载子模块主要用于将编译子模块合成的新的目标文件加载到网络处理器的指令存储空间中。
本发明中的存储模块、确定模块、编译子模块和加载子模块可以位于控制处理器中,本发明中的加载指令代码装置可以通过软件来实现。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,本发明的申请文件的权利要求包括这些变形和变化。
Claims (10)
1、一种在网络处理器中加载指令代码的方法,其特征在于,包括:
a、将网络处理器的指令代码分割为多个功能模块;
b、从所述多个功能模块中确定网络处理器需要的功能模块;
c、将所述需要的功能模块的目标文件合成一个新的目标文件加载到网络处理器的指令存储空间中。
2、如权利要求1所述的一种在网络处理器中加载指令代码的方法,其特征在于,所述步骤a具体包括:
将网络处理器的指令代码分割为公共模块和各接口模块。
3、如权利要求2所述的一种在网络处理器中加载指令代码的方法,其特征在于,所述步骤b具体包括:
确定网络处理器支持的接口类型;
将公共模块和网络处理器支持的接口类型对应的接口模块确定为网络处理器需要的功能模块。
4、如权利要求3所述的一种在网络处理器中加载指令代码的方法,其特征在于,所述步骤b具体包括:
在网络处理器启动时,控制处理器分析确定网络处理器支持的接口类型;
控制处理器将公共模块和网络处理器支持的接口类型对应的接口模块确定为网络处理器需要的功能模块。
5、如权利要求1、2、3或4所述的一种在网络处理器中加载指令代码的方法,其特征在于,所述多个功能模块以单独编译的目标文件的形式存在。
6、如权利要求5所述的一种在网络处理器中加载指令代码的方法,其特征在于,所述步骤c具体包括:
控制处理器将网络处理器支持的接口类型对应的各目标文件和公共模块的目标文件合成一个新的目标文件下载到网络处理器中。
7、如权利要求1、2、3或4所述的一种在网络处理器中加载指令代码的方法,其特征在于,所述网络处理器为:分布式转发结构的路由器中的转发引擎。
8、如权利要求1、2、3或4所述的一种在网络处理器中加载指令代码的方法,其特征在于,所述多个功能模块的代码量均不超过网络处理器的指令存储空间。
9、一种路由设备,包括:加载指令代码装置,其特征在于,所述加载指令代码装置包括:
存储模块:存储将网络处理器的指令代码分割后的各功能模块;
确定模块:从所述存储模块存储的各功能模块中确定网络处理器需要的功能模块;
加载模块:将所述确定模块确定的功能模块的目标文件合成一个新的目标文件加载到网络处理器的指令存储空间中。
10、如权利要求9所述的一种路由设备,其特征在于,所述加载模块包括:
编译子模块:将所述确定模块确定的功能模块的目标文件合成一个新的目标文件;
加载子模块:将所述编译子模块合成的新的目标文件加载到网络处理器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100912056A CN100442768C (zh) | 2005-08-05 | 2005-08-05 | 一种在网络处理器中加载指令代码的方法和路由设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100912056A CN100442768C (zh) | 2005-08-05 | 2005-08-05 | 一种在网络处理器中加载指令代码的方法和路由设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1866912A CN1866912A (zh) | 2006-11-22 |
CN100442768C true CN100442768C (zh) | 2008-12-10 |
Family
ID=37425801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100912056A Expired - Fee Related CN100442768C (zh) | 2005-08-05 | 2005-08-05 | 一种在网络处理器中加载指令代码的方法和路由设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100442768C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101335644B (zh) * | 2008-07-30 | 2011-05-11 | 中兴通讯股份有限公司 | 网络处理器动态加载微码的方法 |
CN102148754B (zh) * | 2010-12-30 | 2013-12-11 | 杭州华三通信技术有限公司 | 一种fpga逻辑版本的加载方法和设备 |
CN113168395A (zh) * | 2018-12-24 | 2021-07-23 | 华为技术有限公司 | 一种网络处理器及报文处理方法 |
US10860491B2 (en) * | 2019-05-03 | 2020-12-08 | Mediate Inc. | Cache management method using object-oriented manner and associated microcontroller |
CN110868329A (zh) * | 2020-01-09 | 2020-03-06 | 网络通信与安全紫金山实验室 | 一种路由器接口类型的动态调整方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6169745B1 (en) * | 1999-06-18 | 2001-01-02 | Sony Corporation | System and method for multi-level context switching in an electronic network |
CN1369160A (zh) * | 1999-08-27 | 2002-09-11 | 国际商业机器公司 | 使用网络处理器的网络交换机和方法 |
CN1506816A (zh) * | 2002-12-10 | 2004-06-23 | 英特尔公司 | 用于网络处理器的虚拟机 |
CN1558626A (zh) * | 2004-02-10 | 2004-12-29 | 中兴通讯股份有限公司 | 一种用网络处理器实现分组控制功能的方法 |
-
2005
- 2005-08-05 CN CNB2005100912056A patent/CN100442768C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6169745B1 (en) * | 1999-06-18 | 2001-01-02 | Sony Corporation | System and method for multi-level context switching in an electronic network |
US6667988B1 (en) * | 1999-06-18 | 2003-12-23 | Sony Corporation | System and method for multi-level context switching in an electronic network |
CN1369160A (zh) * | 1999-08-27 | 2002-09-11 | 国际商业机器公司 | 使用网络处理器的网络交换机和方法 |
CN1506816A (zh) * | 2002-12-10 | 2004-06-23 | 英特尔公司 | 用于网络处理器的虚拟机 |
CN1558626A (zh) * | 2004-02-10 | 2004-12-29 | 中兴通讯股份有限公司 | 一种用网络处理器实现分组控制功能的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1866912A (zh) | 2006-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102959907B (zh) | 提供用于多维网格拓扑的无缓冲器传输方法 | |
US7418536B2 (en) | Processor having systolic array pipeline for processing data packets | |
CN100442768C (zh) | 一种在网络处理器中加载指令代码的方法和路由设备 | |
US7069372B1 (en) | Processor having systolic array pipeline for processing data packets | |
CN102523764B (zh) | 中继装置 | |
US7769893B2 (en) | Integrated circuit and method for establishing transactions | |
US7526603B1 (en) | High-speed low-power CAM-based search engine | |
CN100433697C (zh) | 多通道高速数据处理器及处理方法 | |
US7995472B2 (en) | Flexible network processor scheduler and data flow | |
CN1327674C (zh) | 核心路由器上支持访问控制列表功能的双栈兼容路由查找器 | |
CN105095150B (zh) | 一种支持片上网络的网络接口 | |
CN101692647A (zh) | 路由器中采用IPv6头封装IPv4包的隧道转发系统 | |
CN106850440B (zh) | 一种面向多地址共享数据路由包的路由器、路由方法及其芯片 | |
CN100365575C (zh) | 一种实现网络处理器动态加载微码的方法及网络设备 | |
JP5534444B2 (ja) | 集積回路およびデータ転送方法 | |
US6728778B1 (en) | LAN switch with compressed packet storage | |
CN101136841A (zh) | 基于现场可编程门阵列的隧道实现装置及方法 | |
CN114650255A (zh) | 报文处理方法及网络设备 | |
CN101764797A (zh) | 一种时分多通道lapd处理器及其设计方法 | |
CN102821046A (zh) | 一种片上网络路由器输出缓冲系统 | |
Chen et al. | Register-exchange based connection allocator for circuit switching nocs | |
JP4444860B2 (ja) | リコンフィギュラブル回路およびそのコンフィギュレーション方法 | |
JP3133234B2 (ja) | Atmスイッチのアドレス生成回路 | |
JP2005295557A (ja) | ルーティング・アーキテクチャ | |
Hsu et al. | Design of a dual-mode noc router integrated with network interface for amba-based ips |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081210 Termination date: 20170805 |