报文转发方法和装置制造方法

文档序号:7997540阅读:117来源:国知局
报文转发方法和装置制造方法
【专利摘要】本申请提供了一种报文转发方法和装置。该方法中,通过从网络设备的通用CPU中独立出至少一个Core作为虚拟ASIC芯片,所述虚拟ASIC芯片存储网段路由、以及接收并存储通用CPU下发的主机路由,并从已存储的网段路由中找到与所述主机路由中主机IP地址对应的网段路由,修改该网段路由的出端口为连接所述虚拟ASIC芯片的端口,并下发至所述网络设备的物理ASIC芯片,这能够实现虚拟ASIC芯片与物理ASIC芯片相结合来管理路由,相比于现有技术仅利用物理ASIC芯片管理所有路由,节省物理ASIC芯片的表项资源。
【专利说明】报文转发方法和装置

【技术领域】
[0001]本申请涉及网络通信技术,特别涉及报文转发方法和装置。

【背景技术】
[0002]在数据中心(DC)中,网络设备比如交换机主要包含通用CPU和物理ASIC芯片,具体如图1所示。下面分别对通用CPU和物理ASIC芯片进行描述:
[0003]通用CPU:
[0004]通用CPU是设备的软件部分,一般用于协议状态的维护和处理、用户配置处理的下发,ASIC硬件表项的生成、下发、更新、删除等,为提高处理性能,目前通用CPU由多核处理器组成。
[0005]简单说来,多核处理器,是在同一个硅晶片上集成多个独立物理核(Core)的器件,如图1所示,通用CPU的多核处理器由Corel至N组成。所谓Core,就是指处理器内部负责计算、接受/存储命令、处理数据的执行中心,可以理解成一个单核CPU。每个Core都具有独立的逻辑结构,包括缓存、执行单元、指令级单元和总线接口等逻辑单元,通过高速总线、内存共享进行通信。在实际工作中,多个Core协同处理任务,以达到性能倍增的目的。
[0006]随着网络业务发展越来越灵活,通用CPU也越来越多地用于网络产品的系统设计中。它的主频一般都很高,到2?3G左右,超流水线设计,具有很高的系统运算性能。
[0007]物理ASIC芯片:
[0008]物理ASIC芯片是设备的硬件部分,一般用于利用自身维护的硬件转发表项(ARP/FIB/MAC...)等实现数据报文的快速转发。物理ASIC芯片的出现是为了应对目前网络带宽需求爆炸式增长应运而生的。它将IP转发、MAC转发以硬件的方式固化下来,轻易达到几十个G的包转发性能,这是传统嵌入式CPU以及通用CPU根本无法企及的。因此,ASIC芯片在二、三层以太网交换机中得到了充分的应用。
[0009]在DC中,基于虚拟化技术,DC中的任一网络设备可以虚拟化为多个虚拟机(VM),该虚拟出的每一 VM配置独立的虚拟网卡(VNIC),也配置独立的IP地址和MAC地址。
[0010]DC的网络设备比如图2所示的三层交换机在首次访问任一 VM时,会先进行ARP学习,学习该VM的MAC地址,生成与该学习的MAC地址相关的ARP表项,同时生成该VM的主机路由,将该生成的ARP表项和主机路由对应下发至物理ASIC芯片。
[0011]例如若要访问VM3,此时DC三层交换机发现本地不存在VM3的主机路由和ARP表项,则DC三层交换机通过广播ARP请求报文学习VM3的MAC地址,生成该VM3的主机路由并对应下发至物理ASIC芯片。
[0012]从上述应用情况不难看出,在数据中心大量使用VM技术的应用场景下,数据中心的网络设备需要下发每一 VM的主机路由至物理ASIC芯片,这会消耗掉物理ASIC芯片大量的路由表项资源。而一般而言,物理ASIC芯片所支持的表项资源通常比较有限,因此上述应用场景下对路由表项资源的消耗导致一些设备难以满足应用要求。


【发明内容】

[0013]本申请提供了报文转发方法和装置,以有效节约物理ASIC芯片的硬件表项资源。
[0014]本申请提供的技术方案包括:
[0015]一种报文转发方法,该方法中,从网络设备的通用CPU中独立出至少一个Core作为虚拟ASIC芯片,该方法包括:
[0016]所述虚拟ASIC芯片存储网段路由,所述网段路由的IP地址前缀覆盖了所述网络设备连接的主机IP地址,其中的出端口为连接所述通用CPU的端口 ;
[0017]所述虚拟ASIC芯片接收并存储通用CPU下发的主机路由,从已存储的网段路由中找到与所述主机路由中主机IP地址对应的网段路由,修改该网段路由的出端口为连接所述虚拟ASIC芯片的端口,并下发至所述网络设备的物理ASIC芯片;
[0018]所述物理ASIC芯片接收到报文时,在所述物理ASIC芯片中找到与所述目的IP地址对应的网段路由,通过该网段路由中的出端口转发所述报文至所述虚拟ASIC芯片;
[0019]所述虚拟ASIC芯片接收到报文时,确定所述虚拟ASIC芯片中存在与所述报文的目的IP地址匹配的主机路由,则通过该存在的主机路由中的出端口转发所述报文,确定所述虚拟ASIC芯片中不存在与所述报文的目的IP地址匹配的主机路由,则在所述虚拟ASIC芯片中找到与所述目的IP地址对应的网段路由,通过该网段路由中的出端口转发所述报文至所述通用CPU。
[0020]一种报文转发装置,该装置应用于数据中心DC中的网络设备,包括:通用CPU、虚拟ASIC芯片和物理ASIC芯片;
[0021]虚拟ASIC芯片,其由从所述网络设备的通用CPU中独立出的至少一个Core担任,包括:存储单元、路由下发单元和报文转发单元;
[0022]其中,所述存储单元用于存储网段路由和通用CPU下发的主机路由,其中,所述网段路由的IP地址前缀覆盖了所述网络设备连接的主机IP地址,其中的出端口为连接所述通用CPU的端口 ;
[0023]所述路由下发单元,用于针对通用CPU下发的主机路由,从已存储的网段路由中找到与所述主机路由中主机IP地址对应的网段路由,修改该网段路由的出端口为连接所述虚拟ASIC芯片的端口,并下发至所述网络设备的物理ASIC芯片;
[0024]报文转发单元,用于接收到报文时,确定所述虚拟ASIC芯片中存在与所述报文的目的IP地址匹配的主机路由,则通过该存在的主机路由中的出端口转发所述报文,确定所述虚拟ASIC芯片中不存在与所述报文的目的IP地址匹配的主机路由,则在所述虚拟ASIC芯片中找到与所述目的IP地址对应的网段路由,通过该网段路由中的出端口转发所述报文至所述通用CPU ;
[0025]所述物理ASIC芯片接收报文,确定所述物理ASIC芯片中不存在与所述报文的目的IP地址匹配的主机路由,则在所述物理ASIC芯片中找到与所述目的IP地址对应的网段路由,通过该网段路由中的出端口转发所述报文至所述虚拟ASIC芯片。
[0026]由以上技术方案可以看出,本发明中,通过从网络设备的通用CPU中独立出至少一个Core作为虚拟ASIC芯片,由该虚拟ASIC芯片与物理ASIC芯片相结合来主机路由和网段路由,相比于现有技术仅利用物理ASIC芯片管理所有路由,节省物理ASIC芯片的表项资源,并且,本申请在物理ASIC芯片不存在用于报文转发的主机路由时,可以通过虚拟ASIC芯片维护的主机路由进行报文转发,这能够实现在消耗较少硬件资源的情况下满足数据中心组网需求,大大节省表项资源。

【专利附图】

【附图说明】
[0027]图1为现有DC中网络设备的结构图;
[0028]图2为现有DC中访问VM示意图;
[0029]图3为本发明实施例提供的方法流程图;
[0030]图4为本发明实施例提供的Virtual - ASIC结构示意图;
[0031]图5为本发明实施例提供的物理ASIC芯片的表项更新流程图;
[0032]图6为本发明实施例提供的装置结构图。

【具体实施方式】
[0033]为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0034]在DC应用中,随着操作系统技术的发展,DC中的网络设备诸如三层交换机的通用CPU至少可以独立出一个Core,基于此,本发明可以在保证不影响通用CPU的正常功能前提下,将通用CPU中的至少一个Core从通用CPU中独立出来,用于执行物理ASIC芯片应该执行的功能,例如报文收发,以节省物理ASIC芯片的硬件资源,而通用CPU中的其他Core仍担任现有工作,比如协议状态的维护和处理、路由的生成、下发等操作。
[0035]其中,为便于描述从通用CPU中独立出来的Core,本申请将该独立出来的Core记为虚拟ASIC芯片(简称Virtual-ASIC)。
[0036]基于上面描述的Virtual -ASIC,下面通过图3对本发明实施例提供的方法进行描述:
[0037]参见图3,图3为本发明实施例提供的方法流程图。如图3所示,该流程可包括以下步骤:
[0038]步骤301,从网络设备的通用CPU中独立出至少一个Core作为Virtual -ASIC。
[0039]本步骤301是在不影响通用CPU整体性能的前提下,为保证充分利用通用CPU中各个Core,可以从通用CPU中独立出至少一个Core作为Virtual - ASIC,具体如图4所示,由Virtual - ASIC来代替物理ASIC芯片执行工作,以分担物理ASIC芯片的负荷。
[0040]步骤302,Virtual -ASIC存储网段路由。
[0041]本发明中,所述网段路由的IP地址前缀覆盖了所述网络设备连接的主机IP地址,比如,网络设备连接的以下三个主机的IP地址长度均是32位,依次为:192.168.1.2,192.168.1.3,192.168.1.10 ;则,长度为24位的IP地址前缀192.168.1/24就覆盖了上述三个主机的IP地址。再比如,网络设备连接的以下四个主机的IP地址长度均是32位,依次为:192.168.1.2,192.168.1.3,192.168.1.10,192.168.2.7 ;则长度为 16 位的 IP 地址前缀192.168/16就覆盖了上述四个主机的IP地址。
[0042]需要说明的是,本发明中,Virtual -ASIC存储的网段路由其实质是预先配置在Virtual -ASIC上的。其中,该网段路由仅包括:网段转发信息库(FIB)表项和下一跳,其中,网段FIB表项至少包含上述网段路由的IP地址前缀(简称网段IP地址),下一跳至少包含出端口,出端口为连接所述通用CPU的端口。
[0043]步骤303,Virtual - ASIC接收并存储通用CPU下发的主机路由。
[0044]本发明中,当从VM侧收到触发ARP学习工作比如ARP应答报文等,所述网络设备的通用CPU进行ARP学习,并生成一条对应的主机路由下发至Virtual - ASIC。这相比于现有技术中通用CPU将生成的主机路由下发至所述网络设备的物理ASIC芯片,能够节省物理ASIC芯片的表项资源,并保证在大量VM的应用场景下,不会因为大量消耗物理ASIC芯片的表项资源而无法满足应用需求。
[0045]如此,当Virtual _ ASIC接收到通用CPU下发的主机路由时,Virtual - ASIC就维护有软件形式的主机路由,可以利用该维护的主机路由进行后续报文的转发,具体见步骤306。
[0046]步骤304,Virtual-ASIC从已存储的网段路由中找到与所述主机路由中主机IP地址对应的网段路由,修改该网段路由的出端口为连接所述Virtual-ASIC的端口,并下发至所述网络设备的物理ASIC芯片。
[0047]以主机路由中主机IP地址为1.1.1.1/32为例,则Virtual-ASIC从本地已有的网段路由中找到该主机IP地址1.1.1.1/32对应的网段路由,比如该找到的网段路由中网段IP地址为1.1.1.0/24,之后修改该网段路由的出端口为连接所述Virtual-ASIC的端口(“to Virtual-ASIC”),并下发至所述网络设备的物理ASIC芯片。
[0048]步骤305,当所述网络设备接收到报文时,该报文会先到达所述网络设备的物理ASIC芯片,所述物理ASIC芯片接收报文后,确定所述物理ASIC芯片中是否存在与所述报文的目的IP地址匹配的主机路由,如果是,执行步骤306,如果否,执行步骤307。
[0049]具体地,步骤305中,所述物理ASIC芯片以报文的目的IP地址为关键字,在物理AS IC芯片中查找主机IP地址为该关键字的主机路由,如果找不到,则确定所述物理AS IC芯片中不存在与所述报文的目的IP地址匹配的主机路由,如果找到,确定所述物理ASIC芯片中存在与所述报文的目的IP地址匹配的主机路由。
[0050]步骤306,依据该匹配的主机路由进行所述报文的转发。结束当前流程。
[0051]其中,所述物理ASIC芯片中为什么会存在主机路由,具体在下文步骤311至步骤312。
[0052]步骤307,在物理ASIC芯片中找到与所述报文的目的IP地址对应的网段路由,通过该网段路由中的出端口转发所述报文至Virtual-ASIC。
[0053]由于物理ASIC芯片中网段路由的出端口为到达Virtual -ASIC的端口,因此,基于该网段路由中的出端口是很容易将报文发送至Virtual - ASIC的。
[0054]步骤308,Virtual - ASIC接收到报文,确定所述Virtual - ASIC中是否存在与所述报文的目的IP地址匹配的主机路由,如果否,执行步骤309,如果是,执行步骤310。
[0055]具体地,本步骤308中,以报文的目的IP地址为关键字,在Virtual -ASIC维护的所有主机路由中找到主机IP地址为该关键字的主机路由,如果找到,确定所述Virtual -ASIC中存在与所述报文的目的IP地址匹配的主机路由,如果找不到,确定所述Virtual -ASIC中不存在与所述报文的目的IP地址匹配的主机路由。
[0056]步骤309,在Virtual - ASIC中找到与所述报文的目的IP地址对应的网段路由,通过该网段路由中的出端口转发所述报文至通用CPU。
[0057]由于Virtual - ASIC中网段路由的出端口为到达通用CPU的端口,因此,基于该网段路由中的出端口是很容易将报文发送至通用CPU的。至于通用CPU收到报文后如何执行则与现有通用CPU的报文处理方式一致,这里不再赘述。
[0058]步骤310,通过该匹配的主机路由中的出端口转发所述报文,并执行步骤311。
[0059]步骤311,计算该匹配的主机路由被报文匹配的速率。
[0060]步骤312,实时检测所述Virtual - ASIC中每一主机路由被报文匹配的速率,当检测到所述Virtual -ASIC中任一主机路由被报文匹配的速率达到设定速率阈值,则将该主机路由下发至所述物理ASIC芯片。
[0061]这里,设定速率阈值是依据Virtual - ASIC本身的报文处理能力进行设置的,而每一主机路由被报文匹配的速率与报文本身的流量有关,当报文的流量比较大,就会导致Virtual-ASIC中与该报文匹配的主机路由的匹配速率增大,反之亦然。
[0062]通过步骤312,能够保证物理ASIC芯片存在主机路由,之后,当物理ASIC芯片接收到与该主机路由匹配的报文时,就直接通过该主机路由中的出端口转发该报文,不再通过网段路由上送至Virtual - ASIC,具体见步骤306。
[0063]至此,完成图3所示的流程。
[0064]需要说明的是,本发明中,主机路由至少包括:主机FIB表项、下一跳、以及ARP表项。
[0065]其中,主机FIB表项至少包括:主机IP地址也即VM的IP地址、以及与该主机FIB表项对应的ARP表项的索引;
[0066]下一跳至少包括:出端口,其实质为到达主机IP地址的端口 ;
[0067]ARP表项至少包括:通过ARP学习的VM的MAC地址。
[0068]以VMl 的 IP 地址为 1.1.1.1/32,MAC 地址为 0000-0000-0001 为例,则 VMl 的主机路由中FIB表项和ARP表项依次为:
[0069]FIB表项:1.1.1.1/32,arpl。其中,arpl表示该FIB表项对应的ARP表项的索引。
[0070]ARP表项:MAC地址为0000-0000-0001。其中,该ARP表项的索引为arpl。
[0071]而网段路由,其仅包括:网段FIB表项和下一跳。其中,所述网段FIB表项仅包括:网段IP地址;下一跳至少包括:出端口,该出端口为到达Virtual-ASIC的端口。
[0072]下面以如上面描述的主机路由、网段路由为例,通过一个具体实施例对本发明提供的方法进行详细描述:
[0073]首先,网络设备的Virtual -ASIC存储如表1-1所示的网段路由:
[0074]表1-1
[0075]
表项位置网段路由主机路由
[0076]

【权利要求】
1.一种报文转发方法,其特征在于,将网络设备的通用CPU的至少一个核Core作为虚拟ASIC芯片,该方法包括: 所述虚拟ASIC芯片存储网段路由,所述网段路由的IP地址前缀覆盖了所述网络设备连接的主机IP地址,其中的出端口为连接所述通用CPU的端口 ; 所述虚拟ASIC芯片接收并存储通用CPU下发的主机路由,从已存储的网段路由中找到与所述主机路由中主机IP地址对应的网段路由,修改该网段路由的出端口为连接所述虚拟ASIC芯片的端口,并下发至所述网络设备的物理ASIC芯片; 所述物理ASIC芯片接收到报文时,在所述物理ASIC芯片中找到与所述报文的目的IP地址对应的网段路由,通过该网段路由中的出端口转发所述报文至所述虚拟ASIC芯片; 所述虚拟ASIC芯片接收到报文时,确定所述虚拟ASIC芯片中存在与所述报文的目的IP地址匹配的主机路由,则通过该存在的主机路由中的出端口转发所述报文,确定所述虚拟ASIC芯片中不存在与所述报文的目的IP地址匹配的主机路由,则在所述虚拟ASIC芯片中找到与所述目的IP地址对应的网段路由,通过该网段路由中的出端口转发所述报文至所述通用CPU。
2.根据权利要求1所述的方法,该方法进一步包括: 所述虚拟ASIC芯片统计其存储的每一主机路由被报文匹配的速率; 所述虚拟ASIC芯片实时检测所述虚拟ASIC芯片中每一主机路由被报文匹配的速率,当检测到所述虚拟ASIC芯片中任一主机路由被报文匹配的速率达到设定速率阈值,则将所述虚拟ASIC芯片中的该 主机路由下发至所述物理ASIC芯片。
3.根据权利要求2所述的方法,其特征在于,所述物理ASIC芯片接收报文、且本物理ASIC芯片存在与所述报文的目的IP地址匹配的主机路由时,进一步包括: 依据该存在的主机路由进行所述报文的转发。
4.根据权利要求2或3所述的方法,其特征在于,该方法进一步包括: 所述物理ASIC芯片在接收到所述虚拟ASIC芯片下发的主机路由时,为该主机路由设置一个对应的老化标识,并默认该老化标识为第一值; 所述物理ASIC芯片在其存储的主机路由被报文匹配时,更新该主机路由的老化标识为第二值; 所述物理ASIC芯片每隔设定时间查询所述物理ASIC芯片中每一主机路由的老化标识,当查询到一主机路由的老化标识为第一值,从物理ASIC芯片删除该主机路由,当查询到一主机路由的老化标识为第二值,将该主机路由的老化标识更新为第一值。
5.一种报文转发装置,其特征在于,该装置应用于数据中心DC中的网络设备,包括:通用CPU、虚拟ASIC芯片和物理ASIC芯片; 虚拟ASIC芯片,其由从所述网络设备的通用CPU中独立出的至少一个核Core担任,包括:存储单元、路由下发单元和报文转发单元; 其中,所述存储单元用于存储网段路由和通用CPU下发的主机路由,其中,所述网段路由的IP地址前缀覆盖了所述网络设备连接的主机IP地址,其中的出端口为连接所述通用CPU的端口 ; 所述路由下发单元,用于针对通用CPU下发的主机路由,从已存储的网段路由中找到与所述主机路由中主机IP地址对应的网段路由,修改该网段路由的出端口为连接所述虚拟ASIC芯片的端口,并下发至所述网络设备的物理ASIC芯片; 报文转发单元,用于接收到报文时,确定所述虚拟ASIC芯片中存在与所述报文的目的IP地址匹配的主机路由,则通过该存在的主机路由中的出端口转发所述报文,确定所述虚拟ASIC芯片中不存在与所述报文的目的IP地址匹配的主机路由,则在所述虚拟ASIC芯片中找到与所述目的IP地址对应的网段路由,通过该网段路由中的出端口转发所述报文至所述通用CPU ; 所述物理ASIC芯片接收报文,确定所述物理ASIC芯片中不存在与所述报文的目的IP地址匹配的主机路由,则在所述物理ASIC芯片中找到与所述目的IP地址对应的网段路由,通过该网段路由中的出端口转发所述报文至所述虚拟ASIC芯片。
6.根据权利要求5所述的装置,其特征在于,所述虚拟ASIC芯片进一步包括: 统计单元,用于统计其存储的每一主机路由被报文匹配的速率; 处理单元,用于实时检测所述虚拟ASIC芯片中每一主机路由被报文匹配的速率,当检测到所述虚拟ASIC芯片中任一主机路由被报文匹配的速率达到设定速率阈值,则将所述虚拟ASIC芯片中的该主机路由下发至所述物理ASIC芯片。
7.根据权利要求6所述的装置,其特征在于,所述物理ASIC芯片接收报文、且确定本物理ASIC芯片存在与所述报文的目的IP地址匹配的主机路由时,进一步包括: 依据该存在的主机路由进行所述报文的转发。
8.根据权利要求6所述的装置,其特征在于,所述述物理ASIC芯片在接收到所述虚拟ASIC芯片下发的主机路由时,为该主机路由设置一个对应的老化标识,并默认该老化标识为第一值;以及,在其存储的主机路由被报文匹配时,更新该主机路由的老化标识为第二值;以及,每隔设定时间查询所述物理ASIC芯片中每一主机路由的老化标识,当查询到一主机路由的老化标识为第一值,从物理ASIC芯片删除该主机路由,当查询到一主机路由的老化标识为第二值,将该主机路由的老化标识更新为第一值。
【文档编号】H04L12/70GK104079478SQ201310096538
【公开日】2014年10月1日 申请日期:2013年3月25日 优先权日:2013年3月25日
【发明者】游君平, 郑国良, 汪洪远, 赵海峰 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1