一种SDN网络中分片报文乱序的处理方法及应用
技术领域
本发明涉及网络通信技术,尤其涉及云计算中一种解决SDN网络中分片报文发送中乱序的处理方法。
背景技术
SDN是软件定义网络(Software Defined Network)的英文缩写,是美国斯坦福大学clean slate研究组提出的一种新型网络创新架构,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。
SDN网络中,其网络元素主要包括:控制器(Controller)和OF交换机(OpenFlow Switch)。前者负责收集SDN网络的拓扑信息、OF交换机的能力和属性;然后结合网络控制策略为OF交换机计算并下发转发路径(即流表)。后者根据流表,实现报文的接收与转发;如果遇到流表无法匹配的报文,通常会上送Controller处理。
目前,OpenFlow规范为流表提供的匹配字段主要包括:入端口、源/目的MAC地址、源/目的IP(IPv4和IPv6)、源/目的TCP/UDP(Transmission Control Protocol/User Datagram Protocol,传输控制协议/用户数据报协议)端口号和MPLS(Multi-Protocol Label Switching,多协议标签交换)标签等。其中TCP/UDP端口号主要用于标识网络中四层及其四层以上的会话(比如FTP(File Transfer Protocol,文件传输协议)会话)。会话中的报文通常以流的方式传送——即这些报文在传输过程中,需要尽量保持原有的顺序,对于时间敏感的会话(比如语音流、视频流等)更是如此。
受OF交换机规格和性能的影响,不同交互机的端口可能具有不同的端口类型和MTU(Maximum Transmission Unit,最大传输单元);因此,报文在从源主机向目的主机传递中,经过MTU小的交互机端口时,难免会被分片。根据IP报文分片规则,对于包含四层报文头(即TCP或UDP头)的IP报文,经过分片后,只有第一个分片报文是带有四层信息的,后续报文均不带四层信息,也就无法结合TCP/UPD端口号确定分片报文所属的会话(或称为数据流)了。
根据配置和能力不同,在遇到分片报文是,OF交互机采用的处理方式主要包括:1)丢弃,如果OF交互机不支持分片报文,通常会采用这种处理方式;2)重组后转发,如果OF交互机支持分报文的重组,通常会等到同一报文中的分片都到达后,重组成完整的报文,然后再转发;3)上送Controller处理。
丢弃分片报文会引起会话终端;上送Controller不但会增加Controller的消息处理负担,还会导致报文乱序(比如第二个报文的第一分片会被OF交换机先发送到目的主机,第一个报文的第二或第三分片才会被controller处理,并发送到目的主机),报文乱序在一定程度上会影响会话质量甚至导致会话中断。而重组后转发,首先需要等待一个报文的全部分片到达后才能重组成一个完整的报文,然后才能查询流表确定转发端口,在从转发端口发送前还需要重新进行分片,这不但会增加报文传送延至时间,重组后再次分片的转发的方式也增加了系统开销。
针对OF规范中对分片报文处理的不足,本发明提出了一种SDN网络中,分片报文的处理方法,可以避免流标识丢失引起的报文乱序、重传甚至会话中断。
发明内容
所要解决的技术问题:针对同一个流中分片报文与其他报文沿着不同的转发路径转发引起的报文乱序、重传甚至会话终端问题本发明提供了一种SDN网络中分片报文乱序的处理方法及应用。
技术方案:为了解决以上问题本发明提供了一种SDN网络中分片报文乱序的处理方法,其特征在于,包括以下内容:
①下发转发路径的PMTU“Path MTU,路径MTU”和分片规则,包括:
根据从其控制的OF交换机收集到的拓扑信息和端口属性,Controller为每条流所经过的转发路径计算PMTU“Path MTU,路径MTU”;其中PMTU等于该流所经过的SDN转发路径上各个OF交换机端口的最小值;Controller将该PMTU作为该流对应的流表的一个属性下发到转发路径的OF交换机上,并控制OF交换机在沿着该路径转发报文时,如果进行报文分片,则分片大小不能超过该PMTU;
②该进入SDN网络的流中的报文添加流id,包括:
对于含有TCP/UDP端口号的报文,当这些报文进入SDN网络时,Controller通过流表控制入口处的OF交换机,为属于同一个流的报文,在IP报文头中添加流id,用来标识该报文所述的流;Controller向该流的转发路径上的后续OF交换机下发的流表中,含有该流的流id;后续OF交换机借助该id,确定报文所述的流和查询转发路径;
③对于SDN网络内部遇到的分片报文,确定其所属的流,并按照流转发分片报文,包括:
1)对于含有TCP/UDP端口号的报文,具有相同源/目的IP地址对和TCP/UDP端口号的报文, 定义为属于同一个流;
2)对于不含TCP/UDP端口号的分片报文,源目的IP地址相同与前面含有TCP/UDP端口号相同,并且报文头中标识“Identification”与包含TCP/UDP端口号的报文相同,这些分片也属于前面报文所述的流。
OF交换机根据上述方法对不含流标识的IPv4分片报文的处理应用,其特征在于:包括以下步骤:
步骤1:接收IPv4报文,解析源/目的IP、标识“Identification”、标志“Flags”和片偏移“Fragment Offset”字段;如果Flags中的分片标识为0且Offset为零,则表示接收到的报文不是分片报文,继续步骤2;否则,转至步骤4;
步骤2:解析报文头中的Protocol字段,对于TCP/UDP报文,从TCP/UDP报文头中获取源/目的Port号;结合步骤1中的源/目的IP,确定报文所述的流;把具有相同源/目的IP和源/目的Port号的报文归属于同一个流;
步骤3:记录该报文的标识“Identification”信息,将该报文的流归属信息、报文的标识“Identification”传送到到分片报文处理模块,并用该标识更新的分片报文流归类表”中对应条目的标识信息;在该归类表中的条目通常包括:目的/源IP、和标识信息,转至步骤5;
步骤4:解析报文头获取标识“Identification”字段,结合步骤1中获取的源/目的IP信息,查询分片报文处理模块的“分片报文流归类表”,获取该分片报文所述的流对应的条目,并返回该条目中保存的源/目的Port号;
步骤5:获取转发路径,根据源/目的IP和源/目的Port号,查询流表,获取该流的转发路径,根据转发路径转发该报文。
入口OF交换机根据上述方法对含流标识的IPv4报文的处理应用,其特征在于:包括以下步骤:
步骤1:下发流表到OF交换机,Controller为经过入口交换机A的流f计算转发路径DPath,以及该路径的PMTU;将该DPath及其PMTU下发该路径上经过的所有OF交互机;
步骤2:入口交换机A接收IPv4报文,解析报文的IPv4报文头,确定报文所述的流;
步骤3:为该报文所述的流确定转发路径,根据报文所属的流信息,查询流表,获取该报文所需的转发路径及其该路径的PMTU;
步骤4:报文长度判断,比较接收到的报文的长度和步骤3中获得的PMTU,如果报文长度大于PMTU,则进行分片;
步骤5:在报文“包括分片报文”的IP报文头的IP选项字段中添加流标识flow id,然后按照步骤3中确定的转发路径转发该报文;
步骤6:后续OF交换机收到IPv4报文后,从报文头中获取源/目的IP和选项字段中的flow id,根据上述信息确定报文所述的流,然后查询流表获取转发路径;
步骤7:转发携带flow id的报文,OF交换机根据步骤6中选定的路径继续转发该IP报文;
步骤8:移除IP选项字段中的flow id,携带flow id的Pv4报文或其分片达到SDN网络出口后,OF交换机移除扩展字段中的flow id,将处理后的报文转发出SDN网络。
入口OF交换机根据上述方法对含扩展报文头的IPv4报文的处理应用,其特征在于:包括以下步骤:
步骤1:下发流表到OF交换机,Controller为经过入口交换机A的流f计算转发路径DPath,以及该路径的PMTU;将该DPath及其PMTU下发该路径上经过的所有OF交互机;
步骤2:交换机A接收IPv4报文,解析报文的IPv4报文头,确定报文所述的流;
步骤3:为该报文所述的流确定转发路径,根据报文所属的流信息,查询流表,获取该报文所需的转发路径及其该路径的PMTU;
步骤4:报文长度判断,比较接收到的报文的长度和步骤3中获得的PMTU,如果报文长度大于PMTU,则进行分片;分片后,分片报文添加步骤5所述的新报文头后,分片长度不会大于PMTU;
步骤5:为报文包括分片报文添加新的报文头,其中报文头中携带标识该报文所述的流的流标识,然后按照步骤3中确定的转发路径转发该报文;
步骤6:后续OF交换机收到IPv4报文后,从报文头中获取源/目的IP和扩展头中的流标识,根据上述信息确定报文所述的流,然后查询流表获取转发路径;
步骤7:继续转发携带flow id的报文,OF交换机根据步骤6中选定的路径继续转发该IP报文;
步骤8:移除扩展报文头,携带扩展报文头的IPv4报文或其分片达到SDN网络出口后,OF交换机移除扩展报文头,将处理后的报文转发出SDN网络。
有益效果:与现有技术相比较,本发明针对SDN网络中,OF交换机目前基于流表进行转发的过程中,无法有效的确定分片报文所归属的流,并基于流来转发分片报文的问题,提出了解决方案。与现有的OF交互机对分片报文的处理相比,在本发明中,通过向入口OF交换机下发转发路径的PMTU信息,将大报文在入口处事先分片,并为归属于同一个流的报文添加流标识,提高报文在整个SDN网络的转发效率。其次,对于分片报文,通过确定其归属的流,对其进行按流转发,避免了重组后转发带来的转发延迟和转发效率降低。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性附图及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1 不含流标识的IPv4分片报文的处理流程图;
图2 含流标识的IPv4报文处理流程图;
图3含扩展报文头的IPv4报文处理流程图。
具体实施方式
下面以IPv4报文为例,结合Controller获取和下发PMTU,阐述OF交换机对归属于流的报文的处理加以描述。
下面结合图1,描述一下OF交换机对IPv4报文的转发处理流程。
步骤1:接收IPv4报文,解析源/目的IP、标识(Identification)、标志(Flags)和片偏移(Fragment Offset)等字段。如果Flags中的分片标识为0且Offset为零,则表示接收到的报文不是分片报文,继续步骤2;否则,转至步骤4;
步骤2:解析报文头中的Protocol字段,对于TCP/UDP报文,从TCP/UDP报文头中获取源/目的Port号。结合步骤1中的源/目的IP,确定报文所述的流。本发明中,把具有相同源/目的IP和源/目的Port号的报文归属于同一个流。
步骤3:记录该报文的标识(Identification)信息,将该报文的流归属信息、报文的标识(Identification)传送到到分片报文处理模块,并用该标识更新的分片报文流归类表中对应条目的标识信息。在该归类表中的条目通常包括:目的/源IP、和标识等信息。转至步骤5。
步骤4:解析报文头获取标识(Identification)字段,结合步骤1中获取的源/目的IP信息,查询分片报文处理模块的“分片报文流归类表”,获取该分片报文所述的流对应的条目,并返回该条目中保存的源/目的Port号。
步骤5:获取转发路径,根据源/目的IP和源/目的Port号,查询流表,获取该流的转发路径,根据转发路径转发该报文。
下面结合图2,入口OF交换机对IPv4报文的处理加以描述。
步骤1:下发流表到OF交换机,Controller为经过入口交换机A的流f计算转发路径DPath,以及该路径的PMTU;将该DPath及其PMTU下发该路径上经过的所有OF交互机;
步骤2:A接收IPv4报文,解析报文的IPv4报文头,确定报文所述的流(具体参见实施例1中的步骤2-4);
步骤3:为该报文所述的流确定转发路径,根据报文所属的流信息(比如源/目的IP和源/目的端口号),查询流表,获取该报文所需的转发路径及其该路径的PMTU;
步骤4:报文长度判断,比较接收到的报文的长度和步骤3中获得的PMTU,如果报文长度大于PMTU,则进行分片;
步骤5:在报文(包括分片报文)的IP报文头的IP选项字段中添加流标识(flow id),然后按照步骤3中确定的转发路径转发该报文;
步骤6:后续OF交换机收到IPv4报文后,从报文头中获取源/目的IP和选项字段中的flow id,根据上述信息确定报文所述的流,然后查询流表获取转发路径。
步骤7:转发携带flow id的报文,OF交换机根据步骤6中选定的路径继续转发该IP报文。
步骤8:移除IP选项字段中的flow id,携带flow id的Pv4报文或其分片达到SDN网络出口后,OF交换机移除扩展字段中的flow id,将处理后的报文转发出SDN网络。
下面结合图3,入口OF交换机对IPv4报文的处理加以描述。
步骤1:下发流表到OF交换机,Controller为经过入口交换机A的流f计算转发路径DPath,以及该路径的PMTU;将该DPath及其PMTU下发该路径上经过的所有OF交互机;
步骤2:A接收IPv4报文,解析报文的IPv4报文头,确定报文所述的流(具体参见实施例1中的步骤2-4);
步骤3:为该报文所述的流确定转发路径,根据报文所属的流信息(比如源/目的IP和源/目的端口号),查询流表,获取该报文所需的转发路径及其该路径的PMTU;
步骤4:报文长度判断,比较接收到的报文的长度和步骤3中获得的PMTU,如果报文长度大于PMTU,则进行分片(分片后,分片报文添加步骤5所述的新报文头后,分片长度不会大于PMTU);
步骤5:为报文(包括分片报文)添加新的报文头(比如VXLAN报文头或MPLS报文头),其中报文头中携带标识该报文所述的流的流标识,然后按照步骤3中确定的转发路径转发该报文;
步骤6:后续OF交换机收到IPv4报文后,从报文头中获取源/目的IP和扩展头中的流标识,根据上述信息确定报文所述的流,然后查询流表获取转发路径。
步骤7:继续转发携带flow id的报文,OF交换机根据步骤6中选定的路径继续转发该IP报文。
步骤8:移除扩展报文头,携带扩展报文头的IPv4报文或其分片达到SDN网络出口后,OF交换机移除扩展报文头,将处理后的报文转发出SDN网络。
以上所述仅为本发明的优选实施例而已,并不限制于本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。