一种处理报文的方法和交换设备与流程

文档序号:24346021发布日期:2021-03-19 12:29阅读:83来源:国知局
一种处理报文的方法和交换设备与流程
本发明涉及数据通信领域,尤其是一种处理报文的方法和交换设备。
背景技术
:随着网络业务的快速发展,核心层、汇聚层、接入层部署越来越多的设备,当网络中出现故障时,希望能提供一种完全能模拟业务报文在转发面的转发行为以便定位故障。如图1所示,leaf、spine、borderleaf组成三层架构(一种叶脊拓扑网络结构)。leaf(叶子)、spine(脊柱)、borderleaf(边界叶)间使用三层聚合ap(aggregateport)口连接,实现流量负载分担。假设现运维人员需要探测虚拟机vm1到虚拟机vm4的路径,探测路径有两条:1、vm1->leaf1->spine1->leaf3->vm4。2、vm1->leaf1->spine2->leaf4->vm4。图中拓扑相对较简单,当随着网络需求的增加,拓扑会不断扩大,也会引入ecmp(equal-costmultipathrouting等价路由)场景等部署要求,那对于vm主机间的转发路径也会随之增多,当vm主机间出现故障时,如何精准快速探测真实的转发路径是很有必要的一个需求。针对图1中的场景,交换机提供了路径可视化,能够让运维人员能够清楚地了解到网络中特定流量的转发路径或两台网络设备之间的路径、源端到目的端的路由是否可达,可以极大的方便运维人员进行故障定位,包括以下步骤:步骤一、sdn控制器(如图1中标记为rg-onc的设备)根据用户配置信息构造路径探测报文,指定的源ip地址为vm1,目的ip地址是vm4。步骤二、sdn控制器通过packet-out将路径探测报文发送到leaf1。步骤三、leaf1收到packet-out消息后,根据路径探测报文中的探测标识,识别出路径探测报文,leaf1根据软件选择的出口信息转发spine1。同时由cpu软件拷贝一份作为应答报文packetin给sdn控制器;步骤四、spine1收到报文后上送一份报文给sdn控制器,同时转发一份到leaf3。步骤五、leaf3收到报文后上送一份报文给sdn控制器,同时转发一份到vm4。以上leaf1、spine1、leaf3上送一份报文packetin给sdn控制器时,都会携带报文的源口、目的口、vid信息,sdn控制器根据这些信息就能完整的计算出探测路径。当某个设备(比如spine1)在sdn控制器设定的探测时间内没有应答packetin报文时,就能精准定位到是在spine1出现故障,确定异常设备后,再由设备厂商技术人员继续定位。其中,openflow协议支持packetin,packet-out消息。packet-out消息的功能是:将控制器的相关数据发送到openflow交换机。packetin消息的功能是:将到达openflow交换机的数据包发送到sdn控制器。为了方便后续方案的描述,可以将图中探测路径所涉及到的设备再进行归类:首跳设备:leaf1;中间跳设备:spine1、spine2;尾跳设备:leaf3、leaf4;如图1所示,leaf1与spine间是通过ap口互联,如果ap口有多个成员口,则会对应有多条的转发路径。如图1,vm1和vm4有两条探测路径,首跳报文的转发当前是由cpu软件根据报文目的ip获取出口信息进行发包转发。而中间跳和尾跳的转发则是由交换机芯片根据ap的hash算法进行芯片均衡转发。芯片的ap的hash均衡算法有多种,且每一种的hash因子不仅仅限于目的ip地址。最基本算法模板有包含如下,如表1所示:算法1(以太网报文)算法2(ip报文)报文的源mac报文源ip报文的目的mac报文源目的ip报文的源口报文l4源端口号报文以太网类型报文l4目的端口号报文协议报文源面板口表1均衡算法的模板则取决于用户配置,然后由芯片自行hash均衡。对于首跳设备,报文需要从本设备发往中间跳设备,软件无法感知芯片的hash算法原理以及区分不同报文而进行不同算法选择,仅仅根据目的ip计算的出口则存在不可信问题。比如vm1到vm4报文的转发路径是vm1->leaf1->spine2->leaf4->vm4,而探测路径可能是vm1->leaf1->spine1->leaf3->vm4,因此首跳设备的探测存在一定的失真。以上是分析ap场景,对于ecmp场景更是如此,路径越多,环境越复杂,首跳设备探测失真的可能性越大。技术实现要素:为了解决上述技术问题,本发明的实施例采用如下技术方案:一种处理报文的方法,应用于交换设备中,包括:交换芯片接收所述交换设备中的cpu发送的报文,所述报文包含第一封装报文头和第二封装报文头,所述第一封装报文头至少包含回环口端口号,所述第二封装报文头至少包含源端口端口号以及源端口的处理动作指示信息;所述交换芯片根据所述第一封装报文头中的回环口端口号,将不包含所述第一封装报文头的所述报文发送给回环口;回环口根据所述第二封装报文头中的源端口端口号发送到所述源端口,并指示所述源端口根据所述源端口的处理动作指示信息处理所述不包含所述第一封装报文头和第二封装报文头的报文。可选的,所述交换设备为网络中的第一跳设备,所述报文为探测报文,所述源端口的处理动作指示信息为指示源端口按照预设的转发报文的输入输出流水线转发所述探测报文。可选的,所述方法还包括:所述交换芯片向所述cpu发送packetin应答报文。可选的,源端口的处理动作指示信息为以下任意一种:指示报文从源端口进入后的输入流水线是否需要地址学习、指示报文从源端口进入后的输入流水线是否需要进行域处理fp规则匹配、指示报文从源端口进入后的输入流水线是否到报文缓存管理单元缓存丢弃报文、指示报文从源端口进入后的输入流水线是否到报文输出流水线丢弃报文。可选的,所述交换芯片根据所述第一封装报文头中的回环口端口号,将不包含所述第一封装报文头的所述报文发送给回环口的步骤具体包括:所述交换芯片根据所述第一封装报文头中的回环口端口号,通过报文缓存管理单元将不包含所述第一封装报文头的所述报文发送给回环口。本发明的另一方面在于,提供一种处理报文的交换设备,包括:交换芯片,用于接收所述交换设备中的cpu发送的报文,所述报文包含第一封装报文头和第二封装报文头,所述第一封装报文头至少包含回环口端口号,所述第二封装报文头至少包含源端口端口号以及源端口的处理动作指示信息;所述交换芯片,还用于根据所述第一封装报文头中的回环口端口号,将不包含所述第一封装报文头的所述报文发送给回环口;所述回环口,用于根据所述第二封装报文头中的源端口端口号发送到所述源端口,并指示所述源端口根据所述源端口的处理动作指示信息处理所述不包含所述第一封装报文头和第二封装报文头的报文。可选的,所述交换设备为网络中的第一跳设备,所述报文为探测报文,所述源端口的处理动作指示信息为指示源端口按照预设的转发报文的输入输出流水线转发所述探测报文。可选的,所述交换芯片,还用于向所述cpu发送packetin应答报文。可选的,源端口的处理动作指示信息为以下任意一种:指示报文从源端口进入后的输入流水线是否需要地址学习、指示报文从源端口进入后的输入流水线是否需要进行域处理fp规则匹配、指示报文从源端口进入后的输入流水线是否到报文缓存管理单元缓存丢弃报文、指示报文从源端口进入后的输入流水线是否到报文输出流水线丢弃报文。可选的,所述交换芯片还具体用于:所述交换芯片根据所述第一封装报文头中的回环口端口号,通过报文缓存管理单元将不包含所述第一封装报文头的所述报文发送给回环口。本发明实施例的有益效果在于,通过交换芯片接收所述交换设备中的cpu发送的报文,所述报文包含第一封装报文头和第二封装报文头,所述第一封装报文头至少包含回环口端口号,所述第二封装报文头至少包含源端口端口号以及源端口的处理动作指示信息;所述交换芯片根据所述第一封装报文头中的回环口端口号,将不包含所述第一封装报文头的所述报文发送给回环口;回环口根据所述第二封装报文头中的源端口端口号发送到所述源端口,并指示所述源端口根据所述源端口的处理动作指示信息处理所述不包含所述第一封装报文头和第二封装报文头的报文。解决了首跳设备探测失真的问题,并且减少cpu需要拷贝处理报文的逻辑,大大降低探测功能对cpu本身的开销。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为现有技术的系统结构示意图;图2为本发明一实施例提供的方法流程图;图3为本发明一实施例提供的装置结构图;图4为本发明一实施例提供的报文流转示意图;图5为本发明一实施例提供的报文流转示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供一种处理报文的方法,应用于交换设备中,如图2所示,包括以下步骤:s101,交换芯片接收所述交换设备中的cpu发送的报文,所述报文包含第一封装报文头和第二封装报文头,所述第一封装报文头至少包含回环口端口号,所述第二封装报文头至少包含源端口端口号以及源端口的处理动作指示信息;s103,所述交换芯片根据所述第一封装报文头中的回环口端口号,将不包含所述第一封装报文头的所述报文发送给回环口;s105,回环口根据所述第二封装报文头中的源端口端口号发送到所述源端口,并指示所述源端口根据所述源端口的处理动作指示信息处理所述不包含所述第一封装报文头和第二封装报文头的报文。可选的,所述交换设备为网络中的第一跳设备,所述报文为探测报文,所述源端口的处理动作指示信息为指示源端口按照预设的转发报文的输入输出流水线转发所述探测报文。可选的,所述方法还包括:所述交换芯片向所述cpu发送packetin应答报文。可选的,源端口的处理动作指示信息为以下任意一种:指示报文从源端口进入后的输入流水线是否需要地址学习、指示报文从源端口进入后的输入流水线是否需要进行域处理fp规则匹配、指示报文从源端口进入后的输入流水线是否到报文缓存管理单元缓存丢弃报文、指示报文从源端口进入后的输入流水线是否到报文输出流水线丢弃报文。可选的,所述交换芯片根据所述第一封装报文头中的回环口端口号,将不包含所述第一封装报文头的所述报文发送给回环口的步骤具体包括:所述交换芯片根据所述第一封装报文头中的回环口端口号,通过报文缓存管理单元将不包含所述第一封装报文头的所述报文发送给回环口。本发明实施例的有益效果在于,通过交换芯片接收所述交换设备中的cpu发送的报文,所述报文包含第一封装报文头和第二封装报文头,所述第一封装报文头至少包含回环口端口号,所述第二封装报文头至少包含源端口端口号以及源端口的处理动作指示信息;所述交换芯片根据所述第一封装报文头中的回环口端口号,将不包含所述第一封装报文头的所述报文发送给回环口;回环口根据所述第二封装报文头中的源端口端口号发送到所述源端口,并指示所述源端口根据所述源端口的处理动作指示信息处理所述不包含所述第一封装报文头和第二封装报文头的报文。解决了首跳设备探测失真的问题,并且减少cpu需要拷贝处理报文的逻辑,大大降低探测功能对cpu本身的开销。本发明的另一方面在于,提供一种处理报文的交换设备,如图3所示,包括:交换芯片301,用于接收所述交换设备中的cpu发送的报文,所述报文包含第一封装报文头和第二封装报文头,所述第一封装报文头至少包含回环口端口号,所述第二封装报文头至少包含源端口端口号以及源端口的处理动作指示信息;所述交换芯片301,还用于根据所述第一封装报文头中的回环口端口号,将不包含所述第一封装报文头的所述报文发送给回环口;所述回环口303,用于根据所述第二封装报文头中的源端口端口号发送到所述源端口,并指示所述源端口根据所述源端口的处理动作指示信息处理所述不包含所述第一封装报文头和第二封装报文头的报文。可选的,所述交换设备为网络中的第一跳设备,所述报文为探测报文,所述源端口的处理动作指示信息为指示源端口按照预设的转发报文的输入输出流水线转发所述探测报文。可选的,所述交换芯片,还用于向所述cpu发送packetin应答报文。可选的,源端口的处理动作指示信息为以下任意一种:指示报文从源端口进入后的输入流水线是否需要地址学习、指示报文从源端口进入后的输入流水线是否需要进行域处理fp规则匹配、指示报文从源端口进入后的输入流水线是否到报文缓存管理单元缓存丢弃报文、指示报文从源端口进入后的输入流水线是否到报文输出流水线丢弃报文。可选的,所述交换芯片还具体用于:所述交换芯片根据所述第一封装报文头中的回环口端口号,通过报文缓存管理单元将不包含所述第一封装报文头的所述报文发送给回环口。本发明实施例的有益效果在于,通过交换芯片接收所述交换设备中的cpu发送的报文,所述报文包含第一封装报文头和第二封装报文头,所述第一封装报文头至少包含回环口端口号,所述第二封装报文头至少包含源端口端口号以及源端口的处理动作指示信息;所述交换芯片根据所述第一封装报文头中的回环口端口号,将不包含所述第一封装报文头的所述报文发送给回环口;回环口根据所述第二封装报文头中的源端口端口号发送到所述源端口,并指示所述源端口根据所述源端口的处理动作指示信息处理所述不包含所述第一封装报文头和第二封装报文头的报文。解决了首跳设备探测失真的问题,并且减少cpu需要拷贝处理报文的逻辑,大大降低探测功能对cpu本身的开销。下面结合具体应用场景,对本发明实施例进行进一步阐述,如图4所示,包含以下内容:cpu:首跳设备软件cpu发送探测报文;ip:ingresspipeline,交换芯片的输入流水线;ep:egresspipeline,交换芯片的输出流水线;mmu:memorymanagememtunit,报文缓存管理单元。包括以下步骤:步骤一、cpu软件发送探测报文,软件需要将探测报文封装成2个头部,即sobmhheader、loopbackheader;头部信息可以按照表格2和表格3进行封装。其中,sobmhheader:(streamofbytesmoduleheader),流模式头部,有16字节,这里只需关注跟本实施例相关的字段,如表2所示:表2其中,loopbackheader有20字节,同样对于本实施例,只关注与本实施例相关的字段,如表3所示:表3步骤二、cpu将以上封装好的报文输入交换芯片的ip(输入流水线),报文根据sobmh头部的local_dest_port信息(回环口信息)发到回环口;步骤三、在回环口收到报文前将sobmh头部解封装;步骤四、回环口收到的报文只剩下回环头部+报文,然后解析回环头部中的pp_port、source字段,将报文发送到回环口指定的源口,pkt_profile则是决定报文从源口进来的输入流水线逻辑,本实施例设置为2,说明从源口进来的报文需要按照正常报文的输入输出流水线转发。在其他实施例中,源端口的处理动作指示信息pkt_profile可以为以下任意一种:指示报文从源端口进入后的输入流水线是否需要地址学习、指示报文从源端口进入后的输入流水线是否需要进行域处理fp规则匹配、指示报文从源端口进入后的输入流水线是否到报文缓存管理单元缓存丢弃报文、指示报文从源端口进入后的输入流水线是否到报文输出流水线丢弃报文。步骤五、经过以上步骤,就能将探测报文引到源口,探测报文便能像业务报文走芯片流水线(ip和ep)转发,如图5所示从源口到目的口的箭头,从而解决了首跳报文探测路径可能存在失真的问题。步骤六、同时,如图5所示mmu到cpu的箭头,报文能够走芯片流水线后,便能够上送一份报文到首跳设备cpu作为packetin报文应答,这个由原本的软件行为经过本实施例改良后,变为硬件行为,当探测报文发送量较多时,这也大大减少了对cpu的开销。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1