路由表更新方法、装置、交换机及存储介质与流程

文档序号:19427758发布日期:2019-12-17 15:51阅读:923来源:国知局
路由表更新方法、装置、交换机及存储介质与流程

本发明涉及计算机技术领域,特别是涉及路由表更新方法、装置、交换机及存储介质。



背景技术:

三层交换机为具有路由功能的交换机,相比于路由器通过软件进行路由转发,三层交换机利用交换芯片等硬件进行路由转发,因此能够加快大型网络内部的报文发送速度。

在三层交换机中,通过人工配置硬件路由表的方式对三层交换机中交换芯片的路由表进行更新,例如,在向新接入的设备或mac(mediaaccesscontrol,介质访问控制)地址变更的设备发送报文时,需要将该设备的路由信息人工更新到三层交换机的交换芯片的路由表中,以按照路由表完成数据的发送。

但是采用人工更新路由表的方法,路由表的更新效率低。



技术实现要素:

本发明实施例的目的在于提供一种路由表更新方法、装置、交换机及存储介质,以实现自动更新路由表。具体技术方案如下:

第一方面,本发明实施例提供了一种路由表更新方法,应用于三层交换机,所述三层交换机包括交换芯片,所述交换芯片包括路由表,所述方法包括:

针对待发送数据,查询所述路由表中是否包含所述待发送数据的目的端的路由信息;

若所述路由表中不包含所述目的端的路由信息,基于所述目的端的网络协议ip地址,获取所述目的端的路由信息;

按照所述目的端的路由信息,更新所述路由表。

可选的,所述若所述路由表中不包含所述目的端的路由信息,基于所述目的端的网络协议ip地址,获取所述目的端的路由信息,包括:

若所述路由表中不包含所述目的端的路由信息,通过系统网络协议栈的ip层,基于所述待发送数据的ip地址完成所述待发送数据的发送,确定所述目的端的路由信息。

可选的,所述按照所述目的端的路由信息,更新所述路由表,包括:

利用钩子函数获取包含所述目的端的路由信息的报文,作为更新报文;

通过套接字将所述更新报文从系统网络协议栈的ip层,发送至目标用户进程;

通过所述目标用户进程调用路由配置接口,将所述目的端的路由信息添加到所述路由表中。

可选的,本发明实施例的路由表更新方法还包括:

按照邻居子系统表,向所述目的端发送验证报文;

若未接收到所述目的端根据所述验证报文返回的答复报文,删除所述路由表中所述目的端的路由信息。

第二方面,本发明实施例提供了一种路由表更新装置,应用于三层交换机,所述三层交换机包括交换芯片,所述交换芯片包括路由表,所述装置包括:

信息查询模块,用于针对待发送数据,查询所述路由表中是否包含所述待发送数据的目的端的路由信息;

信息获取模块,用于若所述路由表中不包含所述目的端的路由信息,基于所述目的端的网络协议ip地址,获取所述目的端的路由信息;

路由更新模块,用于按照所述目的端的路由信息,更新所述路由表。

可选的,所述信息获取模块,具体用于:若所述路由表中不包含所述目的端的路由信息,通过系统网络协议栈的ip层,基于所述待发送数据的ip地址完成所述待发送数据的发送,确定所述目的端的路由信息。

可选的,所述路由更新模块,包括:

更新报文获取子模块,用于利用钩子函数获取包含所述目的端的路由信息的报文,作为更新报文;

更新报文发送子模块,用于通过套接字将所述更新报文从系统网络协议栈的ip层,发送至目标用户进程;

配置接口调用子模块,用于通过所述目标用户进程调用路由配置接口,将所述目的端的路由信息添加到所述路由表中。

可选的,本发明实施例的路由表更新装置还包括:

验证报文发送模块,用于按照邻居子系统表,向所述目的端发送验证报文;

路由信息删除模块,用于若未接收到所述目的端根据所述验证报文返回的答复报文,删除所述路由表中所述目的端的路由信息。

第三方面,本发明实施例提供了一种交换机,所述交换机包括:处理器、存储器及交换芯片,所述交换芯片包括路由表;

所述存储器,用于存放计算机程序;

所述处理器,用于执行所述存储器上所存放的程序时,实现上述第一方面任一所述的路由表更新方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一所述的路由表更新方法。

本发明实施例提供的路由表更新方法、装置、交换机及存储介质,针对待发送数据,查询路由表中是否包含待发送数据的目的端的路由信息;若路由表中不包含目的端的路由信息,基于目的端的ip(internetprotocol,网络协议)地址,获取目的端的路由信息;按照目的端的路由信息,更新路由表。基于目的端的ip地址,对待发送数据进行ip路由,在ip路由成功后获取目的端的路由信息,并更新路由表。可以实现自动更新路由表,从而提高路由表的更新效率。当然,实施本发明的任一产品或方法并不一定需要同时达到以上的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例的路由表更新方法的第一种流程示意图;

