CN112272143B - 一种路由学习和转发方法 - Google Patents

一种路由学习和转发方法 Download PDF

Info

Publication number
CN112272143B
CN112272143B CN202011450558.1A CN202011450558A CN112272143B CN 112272143 B CN112272143 B CN 112272143B CN 202011450558 A CN202011450558 A CN 202011450558A CN 112272143 B CN112272143 B CN 112272143B
Authority
CN
China
Prior art keywords
router
client
information
network
routers
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
Application number
CN202011450558.1A
Other languages
English (en)
Other versions
CN112272143A (zh
Inventor
梁润强
史伟
闵宇
李卢群
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Eflycloud Computing Co Ltd
Original Assignee
Guangdong Eflycloud Computing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Eflycloud Computing Co Ltd filed Critical Guangdong Eflycloud Computing Co Ltd
Priority to CN202011450558.1A priority Critical patent/CN112272143B/zh
Publication of CN112272143A publication Critical patent/CN112272143A/zh
Application granted granted Critical
Publication of CN112272143B publication Critical patent/CN112272143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/08Learning-based routing, e.g. using neural networks or artificial intelligence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering

Abstract

本发明公开了一种路由学习和转发方法,步骤包括:对每个路由器进行编号以及分配IP地址;路由器之间相互进行学习并记录学习信息,得到路由器信息表;每个客户端路由器相互学习客户端的客户网络信息,形成一个客户网络信息的路由表;每个路由器相互学习本地链路信息得到全局链路信息表并计算每个路由器到任意一个路由器的最短路径;客户端路由器接收到客户端的网络报文,根据路由器信息表、路由表和最短路径将网络报文发送给目标客户端路由器。本发明使得中间路由器不必要存放大量的路由信息,也不需要重新去查找路由表,并且原始网络报文携带了完整的路径信息,从源头上避免了环路,对流量的控制也更容易把握。

Description

一种路由学习和转发方法
技术领域
本发明涉及路由数据技术领域,特别涉及一种路由学习和转发方法。
背景技术
互联网的普及,云计算的浪潮,让我们越来越离不开网络环境。随着移动互联网的快速发展,各种应用和服务层出不穷,应用开发商和服务提供商等需要快速实施他们的项目或产品,在传统的IDC数据中心中一般需要布置他们自己或者租用服务器设备并且还需要自己组建复杂的网络,这其间必定需要大量的时间并且非常容易出错,也不容易扩展和实现灾备。
在经典网络中,用户在云上其实是非常缺乏网络管理能力的,用户有一台经典网络的虚拟服务器,用户也只有了和公网通信的能力,最多加上安全组可以做一些安全控制的能力,但如网段规划、子网划分、路由管理、使用NAT管理公网出入等网络管理能力都几乎没有或很弱。
云计算和虚拟化网络作为未来的发展方向,将会使得组网和服务部署变得更加简便,而对于云计算中心来说,路由技术依然是最核心的部分,路由的学习和转发又是路由技术的核心,所以如何处理好路由的学习和转发,是云计算中核心的核心。
目前路由技术的发展已经非常成熟和普遍,路由学习技术现在普遍使用BGP等这些技术,路由转发则使用路由表技术,但是这两种技术都有比较明显的缺陷,对于BGP等路由学习,路由器只会关心相邻路由器状态和信息,学习到的路由信息使得路由器只具备非常有限的信息,无法获得全网的路径和状态,而且实际上很多位于中间只负责传输的路由器是没必要学习路由并保存这些信息的;而转发技术中使用到的路由表技术,则会因为流量每经过一个路由器,都需要查找一次路由表而消耗大量的路由器性能,并且增加相应的传输延时。
发明内容
本发明要解决的技术问题在于,提供一种路由学习和转发方法,本发明使得中间路由器不必要存放大量的路由信息,也不需要重新去查找路由表,并且原始网络报文携带了完整的路径信息,从源头上避免了环路,对流量的控制也更容易把握。
为解决上述技术问题,本发明提供如下技术方案:一种路由学习和转发方法,包括以下步骤:
步骤S1、对每个路由器进行编号以及分配IP地址;
步骤S2、路由器之间相互进行学习,具体为:
每个路由器均将其自身的学习信息发送给相邻路由器,所述学习信息包括当前时间点Time1、编号、IP地址和MAC地址;
每个路由器接收到相邻路由器的学习信息后,判断接收学习信息的路由器是否已记录有此学习信息中的编号,若没有此学习信息中的编号,则记录此学习信息;若已记录有此学习信息中的编号,则判断此学习信息中的当前时间点Time1是否比已经记录的当前时间点Time1更新,是则记录下此学习信息并转发给相邻路由器,若否,则丢弃此学习信息;
当每个路由器均对其他所有路由器的学习信息进行记录后,每个路由器对所有学习信息汇总并生成一个路由器信息表,所述路由器信息表包括每一个路由器的编号、IP地址、MAC地址和当前时间点Time1;
步骤S3、每个客户端路由器向相邻路由器发送与其相连客户端的客户网络信息以及当前时间Time2;将与客户端直接相连的路由器作为客户端路由器,而将不与客户端直接相连的路由器作为中间路由器
当中间路由器接收到客户网络信息时,中间路由器判断中间路由器本地的路由器信息表中是否存在此客户网络信息中的路由器编号,若不存在该客户端路由器编号,则中间路由器记录下该客户端路由器编号和当前时间Time2并向相邻的其他路由器转发此客户网络信息;若存在该客户端路由器编号则再判断此客户网络信息中的当前时间Time2是否比已存在的当前时间Time2更新,是则对路由器信息表上的当前时间Time2进行更新,并向相邻的其他路由器转发此客户网络信息;若此路由器信息表中的当前时间Time2比已存在的当前时间Time2更旧或一样,则丢弃此客户网络信息;
当其他客户端路由器接收到此客户网络信息时,其他客户端路由器将客户网络信息进行保存;
当每一个客户端路由器均接收到其他客户端路由器的客户网络信息后,每一个客户端路由器将客户网络信息结合形成一个客户网络信息的路由表;
步骤S4、每个路由器均向相邻路由器发送其本地链路信息;
每个路由器接收其他路由器发送的本地链路信息后,判断接收到的本地链路信息是否已经存在接收路由器的本地中,若已存在,则将接收到的本地链路信息直接丢弃;若不存在,则将接收到的本地链路信息进行保存,并转发给相邻路由器;
当每个路由器接收完所有其他路由器的本地链路信息后,每个路由器对所有本地链路信息进行结合得到全局链路信息表;
根据全局链路信息表,每个客户端路由器计算出自己到任意一个其他客户端路由器的最短路径;
步骤S5、其中一个客户端路由器接收到客户端的网络报文时,根据网络报文的目标IP地址以及客户网络信息的路由表,得到此网络报文所要去往的目标客户端路由器,所述目标客户端路由器指的是接收此网络报文的客户端路由器;
根据全局链路信息表,得到网络报文去往目标客户端路由器的最短路径;
获取最短路径所需的所有路由器并统计路由器的数量N,确定网络报文所需跳转总次数,其中,跳转总次数等于路由器的数量N;将所需路由器的编号、跳转总次数以及当前的跳转次数添加至网络报文的尾部;
客户端路由器根据网络报文的编号将网络报文发给下一个路由器;
当中间路由器接收到网络报文时,中间路由器在网络报文的尾部中得到需要去往的下一个路由器的编号,根据编号对应地从路由器信息表中得到下一个路由器的MAC地址,将当前网络报文的MAC地址修改成下一个路由器的MAC地址并对应地将跳转次数加1后,把网络报文发送给下一个路由器;
当其他客户端路由器接收到网络报文时,其他客户端路由器判断网络报文内的目标IP地址是否属于它接入的客户网络,以及判断网络报文的跳转次数是否等于跳转总次数;
当网络报文内的目标IP地址属于客户端路由器接入的客户网络且跳转次数等于跳转总次数时,则客户端路由器将此网络报文转发至与其相连的客户端;
当网络报文内的目标IP地址不属于客户端路由器接入的客户网络且跳转次数不等于跳转总次数,则客户端路由器根据编号对应地从路由器信息表中得到下一个路由器的MAC地址,将当前网络报文的MAC地址修改成下一个路由器的MAC地址并对应地将跳转次数加1后,把网络报文发送给下一个路由器;
当网络报文内的目标IP地址属于接入客户端路由器的客户网络而跳转次数不等于跳转总次数时,或者当网络报文内的目标IP地址不属于接入客户端路由器的客户网络而跳转次数等于跳转总次数时,客户端路由器直接丢弃此网络报文。
采用上述技术方案后,本发明至少具有如下有益效果:本发明对每台路由器通过学习得到全部路由器信息表,并通过把最短路径完整地添加在原始报文尾部,转发的过程中每个中间环节的路由器只需要查找本地路由器信息表即可,这样既可以使得中间的路由器不必要存放大量的路由信息,也不需要重新去查找路由表,并且原始报文携带了完整的路径信息,从源头上避免了环路,对流量的控制也更容易把握。
附图说明
图1为本发明一种路由学习和转发方的步骤流程图。
图2为本发明实施例2中具体举例的报文收发系统。
图3为本发明实施例2中具体举例的路由器信息表示例图。
图4为本发明实施例2中具体举例的路由表示例图。
图5为本发明实施例2中具体举例的全局链路信息表示例图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本申请作进一步详细说明。
实施例1
本发明公开的一种路由学习和转发方法,其需要运行于一个报文收发系统,此报文收发系统包括一系列路由器和若干客户端,其中,每个客户端都与一个路由器直接相连,将与客户端直接相连的路由器作为客户端路由器,而将不与客户端直接相连的路由器作为中间路由器,每个中间路由器只与其他路由器连接,因此中间路由器作为中介,只参与网络报文的转发;而客户端路由器不但可以接收其他路由器发送过来的网络报文并转发至与其直连的客户端中,而且还可以将直接的客户端生成的网络报文转发出去。
如图1所示,本实施例公开一种路由学习和转发方法,包括以下步骤:
步骤S1、对每个路由器进行编号以及分配IP地址;
具体地,对每个路由器进行编号,具体采用的方式为:
对路由器按顺序进行编号,比如有N台路由器,由1至N分别配给每一个路由器,如果后续再接入一个新的路由器时,新的路由器编号设为N+1;当后续新接入一个路由器时,需要将此路由器进行新一轮的路由学习;
步骤S2、路由器之间相互进行学习,具体为:
每个路由器均将其自身的学习信息发送给相邻路由器,所述学习信息包括当前时间点Time1、编号、IP地址和MAC地址;一般地,每个路由器都会直接连接一个或多个路由器,那么与这个路由器直接连接的其他路由器都称为相邻路由器,例如路由器1均直接连接路由器2、路由器3和路由器4,那么路由器2、路由器3和路由器4就为路由器1的相邻路由器;
每个路由器接收到相邻路由器的学习信息后,判断接收学习信息的路由器是否已记录有此学习信息中的编号,若没有此学习信息中的编号,则记录此学习信息;若已记录有此学习信息中的编号,则判断此学习信息中的当前时间点Time1是否比已经记录的当前时间点Time1更新,是则记录下此学习信息并转发给相邻路由器,若否,则丢弃此学习信息,防止环路;
每个路由器都会重复学习并保存其他所有路由器的学习信息的;当每个路由器均对其他路由器的学习信息进行记录后,每个路由器均得到一个路由器信息表,所述路由器信息表包括每一个路由器的编号、IP地址、MAC地址和当前时间点Time1;当每个路由器均对其他路由器的学习信息进行记录后,就会对所有学习信息汇总,汇总后就会得到了一个路由器信息表;
步骤S3、每个客户端路由器向相邻路由器发送与其相连客户端的客户网络信息以及当前时间Time2,同样如路由器信息表学习一样在客户网络信息中携带时间信息用于防止环路;此步骤是让其他客户端路由器学习客户端的客户网络信息,由于每个客户端发送的网络报文,都会带有一定的标记的,用于网络报文的加密和解密已经压缩和解析等等,因此每个客户端的客户网络信息都是不一样的,需要让与客户端直接连接的客户端路由器之间相互学习;例如客户端路由器1发送与客户端路由器1直接相连的客户端1的客户网络信息给客户端路由器2、客户端路由器3和客户端路由器4进行学习,但是客户网络信息在发送过程可能需要经过一系列中间路由器进行转发的,同理,客户端路由器2发送与客户端路由器2直接相连的客户端2的客户网络信息信息给客户端路由器1、客户端路由器3和客户端路由器4进行学习,以此类推;
当中间路由器接收到客户网络信息时,中间路由器判断中间路由器本地的路由器信息表中是否存在此客户网络信息中的路由器编号,若不存在该客户端路由器编号,则中间路由器记录下该客户端路由器编号和当前时间Time2并向相邻的其他路由器转发此客户网络信息;若存在该客户端路由器编号则再判断此客户网络信息中的当前时间Time2是否比已存在的当前时间Time2更新,是则对路由器信息表上的当前时间Time2进行更新,并向相邻的其他路由器转发此客户网络信息;若此客户网络信息中的当前时间Time2比已存在的当前时间Time2更旧或一样,则丢弃此客户网络信息;
客户网络信息可能会经过一个或多个中间路由器进行转发的,所述中间路由器均对客户网络信息进行转发操作,直至转发到最后一个客户端路由器;
当其他客户端路由器接收到此客户网络信息时,其他客户端路由器将客户网络信息进行保存;由于每个客户端路由器均需要将与其直连客户端的客户网络信息发送出去,因此,每个客户端路由器均能够接收到其他客户端路由器的客户网络信息,每个客户端路由器都拥有其他客户端路由器的客户网络信息;
当每一个客户端路由器均接收到其他客户端路由器的客户网络信息后,每一个客户端路由器对所有客户网络信息进行汇总,将客户网络信息结合形成一个客户网络信息的路由表;
所述其他客户端路由器指代的是:排除原始发送此客户网络信息的客户端路由器,例如:现在有客户端路由器1-4,客户端路由器1发送一个客户网络信息,那么接收此客户网络信息的为客户端路由器2-4,客户端路由器1也有可能通过中间路由器接收到客户端路由器1自身发送的客户网络信息,但会直接丢弃客户网络信息;
步骤S4、每个路由器均向相邻路由器发送其本地链路信息,所述本地链路信息指的是每个路由器与其他路由器进行直接连接的链路信息;例如客户端1的本地链路信息是:客户端1与客户端2、客户端3和客户端4直接连接;
每个路由器接收其他路由器发送的本地链路信息后,判断接收到的本地链路信息是否已经存在接收路由器的本地中,若已存在,则将接收到的本地链路信息直接丢弃;若不存在,则将接收到的本地链路信息进行保存,并转发给相邻路由器;其中,判断接收到的本地链路信息是否已经存在接收路由器的本地中,主要是为了防止有可能会有出现环路;具体为:
i.每个路由器(发出者)向相邻路由器发送自己的其他相邻路由器链路信息(包括相连链路当前负载百分比)并附上当前时间点Time3;ii.每个路由器(接收者)接收到相邻路由器发送的链路信息时,判断此链路信息中的路由器编号是否存在于路由器(接收者)本地的路由器信息表中,若不存在则记录下此编号和Time3并向自己相连的其他相邻路由器转发此链路信息,假如此链路信息中的路由器编号已存在于路由器(接收者)本地的路由器信息表中,则判断链路信息中的Time3是否比已记录的Time3更新,是则更新记录上的Time3并向自己相连的其他相邻路由器转发此链路信息,否则丢弃此链路信息,其中路由器(接收者)向自己的其他相邻路由器转发链路信息时,假如其他相邻路由器已出现在链路信息中,则不向此路由器转发链路信息;重复此过程,直至所有路由器接收完所有其他路由器的本地链路信息;
当每个路由器接收完所有其他路由器的本地链路信息后,每个路由器对所有本地链路信息进行汇总,并结合得到一个全局链路信息表;
根据全局链路信息表,每个客户端路由器计算出自己到任意一个其他客户端路由器的最短路径;
步骤S5、其中一个客户端路由器接收到客户端的网络报文时,根据网络报文的目标IP地址以及客户网络信息的路由表,得到此网络报文所要去往的目标客户端路由器,目标客户端路由器指的是接收此网络报文的客户端路由器;由于,客户端路由器的路由表均记录有每个路由器的编号和接入的客户网络,只需要在路由表中找到网络报文的目标IP地址所属的客户网络,根据路由表上客户网络对应的编号即可得到网络报文所要去往的目标客户端路由器;
根据全局链路信息表,得到网络报文去往目标客户端路由器的最短路径;由于全局链路信息表已经存储有每个路由器到任意一个路由器的最短路径,因此发送客户端的网络报文的客户端路由器到目标客户端路由器时可以从全局链路信息表直接得到的;
获取最短路径所需的所有路由器并统计路由器的数量N,确定网络报文所需跳转总次数,其中,跳转总次数等于路由器的数量N;将所需路由器的编号、跳转总次数以及当前的跳转次数添加至网络报文的尾部,其中跳转次数是每经过一个路由器作为一次跳转次数,则每经过一个路由器就会将跳转次数加1,第一个客户端路由器作为发送网络报文的路由器,其跳转次数为1;
客户端路由器根据网络报文的编号将网络报文发给下一个路由器;
当中间路由器接收到网络报文时,中间路由器在网络报文的尾部中得到需要去往的下一个路由器的编号,根据编号对应地从路由器信息表中得到下一个路由器的MAC地址,将当前网络报文的MAC地址修改成下一个路由器的MAC地址并对应地将跳转次数加1后,把网络报文发送给下一个路由器;
当其他客户端路由器接收到网络报文时,其他客户端路由器判断网络报文内的目标IP地址是否属于接入它的客户网络,以及判断网络报文的跳转次数是否等于跳转总次数;
当网络报文内的目标IP地址属于接入客户端路由器的客户网络且跳转次数等于跳转总次数时,则客户端路由器将此网络报文转发至与其相连的客户端;
当网络报文内的目标IP地址不属于接入客户端路由器的客户网络且跳转次数不等于跳转总次数,则客户端路由器根据编号对应地从路由器信息表中得到下一个路由器的MAC地址,将当前网络报文的MAC地址修改成下一个路由器的MAC地址并对应地将跳转次数加1后,把网络报文发送给下一个路由器;
当网络报文内的目标IP地址属于接入客户端路由器的客户网络而跳转次数不等于跳转总次数时,或者当网络报文内的目标IP地址不属于接入客户端路由器的客户网络而跳转次数等于跳转总次数时,客户端路由器直接丢弃此网络报文。
本发明对每台路由器通过学习得到全部路由器信息表,并通过把最短路径完整地添加在原始报文尾部,转发的过程中每个中间环节的路由器只需要查找本地路由器信息表即可,这样既可以使得中间的路由器不必要存放大量的路由信息,也不需要重新去查找路由表,并且原始报文携带了完整的路径信息,从源头上避免了环路,对流量的控制也更容易把握。
实施例2
本实施例是在实施例1一种路由学习和转发方法的基础上,具体提供一个实际操作例子进行详细说明。
假如现有一个报文收发系统,如图2所示,包括7个路由器和4个客户端,其中,对路由器按顺序进行编号和对客户端按顺序进行编号,路由器分别为路由器1、路由器2、路由器3、路由器4、路由器5、路由器6和路由器7,客户端分别为客户端1、客户端2、客户端3和客户端4;其中,路由器1、路由器2、路由器3和路由器4作为直接与客户端连接的客户端路由器,路由器5、路由器6和路由器7作为中间路由器,因此,客户端1、客户端2、客户端3和客户端4对应地直接连接客户端1、客户端2、客户端3和客户端4,路由器5直接连接路由器1、路由器2、路由器4、路由器6和路由器7,路由器6直接连接路由器2、路由器3、路由器5、和路由器7,路由器7直接连接路由器3、路由器4、路由器5和路由器6;假设客户端1的客户网络信息为10.10.1.0/24,客户端2的客户网络信息为10.10.2.0/24,客户端3的客户网络信息为10.10.3.0/24,和客户端4的客户网络信息为10.10.4.0/24;对每个路由器均分配一个唯一的IP地址;
路由器之间相互进行学习:
1.客户端路由器1向中间路由器5发布学习信息,学习信息包括自己编号(No)、IP地址、Mac地址并附上当前时间点Time1,中间路由器5收到这个学习信息,记录到本地并向客户端路由器4、客户端路由器2、中间路由器6、中间路由器7转发,然后客户端路由器4、客户端路由器2、中间路由器6、中间路由器7记录到本地后又向与其直接连接的路由器(相邻路由器)转发学习信息,学习信息回到中间路由器5的时候,中间路由器5发现时间已经记录过,所以丢弃掉;所有路由器执行上述这样的发布和记录操作,让每个路由器都能够生成一份全网的路由器信息表,如图3所示;
2.客户端路由器1向中间路由器5发布自己的编号、客户网络信息Net(10.10.1.0/24)并附上当前时间点Time2,中间路由器5收到这个信息后,判断本地记录上的时间然后更新并转发或者丢弃,其它路由器收到后执行同样的操作,到达其他客户端路由器时,客户端路由器需要存储这条信息并转发或丢弃,以此来让每个客户端路由器学习其他客户端路由器的客户网络信息Net来生成路由表,如图4所示;
3.路由器5向路由器1、2、4、6、7发送链路信息(5-1:20%,5-2:25%,5-4:1%,5-6:20%,5-7:3%),路由器7收到后记录下此信息并向路由器3转发此链路信息,由于路由器4和路由器6已出现在此链路信息中,所以路由器7不向路由器4和路由器6转发此链路信息,以此类推,生成全局链路信息表,如图5所示;另外,为了防止环路,需要对接收的链路信息进行判断,若已经记录在本地的链路信息,则不需要再次进行记录以及转发;
其中,相连链路当前负载百分比计算方式为:就是这条链路比如带宽总共是1000M的,目前总共已经在跑500M,此时负载百分比就是50%;由于实际网络传输链路是双向的,所以一条链路具备两个负载百分比;如图2所示,1-5:10/20,2-5:20/15%,4-5:15/10%,5-6:20/10%,5-7:10/15%,4-7:10/15%,2-6:15/25%,3-7:10/20%,3-6:20/10%;
计算客户端路由器之间互相到达的最短路径:
①假设S(N)为路由器本地到目标路由器N的最短路径,比如图2所示,路由器1到路由器5的最短路径S(5)=(1,5直达)=10%,路由器1到路由器2的最短路径S(2)=(1,5,2)=10+15=25%,假如此时路由器5到路由器6的负载百分比以及路由器6到路由器2的负载百分比都变为1%,则路由器1到路由器2的最短路径变成S(2)=1,5,6,2=10+1+1=12%;
②如此类推计算PE之间的最短路径;
网络报文转发过程:
1.路由器1收到客户端1的网络报文,查看网络报文的目标IP为10.10.3.100,通过查找路由表得知,此网络报文要发往路由器3,然后从本地全局路径表计算得到的最短路径为S(3)=PE(1),P(5),P(7),PE(3),假设原始报文格式为:
Figure 425991DEST_PATH_IMAGE001
把路径信息加到报文尾部后变为:
Figure 264503DEST_PATH_IMAGE002
尾部添加的元素每个均为2字节,其中p表示ip报文的原协议号(把原报文的协议号改为255),n为路径的跳转总次数,i为当前的跳转次数,i从路由器1发出时的值为1,重新计算原网络报文的ip头部的长度ip_hdr_len=len(当前)+2*(3+n)。
2.当路由器1把这个网络报文交给路由器5时,通过路由器信息表查得路由器的Mac地址,以此修改为网络报文的目标mac地址并发至路由器5;
3.当路由器5收到这个网络报文时,查到下一跳为路由器7,亦查找本地路由器信息表得到Mac地址修改为网络报文目标mac并修改尾部i的值加1然后发至路由器7,然后路由器7即执行相同操作;
4.最后当路由器3收到网络报文时,发现网络报文是发至自己的网络并到此为最后一跳,路由器3重析计算ip_hdr_len=len(当前)-2*(3+n),并把ip报文协议修改回p,然后把网络报文转发至用户。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解的是,在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种等效的变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。

Claims (1)

1.一种路由学习和转发方法,其特征在于,包括以下步骤:
步骤S1、对每个路由器进行编号以及分配IP地址;
步骤S2、路由器之间相互进行学习,具体为:
每个路由器均将其自身的学习信息发送给相邻路由器,所述学习信息包括当前时间点Time1、编号、IP地址和MAC地址;
每个路由器接收到相邻路由器的学习信息后,接收到学习信息的路由器判断是否已记录有此学习信息中的编号,若没有此学习信息中的编号,则记录此学习信息;若已记录有此学习信息中的编号,则判断此学习信息中的当前时间点Time1是否比已经记录的当前时间点Time1更新,是则记录下此学习信息并转发给相邻路由器,若否,则丢弃此学习信息;
当每个路由器均对其他所有路由器的学习信息进行记录后,每个路由器对所有学习信息汇总并生成一个路由器信息表,所述路由器信息表包括每一个路由器的编号、IP地址、MAC地址和当前时间点Time1;
步骤S3、每个客户端路由器向相邻路由器发送与其相连客户端的客户网络信息以及当前时间Time2;将与客户端直接相连的路由器作为客户端路由器,而将不与客户端直接相连的路由器作为中间路由器;
当中间路由器接收到客户网络信息时,中间路由器判断中间路由器本地的路由器信息表中是否存在此客户网络信息中的路由器编号,若不存在该客户端路由器编号,则中间路由器记录下该客户端路由器编号和当前时间Time2并向相邻的其他路由器转发此客户网络信息;若存在该客户端路由器编号则再判断此客户网络信息中的当前时间Time2是否比已存在的当前时间Time2更新,是则对路由器信息表上的当前时间Time2进行更新,并向相邻的其他路由器转发此客户网络信息;若此客户网络信息中的当前时间Time2比已存在的当前时间Time2更旧或一样,则丢弃此客户网络信息;
当其他客户端路由器接收到此客户网络信息时,其他客户端路由器将客户网络信息进行保存;
当每一个客户端路由器均接收到其他客户端路由器的客户网络信息后,每一个客户端路由器将客户网络信息结合形成一个客户网络信息的路由表;
步骤S4、每个路由器均向相邻路由器发送其本地链路信息;
每个路由器接收其他路由器发送的本地链路信息后,判断接收到的本地链路信息是否已经存在接收路由器的本地中,若已存在,则将接收到的本地链路信息直接丢弃;若不存在,则将接收到的本地链路信息进行保存,并转发给相邻路由器;
当每个路由器接收完所有其他路由器的本地链路信息后,每个路由器对所有本地链路信息进行结合得到全局链路信息表;
根据全局链路信息表,每个客户端路由器计算出自己到任意一个其他客户端路由器的最短路径;
步骤S5、其中一个客户端路由器接收到客户端的网络报文时,根据网络报文的目标IP地址以及客户网络信息的路由表,得到此网络报文所要去往的目标客户端路由器,所述目标客户端路由器指的是接收此网络报文的客户端路由器;
根据全局链路信息表,得到网络报文去往目标客户端路由器的最短路径;
获取最短路径所需的所有路由器并统计路由器的数量N,确定网络报文所需跳转总次数,其中,跳转总次数等于路由器的数量N;将所需路由器的编号、跳转总次数以及当前的跳转次数添加至网络报文的尾部;
客户端路由器根据网络报文的编号将网络报文发给下一个路由器;
当中间路由器接收到网络报文时,中间路由器在网络报文的尾部中得到需要去往的下一个路由器的编号,根据编号对应地从路由器信息表中得到下一个路由器的MAC地址,将当前网络报文的MAC地址修改成下一个路由器的MAC地址并对应地将跳转次数加1后,把网络报文发送给下一个路由器;
当其他客户端路由器接收到网络报文时,其他客户端路由器判断网络报文内的目标IP地址是否属于它接入的客户网络,以及判断网络报文的跳转次数是否等于跳转总次数;
当网络报文内的目标IP地址属于客户端路由器接入的客户网络且跳转次数等于跳转总次数时,则客户端路由器将此网络报文转发至与其相连的客户端;
当网络报文内的目标IP地址不属于客户端路由器接入的客户网络且跳转次数不等于跳转总次数,则客户端路由器根据编号对应地从路由器信息表中得到下一个路由器的MAC地址,将当前网络报文的MAC地址修改成下一个路由器的MAC地址并对应地将跳转次数加1后,把网络报文发送给下一个路由器;
当网络报文内的目标IP地址属于接入客户端路由器的客户网络而跳转次数不等于跳转总次数时,或者当网络报文内的目标IP地址不属于接入客户端路由器的客户网络而跳转次数等于跳转总次数时,客户端路由器直接丢弃此网络报文。
CN202011450558.1A 2020-12-12 2020-12-12 一种路由学习和转发方法 Active CN112272143B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011450558.1A CN112272143B (zh) 2020-12-12 2020-12-12 一种路由学习和转发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011450558.1A CN112272143B (zh) 2020-12-12 2020-12-12 一种路由学习和转发方法

Publications (2)

Publication Number Publication Date
CN112272143A CN112272143A (zh) 2021-01-26
CN112272143B true CN112272143B (zh) 2021-03-30

Family

ID=74350014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011450558.1A Active CN112272143B (zh) 2020-12-12 2020-12-12 一种路由学习和转发方法

Country Status (1)

Country Link
CN (1) CN112272143B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101789900A (zh) * 2009-11-19 2010-07-28 福建星网锐捷网络有限公司 组播转发路径的查询方法、中间节点和管理节点
CN102769576A (zh) * 2012-08-17 2012-11-07 北京傲天动联技术有限公司 流表自学习方法、报文转发方法和交换机
CN103281247A (zh) * 2013-05-09 2013-09-04 北京交通大学 一种数据中心网络的通用路由方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101547139B (zh) * 2008-03-28 2012-03-07 华为技术有限公司 网络拓扑变化的通告方法及装置
US9210067B1 (en) * 2008-07-11 2015-12-08 Google Inc. Method and apparatus for exchanging routing information
CN101729365B (zh) * 2008-10-27 2012-06-27 华为技术有限公司 路径建立方法、承载网路由器和网络系统
CN107342939B (zh) * 2016-04-29 2020-02-14 华为技术有限公司 传输数据的方法和装置
CN109618381B (zh) * 2018-11-27 2022-05-13 国网山东省电力公司济宁供电公司 一种自组网通信方法及自组网通讯系统
CN110601973B (zh) * 2019-08-26 2022-04-05 中移(杭州)信息技术有限公司 一种路由规划方法、系统、服务器及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101789900A (zh) * 2009-11-19 2010-07-28 福建星网锐捷网络有限公司 组播转发路径的查询方法、中间节点和管理节点
CN102769576A (zh) * 2012-08-17 2012-11-07 北京傲天动联技术有限公司 流表自学习方法、报文转发方法和交换机
CN103281247A (zh) * 2013-05-09 2013-09-04 北京交通大学 一种数据中心网络的通用路由方法及系统

Also Published As

Publication number Publication date
CN112272143A (zh) 2021-01-26

Similar Documents

Publication Publication Date Title
EP1811724B1 (en) Determining data link (L2) network paths
CA2105040C (en) Inter-domain multicast routing
US11658896B2 (en) Routing table creation method, electronic device, and network
CN104521196B (zh) 针对虚拟网络分组流的物理路径确定
US6961319B2 (en) Methods and arrangements for distribution tree development
CN109639557B (zh) 用于网络通信的方法、装置和系统
US11323366B2 (en) Path determining method, apparatus, and system
US6628623B1 (en) Methods and systems for determining switch connection topology on ethernet LANs
CN108667681A (zh) 用于多路径路由的路由跟踪
JP2001500345A (ja) 多層分散ネットワーク要素におけるルーティング
WO2018032962A1 (zh) 一种信息同步的方法,装置及系统
US20120300781A1 (en) Packet Routing in a Network
US11290394B2 (en) Traffic control in hybrid networks containing both software defined networking domains and non-SDN IP domains
Kalghoum et al. Fcr-ns: a novel caching and forwarding strategy for named data networking based on software defined networking
US5943317A (en) Sub-network route optimization over a shared access transport facility
US7616632B2 (en) System and method of implementing contacts of small worlds in packet communication networks
CN113037883B (zh) 一种mac地址表项的更新方法及装置
Khin et al. Packet-in messages handling scheme to reduce controller bottlenecks in OpenFlow networks
US20230353479A1 (en) Edge Computing Data and Service Discovery Using an Interior Gateway Protocol (IGP)
US20230269164A1 (en) Method and apparatus for sending route calculation information, device, and storage medium
CN112272143B (zh) 一种路由学习和转发方法
EP2204054A1 (en) Method and apparatus for providing a distributed forwarding plane for a mobility home agent
Kim et al. Scalable name-based inter-domain routing for information-centric networks
CN115242699A (zh) 报文传输方法、切片生成方法、装置及系统
Que et al. A Network Architecture Containing Both Push and Pull Semantics

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant