CN101540731A - 一种三层报文转发方法及装置 - Google Patents
一种三层报文转发方法及装置 Download PDFInfo
- Publication number
- CN101540731A CN101540731A CN200910136159A CN200910136159A CN101540731A CN 101540731 A CN101540731 A CN 101540731A CN 200910136159 A CN200910136159 A CN 200910136159A CN 200910136159 A CN200910136159 A CN 200910136159A CN 101540731 A CN101540731 A CN 101540731A
- Authority
- CN
- China
- Prior art keywords
- list item
- neighbours
- last time
- software list
- message
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种三层报文转发方法,包括:处理模块记录前次正常转发的邻居软件表项;转发模块接收用户设备发送的报文,如果转发模块中没有与报文目的地址匹配的邻居表项,向处理模块发送邻居表项请求报文;处理模块根据邻居表项请求报文中携带的报文目的地址查找匹配的前次邻居软件表项,如果找到,将前次邻居软件表项作为假邻居表项下发到转发模块,使转发模块按照前次邻居软件表项中的MAC地址对报文进行转发。本发明对于下发假邻居表项时MAC地址与记录的前次邻居表项一致的情况,邻居表项交互学习过程中,报文转发不再丢包。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种三层报文转发方法及装置。
背景技术
交换设备在网络中承担着大量网络报文的转发任务,为了提高交换设备的报文转发效率,通常将报文转发和路由表维护分开进行,报文转发由交换设备的转发模块完成,路由表维护由交换设备的CPU(Central ProcessingUnit,中央处理单元)进行,这样在交换设备内形成了控制组件(CPU)和转发组件(转发模块)分离的构架形式。由于CPU仅完成相对实时性要求不高的报文转发表的处理操作,对其性能要求也大大下降,从而可以降低成本。通常,报文转发是独立进行的,以三层ARP(Address Resolution Protocol,地址解析协议)数据为例,当交换设备的转发模块已知报文相对应的ARP表项时,该报文由转发模块直接处理转发,当转发模块中不存在该ARP表项时,例如由于ARP表项老化或交换设备重新启动等原因,转发模块无法确定该报文转发的目的地址,此时需要交换设备向服务器发送ARP请求报文以获得该ARP表项。为此,转发模块将该种报文送往CPU,CPU分析后向服务器发送ARP请求报文,等待服务器发送的ARP回应报文到达后刷新转发模块中的ARP表项,这样,转发模块就可依据新的ARP表项进行报文转发。
由于交换设备中CPU的交换性能远低于转发模块,当去向CPU的三层未匹配报文(在转发模块中该报文对应的ARP表项不存在,无法根据ARP表项及报文目的地址确定该报文的目的MAC地址和出端口)的数量较大时,CPU无法及时从服务器获取新ARP表项,CPU的报文入口将会被这些报文阻塞,CPU入口会按照队列丢弃报文,和三层未匹配报文处在同样CPU队列的报文会被丢掉一部分,导致对应业务无法正常进行。
当CPU收到来自转发模块的ARP请求报文后,先向转发模块中写入指导该报文转发的假ARP表项(这个ARP表项设置转发到转发模块“黑洞”,即将该报文的目的MAC地址或出端口设置为不存在,当转发模块根据报文目的地址在该假ARP表项中找不到对应目的MAC地址或出端口时,直接丢弃该报文),再向服务器发送ARP请求报文,根据交换设备的CPU处理能力不同,该假ARP表项在转发模块中保持一定时间(该时间为CPU获取新ARP表项的时间),保证同样目的地址的三层报文进入转发模块后,按照该假ARP表项直接丢弃,不再进行转发,这样在CPU等待收取ARP回应报文时,去往该ARP目的地址的报文不再拥塞CPU,也不影响网上其他业务。
现有技术中,一种报文转发场景如图1所示,PC(个人计算机)通过交换设备访问服务器,报文在交换设备做三层转发。当PC访问服务器,但是交换设备还没有学习到服务器的ARP表项时,PC通过交换设备进行报文转发的过程包括以下步骤:
步骤101,PC向交换设备发送报文,该报文在交换设备的转发模块上为三层未匹配报文,交换设备开始ARP学习过程,即交换设备中转发模块向CPU发送ARP请求报文,CPU向转发模块下发假ARP表项;
步骤102,交换设备的CPU向服务器发送ARP请求报文,以获得该三层未匹配报文的目的地址对应的ARP表项;
步骤103,交换设备的CPU收到服务器发送的ARP回应报文,该回应报文中携带该三层未匹配报文的目的地址对应的ARP表项;
步骤104,交换设备的CPU根据ARP回应报文中携带的新ARP表项更新转发模块中的ARP表项的目的MAC地址和出端口,使PC再次发送的该报文可以通过交换设备的转发模块直接转发到服务器。
该种报文转发场景中,交换设备更新ARP表项为真正目的MAC地址和出端口之前,三层报文都会匹配转发模块的假ARP表项,按照“黑洞”丢弃报文。当CPU处理能力比较差、网络环境比较差时,由于交换设备比较长的时间收不到服务器的ARP回应报文以更新转发模块中的ARP表项,会有很多报文丢弃。
另一种报文转发场景如图2所示,PC通过交换设备访问外部网络服务器有两条链路(链路A和链路B),由于通过链路A和链路B去往服务器的路径长短不同,这两条链路不等价,所以形成的转发表项指向其中一条链路(链路A,称为主路径),另外一条链路作为备份(链路B,称为备份路径)。PC通过交换设备进行报文转发的过程包括以下步骤:
步骤201,当两条链路都可达时,去往服务器地址的路由指向主路径。
步骤202,当主路径出现问题断掉时,对应路由切换到备份路径,主路径对应设置为假ARP表项;路由切换和主路径为假ARP表项下发到转发模块,由CPU的两个不同任务并行处理,当出现先设置主路径为假ARP表项,再设置切换路由,这两个操作之间的时间内,就会出现对应路由指向假ARP表项,PC发送到交换设备的报文被转发到“黑洞”丢弃的情况。
步骤203,路由切换到备份路径后,主路径又恢复正常。
步骤204,交换设备通过主路径向服务器发送ARP请求报文。
步骤205,交换设备收到服务器通过主路径发送的ARP回应报文,交换设备中的CPU下发真实ARP表项到转发模块。
步骤206,交换设备和主路径对端设备交互路由,学到对应路由后,发现主路径链路A开销最小,对应路由再切换回主路径,PC发送的报文通过交换设备走链路A转发到服务器。
其中,服务器向交换设备的ARP表项下发和切换路由下发由并行的两个任务处理,不能保证时序为先下发ARP表项到转发模块再切换路由,由于ARP表项下发过程中交互ARP报文需要时间比较长,导致路由切换先于ARP表项下发转发模块,此时交换设备没有真正学到主路径对应ARP表项,而是先进行路由切换,CPU会向转发模块下发指向“黑洞”的假ARP表项,所以在流量切换的过程中,对应三层转发流量断流。
综上两个例子,虽然现有技术保证了CPU不会受到大量三层未匹配报文冲击,但是在某些情况下,对应转发报文按照假ARP进行转发进黑洞丢弃,在交换设备收到ARP回应报文,并下发真正转发ARP表项前,报文都会被丢弃,不会正常转发。
发明内容
本发明提供了一种三层报文转发方法及装置,以避免在ARP学习过程中,由于CPU向转发芯片下发假ARP表项把报文引入“黑洞”造成的丢包。
本发明提供了一种三层报文转发方法,应用于包括转发模块、处理模块的交换设备中,所述方法包括以下步骤:
所述处理模块记录前次正常转发的邻居软件表项;
所述转发模块接收用户设备发送的报文,如果所述转发模块中没有与所述报文目的地址匹配的邻居表项,向所述处理模块发送邻居表项请求报文;
所述处理模块根据所述邻居表项请求报文中携带的报文目的地址查找匹配的前次邻居软件表项,如果找到,将所述前次邻居软件表项作为假邻居表项下发到所述转发模块,使所述转发模块按照所述前次邻居软件表项中的MAC地址对所述报文进行转发。
如果根据所述邻居表项请求报文中携带的报文目的地址,没有查找到匹配的前次邻居软件表项,则指令所述转发模块丢弃所述报文。
其中,将所述前次邻居软件表项作为假邻居表项下发到所述转发模块,之前还包括:
检测所述报文目的地址在所述交换设备上对应的MAC地址是否变化,如果没有变化,则将所述前次邻居软件表项下发到所述转发模块,如果MAC地址发生变化,关闭所述将前次邻居软件表项下发到所述转发模块的功能。
其中,将所述前次邻居软件表项作为假邻居表项下发到所述转发模块,之前还包括:
通过三层探测报文确定是否存在路由环路,如果不存在,则将所述前次邻居软件表项下发到所述转发模块,如果存在,则指令所述转发模块丢弃所述报文。
其中,将所述前次邻居软件表项作为假邻居表项下发到所述转发模块,之前还包括:
对所述转发模块中的每一个假邻居表项进行跟踪,如果预设时间内所述假邻居表项没有被刷新为真邻居表项,将所述假邻居表项修改为直接丢弃报文。
其中,还包括对所述邻居软件表项进行维护,具体包括:
启动前次邻居软件表项老化定时器,定时将设置老化标记的邻居软件表项进行删除;或
启动前次邻居软件表项老化定时器,每次进行定时操作,都将设置老化标记的邻居软件表项老化计数器加一,判断所述老化计数器是否达到第一老化阈值,如果达到所述第一老化阈值,将对应邻居软件表项删除。
其中,所述记录前次正常转发的邻居软件表项之前还包括:
判断前次邻居软件表项中的表项数是否达到阈值,如果达到所述阈值,提前老化邻居软件表项,具体为:当老化定时器达到第三老化阈值,删除所述设置老化标记的邻居软件表项,所述第三老化阈值小于所述第一老化阈值。
本发明还提供了一种交换装置,包括转发模块、处理模块和存储模块,
所述存储模块,用于存储前次邻居软件表项;
所述处理模块,与所述存储模块连接,用于记录维护所述存储模块中的前次邻居软件表项,并根据所述转发模块发送的邻居表项请求报文携带的报文的目的地址查找匹配的前次邻居软件表项,如果找到,将所述前次邻居软件表项作为假邻居表项下发到所述转发模块;
所述转发模块,与所述处理模块连接,用于接收用户设备发送的报文,如果所述转发模块中没有与所述报文目的地址匹配的邻居表项时,向所述处理模块发送邻居表项请求报文,并接收所述处理模块发送的假邻居表项,如果所述假邻居表项为前次邻居软件表项,则根据所述前次邻居软件表项中的MAC地址对所述报文进行转发,如果假邻居表项指向硬件黑洞,则丢弃所述报文。
其中,所述处理模块,还用于当根据所述邻居表项请求报文中携带的报文目的地址,没有查找到匹配的前次邻居软件表项时,指令所述转发模块丢弃所述报文。
其中,所述处理模块,还用于检测所述报文目的地址在所述交换设备上对应的MAC地址是否变化,如果没有变化,则将所述前次邻居软件表项下发到所述转发模块,如果MAC地址发生变化,关闭所述将前次邻居软件表项下发到所述转发模块的功能。
其中,
所述处理模块,还用于通过三层探测报文确定是否存在路由环路,如果不存在,则将所述前次邻居软件表项下发到所述转发模块,如果存在,则指令所述转发模块丢弃所述报文。
其中,
所述处理模块,还用于对所述转发模块中的每一个假邻居表项进行跟踪,如果预设时间内所述假邻居表项没有被刷新为真邻居表项,将所述假邻居表项修改为直接丢弃报文。
其中,
所述处理模块,还用于启动前次邻居软件表项老化定时器,定时将设置老化标记的邻居软件表项进行删除;或启动前次邻居软件表项老化定时器,每次进行定时操作,都将设置老化标记的邻居软件表项老化计数器加一,判断所述老化计数器是否达到第一老化阈值,如果达到所述第一老化阈值,将对应邻居软件表项删除。
其中,
所述处理模块,还用于判断前次邻居软件表项中的表项数是否达到阈值,如果达到所述阈值,提前老化邻居软件表项,具体为:当老化定时器达到第三老化阈值,删除所述设置老化标记的邻居软件表项,所述第三老化阈值小于所述第一老化阈值。
与现有技术相比,本发明具有以下优点:
本发明中,当邻居表项(例如ARP或ND等)的MAC地址保持不变,对每个学到的邻居表项信息进行记录,后续再设置假邻居表项时,都按照前次学到的邻居表项信息下发到转发模块。对于下发假邻居表项时MAC地址与记录的前次邻居表项一致的情况,邻居表项交互学习过程中,报文转发不再丢包;ARP的MAC地址变化情况下,可以快速切换到硬件“黑洞”,减少流量泄漏。本发明还可以对邻居表项软件表进行维护,例如添加、修改和老化删除等,以保证邻居软件表项处于最新状态。
附图说明
图1是现有技术中一种三层报文转发场景示意图;
图2是现有技术中另一种三层报文转发场景示意图;
图3是本发明中一种三层报文转发方法流程图;
图4是本发明中一种交换装置结构图。
具体实施方式
本发明的核心思想是:记录并维护上次学到真正转发的邻居软件表项信息(例如ARP或ND软件表项信息);当CPU向转发模块下发假邻居软件表项时,根据接收报文的目的地址在前次邻居软件表项中进行匹配查找,如果找到,将前次邻居软件表项作为假邻居表项下发到转发模块;如果在前次邻居软件表项中没有找到,按照“黑洞”处理。以ARP为例:在转发模块中有两种硬件实现逻辑:第一种情况,ARP->MAC->出端口,即,ARP表项指向MAC地址表项,匹配ARP转发的报文最终需要根据ARP表项中对应MAC表项的出端口信息进行封装。第二种情况,ARP->MAC+出端口,即,ARP表项中有MAC地址和出端口信息,该出端口信息和MAC表项中对应的出端口信息一致。所以,前次邻居表项中只记录MAC地址就可以了。对于第一种情况,转发模块会根据MAC地址找到对应出端口,对于第二种情况,可以在设置ARP表项时查找对应的MAC地址找到出端口,设置到ARP表项中。
本文主要以ARP表项为例,对通过记忆的邻居表项来保障三层硬件转发快速切换的方法进行说明,对于ND等其他邻居表项的应用场景原理相同,不在赘述。
本发明提供了一种三层报文转发方法,应用于包括转发模块、处理模块的交换设备中,所述方法如图3所示,包括以下步骤:
步骤301,处理模块记录前次正常转发的邻居软件表项;
步骤302,转发模块接收用户设备发送的报文,如果所述转发模块中没有与所述报文目的地址匹配的邻居表项,向所述处理模块发送邻居表项请求报文;
步骤303,处理模块根据所述邻居表项请求报文中携带的报文目的地址查找匹配的前次邻居软件表项,如果找到,将所述前次邻居软件表项作为假邻居表项下发到所述转发模块,使所述转发模块按照所述前次邻居软件表项中的MAC地址对所述报文进行转发,如果没有找到,指令所述转发模块丢弃所述报文。
由于在实际网络中,存在两种情况:一、指定目的地址的ARP表项对应的MAC地址不发生变化;二、指定目的地址的ARP表项对应的MAC地址发生变化。
其中,第一种情况最常见,本发明主要针对这种情况进行优化。由于ARP表项的MAC地址不变,在需要向转发模块下发假ARP表项时,对应假ARP表项不再指向“黑洞”,而是将该假ARP表项设置为前次ARP软件表项的MAC地址,对于在前次ARP软件表项中没有找到的ARP表项,按照“黑洞”向转发模块下发假ARP表项。由于ARP表项对应的MAC地址没有发生变化,下发假ARP表项时,转发模块中ARP表项实际就已经是真ARP表项,对应流量在下发假ARP表项时可以正常转发,不必等到来自服务器的ARP回应报文收到后才能正常向转发模块下发真ARP表项。
对于第二种情况,当ARP表项的MAC地址发生变化时,下发假ARP表项和真实ARP表项不同,此时流量按照上次学到的MAC地址进行转发,流量可能发送到目的设备以外的设备,造成流量泄露。
然而,只要能够学习到真正的ARP表项,这种流量泄漏时间很短,不会影响到正常转发。因此,可以对转发模块中的每一个假ARP表项进行跟踪,一定时间后,如果这个假ARP表项没有被刷新为真ARP表项,就将该假ARP表项修改为“黑洞”。
对于一些需要避免流量泄漏的场景,在步骤303中将所述前次邻居软件表项作为假邻居表项下发到所述转发模块之前,需要检测所述报文目的地址在所述交换设备上对应的MAC地址是否变化,如果没有变化,则将所述前次邻居软件表项下发到所述转发模块,如果MAC地址发生变化,关闭所述将前次邻居软件表项下发到所述转发模块的功能。
其中,关闭上述功能的场景包括:
1,当报文泄漏会对其他设备造成影响,可以关闭向转发模块下发假ARP表项为上次转发的真ARP表项的机制,使得流量不会发送到其他设备。
2,当存在路由环路,造成流量无限循环的场景。跟踪按照前次ARP软件表项向转发模块下发的ARP表项,发送TTL等于2的对应目的IP三层探测报文,确定是否会收到TTL为1的同样源IP和目的IP的三层报文,如果是,确认存在路由环路,即两台直连网络设备学习到的路由表项互相指向对端,会造成流量循环,为了避免这种流量循环,需要将对应假ARP表项恢复为“黑洞”表项。
本发明为了保证ARP软件表项的实时性,还需要维护前次ARP软件表项信息,例如添加、修改和老化删除前次ARP软件表项信息。
其中,前次ARP软件表项信息添加、修改过程包括:
当交换设备添加(或者修改)正常转发的ARP表项时,查找前次ARP软件表项是否有对应记录,如果在前次ARP软件表项中没有找到对应记录,记录该正常转发的ARP表项中的IP、MAC地址到前次ARP软件表项中;如果在前次ARP软件表项中找到对应记录,更新该正常转发的ARP表项中的IP地址、MAC地址到前次ARP软件表项。无论是添加还是修改前次ARP软件表项,ARP软件表项为更新后状态,且没有作为假ARP表项下发到转发模块,因此,需要将对应前次ARP软件表项中的老化标记清除、老化定时计数器清零和清除下发假ARP表项标记。
当交换设备添加(或者修改)对应ARP表项为假ARP表项时,查找前次ARP软件表项是否有对应记录,如果在前次ARP软件表项中没有找到对应记录,向转发模块下发假ARP表项,使该报文指向“黑洞”,对应报文进入转发模块后直接丢弃;如果在前次ARP软件表项中找到对应记录,对应的假ARP表项按照前次ARP软件表项的MAC地址进行设置,同时设置前次ARP软件表项中对应表项的老化标记和下发假ARP表项标记。
其中,前次ARP软件表项信息老化删除过程包括:
当交换设备删除对应ARP表项时,查找前次ARP软件表项是否有对应记录,如果在前次ARP软件表项中找到对应记录,设置前次ARP软件表项中对应ARP表项的老化标记,老化定时计数器清零,清除下发假ARP表项标记。
交换设备初始化时,启动前次ARP软件表项老化定时器,定时将设置老化标记的表项按照一定周期进行删除;可以根据交换设备学到的ARP表项数目和交换设备所处位置决定周期的长短;定时器的时间可以设置的稍短,每次进行定时操作,都将设置老化标记的表项老化计数器加一,判断是否达到第一老化阈值Y1,如果达到Y1,将对应表项删除。
同时,考虑到前次ARP软件表项大小和交换设备内存、表项查找速度都有关联,在向这个ARP软件表项添加新的ARP表项时,判断前次ARP软件表项中表项数是否达到第二阈值Y2,如果达到Y2,启动提前老化,当老化定时计数器达到第三老化阈值Y3(Y3<Y1),对应表项将被删除。
增加定时器,对下发上次学到的ARP信息的假ARP表项进行跟踪,例如通过下发假ARP表项标记进行跟踪,确认上次下发的假ARP表项是否学到对应真ARP表项,如果在一定时间内没有学到真ARP表项,说明该目的地址对应的真ARP表项可能获取不到,为了避免流量泄漏到其他设备,需要将对应假ARP表项修改为指向“黑洞”。
为使得本发明的目的、技术方案及优点更加清楚明白,以下举两个较佳实施例对本发明的技术方案做进一步的详细说明。本发明的较佳实施例的介绍中,均以ARP为例对邻居表项的维护进行说明,
第一较佳实施例解决图1所述问题,主要包括以下步骤:
1,交换设备启动后,PC发送的三层报文目的地址对应ARP表项在转发模块中没有学到,转发模块向CPU发送ARP请求报文;
2,交换设备触发ARP表项学习过程,交换设备中的CPU向转发模块下发假ARP表项,由于此目的地址的假ARP表项为第一次下发,在前次ARP软件表项中没有找到与该目的地址匹配的ARP表项,向转发模块下发假ARP表项,使报文指向“黑洞”;
3,交换设备的CPU向服务器发送ARP请求报文;
4,服务器收到ARP请求报文后,向交换设备的CPU发送ARP回应报文,该回应报文中携带该目的地址对应的ARP表项;
5,交换设备的CPU收到ARP回应报文,触发修改ARP软件表项操作,修改ARP软件表项为真ARP表项的MAC地址信息;如果在前次ARP软件表项中没有找到对应记录,初始化对应前次ARP软件表项,记录对应ARP表项的IP、MAC地址到前次ARP软件表项中,将该ARP软件表项对应的下发假ARP表项标记清除、老化标记清除、老化定时计数器清零;
6,对应ARP出端口链路故障断掉,由于此ARP没有路由指向,CPU下发指令从转发模块删除对应的ARP表项,在前次ARP软件表项中找到对应记录,设置对应表项的老化标记,老化定时计数器清零,清除下发假ARP表项标记;
7,再次接收到来自PC的三层报文,该三层报文目的地址在转发模块ARP表项中没有找到,转发模块向CPU发送ARP请求报文;
8,交换设备CPU触发ARP学习过程,向转发模块下发假ARP表项,由于老化时间没到,此IP地址在前次ARP软件表项中找到,假ARP表项按照前次ARP软件表项中记录的MAC地址和该MAC地址对应的出端口信息下发,此时出端口断掉状态,报文丢弃;
9,设置前次ARP软件表项中对应表项下发假ARP表项标记;
10,当对应ARP出端口链路恢复,如果前次ARP软件表项和即将学到的ARP表项完全一致,MAC地址不变,此时转发报文已经恢复正常;
11,交换设备的CPU向服务器发送ARP请求报文;
12,服务器收到ARP请求报文后,向交换设备的CPU发送ARP回应报文,该回应报文中携带该目的地址对应的ARP表项;
13,交换设备的CPU收到ARP回应报文,CPU向转发模块下发修改ARP表项操作,将转发模块中的ARP表项修改为真ARP表项的MAC地址;在前次ARP软件表项中找到对应记录,修改对应表项的IP、MAC地址到前次ARP软件表项中,清除下发假ARP表项标记、老化标记清除、老化定时计数器清零。此时,对于前次ARP软件表项和最新学到的ARP表项不同的情况,由于转发模块中已更新了ARP表项,流量也恢复正常。
第二较佳实施例解决图2所述的问题,包括以下步骤:
1,在网络中转发到指定目的地址的路由有两个下一跳(两条路径),由于去往不同的路由路径长短不同,这两个下一跳不是等价的,所以形成的转发表项指向其中一个下一跳(称为主路径),另外一个下一跳作为备份(称为备份路径),当两个路径都可达时,路由指向主路径下一跳。
2,两个路径下一跳ARP表项都已经学到,在前次ARP软件表项中有对应ARP表项保存。
3,当主路径链路A出现问题断掉时,对应路由切换到备份路径链路B,链路A对应下一跳设置为假ARP表项。
4,此时从前次ARP软件表项中可以找到对应表项,此假ARP表项下发的为前次ARP表项中对应的MAC地址,所以转发模块中对应ARP表项的MAC地址没有改变,还是指向主路径。
5,路由切换下发转发模块和主路径下发假ARP表项到转发模块由CPU两个不同的任务并行处理,当出现先设置并下发主路径为假ARP表项,再设置并下发切换路由情况,可能存在流量瞬断。
6,主路径断掉有两种情况:一、主路径链路层断掉,此时流量断不可避免;二、主路径三层虚链路(VLAN虚接口)断掉,MAC地址都没变,此时流量在切换过程中还可以正常转发。
7,切换后,当主路径链路A恢复正常时,由于主路径下一跳开销最小,路由还会再切换回主路径下一跳。
8,此时有两个操作需要做,一个是主路径和对端设备交互ARP信息,下发真ARP表项到转发模块;另一个是和主路径对端设备交互路由,学到对应路由后,发现主路径开销最小,对应路由进行切换。
9,同上原因,ARP表项交互学习和路由交互学习是并行的两个任务处理,不能保证时序为先学习下发ARP表项到硬件再切换路由下一跳,通常由于ARP表项学习需要交互ARP报文的延时导致路由切换先于ARP表项下发硬件,此时主路径对应ARP表项没有真正学到,切换路由先下发,然后下发对应的假ARP表项,在前次ARP软件表项中可以找到对应的表项,按照这个表项下发MAC地址。因为ARP表项的MAC地址没有变化,下发假ARP表项和真ARP表项一样,所以在流量切换的过程中对应三层转发流量不会断流。
本发明中所述的具体实施方式,均能应用到IPV6中邻居发现表项的维护。
本发明还提供了一种交换装置,如图4所示,包括转发模块410、处理模块420和存储模块430。
存储模块430,用于存储前次邻居软件表项;若网络中到目的地址的路由存在两个下一跳,即一个为主路径,一个为备份路径,当两个路径下一跳邻居表项都已经学到时,在前次邻居软件表项中有对应邻居表项保存。
处理模块420,与存储模块410连接,用于记录维护存储模块430中的前次邻居软件表项,并根据转发模块410发送的邻居表项请求报文携带的目的地址查找匹配的前次邻居软件表项,如果找到,将前次邻居软件表项作为假邻居表项下发到转发模块410,如果没有找到,指令转发模块410丢弃报文;
转发模块410,与处理模块420连接,用于接收用户设备发送的报文,如果转发模块410中没有与报文目的地址匹配的邻居表项时,向处理模块420发送邻居表项请求报文,并接收处理模块420发送的假邻居表项,如果假邻居表项为前次邻居软件表项,则根据前次邻居软件表项中的MAC地址对报文进行转发,如果假邻居表项指向硬件黑洞,则丢弃报文。
其中,处理模块420,还用于检测报文目的地址在交换设备上对应的MAC地址是否变化,如果没有变化,则将前次邻居软件表项下发到转发模块410,如果MAC地址发生变化,关闭将前次邻居软件表项下发到转发模块410的功能。在实际网络中,存在两种情况:一、指定目的地址的邻居表项对应的MAC地址不发生变化;二、指定目的地址的邻居表项对应的MAC地址发生变化。对于第一种情况,由于邻居表项的MAC地址不变,在需要向转发模块下发假邻居表项时,对应假邻居表项不再指向“黑洞”,而是将该假邻居表项设置为前次邻居软件表项的MAC地址,对于在前次邻居软件表项中没有找到的邻居表项,按照“黑洞”向转发模块下发假邻居表项。由于邻居表项对应的MAC地址没有发生变化,下发假邻居表项时,转发模块中邻居表项实际就已经是真邻居表项,对应流量在下发假邻居表项时可以正常转发,不必等到来自服务器的邻居回应报文收到后才能正常向转发模块下发真邻居表项。对于第二种情况,对于第二种情况,当ARP表项的MAC地址发生变化时,下发假ARP表项和真实ARP表项不同,此时流量按照上次学到的MAC地址进行转发,流量可能发送到目的设备以外的设备,造成流量泄露。对于第二种情况,当ARP表项的MAC地址发生变化时,下发假邻居表项和真实邻居表项不同,此时流量按照上次学到的MAC地址进行转发,流量可能发送到目的设备以外的设备,造成流量泄露。
其中,处理模块420,还用于通过三层探测报文确定是否存在路由环路,如果不存在,则将前次邻居软件表项下发到转发模块410,如果存在,则指令转发模块410丢弃报文。当存在路由环路时,会造成流量无限循环。因此需要跟踪按照前次邻居软件表项向转发模块下发的邻居软件表项,发送TTL等于2的对应目的IP三层探测报文,确定是否会收到TTL为1的同样源IP和目的IP的三层报文,如果是,确认存在路由环路,即两台直连网络设备学习到的路由表项互相指向对端,会造成流量循环,为了避免这种流量循环,需要将对应假ARP表项恢复为“黑洞”表项。
其中,处理模块420,还用于对转发模块410中的每一个假邻居表项进行跟踪,如果预设时间内假邻居表项没有被刷新为真邻居表项,将假邻居表项修改为直接丢弃报文。当ARP表项的MAC地址发生变化时,下发假ARP表项和真实ARP表项不同,此时流量按照上次学到的MAC地址进行转发,流量可能发送到目的设备以外的设备,造成流量泄露。然而,只要能够学习到真正的ARP表项,这种流量泄漏时间很短,不会影响到正常转发。
当对前次邻居表项信息进行老化删除时,处理模块420还用于:
其中,处理模块420,还用于启动前次邻居软件表项老化定时器,定时将设置老化标记的邻居软件表项进行删除;或启动前次邻居软件表项老化定时器,每次进行定时操作,都将设置老化标记的邻居软件表项老化计数器加一,判断老化计数器是否达到第一老化阈值,如果达到第一老化阈值,将对应邻居软件表项删除。在该交换装置中,还包括邻居软件老化定时器,用于在计时周期后通知处理模块将设置老化标记的表项进行删除。该周期可以根据交换设备学到的邻居表项数目和交换设备所处位置来决定。另外,定时器的时间可以设置的稍短,每次进行定时操作,都将设置老化标记的表项老化计数器加一,判断是否达到第一老化阈值Y1,如果达到Y1,将对应表项删除。
其中,处理模块420,还用于判断前次邻居软件表项中的表项数是否达到阈值,如果达到阈值,提前老化邻居软件表项,具体为:当老化定时器达到第三老化阈值,删除设置老化标记的邻居软件表项,第三老化阈值小于第一老化阈值。由于前次ARP软件表项大小和交换设备内存、表项查找速度都有关联,在向这个ARP软件表项添加新的ARP表项时,判断前次ARP软件表项中表项数是否达到第二阈值Y2,如果达到Y2,启动提前老化。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (14)
1、一种三层报文转发方法,应用于包括转发模块、处理模块的交换设备中,其特征在于,所述方法包括以下步骤:
所述处理模块记录前次正常转发的邻居软件表项;
所述转发模块接收用户设备发送的报文,如果所述转发模块中没有与所述报文目的地址匹配的邻居表项,向所述处理模块发送邻居表项请求报文;
所述处理模块根据所述邻居表项请求报文中携带的报文目的地址查找匹配的前次邻居软件表项,如果找到,将所述前次邻居软件表项作为假邻居表项下发到所述转发模块,使所述转发模块按照所述前次邻居软件表项中的MAC地址对所述报文进行转发。
2、如权利要求1所述的方法,其特征在于,还包括:
如果根据所述邻居表项请求报文中携带的报文目的地址,没有查找到匹配的前次邻居软件表项,则指令所述转发模块丢弃所述报文。
3、如权利要求1所述的方法,其特征在于,将所述前次邻居软件表项作为假邻居表项下发到所述转发模块,之前还包括:
检测所述报文目的地址在所述交换设备上对应的MAC地址是否变化,如果没有变化,则将所述前次邻居软件表项下发到所述转发模块,如果MAC地址发生变化,关闭所述将前次邻居软件表项下发到所述转发模块的功能。
4、如权利要求1所述的方法,其特征在于,将所述前次邻居软件表项作为假邻居表项下发到所述转发模块,之前还包括:
通过三层探测报文确定是否存在路由环路,如果不存在,则将所述前次邻居软件表项下发到所述转发模块,如果存在,则指令所述转发模块丢弃所述报文。
5、如权利要求1所述的方法,其特征在于,将所述前次邻居软件表项作为假邻居表项下发到所述转发模块,之前还包括:
对所述转发模块中的每一个假邻居表项进行跟踪,如果预设时间内所述假邻居表项没有被刷新为真邻居表项,将所述假邻居表项修改为直接丢弃报文。
6、如权利要求1所述的方法,其特征在于,还包括:
对所述邻居软件表项进行维护,具体包括:
启动前次邻居软件表项老化定时器,定时将设置老化标记的邻居软件表项进行删除;或
启动前次邻居软件表项老化定时器,每次进行定时操作,都将设置老化标记的邻居软件表项老化计数器加一,判断所述老化计数器是否达到第一老化阈值,如果达到所述第一老化阈值,将对应邻居软件表项删除。
7、如权利要求6所述的方法,其特征在于,所述记录前次正常转发的邻居软件表项之前还包括:
判断前次邻居软件表项中的表项数是否达到阈值,如果达到所述阈值,提前老化邻居软件表项,具体为:当老化定时器达到第三老化阈值,删除所述设置老化标记的邻居软件表项,所述第三老化阈值小于所述第一老化阈值。
8、一种交换装置,包括转发模块、处理模块和存储模块,其特征在于,
所述存储模块,用于存储前次邻居软件表项;
所述处理模块,与所述存储模块连接,用于记录维护所述存储模块中的前次邻居软件表项,并根据所述转发模块发送的邻居表项请求报文携带的报文的目的地址查找匹配的前次邻居软件表项,如果找到,将所述前次邻居软件表项作为假邻居表项下发到所述转发模块;
所述转发模块,与所述处理模块连接,用于接收用户设备发送的报文,如果所述转发模块中没有与所述报文目的地址匹配的邻居表项时,向所述处理模块发送邻居表项请求报文,并接收所述处理模块发送的假邻居表项,如果所述假邻居表项为前次邻居软件表项,则根据所述前次邻居软件表项中的MAC地址对所述报文进行转发,如果假邻居表项指向硬件黑洞,则丢弃所述报文。
9、如权利要求8所述的交换装置,其特征在于,
所述处理模块,还用于当根据所述邻居表项请求报文中携带的报文目的地址,没有查找到匹配的前次邻居软件表项时,指令所述转发模块丢弃所述报文。
10、如权利要求8所述的交换装置,其特征在于,
所述处理模块,还用于检测所述报文目的地址在所述交换设备上对应的MAC地址是否变化,如果没有变化,则将所述前次邻居软件表项下发到所述转发模块,如果MAC地址发生变化,关闭所述将前次邻居软件表项下发到所述转发模块的功能。
11、如权利要求8所述的交换装置,其特征在于,
所述处理模块,还用于通过三层探测报文确定是否存在路由环路,如果不存在,则将所述前次邻居软件表项下发到所述转发模块,如果存在,则指令所述转发模块丢弃所述报文。
12、如权利要求8所述的交换装置,其特征在于,
所述处理模块,还用于对所述转发模块中的每一个假邻居表项进行跟踪,如果预设时间内所述假邻居表项没有被刷新为真邻居表项,将所述假邻居表项修改为直接丢弃报文。
13、如权利要求8所述的交换装置,其特征在于,
所述处理模块,还用于启动前次邻居软件表项老化定时器,定时将设置老化标记的邻居软件表项进行删除;或启动前次邻居软件表项老化定时器,每次进行定时操作,都将设置老化标记的邻居软件表项老化计数器加一,判断所述老化计数器是否达到第一老化阈值,如果达到所述第一老化阈值,将对应邻居软件表项删除。
14、如权利要求13所述的交换装置,其特征在于,
所述处理模块,还用于判断前次邻居软件表项中的表项数是否达到阈值,如果达到所述阈值,提前老化邻居软件表项,具体为:当老化定时器达到第三老化阈值,删除所述设置老化标记的邻居软件表项,所述第三老化阈值小于所述第一老化阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101361595A CN101540731B (zh) | 2009-04-30 | 2009-04-30 | 一种三层报文转发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101361595A CN101540731B (zh) | 2009-04-30 | 2009-04-30 | 一种三层报文转发方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101540731A true CN101540731A (zh) | 2009-09-23 |
CN101540731B CN101540731B (zh) | 2011-06-08 |
Family
ID=41123726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101361595A Active CN101540731B (zh) | 2009-04-30 | 2009-04-30 | 一种三层报文转发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101540731B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103401782A (zh) * | 2013-07-24 | 2013-11-20 | 杭州华三通信技术有限公司 | 一种mac地址同步方法及设备 |
CN104052673A (zh) * | 2014-06-26 | 2014-09-17 | 华为技术有限公司 | 一种广播抑制方法及装置 |
CN104333520A (zh) * | 2014-11-28 | 2015-02-04 | 上海斐讯数据通信技术有限公司 | 一种交换机mac地址表双老化时间控制方法 |
WO2016019763A1 (zh) * | 2014-08-05 | 2016-02-11 | 中兴通讯股份有限公司 | 一种地址解析协议表的扩展方法和装置、存储介质 |
CN105591923A (zh) * | 2015-10-28 | 2016-05-18 | 杭州华三通信技术有限公司 | 一种转发表项的存储方法和装置 |
CN105743779A (zh) * | 2016-02-19 | 2016-07-06 | 杭州华三通信技术有限公司 | 一种路由恢复的方法和装置 |
CN104796501B (zh) * | 2015-04-25 | 2018-07-03 | 安徽皖通邮电股份有限公司 | 一种is-is协议触发arp学习的方法 |
CN114157602A (zh) * | 2021-11-03 | 2022-03-08 | 杭州迪普科技股份有限公司 | 一种处理报文的方法和装置 |
CN116094998A (zh) * | 2022-12-29 | 2023-05-09 | 天翼云科技有限公司 | 一种基于ovs的邻居表项的vxlan报文的转发方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1181653C (zh) * | 2002-05-23 | 2004-12-22 | 华为技术有限公司 | 一种网络交换设备有效获得回应报文的方法 |
US7356032B1 (en) * | 2002-11-01 | 2008-04-08 | Bbn Technologies Corp. | System and method for reducing broadcast traffic wireless access-point networks |
CN100452772C (zh) * | 2006-05-31 | 2009-01-14 | 杭州华三通信技术有限公司 | 三层转发方法、装置及地址解析协议信息表更新方法 |
-
2009
- 2009-04-30 CN CN2009101361595A patent/CN101540731B/zh active Active
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103401782B (zh) * | 2013-07-24 | 2017-04-05 | 杭州华三通信技术有限公司 | 一种mac地址同步方法及设备 |
CN103401782A (zh) * | 2013-07-24 | 2013-11-20 | 杭州华三通信技术有限公司 | 一种mac地址同步方法及设备 |
CN104052673A (zh) * | 2014-06-26 | 2014-09-17 | 华为技术有限公司 | 一种广播抑制方法及装置 |
CN104052673B (zh) * | 2014-06-26 | 2018-03-06 | 华为技术有限公司 | 一种广播抑制方法及装置 |
WO2016019763A1 (zh) * | 2014-08-05 | 2016-02-11 | 中兴通讯股份有限公司 | 一种地址解析协议表的扩展方法和装置、存储介质 |
CN104333520A (zh) * | 2014-11-28 | 2015-02-04 | 上海斐讯数据通信技术有限公司 | 一种交换机mac地址表双老化时间控制方法 |
CN104796501B (zh) * | 2015-04-25 | 2018-07-03 | 安徽皖通邮电股份有限公司 | 一种is-is协议触发arp学习的方法 |
CN105591923A (zh) * | 2015-10-28 | 2016-05-18 | 杭州华三通信技术有限公司 | 一种转发表项的存储方法和装置 |
CN105591923B (zh) * | 2015-10-28 | 2018-11-27 | 新华三技术有限公司 | 一种转发表项的存储方法和装置 |
CN105743779A (zh) * | 2016-02-19 | 2016-07-06 | 杭州华三通信技术有限公司 | 一种路由恢复的方法和装置 |
CN114157602A (zh) * | 2021-11-03 | 2022-03-08 | 杭州迪普科技股份有限公司 | 一种处理报文的方法和装置 |
CN114157602B (zh) * | 2021-11-03 | 2023-08-25 | 杭州迪普科技股份有限公司 | 一种处理报文的方法和装置 |
CN116094998A (zh) * | 2022-12-29 | 2023-05-09 | 天翼云科技有限公司 | 一种基于ovs的邻居表项的vxlan报文的转发方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101540731B (zh) | 2011-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101540731B (zh) | 一种三层报文转发方法及装置 | |
US9871781B2 (en) | Systems and methods for path maximum transmission unit discovery | |
CN104145457A (zh) | 操作包含影子表的转发元件的方法以及相关的转发元件 | |
US8732270B2 (en) | Controlling communication among multiple industrial control systems | |
RU2523917C2 (ru) | Система управления связью и способ управления связью | |
US9548933B2 (en) | Network system, switch, and methods of network configuration | |
CN102957600A (zh) | 一种数据报文转发方法及装置 | |
CN100452772C (zh) | 三层转发方法、装置及地址解析协议信息表更新方法 | |
CN102859952A (zh) | 交换机和流表控制方法 | |
KR101758207B1 (ko) | 서비스 기능 체이닝을 이용하는 네트워크 패킷 처리 장치 및 이의 제어 방법 | |
CN104954271A (zh) | Sdn网络中的数据包处理方法和装置 | |
CN103229478A (zh) | 一种确定虚拟机漂移的方法和装置 | |
CN102902654B (zh) | 异构平台间数据联动方法及装置 | |
JP2019523608A (ja) | パケット監視 | |
JP2016092763A (ja) | ネットワーク制御システム、ネットワーク制御方法及びプログラム | |
US20100128726A1 (en) | Data transmitter and data transmission method | |
CN101808010A (zh) | 一种设备管理方法、装置和主控板 | |
CN101741745A (zh) | 识别对等网络应用流量的方法及其系统 | |
CN101582857B (zh) | 一种基于弹性分组环的数据上环转发方法及装置 | |
CN107682257A (zh) | 数据传输方法和系统 | |
CN105939288A (zh) | 会话控制方法及装置 | |
CN103200092A (zh) | 一种基于虚拟网络设备的路由进程管理方法和设备 | |
CN104917800A (zh) | 建立用于虚拟机的冗余连接的方法及装置 | |
CN101635639B (zh) | 一种网络连接跟踪方法及其系统 | |
CN102655476A (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. |