图2为本发明实施例的路由表更新方法的应用场景的一种示意图;

图3为本发明实施例的路由表更新方法的第二种流程示意图;

图4为应用本发明实施例的路由表更新方法的三层交换机的工作示意图;

图5为本发明实施例的路由表更新方法的第三种流程示意图;

图6为本发明实施例的路由表更新装置的一种示意图;

图7为本发明实施例的电子设备的一种示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了提高三层交换机交换芯片的路由表的更新效率,本发明实施例提供了一种路由表更新方法,参见图1,应用于三层交换机,上述三层交换机包括交换芯片,上述交换芯片包括路由表,该方法包括:

s101,针对待发送数据,查询上述路由表中是否包含上述待发送数据的目的端的路由信息。

本发明实施例中的路由表更新方法可以通过更新系统实现,更新系统为任意能够实现本发明实施例的路由表更新方法的系统。例如:

更新系统可以为一种电子设备,包括:处理器、存储器、通信接口和总线;处理器、存储器和通信接口通过总线连接并完成相互间的通信;存储器存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行本发明实施例的路由表更新方法。该电子设备具体可以为三层交换机。

更新系统还可以为一种应用程序,用于在运行时执行本发明实施例的路由表更新方法。

更新系统还可以为一种存储介质,用于存储可执行代码,可执行代码用于执行本发明实施例的路由表更新方法。

交换芯片的路由表中记录了各设备的ip、mac地址等路由信息,三层交换机通过交换芯片的路由表中的ip、mac地址等路由信息实现数据的路由转发。更新系统查询交换芯片的路由表中是否包含待发送数据的目的端的路由信息,其中,上述目的端的路由信息包括上述目的端的mac地址。

s102,若上述路由表中不包含上述目的端的路由信息,基于上述目的端的网络协议ip地址,获取上述目的端的路由信息。

若交换芯片的路由表中不包含目的端的路由信息,通过三层交换机的cpu,基于目的端的ip地址,通过ip路由的方式,完成待发送数据的发送。在ip路由成功后,便可以得到目的端的路由信息,例如,根据ip路由过程中的发送路径得到目的端的路由信息,或从目的端返回的确认信息中得到目的端的路由信息等。

s103,按照上述目的端的路由信息,更新上述路由表。

更新系统将包含目的端mac地址的路由信息添加到交换芯片的路由表中。

在本发明实施例中,基于目的端的ip地址,对待发送数据进行ip路由,在ip路由成功后获取目的端的路由信息,并更新路由表。可以实现自动更新路由表,从而提高路由表的更新效率。

可选的,本发明实施例的路由表更新方法的一种应用场景可以如图2所示,三层交换机lan(localareanetwork,局域网)侧设备a发起路由,待发送数据的目的端为wan(wideareanetwork,广域网)侧设备b。三层交换机获取待发送数据后,需要将待发送数据的源mac修改为三层交换机wan口的mac地址,并按照交换芯片中的路由表将待发送数据的目的mac地址修改为设备b的mac地址,以完成待发送数据的发送。在交换芯片的路由表中不包含设备b的mac地址等路由信息时,通过本发明实施例的路由更新方法实现交换芯片中路由表的更新。

可选的,若上述路由表中不包含上述目的端的路由信息,基于上述目的端的网络协议ip地址,获取上述目的端的路由信息,包括:

若上述路由表中不包含上述目的端的路由信息,通过系统网络协议栈的ip层,基于上述待发送数据的ip地址完成上述待发送数据的发送,确定上述目的端的路由信息。

针对待发送数据,若交换芯片的路由表中不包含目的端的mac地址,交换芯片的路由表会查询失败,查询失败后,通过交换芯片路由表中一条特殊的路由,将待发送数据的报文发送到三层交换机的cpu,利用cpu操作系统的网络协议栈的ip层,对待发送数据进行ip路由。ip路由成功后便可以得到目的端的mac地址等路由信息。

在本发明实施例中,利用三层交换机cpu运行的系统网络协议栈的ip路由完成待发送数据的发送,并获取目的端的路由信息,因为三层交换机cpu运行的系统网络协议栈具备ip路由的功能,因此可以减少对现有三层交换机的更改。

可选的,上述按照上述目的端的路由信息,更新上述路由表,包括:

步骤一,利用钩子函数获取包含上述目的端的路由信息的报文,作为更新报文。

在三层交换机cpu运行的系统网络协议栈ip层发包函数中增加hook(钩子)函数,通过hook函数从三层交换机cpu运行的系统网络协议栈的ip层获取包含目的端路由信息的报文,作为更新报文。

步骤二,通过netlink(套接字)将上述更新报文从系统网络协议栈的ip层,发送至目标用户进程。

目标用户进程为用户态的进程,通过netlink从系统网络协议栈将更新报文发送至目标用户进程。

步骤三,通过上述目标用户进程调用路由配置接口,将上述目的端的路由信息添加到上述路由表中。

目标用户进程从更新报文中获取目的端的路由信息,调用三层交换机的路由配置接口,通过路由配置接口将目的端的路由信息配置到交换芯片的路由表中。

在本发明实施例中,通过钩子函数及套接字,实现了将包含路由信息的报文由系统网络协议栈的ip层传输至用户态的目标用户进程,目标用户进程通过调用路由配置接口,更新路由表,能够实现自动更新路由表,从而提高路由表的更新效率。

可选的,本发明实施例的路由表更新方法还包括:

步骤一,按照邻居子系统表,向上述目的端发送验证报文。

更新系统,例如三层交换机,可以周期性的按照邻居子系统表,即系统网络协议栈的arp(addressresolutionprotocol,地址解析协议)表,向目的端发送验证报文,以验证目的端是否可达。更新系统还可以在每次向目的端发送待发送数据之前,向目的端发送验证报文。可选的,验证报文为ping请求,相应的,答复报文为ping回复。

步骤二,若未接收到上述目的端根据上述验证报文返回的答复报文,删除上述路由表中上述目的端的路由信息。

如果未接收到答复报文,说明目的端的设备不在线或mac地址发生了变更。因此在交换芯片的路由表中删除目的端的路由信息。

在本发明实施例中,若未接收到目的端根据验证报文返回的答复报文,说明目的端不可达,删除路由表中目的端的路由信息,能够减少数据发送异常的情况。

本发明实施例的路由表更新方法还可以如图3所示,包括:

s301,获取待发送数据。

三层交换机获取待发送数据。例如图4所示,三层交换机获取lan侧设备a发送的待发送数据,其中,设备a发送的待发送数据的源ip地址为设备a的ip地址,源mac地址为设备a的mac地址,目的ip地址为目的端设备b的ip地址,目的mac地址为三层交换lan侧接口的mac地址。

s302,判断交换芯片的路由表中是否包含待发送数据的目的端的路由信息,如果包含执行s310,如果不包含执行s303。

三层交换机查询交换芯片的路由表,判断该路由表中是否包含待发送数据的目的ip地址对应的mac地址。

s303,将待发送数据发送至处理器。

s304,系统网络协议栈的ip层对待发送数据进行ip路由。

cpu对待发送数据进行ip路由,例如图4所示,cpu通过网卡驱动经ip路由发送待发送数据包。

s305,判断ip路由是否成功,若成功执行s306,若失败执行s309。

s306,通过钩子函数获取目的端的路由信息。

例如图4所示,在ip层的路由报文中,通过hook函数获取目的端的路由信息。

s307,通过netlink将目的端的路由信息发送给目标用户态进程。

s308,通过目标用户态调用路由配置接口,更新路由表。

通过目标用户态进程调用路由配置接口,下发目的端的路由信息至交换芯片的路由表,以完成交换芯片中路由表的更新。

s309,丢弃待发送数据。

在ip路由失败时丢弃待发送数据,减少三层交换机的异常。

s310,按照交换芯片的路由表,发送待发送数据。

三层交换机按照交换芯片的路由表,将待发送数据的目的mac地址更新为目标的mac地址,将待发送数据的源mac地址更新为三层交换机wan侧接口的mac地址。

在本发明实施例中,利用三层交换机cpu运行的系统网络协议栈的ip路由完成待发送数据的发送,并获取目的端的路由信息,因为三层交换机cpu运行的系统网络协议栈具备ip路由的功能,因此可以减少对现有三层交换机的更改。

在三层交换机交换芯片的路由表更新目的端的路由信息后,后续针对该目的端的报文都会基于交换芯片的路由表进行转发。但是如果该目的端的mac地址发生了变化,基于三层交换机交换芯片的路由表便无法成功发送针对该目的端的报文,这样就会存在路由不通的问题。为解决此问题,参见图5,可选的,本发明实施例的路由表更新方法还包括:

s501,通过查询arp表向目的端发送ping请求。

s502,是否接收到ping回复,若未接收到ping回复执行s503,接收到ping回复则结束本次更新。

s503,调用路由配置接口,删除目的端的路由信息。

s504,判断是否需要更新路由表,若是执行s505,若否结束本次更新。

s505,更新交换芯片的路由表。

通过socket同步arp表,因为在上述路由表更新的方法中,经过了ip路由,系统网络协议栈的arp表也记录了目标端的ip地址及mac地址信息。查询系统网络协议栈arp表,通过查询arp表向目的端发送ping请求,如果未得到ping回复,说明目的端不在线或目的端的mac地址变更了。因此将交换芯片的路由表中该目的端的路由信息删除。下次再与目的端通信时,由于交换芯片的路由表不包括目的端的路由信息,因此需要通过ip路由重新更新路由表中目的端的路由信息,如果ip路由成功,表示路由表需要被更新,通过hook函数及目标用户态进程等更新路由表。如ip路由失败,表示目的端不在线,结束本次更新。

在本发明实施例中,若未接收到目的端根据验证报文返回的答复报文,说明目的端不可达,删除路由表中目的端的路由信息,能够减少数据发送异常的情况。

本发明实施例提供了一种路由表更新装置,参见图6,应用于三层交换机,上述三层交换机包括交换芯片,上述交换芯片包括路由表,上述装置包括:

信息查询模块601,用于针对待发送数据,查询上述路由表中是否包含上述待发送数据的目的端的路由信息;

信息获取模块602,用于若上述路由表中不包含上述目的端的路由信息,基于上述目的端的网络协议ip地址,获取上述目的端的路由信息;

路由更新模块603,用于按照上述目的端的路由信息,更新上述路由表。

在本发明实施例中,基于目的端的ip地址,对待发送数据进行ip路由,在ip路由成功后获取目的端的路由信息,并更新路由表。可以实现自动更新路由表,从而提高路由表的更新效率。

可选的,上述信息获取模块602,具体用于:若上述路由表中不包含上述目的端的路由信息,通过系统网络协议栈的ip层,基于上述待发送数据的ip地址完成上述待发送数据的发送,确定上述目的端的路由信息。

在本发明实施例中,利用三层交换机cpu运行的系统网络协议栈的ip路由完成待发送数据的发送,并获取目的端的路由信息,因为三层交换机cpu运行的系统网络协议栈具备ip路由的功能,因此可以减少对现有三层交换机的更改。

可选的,上述路由更新模块603,包括:

更新报文获取子模块,用于利用钩子函数获取包含上述目的端的路由信息的报文,作为更新报文;

更新报文发送子模块,用于通过套接字将上述更新报文从系统网络协议栈的ip层,发送至目标用户进程;

配置接口调用子模块,用于通过上述目标用户进程调用路由配置接口,将上述目的端的路由信息添加到上述路由表中。

在本发明实施例中,通过钩子函数及套接字,实现了将包含路由信息的报文由系统网络协议栈的ip层传输至用户态的目标用户进程,目标用户进程通过调用路由配置接口,更新路由表,能够实现自动更新路由表,从而提高路由表的更新效率。

可选的,本发明实施例的路由表更新装置还包括:

验证报文发送模块,用于按照邻居子系统表,向上述目的端发送验证报文;

路由信息删除模块,用于若未接收到上述目的端根据上述验证报文返回的答复报文,删除上述路由表中上述目的端的路由信息。

在本发明实施例中,若未接收到目的端根据验证报文返回的答复报文,说明目的端不可达,删除路由表中目的端的路由信息,能够减少数据发送异常的情况。

本发明实施例提供了一种交换机,参加图7,上述交换机包括:处理器701、存储器702及交换芯片703,上述交换芯片703包括路由表;

上述存储器702,用于存放计算机程序;

上述处理器701,用于执行上述存储器702上所存放的程序时,实现如下步骤:

针对待发送数据,查询上述路由表中是否包含上述待发送数据的目的端的路由信息;

若上述路由表中不包含上述目的端的路由信息,基于上述目的端的网络协议ip地址,获取上述目的端的路由信息;

按照上述目的端的路由信息,更新上述路由表。

在本发明实施例中,基于目的端的ip地址,对待发送数据进行ip路由,在ip路由成功后获取目的端的路由信息,并更新路由表。可以实现自动更新路由表,从而提高路由表的更新效率。

可选的,本发明实施例的交换机还包括:通信接口及通信总线,其中,处理器701,通信接口,存储器702,交换芯片703通过通信总线完成相互间的通信。

可选的,上述处理器701,用于执行上述存储器702上所存放的程序时,还能够实现上述任一路由表更新方法。

上述交换机提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述交换机与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质内存储有计算机程序,上述计算机程序被处理器执行时实现如下步骤:

针对待发送数据,查询上述路由表中是否包含上述待发送数据的目的端的路由信息;

若上述路由表中不包含上述目的端的路由信息,基于上述目的端的网络协议ip地址,获取上述目的端的路由信息;

按照上述目的端的路由信息,更新上述路由表。

在本发明实施例中,基于目的端的ip地址,对待发送数据进行ip路由,在ip路由成功后获取目的端的路由信息,并更新路由表。可以实现自动更新路由表,从而提高路由表的更新效率。

可选的,上述计算机程序被处理器执行时还能够实现上述任一路由表更新方法。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、交换机及电子介质的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1