CN101582846B - 路由下发方法、报文转发方法、转发引擎和报文转发设备 - Google Patents
路由下发方法、报文转发方法、转发引擎和报文转发设备 Download PDFInfo
- Publication number
- CN101582846B CN101582846B CN2009100868742A CN200910086874A CN101582846B CN 101582846 B CN101582846 B CN 101582846B CN 2009100868742 A CN2009100868742 A CN 2009100868742A CN 200910086874 A CN200910086874 A CN 200910086874A CN 101582846 B CN101582846 B CN 101582846B
- Authority
- CN
- China
- Prior art keywords
- route
- maintenance table
- type
- transmitting
- forwarding engine
- 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.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种路由下发方法,应用于包括第一转发引擎和第二转发引擎的转发设备,第一转发引擎的转发表容量小于第二转发引擎;该方法包括:第一转发引擎和第二转发引擎都支持的接口类型称为第一类型接口,仅第二转发引擎支持的接口类型称为第二类型接口;路由下一跳为第一类型接口的路由称为第一类型路由,路由下一跳为第二类型接口的路由称为第二类型路由;所述第一转发引擎接收路由引擎发送的路由,将所接收的不与第二类型路由相冲突的第一类型路由下发至自身转发表。本发明还公开了一种报文转发方法,一种转发引擎,以及一种报文转发设备。使用本发明能够在结合各类转发引擎转发优势的同时,能够充分利用转发引擎的转发表空间。
Description
技术领域
本发明涉及网络通信领域中的路由技术,具体涉及应用于包括至少两类转发引擎的设备的路由下发方法、应用于包括至少两类转发引擎的设备的报文转发方法、具有有限转发表容量的转发引擎以及包含该转发引擎的报文转发设备。
背景技术
随着通信产业的迅速发展,用户对网络带宽、网络延迟的要求也不断提高。为了满足这种要求,作为网络路由交换核心的路由器、交换机等报文转发设备的转发速度需要大幅提高。
为了实现高速转发,目前多采用专用集成电路(ASIC,ApplicationSpecific Integrated Circuit)或者网络处理器(NP,Network Processor)实现转发引擎,以满足对转发性能的高要求。其中,ASIC转发性能很高,但由于不能灵活编程,往往不能实现灵活的业务;NP可以通过编程实现灵活的业务,但由于NP的代码空间有限,仅适用于业务不丰富的应用。除NP和ASIC之外,还可以采用通用处理器特别是多核处理器实现报文引擎。通用处理器的转发性能不高,但由于其丰富的处理资源和灵活的可编程性,使得通用处理器可以实现丰富灵活的业务。
可见,采用ASIC、NP或通用处理器实现转发引擎各有利弊,不能充分结合各类转发引擎的优势。
发明内容
有鉴于此,本发明提供了一种路由下发方法,应用于包括至少两类转发引擎的设备,在结合各类转发引擎转发优势的同时,能够充分利用各类转发引擎的转发表空间。
所述两类转发引擎包括第一转发引擎和第二转发引擎,第一转发引擎的转发表容量小于第二转发引擎;第一转发引擎和第二转发引擎都支持的接口类型称为第一类型接口,仅第二转发引擎支持的接口类型称为第二类型接口;下一跳为第一类型接口的路由称为第一类型路由,下一跳为第二类型接口的路由称为第二类型路由;
该方法包括:所述第一转发引擎接收路由引擎发送的路由,将所接收的不与第二类型路由相冲突的第一类型路由下发至自身转发表;其中,相冲突是指存在比下发的第一类型路由更优的第二类型路由。
所述将所接收的不与第二类型路由相冲突的第一类型路由下发至自身转发表具体为:
将所接收的路由R1插入预先设置的维护表;确定R1的类型;
如果R1是第一类型路由、且所述维护表中不存在与R1相冲突的第二类型路由,则向转发表下发R1;在下发成功的情况下,在所述维护表中为R1设置已下发转发表标记;
如果R1是第一类型路由但存在与R1相冲突的第二类型路由,不向所述转发表下发R1;
如果R1是第二类型路由,在所述维护表中查找次优于R1的第一类型路由,根据查找结果更新维护表和转发表。
其中,所述根据查找结果更新维护表和转发表的步骤包括:
如果查找到次优于R1的第一类型路由,记为R11,根据已下发转发表标记判断R11是否已经下发转发表,如果是,则从所述转发表中删除R11,并在所述维护表中清除R11的已下发转发表标记,否则结束本更新维护表和转发表的步骤;
如果没有查找到次优于R1的第一类型路由,则结束本更新维护表和转发表的步骤。
较佳地,在所述维护表中,为各第一类型路由设置冲突个数字段,用于记录所述维护表中与该第一类型路由相冲突的第二类型路由的个数;
当确定所述R1是第一类型路由但存在与R1相冲突的第二类型路由时,该方法进一步包括:统计相冲突的第二类型路由个数,并记录为R1的冲突个数字段值;
当确定所述R1是第二类型路由且在所述维护表中查找到次优于R1的第一类型路由R11时,将R11的冲突个数字段值加1。
较佳地,该方法进一步包括:
所述第一转发引擎接收路由引擎发送的删除路由R2的命令,获取R2的类型,根据已下发转发表标记判断R2是否已下发转发表;
如果R2是第一类型路由且已下发转发表,则删除所述转发表和所述维护表中的R2;
如果R2是第一类型路由但未下发转发表,则删除所述维护表中的R2;
如果R2是第二类型路由,则删除所述维护表中的R2。
较佳地,如果所述R2是第二类型路由,该方法进一步包括:
在所述维护表中查找次优于R2的第一类型路由,并记为R22;
判断除R2之外,所述维护表中是否存在与R22相冲突的第二类型路由;如果不存在,则向转发表下发R22,并在下发成功的情况下,在所述维护表中为R22设置已下发转发表标记,执行所述删除所述维护表中的R2的操作;如果存在,则直接执行所述删除所述维护表中的R2的操作。
较佳地,该方法进一步包括:在所述维护表中,为各第一类型路由设置冲突个数字段,用于记录所述维护表中与该第一类型路由相冲突的第二类型路由的个数;
当在所述维护表中查找到次优于R2的第一类型路由R22时,将R22的冲突个数字段值减1;
所述判断除R2之外,所述维护表中是否存在与R22相冲突的第二类型路由为:判断经所述减1操作后,所述R22的冲突个数字段值是否为0;如果为0,则判定所述维护表中不存在与R22相冲突的第二类型路由;否则,则判定所述维护表中存在与R22相冲突的第二类型路由。
较佳地,所述下发至自身转发表包括:在向转发表下发路由时,判断所述转发表是否已满;如果未满,则将待下发的第一类型路由下发至转发表;否则,将待下发的第一类型路由暂存于预设的暂存表;当所述转发表有空闲位时,将所述暂存表中的第一类型路由下发到所述转发表,并从所述暂存表删除已下发路由。
较佳地,当所述转发表有空闲位时,所述将所述暂存表中的第一类型路由下发到所述转发表为:将所述暂存表中最优的第一类型路由下发到所述转发表。
较佳地,所述将所接收的不与第二类型路由相冲突的第一类型路由下发至自身转发表为:将所接收的不与第二类型路由相冲突的、且最优的第一类型路由下发至自身转发表。
其中,所述第一转发引擎为采用专用交换芯片、网络处理器、现场可编程门阵列或专用集成电路实现的高速转发引擎;
所述第二转发引擎为采用通用处理器或网络处理器实现的业务转发引擎。
本发明还提供了一种报文转发报文的方法,应用于包括至少两类转发引擎的设备,在结合各类转发引擎转发优势的同时,能够充分利用转发引擎的转发表空间。
所述两类转发引擎包括第一转发引擎和第二转发引擎,第一转发引擎的转发表容量小于第二转发引擎;该报文转发方法包括:
所述第一转发引擎采用前述的路由下发方法,将接收自路由引擎的路由下发给自身转发表;
第二转发引擎接收路由引擎发送的路由,将所接收的所有路由下发至自身转发表;
所述第一转发引擎接收从第一类型接口到达的报文,在自身转发表中查找所接收报文的路由,如果查找到,则根据查找到的路由转发报文;否则,则将所接收报文透传给所述第二转发引擎;
所述第二转发引擎接收从第二类型接口到达的报文,以及第一转发引擎透传的报文,在自身转发表中查找所接收报文的路由,根据查找结果转发报文。
本发明又提供了一种转发表容量有限的转发引擎,应用于包括至少两类转发引擎的设备,能够充分利用其有限的转发表空间。
所述两类转发引擎包括所述转发表容量有限的转发引擎和第二转发引擎;所述转发表容量有限的转发引擎的转发表容量小于第二转发引擎;
所述两类转发引擎都支持的接口类型称为第一类型接口,仅第二转发引擎支持的接口类型称为第二类型接口;下一跳为第一类型接口的路由称为第一类型路由,下一跳为第二类型接口的路由称为第二类型路由;
所述转发表容量有限的转发引擎包括处理单元和转发表存储单元;
所述转发表存储单元,用于存储所在转发引擎的转发表;
所述处理单元,用于接收路由引擎发送的路由,将所接收的不与第二类型路由相冲突的第一类型路由下发至所述转发表存储单元存储的转发表;其中,相冲突是指存在比下发的第一类型路由更优的第二类型路由。
其中,所述处理单元包括路由处理模块和维护表存储模块;
所述维护表存储模块,用于存储维护表;
所述路由处理模块包括路由添加子模块,用于接收路由引擎发送的路由R1,将所接收的路由R1插入所述维护表;判断R1的类型;如果R1是第一类型路由、且所述维护表中不存在与R1相冲突的第二类型路由,则向转发表下发R1,在下发成功的情况下,在所述维护表中为R1设置已下发转发表标记;如果R1是第一类型路由但存在与R1相冲突的第二类型路由,不向所述转发表下发R1;如果R1是第二类型路由,则在所述维护表中查找次优于R1的第一类型路由,根据查找结果更新维护表和转发表。
较佳地,所述路由添加子模块进一步用于,在根据查找结果更新维护表和转发表时,如果查找结果为查找到次优于R1的第一类型路由,记为R11,根据已下发转发表标记判断R11是否已经下发转发表,如果已下发,则从所述转发表中删除R11,并在所述维护表中清除R11的已下发转发表标记,如果未下发,则结束本更新维护表和转发表的步骤;如果查找结果为没有查找到次优于R1的第一类型路由,则结束本更新维护表和转发表的步骤。
较佳地,所述路由处理模块进一步包括冲突个数维护子模块,用于在所述维护表中,为各第一类型路由设置冲突个数字段,该冲突个数字段用于记录所述维护表中与第一类型路由相冲突的第二类型路由的个数;
当所述路由添加子模块向所述维护表插入的R1为第一类型路由且存在与R1相冲突的第二类型路由时,所述冲突个数维护子模块统计所述维护表中与R1相冲突的第二类型路由个数,并记录为R1的冲突个数字段值;
当所述路由添加子模块向所述维护表插入的R1为第二类型路由且查找到次优于R1的第一类型路由R11时,所述冲突个数维护子模块将R11的冲突个数字段值加1。
较佳地,所述路由处理模块进一步包括路由删除子模块,用于接收路由引擎发送的删除路由R2的命令,确定R2的类型,根据已下发转发表标记判断R2是否已下发转发表;
如果R2是第一类型路由且已下发转发表,则删除所述转发表和所述维护表中的R2;
如果R2是第一类型路由但未下发转发表,则删除所述维护表中的R2;
如果R2是第二类型路由,则删除所述维护表中的R2。
较佳地,所述路由删除子模块进一步用于,在判定R2是第二类型路由之后,在所述维护表中查找次优于R2的第一类型路由,并记为R22;判断除R2之外,所述维护表中是否存在与R22相冲突的第二类型路由;如果不存在,则向转发表下发R22,并在下发成功的情况下,在所述维护表中为R22设置已下发转发表标记,执行所述删除所述维护表中的R2的操作;否则,直接执行所述删除所述维护表中的R2的操作。
较佳地,所述路由处理模块进一步包括冲突个数维护子模块,用于在所述维护表中,为各第一类型路由设置冲突个数字段,该冲突个数字段用于记录所述维护表中与第一类型路由相冲突的第二类型路由的个数;
当所述路由删除子模块从所述维护表删除的R2为第二类型路由且查找到次优于R2的第一类型路由R22时,所述冲突个数维护子模块将R22的冲突个数字段值减1;
所述路由删除子模块进一步用于,根据经减1操作后的R22的冲突个数字段值是否为0,判断除R2之外,所述维护表中是否存在与R22相冲突的第二类型路由。
较佳地,所述处理单元进一步包括暂存表存储模块,所述路由处理模块进一步包括下发检测子模块;
所述暂存表存储模块,用于存储暂存表;
所述下发检测子模块,用于获取待下发至转发表的第一类型路由,判断转发表是否已满,如果已满,则确定将待下发的第一类型路由暂存于所述暂存表;否则,确定允许将待下发的第一类型路由下发至转发表;当所述转发表有空闲位时,将所述暂存表中暂存的第一类型路由下发到所述转发表,并从所述暂存表删除已下发路由。
本发明还提供了一种报文转发设备,在结合各类转发引擎转发优势的同时,能够充分利用设备中转发引擎的转发表空间。
所述第一转发引擎为前述的转发表容量有限的转发引擎;第一转发引擎的转发表容量小于第二转发引擎;
所述路由引擎,用于学习路由,将学习到的路由发送到所述高速转发引擎和第二转发引擎;
所述第一转发引擎,接收从第一类型接口到达的报文,在自身转发表中查找所接收报文的路由,如果查找到,则根据查找到的路由转发报文;否则,则将所接收报文透传给所述第二转发引擎;
所述第二转发引擎,接收路由引擎发送的路由,将所接收的所有路由下发至自身转发表;接收从第二类型接口到达的报文,以及第一转发引擎透传的报文,在自身转发表中查找所接收报文的路由,根据查找结果转发报文。
根据以上技术方案可见,设备包括至少两类转发引擎,其中具有有限转发表空间的第一转发引擎只下发第一类型路由,不下发第二类型路由,且下发的第一类型路由不存在与其相冲突的第二类型路由。由于第一转发引擎只能根据第一类型路由进行硬件转发,因此采用本发明的路由下发方案,令第一转发引擎的转发表中仅保存适用于第一转发引擎的路由,没有浪费转发表空间。
附图说明
图1为本发明实施例中具有多类型转发引擎的转发架构示意图。
图2为本发明实施例中路由下发方案的示意图。
图3为一种Radix树实现的维护表示意图。
图4为本发明实施例中向高速转发引擎添加一条路由的流程图。
图5为图4中步骤411的具体流程图。
图6为本发明实施例中从高速转发引擎删除一条路由的流程图。
图7为图6中步骤611的具体流程图。
图8为本发明实施例中报文转发过程的示意图。
图9为本发明实施例中高速转发引擎的结构示意图。
图10为图9中路由处理模块910的结构示意图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
为了结合不同转发引擎的转发优势,本发明提供了一种具有多类型转发引擎的转发架构。图1示出了该具有多类型转发引擎的转发架构结构示意图。如图1所示,该转发架构包括路由引擎以及两种类型的转发引擎:第一转发引擎和第二转发引擎,这两种转发引擎协同进行报文转发和业务处理。
其中,路由引擎,通过路由协议或其他方式学习路由,将学习的路由以路由表项的形式同步到第一转发引擎和第二转发引擎。
第一转发引擎,为需要高速转发的流量提供转发服务。本实施例中将第一转发引擎称为高速转发引擎。该高速转发引擎可以采用专用交换芯片、NP、现场可编程门阵列(FPGA)或ASIC实现。其特性是转发性能高,但转发表空间有限。通常一种高速转发引擎处理一种接口类型,例如交换芯片一般只处理以太网接口。
第二转发引擎,为需要灵活业务处理的流量提供业务处理和转发服务。本实施例中将第二转发引擎称为业务转发引擎。该业务转发引擎可以采用通用处理器或NP实现,其特性是转发表项空间较大,能够容纳下路由引擎下发的所有路由,能够处理复杂的业务,例如加密,复杂Qos业务等,而且能够支持丰富的接口类型,如以太网、POS(SONET/SDH上的分组)、CPOS(通道化POS)、ATM(异步传输模式)等接口。但业务转发引擎的转发性能比较低。
当业务转发引擎和高速转发引擎收到路由引擎发送的路由时,将所接收路由下发到各自转发表中。业务转发引擎的容量比较充足,可以将所有路由下发至自身转发表。但是高速转发引擎的转发表容量比较小,至少小于业务转发引擎的转发表容量,通常不能容纳下所有路由,需要进行特殊下发处理。
为此,本发明提供了一种适用于高速转发引擎的路由下发方案。如图2所示,首先将转发引擎支持的接口分为两类,分别称为第一类型接口和第二类型接口,简称为接口1和接口2。
接口1为高速转发引擎和业务转发引擎都支持的接口类型。下一跳为接口1的路由为第一类型路由,简称类型1路由。
接口2为仅业务转发引擎支持,但高速转发引擎不支持的接口类型。下一跳为接口2的路由为第二类型路由,简称类型2路由。
接口1和接口2可以是不同类型的物理接口。目前不同类型的物理接口包括以太网接口、POS接口、CPOS接口、ATM接口等等。比如接口1为路由器上进行高速交换的以太网接口,接口2为该路由器上的POS接口。
接口1和接口2也可以是同一类型物理接口的不同工作模式。例如接口1和接口2均为以太网接口,以太网接口工作在交换端口模式下为接口1,而工作在路由端口模式下为接口2。
基于上述的接口分类,本发明所提供路由下发方案的基本思想是:高速转发引擎接收路由引擎发送的路由,将所接收的不与类型2路由相冲突的类型1路由下发至自身转发表;其中,相冲突是指存在比下发的类型1路由更优的类型2路由。可见,由于转发表容量有限的高速转发引擎仅将自身需要的路由下发至自身转发表,从而充分利用了转发表空间。
具体来说,本发明所提供的路由下发方案参见图2,包括:
路由引擎学习路由将学习到的所有路由发送到业务转发引擎和高速转发引擎;
业务转发引擎接收路由引擎发送的路由,将所接收的所有路由下发至自身转发表中;
高速转发引擎接收路由引擎发送的路由,将所接收的不与类型2路由相冲突的类型1路由下发至自身转发表。高速转发引擎路由下发规则包括以下两点:
1)只下发类型1路由到转发表中。
2)为了保证下发的路由是最优路由,只能下发不和类型2路由相冲突的类型1路由。
如上所述,这里定义的相冲突是指存在比下发的类型1路由更优的类型2路由。在现有技术中类型1路由和类型2路由同时被下发到高速转发引擎的转发表,转发表会对这些路由进行排序,最优路由位置排在次优路由之前,因此在转发时可以直接根据排序位置找到最优路由。但是,本发明只下发类型1路由,不存在类型1路由和类型2路由的排序问题,如果下发的类型1路由存在冲突,高速转发引擎也只能根据非最优的类型1路由进行报文转发,从而出现路由错误,违反了依照最优路径转发的原则。因此,本发明需要在下发类型1路由时,判断是否有比类型1路由更优的类型2路由,如果有,则不下发该类型1路由。
本实施例中为了方便地维护各种路由,可以在高速转发引擎上设置维护表,用于存储路由引擎下发的类型1路由和类型2路由。在维护表中,为了能够明确地显示出各路由是否已下发到转发表,可以为成功下发转发表的路由添加已下发转发表标记。那么,
当高速转发引擎接收到新路由R1时,将R1插入维护表;确定R1的类型;如果R1是类型1路由、且维护表中不存在与R1相冲突的类型2路由,则向转发表下发R1,在下发成功的情况下,为R1设置已下发转发表标记;如果R1是类型1路由但存在与R1相冲突的类型2路由,或者R1是类型2路由,则不向转发表下发R1。
当高速转发引擎接收到路由引擎发送的删除路由R2命令时,确定R2的类型;如果R2是类型1路由且已下发转发表,则删除转发表和维护表中的R2;如果R2是类型1路由但未下发转发表,则删除维护表中的R2,如果高速转发引擎中有暂存表且R2还在暂存表中,则进一步删除暂存表中的R2;如果R2是类型2路由,则删除维护表中的R2。
本实施例中为了方便查找冲突路由,可以在维护表中为各类型1路由设置冲突个数字段,该冲突个数字段用于记录维护表中与类型1路由相冲突的类型2路由的个数,并随维护表内容的变化更新,从而省略了每次下发路由时查找冲突路由的步骤。
为了保证转发表的高效使用,较佳地,在向转发表下发路由时,本发明进一步判断转发表是否已满;如果转发表未满,将待下发的类型1路由下发至转发表;如果已满,则将待下发的类型1路由暂存于预设的暂存表。当转发表有空闲位时,将暂存的类型1路由下发到转发表,并从暂存表删除已下发的类型1路由,从而保持高速转发引擎中转发表的高效使用。
更佳地,从暂存表选取路由时,可以选择一个掩码最长的路由下发到转发表;如果掩码相等时,选择IP地址最大的路由。为了方便选择,暂存表可以按照掩码长度和路由IP地址进行路由排序。
如果未设置暂存表,在转发表满时,可以从维护表中删除待下发的类型1路由。较佳地,在删除之前还可以进一步判断是否存在次优于待下发类型1路由的其他类型1路由,如果没有,则直接执行删除操作,如果有,则从转发表中删除次优的类型1路由,并将待下发类型1路由下发至转发表,从而保证采用最优路由转发。
上述维护表和暂存表可以利用各种数据结构实现。
本发明采用Radix树结构实现维护表,无论这些路由是否刷新到转发表中,都在Radix树中保存一份。Radix树是一种二叉树,采用Radix树实现路由表为常规技术手段。本发明对已有的Radix树进行扩展,在Radix树的节点上添加两个属性字段,分别为下发硬件字段和冲突个数字段。冲突个数字段表示与当前节点表示的类型1路由冲突的类型2路由的个数;下发硬件字段即为前述的已下发转发表标记,表示当前节点表示的路由是否已下发到转发表。
图3示出了本发明中一种Radix树实现的维护表实例。一个根节点可以最多延伸出两个子节点,子节点还可以作为根节点延伸出下一级的子节点。将具有子节点的节点称为内部节点,将没有子节点的节点称为叶子节点;根节点上的bit x的值以及根节点延伸出两分支上的off和on结合起来表示该根节点延伸出去的子节点第x位的值是1还是0,off表示0,on表示1,x最小为0,最大为31。叶子节点和子节点都可以记录路由,只有叶子节点上的路由才是最优路由。
假设路由引擎发送给高速转发引擎4条路由A、B、C、D,将A、B、C、D插入Radix树后的效果如图3所示。
路由A:1.1.0.0/16,(IP地址,掩码:0x1010000,0xffff0000),下一跳为接口1;无冲突,则冲突个数字段为0,假设转发表未满,则下发硬件字段为有效,通常1标识有效。
路由B:2.2.1.0/24,(0x2020100,0xffffff00),下一跳为接口2。
路由C:3.3.0.0/16,(0x3030000,0xffff0000),下一跳为类型1接口;有冲突,D路由比本路由C更优,则冲突数字段为1;因为不是最优路由,因此不下发转发表,则下发硬件字段为0。
路由D:3.3.1.0/24,(0x3030100,0xffffff00),下一跳为类型2接口。
本发明还采用红黑树的数据结构实现暂存表。该红黑树的数据结构具有查找、排序、插入和删除表项的能力,方便进行表项的处理。当也不需要严格限定必须采用红黑树的数据结构,还采用其他具有查找、排序、插入和删除表项能力的数据结构。采用红黑树的数据结构进行表项存储为已知技术,这里不详述其存储、查找、排序、插入和删除等功能的具体实现过程。
下面在采用Radix树实现维护表和采用红黑树实现暂存表的情况下,对高速转发引擎添加和删除路由的处理过程进行详细描述。
图4为本发明实施例中向高速转发引擎中添加一条路由的流程图。如图4所示,该流程包括以下步骤:
在步骤401中,接收路由引擎下发的一条路由,记为R1。
在步骤402中,判断R1是否已经存在于Radix树中,如果是,则不需要添加到Radix树,执行步骤412;否则,执行步骤403。
在步骤403中,将R1插入Radix树,向Radix树插入路由的过程为已知技术手段,这里不详述。
在步骤404中,判断R1是类型1路由,还是类型2路由,如果是类型1路由,则执行步骤405;如果是类型2路由,则执行步骤411。
在步骤405中,判断Radix树中是否存在与R1相冲突的类型2路由,如果有,则在步骤406中统计冲突的类型2路由的个数,并将R1的冲突个数字段值更新为统计的冲突路由个数,然后执行步骤412;否则,在步骤407至410中执行将R1下发给转发表的操作。
在步骤407中,判断高速转发引擎的转发表是否已满,如果是,则在步骤408中将R1添加到红黑树中,然后执行步骤412;否则,执行步骤409和410。
在步骤409和410中,将R1下发到转发表,并在Radix树中将R1的下发硬件字段置1,然后执行步骤412。
上述R1的下发硬件字段和R1的冲突个数字段均为R1所在Radix树节点上的下发硬件字段和冲突个数字段,为了描述方便,均采用简称。
在步骤411中,在Radix树中查找与R1冲突的类型1路由,根据查找结果更新Radix树中相应类型1路由的属性和转发表,然后执行步骤412。
本步骤的执行原因是,在Radix树中添加类型2路由R1后,该添加操作会给与R2冲突的类型1路由带来影响,例如某个类型1路由没有冲突,已经下发转发表,当R1添加后,与该类型1路由冲突,此时该类型1路由不满足下发规则,需要从转发表中删除。因此添加类型2路由后会涉及到相关类型1节点以及转发表的更新。
该步骤411的具体实现参见下文对图5的描述。
在步骤412中,等待接收并处理路由引擎发送的下一条路由。
至此,本流程结束。
图5为图4中步骤411的细化流程图。如图5所示,该流程包括如下步骤:
在步骤501中,在Radix树中,回溯类型2路由R1的所有父节点,查找类型1路由,该父节点上的类型1路由是次优于R1的路由;如果查找到次优于R1的类型1路由,则记为R11,此时执行步骤502;如果未找到类型1路由,则结束本步骤411,执行步骤412。
在步骤502中,根据R11的下发硬件字段值,判断R11是否已下发转发表,如果是,则执行步骤505和506;否则执行步骤507。
在步骤505和506中,从转发表中删除R11,保证次优路由不在转发表中,并在Radix树中将R11的下发硬件字段置为0,然后执行步骤412。
在步骤507中,判断R11是否在红黑树中,如果在,则说明R11未下发到转发表中,此时只需在步骤508从红黑树中删除R11即可,然后执行步骤412;如果R11不在红黑树中,则表明在插入R1之前,R11已经存储在冲突,还未下发到转发表中,直接执行步骤412。
至此,本流程结束。
图6为本发明实施例中从高速转发引擎中删除一条路由的流程图。如图6所示,该流程包括以下步骤:
在步骤601中,接收路由引擎下发的删除路由命令,假设删除路由R2。
在步骤602中,判断Radix树中是否有R2,如果有,则执行步骤603;否则执行步骤612。
在步骤603中,判断R2是类型1路由还是类型2路由,如果是类型2路由,则执行步骤611;如果R2为类型1路由,则执行步骤604。
在步骤604中,判断R2是否已经下发到转发表中;如果是,则执行步骤605至607;否则执行步骤608。
在步骤605至607中,由于R2已经下发到转发表中,因此从转发表中删除R2;经删除,转发表中已经有空闲位,此时可以选取红黑树中的最优路由下发到转发表中,并在Radix树中将该下发的最优路由的下发硬件字段置1,然后执行步骤610。步骤606和607的操作也可以在步骤610之后执行。
在步骤608中,由于R2还未下发到转发表中,判断R2是否在红黑树中,如果R2在红黑树中,则在步骤609中删除红黑树中的R2并执行步骤610;如果R2不在红黑树中,则直接执行步骤610。
在步骤610中,从Radix树中删除作为类型1路由的R2,执行步骤612。
在步骤611中,从Radix树中删除作为类型2路由的R2,更新Radix树中与R2冲突的类型1路由的属性以及转发表,然后执行步骤612。
本步骤的执行原因是,本步骤611在从Radix树中删除R2后,该删除操作会给与R2冲突的类型1路由带来影响,例如某个类型1路由与R2冲突,当R2被删除后,该类型1路由可以被下发转发表,因此删除类型2路由后会涉及到相关类型1节点以及转发表的更新。
该步骤611的具体实现参见下文对图7的描述。
在步骤612中,等待接收并处理路由引擎下发的下一条删除命令。
至此,本流程结束。
图7为图6中步骤611的细化流程图。如图7所示,该流程包括如下步骤:
在步骤701中,在Radix树中,回溯待删除类型2路由R2的所有父节点,查找类型1路由,该类型1路由为次优于R2的类型1路由。
在步骤702中,判断是否在父节点中查找到类型1路由,如果查找到,则将查找到的类型1路由记为R22,此时执行步骤703;否则执行步骤709。
在步骤703中,将R22的冲突个数字段值减1。
在步骤704中,根据冲突个数字段值判断R22是否可以下发转发表,如果冲突个数字段值为0,则判定Radix树中不存在与R22相冲突的类型2路由,R22可以下发转发表,执行步骤705;如果冲突个数字段值大于0,则判定Radix树中存在与R22相冲突的类型2路由,R22暂不能下发转发表,执行步骤709;
在步骤705中,判断转发表是否已满,如果转发表已满,则在步骤706中将R22添加到红黑树中,然后执行步骤709;如果转发表未满,则在步骤707至708中将R22下发到转发表中,并在Radix树中将R22的下发硬件字段置为1,然后执行步骤709。
在步骤709中,从Radix树中删除R2,执行步骤612。
至此,本流程结束。
以上图4至图7所描述的流程均以设置有红黑树为例,在实际中如果没有设置红黑树,则图4至图7所描述的流程不包括相关红黑树的步骤。例如在没有设置红黑树的情况下,如果图5中的步骤504判定R11未下发转发表,则直接执行步骤412。
由图4至图7所描述的流程可以看出,当插入类型1路由时,以及当插入或删除类型2路由时,均有可能涉及到类型1路由的冲突个数字段更新。
具体来说:
当向维护表插入类型1路由时,统计与插入的类型1路由相冲突的类型2路由个数,并记录为冲突个数字段值;
当向维护表插入类型2路由时,查找次优于插入的类型2路由的类型1路由,将查找到的类型1路由的冲突个数字段值加1;
当从维护表删除类型2路由时,查找次优于待删除的类型2路由的类型1路由,将查找到的类型1路由的冲突个数字段值减1。
由图4至图7所描述的流程还可以看出,当类型1路由的冲突个数字段从0变为n(n为正整数),或从n变为0时,均有可能引起对转发表和/或暂存表的操作,具体来说:
当与类型1路由相冲突的类型2路由的个数从0变为n时,如果类型1路由已下发转发表,则从转发表中删除该类型1路由,并清除该类型1路由的已下发转发表标记;进一步地,如果高速转发引擎包括暂存表,则当该类型1路由未下发转发表时,从暂存表中删除该类型1路由。
当与类型1路由相冲突的类型2路由个数从n变为0时,向转发表下发该类型1路由。在下发过程中,需要根据转发表是否已满执行相应下发操作。
以上实施例中是将所有符合路由下发规则的类型1路由下发到转发表中,即使类型1路由之间存在冲突,也可以通过转发表的路由排序选择出最优路由。为了进一步提高转发表的利用率,路由下发规则进一步包括:仅将最优的类型1路由下发至转发表。最优的类型1路由可以方便地从Radix树中查找到,即Radix树中最后一级节点上的路由。在这种转发表只存储最优路由的情况下,需要注意当从转发表和/或Radix树和/或红黑树删除类型1路由时,如果由于删除操作的发生,使得Radix树中出现从次优变为最优的类型1路由,则可以将该从次优变为最优的路由下发转发表,以保持转发表的有效性。
路由下发完成后,高速转发引擎和业务转发引擎就可以根据其转发表中的路由进行报文转发。图8示出了各种情况下的转发过程示意图。
如图8所示,对于高速转发引擎来说,接收从接口1到达的报文,在自身转发表中查找所接收报文的路由,如果查找到,则根据查找到的路由转发报文。由于高速转发引擎中的路由下一跳均为接口1,因此查找到路由的情况下,将报文从一个接口1发送,如图8中的流量1;
如果未查找到对应路由,则说明可能出现以下两种情况之一:情况一是由于转发表满,相应路由被暂存,还未被下发到转发表;情况二是高速转发引擎不存在相应路由,例如所接收报文的出接口为接口2。对于这两种情况,高速转发引擎都将所接收报文透传给业务转发引擎。不同之处在于,对于情况一,业务转发引擎查找到对应路由后通过接口1发送,高速引擎也不参与路由查找,如图2中的流量2;对于情况二,业务转发引擎查找到对应路由后通过接口2发送,如图8中的流量3。
对于业务转发引擎来说,无论报文从接口2到达或者由高速转发引擎透传到自身,业务转发引擎在自身转发表中查找所接收报文的路由,根据查找结果转发报文。由于其转发表中包含全部路由,因此可以为所有报文确定出接口,从而将报文从接口1或接口2转发出去。图8中的流量4是通过接口1发送,流量5是通过接口2发送。
为了实现上述路由下发方法,本发明还提供了一种应用于如图2所示转发架构的第一转发引擎,也即图8所示的高速转发引擎。图9示出了高速转发引擎的结构示意图。如图9所示,该高速转发引擎包括处理单元91和转发表存储单元92。
首先,如前述路由下发方法所述,将高速转发引擎和业务转发引擎都支持的接口类型称为接口1,将仅业务转发引擎支持的接口类型称为接口2;路由下一跳为接口1的路由称为类型1路由,路由下一跳为接口2的路由称为类型2路由。
其中,转发表存储单元92,用于存储高速转发引擎的转发表。
处理单元93,用于接收路由引擎发送的路由,将所接收的不与类型2路由相冲突的类型1路由下发至自身转发表;其中,不与类型2路由相冲突是指不存在比类型1路由更优的类型2路由。
处理单元91具体包括路由处理模块910和维护表存储模块920。其中,
路由处理模块910负责维护表和转发表的维护。
维护表存储模块920,用于存储维护表。
图10示出了路由处理模块910的具体结构。如图9所示,该路由处理模块910包括路由添加子模块911和路由删除子模块912。
路由添加子模块911,用于接收路由引擎发送的路由,将所接收的路由R1插入维护表;判断R1的类型;如果R1是类型1路由、且维护表中不存在与R1相冲突的类型2路由,则向转发表下发R1,在下发成功的情况下,在维护表中为R1设置已下发转发表标记;如果R1是类型1路由、但存在与R1相冲突的类型2路由,不向所述转发表下发R1;如果R1是类型2路由,则在维护表中查找次优于R1的类型1路由,根据查找结果更新维护表和转发表。
路由添加子模块911根据查找结果更新维护表和转发表的操作具体包括:如果查找结果为查找到次优于R1的类型1路由,记为R11,根据已下发转发表标记判断R11是否已经下发转发表,如果是,则从所述转发表中删除R11,并在所述维护表中清除R11的已下发转发表标记;如果未下发,则结束本更新维护表和转发表的步骤;如果查找结果为没有查找到次优于R1的类型1路由,则结束本更新维护表和转发表的步骤。
路由删除子模块912,用于接收路由引擎发送的删除路由命令,获取待删除路由R2的类型,根据维护表中R2的已下发转发表标记判断R2是否已下发转发表;如果R2是类型1路由且已下发转发表,则删除所述转发表和所述维护表中的R2;如果R2是类型1路由但未下发转发表,则删除所述维护表中的R2;如果R2是类型2路由,则删除所述维护表中的R2。
该路由删除子模块912进一步用于,在判定R2是第二类型路由之后,在维护表中查找次优于R2的类型1路由,并记为R22;判断除R2之外,维护表中是否存在与R22相冲突的类型2路由;如果不存在,则将R22下发到转发表,并在下发成功的情况下,在所述维护表中为R22设置已下发转发表标记,执行删除维护表中的R2的操作;该删除R2的操作也可以在查找R22之前执行。否则,直接执行删除维护表中的R2的操作。
为了方便查找冲突路由,路由处理模块910进一步包括冲突个数维护子模块914,用于在维护表存储模块920存储的维护表中,为各类型1路由设置冲突个数字段。
当路由添加子模块911向维护表插入的R1为类型1路由且维护表中存在与R1相冲突的类型2路由时,冲突个数维护子模块914统计维护表中与R1相冲突的类型2路由的个数,并记录为R1的冲突个数字段值;
当路由添加子模块911向维护表插入的R1为类型2路由且查找到次优于R1的类型1路由R11时,冲突个数维护子模块914将R11的冲突个数字段值加1;
当路由删除子模块912从维护表删除类型2路由R2且在维护表中查找到次优于R2的类型1路由R22时,冲突个数维护子模块914将R22的冲突个数字段值减1。在这种情况下,路由删除子模块912还根据经减1操作后的R22的冲突个数字段值是否为0判断R22是否可以下发转发表,具体为:判断经所述减1操作后,R22的冲突个数字段值是否为0;如果为0,则判定维护表中不存在与R22相冲突的类型2路由,R22可以下发转发表;否则,则判定维护表中存在与R22相冲突的类型2路由,R22暂不可以下发转发表。
较佳地,处理单元91进一步包括暂存表存储模块930,相应地,路由处理模块910进一步包括下发检测子模块915。暂存表存储模块930和下发检测子模块915在图9和图10中采用虚线框示出。
暂存表存储模块930,用于存储暂存表。
下发检测子模块915,用于获取待下发至转发表的类型1路由,该获取方式可以是路由添加子模块911和路由删除子模块912在需要下发路由时,将待下发的路由发送给下发检测子模块915,由下发检测子模块915执行下发检测后,根据是否允许下发的检测结果直接进行相应处理。获取方式还可以是路由添加子模块911和路由删除子模块912在需要下发路由时,通知下发检测子模块915,由下发检测子模块915执行下发检测后,将是否允许下发的检测结果反馈给各子模块,由各子模块根据检测结果执行相应操作,在这种情况下,路由添加子模块911和路由删除子模块912还需要与暂存表存储模块930相连。
下发检测子模块915执行的下发检测包括:判断转发表是否已满,如果已满,则确定将待下发的类型1路由暂存于暂存表存储模块930存储的暂存表;否则,确定允许将待下发的类型1路由下发至转发表;该下发检测子模块915还检测转发表,当所述转发表有空闲位时,将暂存表暂存的类型1路由下发到转发表,并从所述暂存表删除已下发路由。
较佳地,为了进一步提高转发表的利用率,处理单元93仅将最优的类型1路由下发至转发表。在这种情况下,各个模块在下发路由时,都需要确定待下发的类型1路由是否为最优,这里的最优是指相对于类型2路由和其他类型1路由均为最优;各个模块在删除路由时,也需要确定由于删除操作的发生,是否使得Radix树中出现了从次优变为最优的类型1路由,如果有则将从次优变为最优的类型1路由下发转发表,以保持转发表的有效性。
当然高速转发引擎还包括转发单元,用于根据转发表对接收的报文进行转发,当查找到对应路由时,根据查找到的路由进行转发,当未查找到对应路由时,将报文透传给业务转发引擎。图9中未示出该转发单元。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (19)
1.一种路由下发方法,其特征在于,应用于包括至少两类转发引擎的设备,所述两类转发引擎包括第一转发引擎和第二转发引擎,第一转发引擎的转发表容量小于第二转发引擎;第一转发引擎和第二转发引擎都支持的接口类型称为第一类型接口,仅第二转发引擎支持的接口类型称为第二类型接口;下一跳为第一类型接口的路由称为第一类型路由,下一跳为第二类型接口的路由称为第二类型路由;
该方法包括:所述第一转发引擎接收路由引擎发送的路由,将所接收的不与第二类型路由相冲突的第一类型路由下发至自身转发表;其中,相冲突是指存在比下发的第一类型路由更优的第二类型路由;
所述将所接收的不与第二类型路由相冲突的第一类型路由下发至自身转发表具体为:
将所接收的路由R1插入预先设置的维护表;确定R1的类型;
如果R1是第一类型路由、且所述维护表中不存在与R1相冲突的第二类型路由,则向转发表下发R1;在下发成功的情况下,在所述维护表中为R1设置已下发转发表标记;
如果R1是第一类型路由但存在与R1相冲突的第二类型路由,不向所述转发表下发R1;
如果R1是第二类型路由,在所述维护表中查找次优于R1的第一类型路由,根据查找结果更新维护表和转发表。
2.如权利要求1所述的方法,其特征在于,所述根据查找结果更新维护表和转发表的步骤包括:
如果查找到次优于R1的第一类型路由,记为R11,根据已下发转发表标记判断R11是否已经下发转发表,如果是,则从所述转发表中删除R11,并在所述维护表中清除R11的已下发转发表标记,否则结束本更新维护表和转发表的步骤;
如果没有查找到次优于R1的第一类型路由,则结束本更新维护表和转发表的步骤。
3.如权利要求2所述的方法,其特征在于,在所述维护表中,为各第一类型路由设置冲突个数字段,用于记录所述维护表中与该第一类型路由相冲突的第二类型路由的个数;
当确定所述R1是第一类型路由但存在与R1相冲突的第二类型路由时,该方法进一步包括:统计相冲突的第二类型路由个数,并记录为R1的冲突个数字段值;
当确定所述R1是第二类型路由且在所述维护表中查找到次优于R1的第一类型路由R11时,将R11的冲突个数字段值加1。
4.如权利要求1所述的方法,其特征在于,该方法进一步包括:
所述第一转发引擎接收路由引擎发送的删除路由R2的命令,获取R2的类型,根据已下发转发表标记判断R2是否已下发转发表;
如果R2是第一类型路由且已下发转发表,则删除所述转发表和所述维护表中的R2;
如果R2是第一类型路由但未下发转发表,则删除所述维护表中的R2;
如果R2是第二类型路由,则删除所述维护表中的R2。
5.如权利要求4所述的方法,其特征在于,如果所述R2是第二类型路由,该方法进一步包括:
在所述维护表中查找次优于R2的第一类型路由,并记为R22;
判断除R2之外,所述维护表中是否存在与R22相冲突的第二类型路由;如果不存在,则向转发表下发R22,并在下发成功的情况下,在所述维护表中为R22设置已下发转发表标记,执行所述删除所述维护表中的R2的操作;如果存在,则直接执行所述删除所述维护表中的R2的操作。
6.如权利要求5所述的方法,其特征在于,该方法进一步包括:在所述维护表中,为各第一类型路由设置冲突个数字段,用于记录所述维护表中与该第一类型路由相冲突的第二类型路由的个数;
当在所述维护表中查找到次优于R2的第一类型路由R22时,将R22的冲突个数字段值减1;
所述判断除R2之外,所述维护表中是否存在与R22相冲突的第二类型路由为:判断经所述减1操作后,所述R22的冲突个数字段值是否为0;如果为0,则判定所述维护表中不存在与R22相冲突的第二类型路由;否则,则判定所述维护表中存在与R22相冲突的第二类型路由。
7.如权利要求1所述的方法,其特征在于,所述下发至自身转发表包括:在向转发表下发路由时,判断所述转发表是否已满;如果未满,则将待下发的第一类型路由下发至转发表;否则,将待下发的第一类型路由暂存于预设的暂存表;当所述转发表有空闲位时,将所述暂存表中的第一类型路由下发到所述转发表,并从所述暂存表删除已下发路由。
8.如权利要求7所述的方法,其特征在于,当所述转发表有空闲位时,所述将所述暂存表中的第一类型路由下发到所述转发表为:将所述暂存表中最优的第一类型路由下发到所述转发表。
9.如权利要求1所述的方法,其特征在于,所述将所接收的不与第二类型路由相冲突的第一类型路由下发至自身转发表为:将所接收的不与第二类型路由相冲突的、且最优的第一类型路由下发至自身转发表。
10.如权利要求1所述的方法,其特征在于,所述第一转发引擎为采用专用交换芯片、网络处理器、现场可编程门阵列或专用集成电路实现的高速转发引擎;
所述第二转发引擎为采用通用处理器或网络处理器实现的业务转发引擎。
11.一种报文转发方法,其特征在于,应用于包括至少两类转发引擎的设备,所述两类转发引擎包括第一转发引擎和第二转发引擎,第一转发引擎的转发表容量小于第二转发引擎;该报文转发方法包括:
所述第一转发引擎采用如权利要求1至10任意一项所述的路由下发方法,将接收自路由引擎的路由下发给自身转发表;
第二转发引擎接收路由引擎发送的路由,将所接收的所有路由下发至自身 转发表;
所述第一转发引擎接收从第一类型接口到达的报文,在自身转发表中查找所接收报文的路由,如果查找到,则根据查找到的路由转发报文;否则,则将所接收报文透传给所述第二转发引擎;
所述第二转发引擎接收从第二类型接口到达的报文,以及第一转发引擎透传的报文,在自身转发表中查找所接收报文的路由,根据查找结果转发报文。
12.一种转发表容量有限的转发引擎,其特征在于,应用于具有至少两类转发引擎的设备;所述两类转发引擎包括所述转发表容量有限的转发引擎和第二转发引擎;所述转发表容量有限的转发引擎的转发表容量小于第二转发引擎;
所述两类转发引擎都支持的接口类型称为第一类型接口,仅第二转发引擎支持的接口类型称为第二类型接口;下一跳为第一类型接口的路由称为第一类型路由,下一跳为第二类型接口的路由称为第二类型路由;
所述转发表容量有限的转发引擎包括处理单元和转发表存储单元;
所述转发表存储单元,用于存储所在转发引擎的转发表;
所述处理单元,用于接收路由引擎发送的路由,将所接收的不与第二类型路由相冲突的第一类型路由下发至所述转发表存储单元存储的转发表;其中,相冲突是指存在比下发的第一类型路由更优的第二类型路由;
所述处理单元包括路由处理模块和维护表存储模块;
所述维护表存储模块,用于存储维护表;
所述路由处理模块包括路由添加子模块,用于接收路由引擎发送的路由R1,将所接收的路由R1插入所述维护表;判断R1的类型;如果R1是第一类型路由、且所述维护表中不存在与R1相冲突的第二类型路由,则向转发表下发R1,在下发成功的情况下,在所述维护表中为R1设置已下发转发表标记;如果R1是第一类型路由但存在与R1相冲突的第二类型路由,不向所述转发表下发R1;如果R1是第二类型路由,则在所述维护表中查找次优于R1的第一类型路由,根据查找结果更新维护表和转发表。
13.如权利要求12所述的转发表容量有限的转发引擎,其特征在于,所述 路由添加子模块进一步用于,在根据查找结果更新维护表和转发表时,如果查找结果为查找到次优于R1的第一类型路由,记为R11,根据已下发转发表标记判断R11是否已经下发转发表,如果已下发,则从所述转发表中删除R11,并在所述维护表中清除R11的已下发转发表标记,如果未下发,则结束本更新维护表和转发表的步骤;如果查找结果为没有查找到次优于R1的第一类型路由,则结束本更新维护表和转发表的步骤。
14.如权利要求13所述的转发表容量有限的转发引擎,其特征在于,所述路由处理模块进一步包括冲突个数维护子模块,用于在所述维护表中,为各第一类型路由设置冲突个数字段,该冲突个数字段用于记录所述维护表中与第一类型路由相冲突的第二类型路由的个数;
当所述路由添加子模块向所述维护表插入的R1为第一类型路由且存在与R1相冲突的第二类型路由时,所述冲突个数维护子模块统计所述维护表中与R1相冲突的第二类型路由个数,并记录为R1的冲突个数字段值;
当所述路由添加子模块向所述维护表插入的R1为第二类型路由且查找到次优于R1的第一类型路由R11时,所述冲突个数维护子模块将R11的冲突个数字段值加1。
15.如权利要求12所述的转发表容量有限的转发引擎,其特征在于,所述路由处理模块进一步包括路由删除子模块,用于接收路由引擎发送的删除路由R2的命令,确定R2的类型,根据已下发转发表标记判断R2是否已下发转发表;
如果R2是第一类型路由且已下发转发表,则删除所述转发表和所述维护表中的R2;
如果R2是第一类型路由但未下发转发表,则删除所述维护表中的R2;
如果R2是第二类型路由,则删除所述维护表中的R2。
16.如权利要求15所述的转发表容量有限的转发引擎,其特征在于,所述路由删除子模块进一步用于,在判定R2是第二类型路由之后,在所述维护表中查找次优于R2的第一类型路由,并记为R22;判断除R2之外,所述维护表 中是否存在与R22相冲突的第二类型路由;如果不存在,则向转发表下发R22,并在下发成功的情况下,在所述维护表中为R22设置已下发转发表标记,执行所述删除所述维护表中的R2的操作;否则,直接执行所述删除所述维护表中的R2的操作。
17.如权利要求16所述的转发表容量有限的转发引擎,其特征在于,所述路由处理模块进一步包括冲突个数维护子模块,用于在所述维护表中,为各第一类型路由设置冲突个数字段,该冲突个数字段用于记录所述维护表中与第一类型路由相冲突的第二类型路由的个数;
当所述路由删除子模块从所述维护表删除的R2为第二类型路由且查找到次优于R2的第一类型路由R22时,所述冲突个数维护子模块将R22的冲突个数字段值减1;
所述路由删除子模块进一步用于,根据经减1操作后的R22的冲突个数字段值是否为0,判断除R2之外,所述维护表中是否存在与R22相冲突的第二类型路由。
18.如权利要求12所述的转发表容量有限的转发引擎,其特征在于,所述处理单元进一步包括暂存表存储模块,所述路由处理模块进一步包括下发检测子模块;
所述暂存表存储模块,用于存储暂存表;
所述下发检测子模块,用于获取待下发至转发表的第一类型路由,判断转发表是否已满,如果已满,则确定将待下发的第一类型路由暂存于所述暂存表;否则,确定允许将待下发的第一类型路由下发至转发表;当所述转发表有空闲位时,将所述暂存表中暂存的第一类型路由下发到所述转发表,并从所述暂存表删除已下发路由。
19.一种报文转发设备,其特征在于,该报文转发设备包括路由引擎、第一转发引擎和第二转发引擎;所述第一转发引擎为如权利要求12至18任意一项所述的转发表容量有限的转发引擎;第一转发引擎的转发表容量小于第二转发引擎;
所述路由引擎,用于学习路由,将学习到的路由发送到所述高速转发引擎和第二转发引擎;
所述第一转发引擎,接收从第一类型接口到达的报文,在自身转发表中查找所接收报文的路由,如果查找到,则根据查找到的路由转发报文;否则,则将所接收报文透传给所述第二转发引擎;
所述第二转发引擎,接收路由引擎发送的路由,将所接收的所有路由下发至自身转发表;接收从第二类型接口到达的报文,以及第一转发引擎透传的报文,在自身转发表中查找所接收报文的路由,根据查找结果转发报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100868742A CN101582846B (zh) | 2009-06-10 | 2009-06-10 | 路由下发方法、报文转发方法、转发引擎和报文转发设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100868742A CN101582846B (zh) | 2009-06-10 | 2009-06-10 | 路由下发方法、报文转发方法、转发引擎和报文转发设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101582846A CN101582846A (zh) | 2009-11-18 |
CN101582846B true CN101582846B (zh) | 2012-01-04 |
Family
ID=41364812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100868742A Active CN101582846B (zh) | 2009-06-10 | 2009-06-10 | 路由下发方法、报文转发方法、转发引擎和报文转发设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101582846B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102075435A (zh) * | 2011-02-09 | 2011-05-25 | 杭州华三通信技术有限公司 | 路由下发方法和装置 |
EP2815609A2 (en) | 2012-02-16 | 2014-12-24 | Koninklijke Philips N.V. | Method for managing a proxy table in a wireless network using proxy devices |
CN104580027B (zh) | 2013-10-25 | 2018-03-20 | 新华三技术有限公司 | 一种OpenFlow报文转发方法及设备 |
CN107404439B (zh) | 2016-05-18 | 2020-02-21 | 华为技术有限公司 | 用于重定向数据流的方法和系统、网络设备和控制设备 |
CN106161242B (zh) * | 2016-08-30 | 2019-05-21 | 锐捷网络股份有限公司 | 一种路由下发方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1838609A (zh) * | 2005-03-22 | 2006-09-27 | 杭州华为三康技术有限公司 | 一种集中式业务处理方法及路由设备 |
US7206856B1 (en) * | 2002-04-15 | 2007-04-17 | Juniper Networks, Inc. | Routing instances for network system management and control |
CN200990619Y (zh) * | 2005-10-12 | 2007-12-12 | 丛林网络公司 | 路由装置 |
CN101404612A (zh) * | 2008-11-20 | 2009-04-08 | 杭州华三通信技术有限公司 | 实现数据流硬件转发的方法和系统以及网络路由设备 |
-
2009
- 2009-06-10 CN CN2009100868742A patent/CN101582846B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206856B1 (en) * | 2002-04-15 | 2007-04-17 | Juniper Networks, Inc. | Routing instances for network system management and control |
CN1838609A (zh) * | 2005-03-22 | 2006-09-27 | 杭州华为三康技术有限公司 | 一种集中式业务处理方法及路由设备 |
CN200990619Y (zh) * | 2005-10-12 | 2007-12-12 | 丛林网络公司 | 路由装置 |
CN101404612A (zh) * | 2008-11-20 | 2009-04-08 | 杭州华三通信技术有限公司 | 实现数据流硬件转发的方法和系统以及网络路由设备 |
Non-Patent Citations (1)
Title |
---|
张怀庆.基于TCAM的多核处理器的高速路由查找转发引擎设计.《山东大学硕士学位论文》.2008, * |
Also Published As
Publication number | Publication date |
---|---|
CN101582846A (zh) | 2009-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6633548B2 (en) | Method and apparatus for ternary content addressable memory (TCAM) table management | |
CA2338969C (en) | Packet exchange and router and input packet processing method thereof | |
US8090901B2 (en) | TCAM management approach that minimize movements | |
CN101820395B (zh) | 基于mpls的路由信息配置和私网标签添加方法及装置 | |
CN102123091B (zh) | 多链接透明传输互连转发表生成方法、装置及网络设备 | |
US7565453B2 (en) | System and method for accessing and transmitting different data frames in a digital transmission network | |
CN101582846B (zh) | 路由下发方法、报文转发方法、转发引擎和报文转发设备 | |
CN101631086B (zh) | 并行ip路由查找的路由表分区和放置方法 | |
CN103098426A (zh) | 使用分层标记栈改进ldp收敛的方法和设备 | |
CN101505279B (zh) | 一种路由查找方法和装置 | |
US7391730B1 (en) | System and method for synchronizing link state databases in a network environment | |
CN106470158A (zh) | 报文转发方法及装置 | |
CN103201987A (zh) | 区分路由信息更新的优先级 | |
CN103516612B (zh) | 分布式路由器中生成路由表项的方法及分布式路由器 | |
US20150146525A1 (en) | Transfer apparatus, server, and route changing method | |
CN102111334A (zh) | 一种交换网中信元的处理方法、源线卡和网卡 | |
CN102325077B (zh) | 分支机构间的通信方法及分支机构的出口路由器 | |
US6925503B2 (en) | Method and system for performing a longest prefix match search | |
CN101562574A (zh) | 一种路由表的更新方法及装置 | |
US20060153193A1 (en) | Network routing control method and apparatus | |
US7035256B1 (en) | Method and apparatus for a routing information base | |
CN101938424B (zh) | 建立路由表的方法和装置及报文转发方法和装置 | |
CN102045262B (zh) | 媒体接入控制地址表更新方法、装置及网络设备 | |
US7702882B2 (en) | Apparatus and method for performing high-speed lookups in a routing table | |
CN101867524B (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |