CN104601409A - 一种mtu探测方法及装置 - Google Patents

一种mtu探测方法及装置 Download PDF

Info

Publication number
CN104601409A
CN104601409A CN201510051125.1A CN201510051125A CN104601409A CN 104601409 A CN104601409 A CN 104601409A CN 201510051125 A CN201510051125 A CN 201510051125A CN 104601409 A CN104601409 A CN 104601409A
Authority
CN
China
Prior art keywords
mtu
forwarding unit
source
virtual
probe messages
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
Application number
CN201510051125.1A
Other languages
English (en)
Other versions
CN104601409B (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.)
Hangzhou H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies 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 Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201510051125.1A priority Critical patent/CN104601409B/zh
Publication of CN104601409A publication Critical patent/CN104601409A/zh
Application granted granted Critical
Publication of CN104601409B publication Critical patent/CN104601409B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提供一种MTU探测方法及装置,所述方法应用于SDN控制器,所述方法包括:接收所述源端虚拟转发设备上送的所述第一MTU探测报文;对所述第一MTU探测报文添加封装字段,并将封装后的第一MTU探测报文发送至所述源端虚拟转发设备;向所述源端虚拟转发设备下发控制策略,以使所述源端虚拟转发设备在收到所述中间转发设备根据封装后的第一MTU探测报文反馈的第一差错报文时,将所述第一差错报文上送到所述SDN控制器;当收到所述第一差错报文时,根据所述第一差错报文计算所述中间转发设备的实际MTU值;将所述实际MTU值发送至所述虚拟机。因此,虚拟机可以获取所述中间转发设备的实际MTU值,从而保证数据报文的正常发送。

Description

一种MTU探测方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种MTU探测方法及装置。
背景技术
在VXLAN(Virtual Extensible Local Area Network,虚拟扩展局域网)中,源主机和目标主机可利用由两端的虚拟转发设备搭建的隧道进行数据报文交互,该隧道中存在中间转发设备。由于VXLAN协议不允许将数据报文分片,因此当源主机向目标主机发送数据报文时,若该数据报文的长度大于中间转发设备的MTU(Maximum Transmission Unit,最大传输单元)值,则会导致该数据报文被中间转发设备丢弃。因此源主机在发送数据报文前需要探测中间转发设备的MTU值,再根据该MTU值调整发送数据报文的长度,以使该数据报文能够顺利通过中间转发设备。
然而在现有技术中,源端虚拟转发设备在转发源主机的MTU探测报文时,会对该MTU探测报文添加VXLAN类型的封装字段,将MTU探测报文的源地址改为源端虚拟转发设备的地址,因此当中间转发设备反馈携带自身MTU值的差错报文时,该差错报文会被转发到源端虚拟转发设备,而非源端虚拟机。因此导致源端虚拟机无法获取到中间转发设备的MTU值,从而影响源虚拟机上数据报文的正常发送。
发明内容
有鉴于此,本发明提供一种MTU探测方法及装置来解决VXLAN中的源端虚拟机无法获取中间转发设备MTU值的问题。
具体地,本发明是通过如下技术方案实现的:
一种最大传输单元MTU探测方法,所述方法应用于VXLAN中的SDN控制器,所述SDN控制器分别与源端虚拟转发设备、目的端虚拟转发设备相连,所述方法包括:
接收所述源端虚拟转发设备上送的,由下挂于该源端虚拟转发设备的虚拟机发送的第一MTU探测报文;
对所述第一MTU探测报文添加封装字段,并将封装后的第一MTU探测报文发送至所述源端虚拟转发设备,以使所述源端虚拟转发设备将所述封装后的第一MTU探测报文发送至所述目的端虚拟转发设备;
向所述源端虚拟转发设备下发控制策略,以使所述源端虚拟转发设备在收到所述中间转发设备根据封装后的第一MTU探测报文反馈的第一差错报文时,将所述第一差错报文上送到所述SDN控制器;
当收到所述第一差错报文时,根据所述第一差错报文计算所述中间转发设备的实际MTU值;
将所述实际MTU值发送至所述虚拟机。
进一步的,所述向所述源端虚拟转发设备下发控制策略,包括:
向所述源端虚拟转发设备下发包含匹配字段的第一流表,以使所述源端虚拟转发设备将符合所述匹配字段的所述第一差错报文上送到所述SDN控制器。
进一步的,在接收所述源端虚拟转发设备上送的所述第一MTU探测报文后,所述方法还包括:
提取所述第一MTU探测报文的报文信息;
根据所述报文信息生成第二流表;
所述向所述源端虚拟转发设备下发控制策略,还包括:
向所述源端虚拟转发设备下发所述第二流表,以使所述源端虚拟转发设备在收到所述虚拟机发送的携带所述报文信息的第二MTU探测报文时,根据所述第二流表将所述第二MTU探测报文转发至所述目的端虚拟转发设备。
进一步的,所述将所述实际MTU值发送至所述虚拟机,包括:
控制所述源端虚拟转发设备删除所述第二流表,以使所述源端虚拟转发设备在收到所述虚拟机发送的携带所述报文信息的第三MTU探测报文时,将所述第三MTU探测报文上送到所述SDN控制器;
获取所述第三MTU探测报文中的指定字段;
将所述指定字段与所述实际MTU值添加至第二差错报文后,将所述第二差错报文发送至所述虚拟机。
进一步的,所述根据所述第一差错报文计算所述实际MTU值,包括:
获取所述第一差错报文中携带的所述中间转发设备的原始MTU值;
用所述原始MTU值减去所述封装字段的大小得到所述实际MTU值。
基于相同的构思,本发明还提供一种MTU探测装置,所述装置应用于VXLAN中的SDN控制器,所述SDN控制器连接多个虚拟转发设备,所述SDN控制器分别与源端虚拟转发设备、目的端虚拟转发设备相连,所述装置包括:
报文接收单元,用于接收所述源端虚拟转发设备上送的,由下挂于该源端虚拟转发设备的虚拟机发送的第一MTU探测报文;
第一发送单元,用于对所述第一MTU探测报文添加封装字段,并将封装后的第一MTU探测报文发送至所述源端虚拟转发设备,以使所述源端虚拟转发设备将所述封装后的第一MTU探测报文发送至所述目的端虚拟转发设备;
策略下发单元,用于向所述源端虚拟转发设备下发控制策略,以使所述源端虚拟转发设备在收到所述中间转发设备根据封装后的第一MTU探测报文反馈的第一差错报文时,将所述第一差错报文上送到所述SDN控制器;
MTU计算单元,用于在收到所述第一差错报文时,根据所述第一差错报文计算所述中间转发设备的实际MTU值;
第二发送单元,用于将所述实际MTU值发送至所述虚拟机。
进一步的,所述策略下发单元,具体用于向所述源端虚拟转发设备下发包含匹配字段的第一流表,以使所述源端虚拟转发设备将符合所述匹配字段的所述第一差错报文上送到所述SDN控制器。
进一步的,所述装置还包括:
信息提取单元,用于在接收所述源端虚拟转发设备上送的所述第一MTU探测报文后,提取所述第一MTU探测报文的报文信息;
信息添加单元,用于根据所述报文信息生成第二流表;
所述策略下发单元,还用于向所述源端虚拟转发设备下发所述第二流表,以使所述源端虚拟转发设备在收到所述虚拟机发送的携带所述报文信息的第二MTU探测报文时,根据所述第二流表将所述第二MTU探测报文转发至所述目的端虚拟转发设备。
进一步的,所述第二发送单元,包括:
流表删除子单元,用于控制所述源端虚拟转发设备删除所述第二流表,以使所述源端虚拟转发设备在收到所述虚拟机发送的携带所述报文信息的第三MTU探测报文时,将所述第三MTU探测报文上送到所述SDN控制器;
字段获取子单元,用于获取所述第三MTU探测报文中的指定字段;
报文发送子单元,用于将所述指定字段与所述实际MTU值添加至第二差错报文后,将所述第二差错报文发送至所述虚拟机。
进一步的,所述MTU计算单元,具体用于获取所述第一差错报文中携带的所述中间转发设备的原始MTU值;用所述原始MTU值减去所述封装字段的大小得到所述实际MTU值。
由此可见,本发明可以通过SDN控制器向源端虚拟转发设备下发控制策略,使源端虚拟转发设备在收到中间转发设备反馈的第一差错报文时,将第一差错报文上送到SDN控制器,以使SDN控制器根据第一差错报文计算中间转发设备的实际MTU值,并将实际MTU值发送至源端虚拟机。因此,源端虚拟机可以获取所述中间转发设备的实际MTU值,从而保证数据报文的正常发送。
附图说明
图1是本发明一种示例性实施方式中的VXLAN架构图;
图2是本发明一种示例性实施方式中的MTU探测方法的处理流程图;
图3是本发明一种示例性实施方式中的MTU探测方法的交互流程图;
图4是本发明一种示例性实施方式中的差错报文格式示意图;
图5是本发明一种示例性实施方式中的MTU探测装置所在的SDN控制器的硬件结构图;
图6是本发明一种示例性实施方式中的MTU探测装置的逻辑结构图。
具体实施方式
请参见图1,是本发明一种示例性实施方式中的VXLAN架构图,VXLAN中包括虚拟机VM1和VM2,以及分别位于主机两端的虚拟转发设备VSwitch(Virtual Switch,虚拟交换机)1和VSwitch2。VSwitch1跨过中间转发设备与VSwitch2架设隧道(如图1中虚线所示),从而实现VM1和VM2的远距离通信。上述VXLAN中还设置有SDN(Software Defined Network,软件定义网络)架构,其中VSwitch1和VSwitch2负责转发层面,SDN控制器负责控制层面,SDN控制器通过控制通道(如图1中箭头所示)与VSwitch1和VSwitch2相连。SDN控制器可以通过该控制通道向VSwitch1和VSwitch2下发控制指令、控制策略,还可以向VSwitch1和VSwitch2下发按照动态运行的协议(例如OpenFlow协议)生成的转发流表,以指导VSwitch1和VSwitch2进行报文转发;VSwitch1和VSwitch2也可以通过控制通道向SDN控制器上报自身的状态和事件。
请参考图2,是本发明一种示例性实施方式中的MTU探测方法的处理流程图,本发明的MTU探测方法应用于VXLAN中的SDN控制器,SDN控制器分别与源端虚拟转发设备、目的端虚拟转发设备相连,其中包括:
步骤201、SDN控制器接收所述源端虚拟转发设备上送的,由下挂于该源端虚拟转发设备的虚拟机发送的第一MTU探测报文。
在基于SDN架构的VXLAN中,当源虚拟机要通过源端虚拟转发设备与目标虚拟机进行数据传输时,为了获取位于源端虚拟转发设备和目的端虚拟转发设备之间的中间转发设备上的MTU值,源虚拟机通常会在发送数据报文前向目标虚拟机发送第一MTU探测报文,以获取中间转发设备的MTU值。当源端虚拟转发设备收到下挂于该源端虚拟转发设备的源虚拟机发送的第一MTU探测报文后,会将该第一MTU探测报文通过控制通道上送到SDN控制器。因此SDN控制器可通过控制通道接收第一MTU探测报文。
步骤202、SDN控制器对第一MTU探测报文添加封装字段,并将封装后的第一MTU探测报文发送至源端虚拟转发设备,以使源端虚拟转发设备将所述封装后的第一MTU探测报文发送至目的端虚拟转发设备。
由于该第一MTU探测报文要在虚拟转发设备建立的隧道上转发,因此SDN控制器在发送第一MTU探测报文前,要对该第一MTU探测报文进行封装,再将封装后的第一MTU探测报文发送给源端虚拟转发设备。SDN控制器具体的封装过程可以通过在第一MTU探测报文的外层添加VXLAN类型的封装字段来实现,其中源IP(Internet Protocol,网络之间互连的协议)地址为源端虚拟转发设备的IP地址,目的端虚拟转发设备的IP地址,以保证封装后的第一MTU探测报文可以通过隧道到达目的端虚拟转发设备。另外,SDN控制器还要在该封装中添加出端口,以指导源端虚拟转发设备将封装后的第一MTU探测报文从该出端口发送到目的端虚拟转发设备。
步骤203、SDN控制器向源端虚拟转发设备下发控制策略,以使源端虚拟转发设备在收到中间转发设备根据封装后的第一MTU探测报文反馈的第一差错报文时,将第一差错报文上送到SDN控制器。
在本发明可选的实施例中,SDN控制器向源端虚拟转发设备转发封装后的第一MTU探测报文后,还可以向源端虚拟转发设备下发包含匹配字段的第一流表。源端虚拟转发设备接收第一流表并将其保存在本地。当中间转发设备收到封装后的第一MTU探测报文后,中间转发设备先判断封装后的第一MTU探测报文长度是否大于该中间转发设备的MTU值,若大于,则根据该封装后的第一MTU探测报文的源IP地址反馈第一差错报文,并在第一差错报文中携带中间转发设备的MTU值。由于封装后的第一MTU探测报文的源IP地址是源端虚拟转发设备的IP地址,因此中间转发设备反馈的第一差错报文会发送到源IP地址对应的源端虚拟转发设备上。当源端虚拟转发设备收到中间转发设备反馈的第一差错报文时,可将该第一差错报文与第一流表中的匹配字段进行比较,如果第一差错报文中的字段与该匹配字段相同,则将第一差错报文上送到SDN控制器。
步骤204、当SDN控制器收到所述第一差错报文时,根据所述第一差错报文计算所述中间转发设备的实际MTU值。
在本发明可选的实施例中,将中间转发设备返回的第一差错报文中携带的MTU值称为“原始MTU值”,该原始MTU值就是中间转发设备上预设的MTU值。但由于第一MTU探测报文是经过封装后发送到中间转发设备上,因此原始MTU值对应的报文长度是封装后的第一MTU探测报文的报文长度,而非第一MTU探测报文的实际长度。因此对于源虚拟机来说,中间转发设备对应的实际MTU值应该是原始MTU值减去封装字段大小后得到的MTU值。
步骤205、SDN控制器将实际MTU值发送至源虚拟机。
SDN控制器计算出中间转发设备的实际MTU值后,由于SDN控制器在接收第一MTU探测报文时记录了该源虚拟机的IP地址,因此可将该实际MTU值发送到源虚拟机上。源虚拟机获得中间转发设备的实际MTU值后,便可根据该MTU值调整发送数据报文的长度。需要说明的是,在本实施方式中,所述中间转发设备指代分别位于源端虚拟转发设备和目的端虚拟转发设备之间的所有转发设备,而并不具体限定某一台转发设备。当源端虚拟转发设备和目的端虚拟转发设备之间存在多台中间转发设备时,需要重复上述处理步骤,以使源虚拟机获取多个中间转发设备中最小的实际MTU值,从而可以保证源虚拟机后续发送数据报文能够顺利通过所有的中间转发设备。
由此可见,本发明可以通过SDN控制器向源端虚拟转发设备下发控制策略,使源端虚拟转发设备在收到中间转发设备反馈的第一差错报文时,将第一差错报文上送到SDN控制器,以使SDN控制器根据第一差错报文计算中间转发设备的实际MTU值,并将实际MTU值发送至源虚拟机。因此,源虚拟机可以获取所述中间转发设备的实际MTU值,从而保证数据报文的正常发送。
在本发明可选的实施例中,由于SDN控制器可以获知源端虚拟转发设备及目的端虚拟转发设备上的MTU值,因此在SDN控制器封装第一MTU探测报文后,可以对该封装后的第一MTU探测报文进行MTU判断。若该封装后的第一MTU探测报文的报文长度不大于其已知的MTU值,则可将该封装后的第一MTU探测报文转发到源端虚拟转发设备;若该封装后的第一MTU探测报文的报文长度大于其已知的MTU值,则可直接向源虚拟机反馈差错报文,并在该差错报文中携带SDN控制器获知的最小的MTU值,从而提高源虚拟机的MTU探测效率。
在本发明可选实施例中,在SDN控制器接收源端虚拟转发设备转发的由源虚拟机发送的第一MTU探测报文后,可以提取第一MTU探测报文中的报文信息,并根据报文信息生成第二流表;然后向源端虚拟转发设备下发第二流表。源端虚拟转发设备接收并保存该第二流表。对于源虚拟机来说,若发送第一MTU探测报文后未收到响应,则会触发其发送第二MTU探测报文,其中第二MTU探测报文可以与第一MTU探测报文具有相同的报文信息。因此当源端虚拟转发设备在收到第二MTU探测报文时,判断该第二MTU探测报文中的报文信息符合第二流表中的报文信息则根据第二流表中的转发路径转发所述第二MTU探测报文。
SDN控制器通过向源端虚拟转发设备下发第二流表,可以使源端虚拟转发设备收到与第一MTU探测报文具有相同报文信息的第二MTU探测报文时,直接进行转发,因此省略将该第二MTU探测报文上送到SDN控制器处理的过程,从而提高报文处理效率。
在可选的实施方式中,SDN控制器可按照第一差错报文的格式创建第二差错报文,并用实际MTU值代替原始MTU值,再将第二差错报文发送到主机。由于差错报文中除了MTU值还包括第一MTU探测报文的报文信息中的指定字段,因此为了创建第二差错报文的指定字段,SDN控制器需要获取与第一MTU探测报文的报文信息相同的第二MTU探测报文。但是根据前述实施例所述,源端虚拟转发设备可根据第二流表直接转发第二MTU探测报文,因此SDN控制器便无法获取指定字段。
在上述情况下,SDN控制器计算出实际MTU值后,可以通过控制通道向源端虚拟转发设备下发控制指令,控制源端虚拟转发设备删除本地保存的第二流表。由于源虚拟机发送第一MTU探测报文后未收到响应,因此源虚拟机会发送第三MTU探测报文,其中第三MTU探测报文可以与第一、第二MTU探测报文相同,也可以不同,但该第三MTU探测报文与第一MTU探测报文具有相同的指定字段,因此当源端虚拟转发设备收到虚拟机发送的携带与第一MTU探测报文的指定字段相同的第三MTU探测报文时,可将第三MTU探测报文上送到SDN控制器。因此,SDN控制器便能够通过获取所述第三MTU探测报文中的指定字段来获知第一MTU探测报文中的指定字段,SDN控制器将该指定字段与实际MTU值生成第二差错报文,再将所述第二差错报文发送至源虚拟机,从而可以在提高转发效率的同时保证源虚拟机发送的数据报文可以顺利通过中间转发设备。
在优选的实施方式中,SDN控制器可以将该中间转发设备对应的实际MTU值记录到本地,以便当该VXLAN中的其他虚拟机向该中间转发设备发送MTU探测报文时,SDN控制器可以将本地记录的该中间转发设备的实际MTU值告知于虚拟机,从而可以避免虚拟机进行MTU探测。
为使本发明的目的、技术方案及优点更加清楚明白,以下基于图1的网络架构,对本发明所述方案作进一步地详细说明。
当VM1通过VSwitch1、VSwitch2之间建立的隧道与对端的VM2通信时,为了顺利传输数据,VM1在发送数据报文前,会先发送第一MTU探测报文来探测中间转发设备的MTU值。VM1、SDN控制器、VSwitch1之间的报文交互过程如图3所示,其中包括:
VSwitch1接收VM1发送的第一MTU探测报文,并将第一MTU探测报文发送到SDN控制器。
SDN控制器预先创建带有匹配字段的第一流表,例如“icmp,in_port=eth0,icmp_type=3,icmp_code=4,action=CONTROLLER”,其中“icmp,in_port=eth0,icmp_type=3,icmp_code=4”为匹配字段。其中,“icmp”为报文类型,“in_port”为入端口,“icmp_type=3,icmp_code=4”代表ICMP差错报文,“action=CONTROLLER”代表将符合匹配字段的报文执行上送SDN控制器的动作。SDN控制器可将该第一流表下发到VSwitch1,以使VSwitch1将符合上述匹配字段的所述第一差错报文上送到所述SDN控制器。
SDN控制器在收到第一MTU探测报文后,提取该第一MTU探测报文中的报文信息并根据该报文信息创建第二流表,其中该报文信息包括源IP地址、目的IP地址、源MAC(Media Access Control,介质访问控制)地址、目的MAC地址、入端口及DF(Don't Fragment,不可分片)标记。假设VM1的IP地址和MAC地址分别为ip1和mac1;VM2的IP地址和MAC地址分别为ip2和mac2,则该第一MTU探测报文的源IP地址为ip1、目的IP地址为ip2、源MAC地址为mac1、目的MAC地址为mac2、入端口为p1、DF标记为“df=1”表示报文不可分片,则报文信息具体为:“ip,in_port=p1,dl_src=mac1,dl_dst=mac2,nw_src=ip1,nw_dst=ip2,df=1;根据该报文信息生成的第二流表如下:
“ip,in_port=p1,dl_src=mac1,dl_dst=mac2,nw_src=ip1,nw_dst=ip2,df=1,set_field:vxlan-id->tun_id,set_field:vtep-dstip->tun_dst,output:local”,其中“set_field:vxlan-id->tun_id,set_field:vtep-dstip->tun_dst,output:local”为报文的转发路径。
SDN控制器对第一MTU探测报文添加VXLAN类型的封装字段,其中源IP地址为VSwitch1的IP地址IPS 1,目的IP地址为VSwitch2的IP地址IPS2,出端口为VSwitch1上的物理接口。在确定封装后的第一MTU探测报文的报文长度不大于VSwitch1出端口的MTU值的情况下,SDN控制器将封装后的第一MTU探测报文发送到VSwitch1。同时SDN控制器还可以向VSwitch1下发第一流表和第二流表,以使VSwitch1根据所述第一流表和第二流表对后续收到的报文进行相应处理。
VSwitch1收到封装后的第一MTU探测报文后,可以根据封装中的出端口将所述封装后的第一MTU探测报文发送到VSwitch2。其中,由于该第一MTU探测报文外层具有VXLAN类型的封装字段,因此中间转发设备在收到该封装后的第一MTU探测报文时,只解析其外层的VXLAN类型的封装字段,并根据封装字段中的源IP地址和目的IP地址进行常规的路由转发。
在中间转发设备转发封装后的第一MTU探测报文之前,还要判断该报文长度是否大于自身的MTU值。假设第一MTU探测报文的长度为1000字节,其外层的封装字段长度为50字节,则封装后的第一MTU探测报文长度为1000+50=1050字节。
若中间转发设备的原始MTU值大于1050字节,则该封装后的第一MTU探测报文可以顺利到达VM2。VM1可以继续发送报文信息相同且报文长度小于第一MTU探测报文的第二MTU探测报文,而VSwitch1在收到该第二MTU探测报文后,检查其中的报文信息,由于第二MTU探测报文的报文信息与第一MTU探测报文相同,因此第二MTU探测报文的报文信息与第二流表中的报文信息相同,则VSwitch1可根据所述第二流表转发所述第二MTU探测报文,从而可使VM1进一步探测中间转发设备的最小MTU值。
若中间转发设备上的原始MTU值小于1050字节,例如原始MTU值为500字节,那么中间转发设备会根据封装后的第一MTU探测报文返回第一差错报文,并携带其原始MTU值500字节。
由于封装后的第一MTU探测报文的源IP地址为IPS1,那么该第一差错报文的目的IP地址就是IPS1,因此该第一差错报文会发送到IPS1对应的VSwitch1上。
VSwitch1在收到第一差错报文时,判断所述第一差错报文是否符合第一流表中的匹配字段,若符合则将第一差错报文上送到SDN控制器。
SDN控制器收到所述第一差错报文时,用原始MTU值减去封装字段的大小计算所述中间转发设备的实际MTU值,即500-50=450字节。然后向VSwitch1和VSwitch2下发控制指令,控制VSwitch1和VSwitch2删除本地保存第二流表。
当VSwitch1收到VM1发送的携带指定字段的第三MTU探测报文时,将所述第三MTU探测报文上送到所述SDN控制器。
SDN控制器获取所述第三MTU探测报文中的指定字段,将所述指定字段与所述实际MTU值添加至第二差错报文,第二差错报文的格式如图4所示,其中包括匹配字段、实际MTU值,以及报文头信息和64比特(即8字节)的指定字段信息。最后SDN控制器将第二差错报文发送至VM1。VM1可根据第二差错报文中的实际MTU值信息调整数据报文长度,从而使数据报文顺利通过中间转发设备。
由此可见,本发明可以通过SDN控制器向源端虚拟转发设备下发控制策略,使源端虚拟转发设备在收到中间转发设备反馈的第一差错报文时,将第一差错报文上送到SDN控制器,以使SDN控制器根据第一差错报文计算中间转发设备的实际MTU值,并将实际MTU值发送至源虚拟机。因此,源虚拟机可以获取所述中间转发设备的实际MTU值,从而保证数据报文的正常发送。
基于相同的构思,本发明还提供一种MTU探测装置,所述装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,本发明的MTU探测装置作为一个逻辑意义上的装置,是通过其所在网络转发设备的CPU将存储器中对应的计算机程序指令读取后运行而成。
请参考图5及图6,是本发明一种示例性实施方式中的一种MTU探测装置500,所述装置应用于VXLAN中的SDN控制器,所述SDN控制器分别与源端虚拟转发设备、目的端虚拟转发设备相连,所述装置基本运行环境包括CPU,存储器以及其他硬件,从逻辑层面上来看,所述装置500包括:
报文接收单元501,用于接收所述源端虚拟转发设备上送的,由下挂于该源端虚拟转发设备的虚拟机发送的第一MTU探测报文;
第一发送单元502,用于对所述第一MTU探测报文添加封装字段,并将封装后的第一MTU探测报文发送至所述源端虚拟转发设备,以使所述源端虚拟转发设备将所述封装后的第一MTU探测报文发送至所述目的端虚拟转发设备;
策略下发单元503,用于向所述源端虚拟转发设备下发控制策略,以使所述源端虚拟转发设备在收到所述中间转发设备根据封装后的第一MTU探测报文反馈的第一差错报文时,将所述第一差错报文上送到所述SDN控制器;
MTU计算单元504,用于在收到所述第一差错报文时,根据所述第一差错报文计算所述中间转发设备的实际MTU值;
第二发送单元505,用于将所述实际MTU值发送至所述虚拟机。
可选的,所述策略下发单元503,具体用于向所述源端虚拟转发设备下发包含匹配字段的第一流表,以使所述源端虚拟转发设备将符合所述匹配字段的所述第一差错报文上送到所述SDN控制器。
可选的,所述装置还包括信息提取单元506,用于在接收所述源端虚拟转发设备上送的所述第一MTU探测报文后,提取所述第一MTU探测报文的报文信息;
信息添加单元507,用于根据所述报文信息生成第二流表。
所述策略下发单元503,还用于向所述源端虚拟转发设备下发所述第二流表,以使所述源端虚拟转发设备在收到所述虚拟机发送的携带所述报文信息的第二MTU探测报文时,根据所述第二流表将所述第二MTU探测报文转发至所述目的端虚拟转发设备。
可选的,所述第二发送单元505,包括:
流表删除子单元5051,用于控制所述源端虚拟转发设备删除所述第二流表,以使所述源端虚拟转发设备在收到所述虚拟机发送的携带所述报文信息的第三MTU探测报文时,将所述第三MTU探测报文上送到所述SDN控制器。
字段获取子单元5052,用于获取所述第三MTU探测报文中的指定字段。
报文发送子单元5053,用于将所述指定字段与所述实际MTU值添加至第二差错报文后,将所述第二差错报文发送至所述虚拟机。
可选的,所述MTU计算单元504,具体用于获取所述第一差错报文中携带的所述中间转发设备的原始MTU值;用所述原始MTU值减去所述封装字段的大小得到所述实际MTU值。
由此可见,本发明可以通过SDN控制器向源端虚拟转发设备下发控制策略,使源端虚拟转发设备在收到中间转发设备反馈的第一差错报文时,将第一差错报文上送到SDN控制器,以使SDN控制器根据第一差错报文计算中间转发设备的实际MTU值,并将实际MTU值发送至虚拟机。因此,虚拟机可以获取所述中间转发设备的实际MTU值,从而保证数据报文的正常发送。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (10)

1.一种最大传输单元MTU探测方法,其特征在于,所述方法应用于虚拟扩展局域网VXLAN中的软件定义网络SDN控制器,所述SDN控制器分别与源端虚拟转发设备、目的端虚拟转发设备相连,所述方法包括:
接收所述源端虚拟转发设备上送的,由下挂于该源端虚拟转发设备的虚拟机发送的第一MTU探测报文;
对所述第一MTU探测报文添加封装字段,并将封装后的第一MTU探测报文发送至所述源端虚拟转发设备,以使所述源端虚拟转发设备将所述封装后的第一MTU探测报文发送至所述目的端虚拟转发设备;
向所述源端虚拟转发设备下发控制策略,以使所述源端虚拟转发设备在收到所述中间转发设备根据封装后的第一MTU探测报文反馈的第一差错报文时,将所述第一差错报文上送到所述SDN控制器;
当收到所述第一差错报文时,根据所述第一差错报文计算所述中间转发设备的实际MTU值;
将所述实际MTU值发送至所述虚拟机。
2.根据权利要求1所述的方法,其特征在于,所述向所述源端虚拟转发设备下发控制策略,包括:
向所述源端虚拟转发设备下发包含匹配字段的第一流表,以使所述源端虚拟转发设备将符合所述匹配字段的所述第一差错报文上送到所述SDN控制器。
3.根据权利要求2所述的方法,其特征在于,在接收所述源端虚拟转发设备上送的所述第一MTU探测报文后,所述方法还包括:
提取所述第一MTU探测报文的报文信息;
根据所述报文信息生成第二流表;
所述向所述源端虚拟转发设备下发控制策略,还包括:
向所述源端虚拟转发设备下发所述第二流表,以使所述源端虚拟转发设备在收到所述虚拟机发送的携带所述报文信息的第二MTU探测报文时,根据所述第二流表将所述第二MTU探测报文转发至所述目的端虚拟转发设备。
4.根据权利要求3所述的方法,其特征在于,所述将所述实际MTU值发送至所述虚拟机,包括:
控制所述源端虚拟转发设备删除所述第二流表,以使所述源端虚拟转发设备在收到所述虚拟机发送的携带所述报文信息的第三MTU探测报文时,将所述第三MTU探测报文上送到所述SDN控制器;
获取所述第三MTU探测报文中的指定字段;
将所述指定字段与所述实际MTU值添加至第二差错报文后,将所述第二差错报文发送至所述虚拟机。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述根据所述第一差错报文计算所述实际MTU值,包括:
获取所述第一差错报文中携带的所述中间转发设备的原始MTU值;
用所述原始MTU值减去所述封装字段的大小得到所述实际MTU值。
6.一种MTU探测装置,其特征在于,所述装置应用于VXLAN中的SDN控制器,所述SDN控制器连接多个虚拟转发设备,所述SDN控制器分别与源端虚拟转发设备、目的端虚拟转发设备相连,所述装置包括:
报文接收单元,用于接收所述源端虚拟转发设备上送的,由下挂于该源端虚拟转发设备的虚拟机发送的第一MTU探测报文;
第一发送单元,用于对所述第一MTU探测报文添加封装字段,并将封装后的第一MTU探测报文发送至所述源端虚拟转发设备,以使所述源端虚拟转发设备将所述封装后的第一MTU探测报文发送至所述目的端虚拟转发设备;
策略下发单元,用于向所述源端虚拟转发设备下发控制策略,以使所述源端虚拟转发设备在收到所述中间转发设备根据封装后的第一MTU探测报文反馈的第一差错报文时,将所述第一差错报文上送到所述SDN控制器;
MTU计算单元,用于在收到所述第一差错报文时,根据所述第一差错报文计算所述中间转发设备的实际MTU值;
第二发送单元,用于将所述实际MTU值发送至所述虚拟机。
7.根据权利要求6所述的装置,其特征在于,
所述策略下发单元,具体用于向所述源端虚拟转发设备下发包含匹配字段的第一流表,以使所述源端虚拟转发设备将符合所述匹配字段的所述第一差错报文上送到所述SDN控制器。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
信息提取单元,用于在接收所述源端虚拟转发设备上送的所述第一MTU探测报文后,提取所述第一MTU探测报文的报文信息;
信息添加单元,用于根据所述报文信息生成第二流表;
所述策略下发单元,还用于向所述源端虚拟转发设备下发所述第二流表,以使所述源端虚拟转发设备在收到所述虚拟机发送的携带所述报文信息的第二MTU探测报文时,根据所述第二流表将所述第二MTU探测报文转发至所述目的端虚拟转发设备。
9.根据权利要求8所述的装置,其特征在于,所述第二发送单元,包括:
流表删除子单元,用于控制所述源端虚拟转发设备删除所述第二流表,以使所述源端虚拟转发设备在收到所述虚拟机发送的携带所述报文信息的第三MTU探测报文时,将所述第三MTU探测报文上送到所述SDN控制器;
字段获取子单元,用于获取所述第三MTU探测报文中的指定字段;
报文发送子单元,用于将所述指定字段与所述实际MTU值添加至第二差错报文后,将所述第二差错报文发送至所述虚拟机。
10.根据权利要求6至9任一项所述的装置,其特征在于,
所述MTU计算单元,具体用于获取所述第一差错报文中携带的所述中间转发设备的原始MTU值;用所述原始MTU值减去所述封装字段的大小得到所述实际MTU值。
CN201510051125.1A 2015-01-30 2015-01-30 一种mtu探测方法及装置 Active CN104601409B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510051125.1A CN104601409B (zh) 2015-01-30 2015-01-30 一种mtu探测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510051125.1A CN104601409B (zh) 2015-01-30 2015-01-30 一种mtu探测方法及装置

Publications (2)

Publication Number Publication Date
CN104601409A true CN104601409A (zh) 2015-05-06
CN104601409B CN104601409B (zh) 2018-01-09

Family

ID=53126933

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510051125.1A Active CN104601409B (zh) 2015-01-30 2015-01-30 一种mtu探测方法及装置

Country Status (1)

Country Link
CN (1) CN104601409B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106817316A (zh) * 2015-12-02 2017-06-09 华为技术有限公司 探测路径mtu的方法、装置和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003084144A1 (en) * 2002-03-29 2003-10-09 Samsung Electronics Co., Ltd. Method for path mtu discovery on ip network and apparatus thereof
US20050041635A1 (en) * 2003-08-06 2005-02-24 Samsung Electronics Co., Ltd. Network apparatus, system and method for discovering path MTU in data communication network
CN1716943A (zh) * 2004-06-28 2006-01-04 杭州华为三康技术有限公司 获取隧道网关环境中路径最大传输长度的方法及系统
CN103888386A (zh) * 2012-12-24 2014-06-25 华为技术有限公司 可扩展虚拟局域网报文的传输方法及装置、系统
CN103905317A (zh) * 2012-12-28 2014-07-02 中兴通讯股份有限公司 一种软件定义网络的报文处理方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003084144A1 (en) * 2002-03-29 2003-10-09 Samsung Electronics Co., Ltd. Method for path mtu discovery on ip network and apparatus thereof
US20050041635A1 (en) * 2003-08-06 2005-02-24 Samsung Electronics Co., Ltd. Network apparatus, system and method for discovering path MTU in data communication network
CN1716943A (zh) * 2004-06-28 2006-01-04 杭州华为三康技术有限公司 获取隧道网关环境中路径最大传输长度的方法及系统
CN103888386A (zh) * 2012-12-24 2014-06-25 华为技术有限公司 可扩展虚拟局域网报文的传输方法及装置、系统
CN103905317A (zh) * 2012-12-28 2014-07-02 中兴通讯股份有限公司 一种软件定义网络的报文处理方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106817316A (zh) * 2015-12-02 2017-06-09 华为技术有限公司 探测路径mtu的方法、装置和系统
CN106817316B (zh) * 2015-12-02 2020-02-21 华为技术有限公司 探测路径mtu的方法、装置和系统

Also Published As

Publication number Publication date
CN104601409B (zh) 2018-01-09

Similar Documents

Publication Publication Date Title
CN104506408B (zh) 基于sdn的数据传输的方法及装置
US10397126B2 (en) VXLAN packet transmission
EP3338396B1 (en) Device and method for establishing connection in load-balancing system
CN104618194B (zh) 软件定义网络报文监控方法和sdn控制器、交换设备
CN104283785A (zh) 一种快速处理流表的方法和装置
CN113326228B (zh) 基于远程直接数据存储的报文转发方法、装置及设备
US9900238B2 (en) Overlay network-based original packet flow mapping apparatus and method therefor
CN105099922A (zh) 一种跨虚拟可扩展局域网的数据报文转发方法和装置
CN106712988A (zh) 一种虚拟网络管理方法及装置
CN109936492B (zh) 一种通过隧道传输报文的方法、装置和系统
CN105531967B (zh) 一种报文传输方法、设备及通信系统
CN101360046B (zh) 一种带宽资源的节约方法
KR20160095554A (ko) Sdn 기반의 물리 주소 결정장치 및 그 방법
CN108512758A (zh) 报文处理方法、控制器以及转发设备
WO2020073907A1 (zh) 转发表项的更新方法及装置
CN106921578A (zh) 一种转发表项的生成方法和装置
CN104796338A (zh) 虚拟机迁移方法及装置
JP2018521606A (ja) Vxlanにおけるパケットロスの位置特定
CN116112426A (zh) 智能网卡组件、物理机、云服务系统以及报文发送方法
CN106992918B (zh) 报文转发方法和装置
CN104601409A (zh) 一种mtu探测方法及装置
CN103986637B (zh) 一种差错报文处理方法及隧道设备
CN103780469A (zh) 多核平台上IPv6隧道的实现方法以及报文转发方法
US10257087B2 (en) Communication device and communication method
US10320661B2 (en) Communication device and communication method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Applicant after: Xinhua three Technology Co., Ltd.

Address before: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Applicant before: Huasan Communication Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant