一种隧道实现方法及装置与流程

文档序号:18105397发布日期:2019-07-06 11:37阅读:119来源:国知局
一种隧道实现方法及装置与流程
本申请涉及但不限于通信
技术领域
,尤其涉及一种隧道实现方法及装置。
背景技术
:隧道技术是一种overlay网络技术。overlay网络是在原有物理网络的基础之上建立的一张应用层网络,将网络资源通过软件量化的方式表现出来。这样,数据中心不用关心实际网络设备是如何互联的、网络配置如何,只要关心能提供的端口和带宽就可以完成业务的部署。overlay网络可以很好地解决数据中心网络目前面临的主要问题,是未来数据中心网络的主流技术,代表了数据中心网络技术的发展方向。多路径负载分担(ecmp,equal-costmulti-pathrouting)是通信网络中常用的一个术语,就是指网络设备及业务处理实体之间工作负荷的彼此分担、分享功能。负载分担可以有效地减轻网络单一链路的负载,并具有很大的弹性和网络收缩性,能够避免单一链路故障影响整个网络。overlay场景下ecmp是目前一种比较流行的组网方式,特别是在数据中心交换机领域,应用非常广泛,已经成为一种通用场景。目前,主流网络通信设备的网络转发大部分都是采用硬件转发的方式,硬件转发相对于软件转发,有比较明显的优势。硬件可以达到线速转发,软件受限于算法及cpu(centralprocessingunit,中央处理器)性能,在转发速率方面具有明显缺陷。然而,虽然硬件转发相对于软件转发有明显优势,但也有明显缺陷。在设备研制过程中,由于严重依赖硬件本身设计,对于一些应用场景,由于硬件实现机制问题,无法通过纯硬件转发的方式实现。比如,在underlay网络(即物理网络)为ecmp场景,而overlay网络为非ecmp场景中,在overlay隧道数量超过ecmp硬件表项数量的情况下,无法通过硬件方式实现网络转发。技术实现要素:以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。本申请实施例提供一种隧道实现方法及装置,通过软件实现ecmp场景中隧道实现,从而节省硬件资源。第一方面,本申请实施例提供一种隧道实现方法,包括:确定隧道创建的路由选择策略;根据所述路由选择策略,从隧道所使用的多路径负荷分担(ecmp)的下一跳中选择其中一跳作为所述隧道的下一跳,创建所述隧道。第二方面,本申请实施例提供一种隧道实现装置,包括:策略确定模块,适于确定隧道创建的路由选择策略;隧道创建模块,适于根据所述路由选择策略,从隧道所使用的ecmp的下一跳中选择其中一跳作为所述隧道的下一跳,创建所述隧道。第三方面,本申请实施例提供一种网络设备,包括:存储器和处理器,所述存储器用于存储隧道实现程序,所述隧道实现程序被所述处理器执行时实现上述第一方面提供的隧道实现方法的步骤。此外,本申请实施例还提供一种计算机可读介质,存储有隧道实现程序,所述隧道实现程序被处理器执行时实现上述第一方面提供的隧道实现方法的步骤。在本申请实施例中,确定隧道创建的路由选择策略,根据路由选择策略,从隧道所使用的ecmp的下一跳中选择其中一跳作为该隧道的下一跳,创建该隧道。如此,通过软件实现ecmp场景下隧道的创建,节省了硬件资源,能够满足大规格隧道部署场景应用。在阅读并理解了附图和详细描述后,可以明白其他方面。附图说明图1为本申请实施例提供的隧道实现方法的网络架构示例图;图2为本申请实施例提供的隧道实现方法的流程图;图3为本申请实施例提供的隧道实现装置的示意图;图4为本申请实施例提供的隧道创建的流程图;图5为本申请实施例提供的隧道更新的流程图;图6为本申请实施例提供的网络设备的示意图。具体实施方式以下结合附图对本申请实施例进行详细说明,应当理解,以下所说明的实施例仅用于说明和解释本申请,并不用于限定本申请。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。本申请实施例提供一种隧道实现方法及装置,可以部署在数据中心场景中,然而,本申请对此并不限定。图1为本申请实施例的隧道实现方法的网络架构示例图。本示例中,overlay隧道以vxlan(virtualextensiblelan,虚拟扩展局域网)隧道为例进行说明,然而,本申请对此并不限定。如图1所示,服务器(server)a和服务器b分别单网卡接入网络设备e;网络设备a上行连接路由器,下行连接网络设备b、c、d;网络设备b、c、d下行和网络设备e连接。网络设备a和网络设备e之间走vxlan隧道,网络设备a和网络设备b、c、d之间走underlayecmp。其中,由北向南的流量在网络设备a上走vxlan的l3接入,报文进入网络设备a后,通过vxlan隧道封装,由隧道创建的路由选择策略决定流量流入的网络设备(即b、c、d的其中一台),然后流量再到网络设备e,网络设备e上进行vxlan解封装后,走传统转发到服务器a或b。由南到北的流量在网络设备e上进行vxlan封装,由隧道创建的路由选择策略决定流量流入的网络设备(即b、c、d的其中一台),然后流量再到网络设备a,网络设备a解封装之后走传统转发到路由器。在underlay网络(即物理网络)为ecmp场景,而overlay网络为非ecmp场景中,对于overlay表项下发,主流交换芯片的机制为:通过路由表查找一个转发等价类(fec,forwardingequivalenceclass),这个fec指向一个overlay隧道(tunnel),由隧道再唯一索引一个下一跳;如此,虽然overlay网络不是ecmp,但是由于underlay网络是ecmp,所以查找到的fec需要是一个ecmp类型的fec。这样对于有n个隧道的情况下,即使underlay网络只有一个ecmp组,overlay网络也需要n个ecmp硬件表项,然而,交换芯片支持的ecmp硬件表项数量非常有限(比如,bcm的arad系列芯片只有1k个ecmp组,jericho系列芯片只有4k个ecmp组),对于隧道数量超过ecmp硬件表项数量的情况下,通过硬件方式就无法实现网络转发。在本实施例中,在网路设备a到网络设备e之间建立overlay隧道时,通过软件方式在underlayecmp中选择其中一条路径,不占用ecmp类型的fec,而是采用普通的fec创建隧道;这样,建立overlay隧道时,由于只选择其中一条路径,所以不需要占用ecmp的硬件资源。因此,在underlay网络为ecmp,但overlay网络为非ecmp的场景下,节省了硬件资源,能够扩展部署隧道数量,避免ecmp硬件资源对隧道大规模部署的限制。图2为本申请实施例提供的隧道实现方法的流程图。如图2所示,本实施例提供的隧道实现方法,包括:s201、确定隧道创建的路由选择策略;s202、根据路由选择策略,从隧道所使用的ecmp的下一跳中选择其中一跳作为该隧道的下一跳,创建该隧道。本实施例提供的隧道实现方法可以由网络设备(比如,数据中心的交换机)执行;在图1所示的网络架构中,本实施例提供的隧道实现方式可以分别在网络设备a、网络设备e上执行。本实施例提供的隧道实现方法可以应用于如图1所示的underlay网络为ecmp,但overlay网络为非ecmp的场景中。其中,隧道为处于非ecmp场景下的overlay网络的隧道,比如,vxlan隧道。然而,本申请对此并不限定。本实施例也可以应用于其他ecmp场景中。本实施例中,网络设备的控制面在形成隧道之后,可以向转发面下发隧道,转发面在接收到隧道创建消息后,进行隧道创建。其中,本申请对于控制面形成隧道的方式并不限定。本实施例中,隧道标识(id)用于唯一标记一个隧道。控制面在下发隧道时,隧道的下发先后顺序与隧道id没有必然对应关系。因此,在路由选择策略中,可以根据隧道id进行路径选择,或者,也可以根据隧道下发先后顺序进行路径选择。本实施例中,每个underlayecmp的索引(index)维护一组数据,这组数据中包括该underlayecmp的所有的下一跳信息,每个下一跳信息可以包括:下一跳的mac(mediaaccesscontrol,介质访问控制)地址、vlan(virtuallocalareanetwork,虚拟局域网)、出端口等信息。在示例性实施方式中,路由选择策略可以包括以下至少之一:根据隧道标识(id)和ecmp的下一跳的总个数的哈希计算结果,在ecmp的下一跳中选择其中一跳分配给该隧道id标记的隧道;按照多个隧道的下发先后顺序给每个隧道分配下一跳,且每个隧道的下一跳为从ecmp的有效下一跳中选择的其中一跳;按照多个隧道的下发先后顺序给每个隧道分配下一跳,且每个隧道的下一跳为从ecmp的全部下一跳中选择的其中一跳。示例性地,路由选择策略可以由用户根据应用场景在网络设备上通过命令行或者网管界面进行配置或选择。然而,本申请对此并不限定。在其他实施方式中,网络设备也可以采用默认的路由选择策略。在示例性实施方式中,根据隧道id和ecmp的下一跳的总个数的哈希计算结果,在ecmp的下一跳中选择其中一跳分配给该隧道id标记的隧道,可以包括:针对隧道id为q的隧道,选择ecmp的第(qmodk1)个下一跳作为该隧道的下一跳,其中,k1为ecmp的全部下一跳的总个数。在本示例中,将隧道id作为哈希(hash)因子,采用隧道id以及underlayecmp的所有下一跳的总个数(比如,记为k1)进行hash处理,得到hash后的结果为n,以n作为选择overlay隧道的下一跳的依据;比如,n=qmodk1,则可以从underlayecmp的所有下一跳中选择索引为n的下一跳作为该隧道id标记的overlay隧道的下一跳,其中,mod表示取余。如此,可以给不同的隧道id选择不同的下一跳。本示例的路由选择策略所采用的算法复杂度低,适用于隧道id连续的场景。需要说明的是,本申请并不限定采用上述哈希算法,在其他实现方式中,也可以采用其他哈希算法。在示例性实施方式中,在按照多个隧道的下发先后顺序给每个隧道分配下一跳时,每个隧道的下一跳为从ecmp的有效下一跳中选择的其中一跳,可以包括:针对下发的第i条隧道,在i小于或等于k2时,选择ecmp的第i个有效下一跳作为第i条隧道的下一跳;在i大于k2时,选择第(imodk2)个有效下一跳作为第i条隧道的下一跳;其中,k2为ecmp的有效下一跳的总个数。在本示例中,在根据隧道下发先后选择路径的路由选择策略中,可以从ecmp的有效下一跳中选择。其中,在某个underlayecmp的所有下一跳中,只选择有效的下一跳用来给overlay隧道创建使用,对于无效的下一跳,则不参与隧道创建。需要说明的是,如果underlayecmp的所有下一跳都无效,可以从部分无效下一跳中选择,即需要保证不同的隧道分配的下一跳是不一样的。在本示例中,有效下一跳的选择可以达到负载分担的效果。比如,ecmp的下一跳一共有4条,在下发2k个隧道时,只有两个下一跳是有效的,则按照上述方式,这2k个隧道所选择的下一跳就是当前有效的两个下一跳,当另外两个无效的下一跳变为有效时,可以根据当前隧道的下一跳分配情况,通过新的有效下一跳刷新部分隧道的下一跳,从而保证流量的负载均衡。其中,当ecmp的某个下一跳一直无效时,则不会选择这个下一跳用于隧道创建,所以不会存在某些隧道上的流量丢失问题。在示例性实施方式中,在按照多个隧道的下发先后顺序给每个隧道分配下一跳时,每个隧道的下一跳为从ecmp的全部下一跳中选择的其中一跳,可以包括:针对下发的第i条隧道,在i小于或等于k1时,选择ecmp的第i个下一跳作为第i条隧道的下一跳;在i大于k1时,选择第(imodk1)个下一跳作为第i条隧道的下一跳;其中,k1为ecmp的全部下一跳的总个数。在本示例中,在根据隧道下发先后选择路径的路由选择策略中,可以从ecmp的全部下一跳中选择。其中,不区分underlayecmp的下一跳是否有效,对于不同的隧道(根据隧道id判断),选择不同的下一跳,创建overlay隧道。本示例中,如表一所示,underlayecmp的index维护一组数据nexthop_info[],按照隧道下发先后顺序给隧道id依次分配不同的下一跳(nexthop_info)。表一ecmpindex隧道标识(tunnelid)nexhop_infoi2nexhop_info[0]i4nexhop_info[1]i6nexhop_info[2]imnexhop_info[n]在本示例中,当ecmp的某个下一跳由有效变无效前,会先触发该下一跳重新学习,从而保证下一跳的连续有效性。如果重新触发下一跳学习也不成功,则说明链路发生了故障,对该无效下一跳关联的overlay隧道,可以选择新的有效下一跳进行隧道更新,这样可以保证分担在这个下一跳的隧道的流量不会由于下一跳无效而丢失。在本示例中,全部下一跳选择方式不受隧道id是否连续的影响、不受ecmp下一跳顺序发生变化的影响,可以达到流量的负载分担。而且,由于隧道频繁更新会导致设备性能受影响,为避免隧道频繁更新,该选择方式通过对emcp的下一跳保活,保证ecmp的所有下一跳在非链路故障情况下,可以保持连续有效,避免了下一跳频繁变化导致隧道刷新,从而造成流量抖动。其中,可以将本示例的全部下一跳选择策略设置为网络设备的默认路由选择策略。在示例性实施方式中,在s202中,创建隧道可以包括:给隧道创建一条普通的fec、隧道表项以及链路层索引,其中,该fec的索引指向该隧道的隧道表项,该隧道的隧道表项中包括该隧道的源网络协议地址(sip)、目的网络协议地址(dip)以及链路层(linklayer)索引,该链路层索引指向该隧道的下一跳信息,下一跳信息至少包括该隧道的下一跳的介质访问控制(mac,mediaaccesscontrol)地址。其中,隧道的sip和dip可以通过静态配置或动态协议方式下发到网络设备。在创建一条隧道时,先找到本隧道所使用的underlayecmp的所有下一跳信息,然后,根据路由选择策略,选择其中一跳作为本隧道的下一跳,其中,下一跳信息可以包括:mac地址、vlan、出端口等。然后,创建一条普通的fec、隧道表项以及linklayer索引,其中,linklayer索引可以封装隧道的下一跳封装索引,用于指向隧道的下一跳表项;fec可以包括出端口,并指向本隧道的隧道表项,隧道表项可以包括本隧道的sip、dip以及linklayer索引。如此,创建了一条隧道封装需要的所有信息,完成了本隧道的创建。所有隧道均可以按照上述步骤完成创建。在示例性实施方式中,本实施例的方法还可以包括:在检测到ecmp的一个或多个下一跳发生变化时,更新隧道。其中,网络设备的转发面在接收到控制面下发的隧道创建消息后进行隧道创建,一旦隧道创建之后,可以对已创建隧道的隧道表项进行更新,从而完成隧道更新。在示例性实施方式中,在检测到所述ecmp的一个或多个下一跳发生变化时,更新隧道,可以包括以下至少之一:在检测到ecmp的任一个下一跳由有效变为无效时,针对基于该下一跳创建的隧道,重新从ecmp的有效下一跳中选择其中一跳作为该隧道的下一跳,更新该隧道的隧道表项;在检测到该ecmp的任一个下一跳由无效变为有效时,挑选基于除该变为有效的下一跳之外的下一跳创建的一个或多个隧道,将该变为有效的下一跳作为上述一个或多个隧道的下一跳,更新上述一个或多个隧道的隧道表项。本示例中,网络设备可以启动快速定时器,定时扫描underlayecmp的下一跳的变化;在检测到underlayecmp的下一跳发生变化时,比如,某个下一跳由无效变为有效,或者,由有效变为无效时,及时更新隧道的信息。比如,在某个下一跳由有效变为无效时,对于依赖于该下一跳的overlay隧道,选择underlayecmp的一个新的下一跳,作为该overlay隧道的下一跳,刷新该overlay隧道的信息,保证overlay的流量转发正常。图3为本申请实施例提供的隧道实现装置的示意图。如图3所示,本实施例提供的隧道实现装置可以包括:策略确定模块301,适于确定隧道创建的路由选择策略;隧道创建模块302,适于根据路由选择策略,从隧道所使用的ecmp的下一跳中选择其中一跳作为该隧道的下一跳,创建该隧道。在示例性实施方式中,本实施例的装置还可以包括:隧道更新模块303,适于在检测到ecmp的一个或多个下一跳发生变化时,更新隧道。示例性地,策略确定模块301可以根据在网络设备中通过命令行或者网管界面配置的下一跳的路由选择策略,确定当前隧道创建所采用的路由选择策略,然后,初始化路由选择策略所需的相关资源,并把相应的路由选择策略和相关资源通知给隧道创建模块302。隧道创建模块302可以通过静态配置或者动态协议下发方式获取所有overlay隧道对应的sip和dip;在创建每条隧道前,先根据路由选择策略和相关资源,找到创建本隧道所使用的underlayecmp的下一跳信息(比如,包括:mac、vlan、出端口等),然后创建一条普通的转发等价类(fec)、隧道表项及linklayer索引(比如,包括下一跳表项索引,下一跳表项中封装mac、vlan),其中,fec中包含出端口,并指向隧道表项(隧道表项包含隧道的sip、dip及linklayer索引),这样就创建了这条隧道封装所需的所有信息,本隧道创建完成。以此类推,隧道创建模块302可以按照上面的步骤完成所有隧道的创建。隧道更新模块303可以通过启用快速定时器,定时扫描underlayecmp的下一跳变化,在检测到underlayecmp的下一跳发生变化时,及时更新隧道的信息,从而保障流量的快速切换,保证overlay的流量转发正常。另外,关于本实施例提供的隧道实现装置的相关说明可以参照上述方法实施例的描述,故于此不再赘述。下面通过多个实施例对本申请的方案进行说明。实施例一本实施例说明隧道创建模块进行隧道创建的过程。如图4所示,本实施例的隧道创建流程包括以下步骤:s401、隧道创建模块接收控制面的隧道创建消息;比如,隧道创建消息中可以携带所有overlay隧道对应的sip和dip;s402、接收到隧道创建消息后,进行逐条隧道创建,获取一条隧道的sip和dip;s403、获取隧道创建的路由选择策略,并判断路由选择策略是否为根据隧道id进行路径选择;需要说明的是,在进行隧道创建之前,若已配置有路由选择策略,则选用已配置的路由选择策略,若没有已配置的策略,则可以选用默认的路由选择策略。若当前的路由选择策略为根据隧道id进行路径选择,则执行s404,否则,确定路由选择策略是根据隧道下发先后顺序选择路径(即s405)。s404、在根据隧道id进行路径选择时,获取基于隧道id进行路径选择的信息,然后,基于隧道id和underlayecmp下一跳的总个数进行哈希计算,根据哈希计算结果,选择ecmp的一个下一跳作为本隧道使用的下一跳。s406、在确定根据隧道下发先后顺序选择路径之后,判断是否选择全部下一跳策略;若是,则执行s407,否则,执行s409。s407、获取基于全部下一跳策略的信息,比如,ecmp的全部下一跳的信息;s408、基于ecmp的全部下一跳以及负载信息,选择ecmp的一个下一跳作为本隧道使用的下一跳。s410、获取基于有效下一跳策略的信息,比如,ecmp的有效下一跳的信息;s411、基于ecmp的有效下一跳以及负载信息,选择ecmp的一个下一跳作为本隧道使用的下一跳。s412、在选择本隧道的下一跳之后,创建一个普通的fec、隧道表项以及linklayer索引;s413、完成本条隧道的创建,然后返回s402,继续创建下一条隧道。关于本实施例的相关步骤的详细处理过程可以参照上述方法实施例的说明,故于此不再赘述。实施例二本实施例说明隧道更新模块进行隧道更新的流程。如图5所示,本实施例的隧道更新流程包括以下步骤:s501、隧道更新模块启动定时扫描任务,检测ecmp下一跳的状态变化;s502、判断某个下一跳是否由有效变无效;若是,则执行s503,否则,执行s505;s503、查找该无效下一跳关联的隧道;s504、根据当前配置的路由选择策略,给该无效下一跳关联的隧道选择一个新的下一跳,更新该隧道的硬件表项;s505、判断某个下一跳是否由无效变有效,若是,则执行s506,否则,返回s501;s506、根据当前负载信息,从依赖于其他下一跳的隧道中,选择一部分隧道,根据该下一跳更新这部分隧道的硬件表项内容,以保障流量负载均衡。实施例三在本实施例中,以路由选择策略为根据隧道下发先后从ecmp的全部下一跳中选择为例进行说明。本示例中,以图1中的网络设备a执行本实施例的隧道实现方法为例。本实施例包括以下步骤:(1)、路由形成ecmp,该ecmp的下一跳信息保存在nexthop_info[k]中,其中,k为所有下一跳的个数。(2)、在网络设备a上,通过静态配置或者动态协议方式获取m条隧道的sip和dip信息;其中,sip[0]和dip[0]为下发的第1条隧道的信息,sip[1]和dip[1]为下发的第2条隧道的信息,以此类推,sip[m-1]和dip[m-1]为下发的第m条隧道的信息。(3)、为m条隧道申请m个普通的转发等价类(fec),每个fec索引指向对应的隧道表项。(4)、查找ecmp的下一跳信息nexthop_info[k],给每个隧道选择下一跳;本步骤中,假设m<k或m=k,为sip[0]和dip[0]选择nexthop_info[0]作为下一跳,即nexthop_info[0]为第1条隧道的下一跳;为sip[k-1]和dip[k-1]选择nexthop_info[k-1]作为下一跳,即nexthop_info[k-1]为第k条隧道的下一跳;其中,隧道索引next指针指向该下一跳表项。本步骤中,假设m>k,第k条隧道选择nexthop_info[k-1]作为overlay下一跳,第k+1条隧道选择nexthop_info[0]作为下一跳,第k+2条隧道选择nexthop_info[k+1]作为下一跳,以此类推,第m条隧道选择nexthop_info[(m)mod(k)]作为下一跳。通过上述过程,完成隧道下一跳选路。(5)、针对任一条隧道,根据隧道的sip、dip以及下一跳信息,完成隧道创建。(6)、隧道更新任务扫描下一跳状态,如果下一跳由有效变无效,触发下一跳学习,如果学习成功,则隧道不需要做任何变化;如果学习不成功,则选择一个新的有效下一跳,将原来分担在该无效下一跳的隧道改用新选择的有效下一跳进行隧道刷新。实施例四本实施例中,以路由选择策略为根据隧道下发先后从ecmp的有效下一跳选择路径为例进行说明。本示例中,以图1中的网络设备a执行本实施例的隧道实现方法为例。本实施例包括以下步骤:(1)、路由形成ecmp,该ecmp的有效下一跳信息保存在nexthop_info[k]中,其中,k为有效下一跳的个数。(2)、在网络设备a上,通过静态配置或者动态协议方式获取m条隧道的sip和dip信息;其中,sip[0]和dip[0]为下发的第1条隧道的信息,sip[1]和dip[1]为下发的第2条隧道信息,以此类推,sip[m-1]和dip[m-1]为第m条隧道信息。(3)、为m条隧道申请m个普通的转发等价类(fec),每个fec索引指向对应的隧道表项。(4)、查找ecmp的有效下一跳信息nexthop_info[k],给每个隧道选择下一跳;本步骤中,假设m<k或m=k,为sip[0]和dip[0]选择nexthop_info[0]作为下一跳,即nexthop_info[0]为第1条隧道的下一跳;为sip[k-1]和dip[k-1]选择nexthop_info[k-1]作为下一跳,即nexthop_info[k-1]为第k条隧道的下一跳;其中,隧道索引next指针指向该下一跳表项。本步骤中,假设m>k,第k条隧道选择nexthop_info[k-1]作为overlay下一跳,第k+1条隧道选择nexthop_info[0]作为下一跳,第k+2条隧道选择nexthop_info[k+1]作为下一跳,以此类推,第m条隧道选择nexthop_info[(m)mod(k)]作为下一跳。通过上述过程,完成隧道下一跳选路。(5)、针对任一条隧道,根据隧道的sip、dip以及下一跳信息,完成隧道创建。(6)、如果第m条隧道的下一跳失效,新的有效下一跳个数为k-1,则重复步骤(2)至(4),根据新的有效下一跳更新第m条隧道的信息。实施例五本实施例中,以路由选择策略为根据隧道id选择路径为例进行说明。本示例中,以图1中的网络设备a执行本实施例的隧道实现方法为例。本实施例包括以下步骤:(1)、路由形成ecmp,该ecmp的下一跳信息保存在nexthop_info[k]中,其中,k为所有下一跳的个数。(2)、在网络设备a上,通过静态配置或者动态协议方式获取m条隧道的sip和dip信息;其中,sip[0]和dip[0]为第1条隧道的信息,sip[1]和dip[1]为第2条隧道信息,以此类推,sip[m-1]和dip[m-1]为第m条隧道信息。(3)、针对每条隧道,根据每条隧道的id和underlayecmp的所有下一跳的个数k做hash;假设第l条隧道的隧道id为q,用q和k做hash的结果为n,选择nexthop_info[n]作为第l条隧道的overlay下一跳。(4)、针对任一条隧道,根据隧道的sip、dip、下一跳信息,完成隧道创建。(5)、如果隧道的下一跳由无效变有效,或者由有效变无效,隧道不需要重新创建,只需要更新隧道的硬件表项内容。图6为本申请实施例提供的网络设备的示意图。如图6所示,本申请实施例提供的网络设备600,比如交换机,包括:存储器601和处理器602;存储器601用于存储隧道实现程序,该隧道实现程序被处理器602执行时实现上述的隧道实现方法的步骤。其中,处理器602可以包括但不限于微处理器(mcu,microcontrollerunit)或可编程逻辑器件(fpga,fieldprogrammablegatearray)等的处理装置。存储器601可用于存储应用软件的软件程序以及模块,如本实施例中的隧道实现方法对应的程序指令或模块,处理器602通过运行存储在存储器601内的软件程序以及模块,从而执行各种功能应用以及数据处理,比如实现本实施例提供的隧道实现方法。存储器601可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些示例中,存储器601可包括相对于处理器602远程设置的存储器,这些远程存储器可以通过网络连接至网络设备600。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。示例性地,上述网络设备600还可以包括通信单元603;通信单元603可以经由一个网络接收或者发送数据。在一个实例中,通信单元603可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网络进行通信。此外,本申请实施例还提供一种计算机可读介质,存储有隧道实现程序,该隧道实现程序被处理器执行时实现上述的隧道实现方法的步骤。本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块或单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块或单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1