探测路径MTU的方法、装置和系统
技术领域
本发明涉及网络技术领域,特别涉及一种探测路径最大传输单元(英文:MaximumTransmission Unit,简称MTU)的方法、装置和系统。
背景技术
路径MTU是指在源设备到目的设备之间的路径上能通过的最大的数据包长度。实际应用中,为了响应各种各样的事件,源设备到目的设备之间的路径可能会被动态地修改,路径MTU也会相应地改变。
虚拟化网络中的交换机配置有隧道端点,通过配置的隧道端点与其他交换机实现隧道互通,而任意两个虚拟机之间的通信是通过所接入的交换机之间的隧道来实现的,即任意两个虚拟机之间的路径包括交换机之间的隧道。那么,当源虚拟机要向目的虚拟机发送报文时,先向源交换机发送该报文,源交换机接收到该报文时,会按照隧道协议为该报文封装一个以源交换机为源设备、以目的交换机为目的设备的外层头,从而得到封装报文,并向该目的交换机发送该封装报文。如果该封装报文的长度不大于该源交换机与该目的交换机之间的路径MTU,则该封装报文会通过该路径传输至该目的交换机。该目的交换机会按照隧道协议对该封装报文进行解封装,并将该解封装后得到的报文发送给该目的虚拟机,该目的虚拟机即可向源虚拟机返回发送成功的响应报文。而如果该封装报文的长度大于路径MTU,隧道中的中间设备会将该封装报文丢弃,并返回数据包过大报文,以提示该封装报文的长度过大。由于该封装报文的外层头中的源交换机为源设备,则该数据包过大报文会发送至源交换机,而不能发送至源虚拟机。
在上述发送报文的过程中,源交换机并不能探测到与目的交换机之间的路径MTU,源虚拟机也不能探测到与目的虚拟机之间的路径MTU。而且,在后续过程中,源虚拟机仍可能会发送长度大于源虚拟机与目的虚拟机之间的路径MTU的报文,而导致报文发送失败。因此,需要提出一种方法,以探测源虚拟机与目的虚拟机之间的路径MTU,解决报文发送失败的问题。
发明内容
为克服现有技术中存在的问题,本发明提供一种探测路径MTU的方法、装置及系统。
第一方面,本发明提供了一种探测路径MTU的方法,所述方法包括:
根据目的交换机的地址和预设路径MTU,发送至少一个探测报文,并获取与所述至少一个探测报文对应的至少一个响应报文,所述至少一个响应报文包括第一响应报文和第二响应报文中的至少一个,所述第一响应报文用于指示当前的预设路径MTU大于源交换机与所述目的交换机之间的第一路径MTU,所述第二响应报文用于指示当前的预设路径MTU不大于所述第一路径MTU;
根据接收到所述第二响应报文时的预设路径MTU,确定所述第一路径MTU;
根据所述第一路径MTU及预设封装长度,确定接入所述源交换机的源虚拟机与接入所述目的交换机的目的虚拟机之间的第二路径MTU。
结合第一方面,在第一方面的第一种可能实现方式中,所述根据所述第一路径MTU及预设封装长度,确定接入所述源交换机的源虚拟机与接入所述目的交换机的目的虚拟机之间的第二路径MTU之后,所述方法还包括:
获取所述源虚拟机发往所述目的虚拟机的数据报文;
当确定所述数据报文的长度大于所述第二路径MTU时,向所述源虚拟机发送第三响应报文,所述第三响应报文用于指示所述报文的长度大于所述第二路径MTU。
结合第一方面的上述任一种可能实现方式,在第一方面的第二种可能实现方式中,所述根据目的交换机的地址和预设路径MTU,发送至少一个探测报文,包括:
根据预设交换机地址列表,确定多个目的交换机的地址;
根据每个目的交换机的地址以及所述预设路径MTU,向每个目的交换机发送至少一个探测报文。
结合第一方面的上述任一种可能实现方式,在第一方面的第三种可能实现方式中,所述根据目的交换机的地址和预设路径MTU,发送至少一个探测报文,并获取与所述至少一个探测报文对应的至少一个响应报文,包括:
根据所述目的交换机的地址以及所述预设路径MTU,发送第一探测报文;
当接收到所述第一响应报文时,减小所述预设路径MTU,根据所述减小后的预设MTU生成第二探测报文;继续根据所述目的交换机的地址,发送所述第二探测报文。
结合第一方面的上述任一种可能实现方式,在第一方面的第四种可能实现方式中,所述根据目的交换机的地址以及所述预设路径MTU,发送至少一个探测报文,并获取与所述至少一个探测报文对应的至少一个响应报文,包括:
遍历配置的每个端口;
根据所述目的交换机的地址以及所述预设路径MTU,基于遍历到的每个端口发送至少一个探测报文;
通过所述遍历到的端口,接收与所述至少一个探测报文对应的至少一个响应报文。
结合第一方面的上述任一种可能实现方式,在第一方面的第五种可能实现方式中,所述根据接收到所述第二响应报文时的预设路径MTU,确定所述第一路径MTU,包括:
根据每个端口接收到所述第二响应报文时的预设路径MTU,确定每个端口对应的路径MTU;
根据每个端口对应的路径MTU,确定所述第一路径MTU。
结合第一方面的上述任一种可能实现方式,在第一方面的第六种可能实现方式中,所述根据所述第一路径MTU及预设封装长度,确定接入所述源交换机的源虚拟机与接入所述目的交换机的目的虚拟机之间的第二路径MTU,包括:
计算所述第一路径MTU与所述预设封装长度之间的差值;
将所述差值确定为所述第二路径MTU。
结合第一方面的上述任一种可能实现方式,在第一方面的第七种可能实现方式中,所述根据所述第一路径MTU及预设封装长度,确定接入所述源交换机的源虚拟机与接入所述目的交换机的目的虚拟机之间的第二路径MTU之后,所述方法还包括:
向控制器发送所述第二路径MTU,使得所述控制器监听所述源虚拟机发送给所述源交换机的数据报文,根据所述第二路径MTU对监听到的数据报文进行响应。
结合第一方面的上述任一种可能实现方式,在第一方面的第八种可能实现方式中,所述获取所述源虚拟机发往所述目的虚拟机的数据报文,包括:
对所述源虚拟机发往所述目的虚拟机的数据报文进行采样,获取采样得到的数据报文。
结合第一方面的上述任一种可能实现方式,在第一方面的第九种可能实现方式中,所述根据每个端口对应的路径MTU,确定所述第一路径MTU,包括:
获取所述每个端口对应的路径MTU中的最小路径MTU,将所述最小路径MTU作为所述第一路径MTU。
第二方面,提供了一种探测路径MTU的方法,所述方法包括:
获取源交换机发送的第二路径MTU,所述第二路径MTU为接入所述源交换机的源虚拟机与目的虚拟机之间的路径MTU;
监听所述源虚拟机发送给所述源交换机的数据报文;
当确定所述数据报文的长度大于所述第二路径MTU时,向所述源虚拟机发送第三响应报文,所述第三响应报文用于指示所述数据报文的长度大于所述第二路径MTU。
结合第二方面,在第二方面的第一种可能实现方式中,所述第二路径MTU由所述源交换机根据所述源交换机与所述目的虚拟机接入的目的交换机之间的第一路径MTU以及预设封装长度确定,所述第一路径MTU由所述源交换机根据所述目的交换机的地址和预设路径MTU发送至少一个探测报文,获取与所述至少一个探测报文对应的至少一个响应报文,并根据接收到第二响应报文时的预设路径MTU确定,所述至少一个响应报文包括第一响应报文和所述第二响应报文中的至少一个。
结合第二方面的上述任一种可能实现方式,在第二方面的第二种可能实现方式中,所述监听源虚拟机发送给所述源交换机的数据报文,包括:
对所述源虚拟机发送给所述源交换机的数据报文进行采样,获取采样得到的数据报文。
第三方面,提供了一种探测路径MTU的装置,所述装置包括:
发送模块,用于根据目的交换机的地址和预设路径MTU,发送至少一个探测报文;
接收模块,用于获取与所述至少一个探测报文对应的至少一个响应报文,所述至少一个响应报文包括第一响应报文和第二响应报文中的至少一个,所述第一响应报文用于指示当前的预设路径MTU大于源交换机与所述目的交换机之间的第一路径MTU,所述第二响应报文用于指示当前的预设路径MTU不大于所述第一路径MTU;
第一确定模块,用于根据接收到所述第二响应报文时的预设路径MTU,确定所述第一路径MTU;
第二确定模块,用于根据所述第一路径MTU及预设封装长度,确定接入所述源交换机的源虚拟机与接入所述目的交换机的目的虚拟机之间的第二路径MTU。
结合第三方面,在第三方面的第一种可能实现方式中,所述接收模块,还用于获取所述源虚拟机发往所述目的虚拟机的数据报文;
所述发送模块,还用于当确定所述数据报文的长度大于所述第二路径MTU时,向所述源虚拟机发送第三响应报文,所述第三响应报文用于指示所述报文的长度大于所述第二路径MTU。
结合第三方面的上述任一种可能实现方式,在第三方面的第二种可能实现方式中,所述发送模块还用于根据预设交换机地址列表,确定多个目的交换机的地址;根据每个目的交换机的地址以及所述预设路径MTU,向每个目的交换机发送至少一个探测报文。
结合第三方面的上述任一种可能实现方式,在第三方面的第三种可能实现方式中,所述发送模块还用于根据所述目的交换机的地址以及所述预设路径MTU,发送第一探测报文;
所述接收模块还用于当接收到所述第一响应报文时,减小所述预设路径MTU,根据所述减小后的预设MTU生成第二探测报文;
所述发送模块还用于继续根据所述目的交换机的地址,发送所述第二探测报文。
结合第三方面的上述任一种可能实现方式,在第三方面的第四种可能实现方式中,所述发送模块还用于遍历配置的每个端口;根据所述目的交换机的地址以及所述预设路径MTU,基于遍历到的端口发送至少一个探测报文;
所述接收模块还用于通过所述遍历到的端口,接收与所述至少一个探测报文对应的至少一个响应报文。
结合第三方面的上述任一种可能实现方式,在第三方面的第五种可能实现方式中,所述第一确定模块还用于根据每个端口接收到所述第二响应报文时的预设路径MTU,确定每个端口对应的路径MTU;根据每个端口对应的路径MTU,确定所述第一路径MTU。
结合第三方面的上述任一种可能实现方式,在第三方面的第六种可能实现方式中,所述第二确定模块还用于计算所述第一路径MTU与所述预设封装长度之间的差值;将所述差值确定为所述第二路径MTU。
结合第三方面的上述任一种可能实现方式,在第三方面的第七种可能实现方式中,所述发送模块还用于向控制器发送所述第二路径MTU,使得所述控制器监听所述源虚拟机发送给所述源交换机的数据报文,根据所述第二路径MTU对监听到的数据报文进行响应。
结合第三方面的上述任一种可能实现方式,在第三方面的第八种可能实现方式中,所述接收模块还用于对所述源虚拟机发往所述目的虚拟机的数据报文进行采样,获取采样得到的数据报文。
结合第三方面的上述任一种可能实现方式,在第三方面的第九种可能实现方式中,所述确定模块还用于获取所述每个端口对应的路径MTU中的最小路径MTU,将所述最小路径MTU作为所述第一路径MTU。
第四方面,提供了一种探测路径MTU的装置,所述装置包括:
获取模块,用于获取源交换机发送的第二路径MTU,所述第二路径MTU为接入所述源交换机的源虚拟机与目的虚拟机之间的路径MTU;
监听模块,用于监听所述源虚拟机发送给所述源交换机的数据报文;
响应模块,用于当确定所述数据报文的长度大于所述第二路径MTU时,向所述源虚拟机发送第三响应报文,所述第三响应报文用于指示所述数据报文的长度大于所述第二路径MTU。
结合第四方面,在第四方面的第一种可能实现方式中,所述第二路径MTU由所述源交换机根据所述源交换机与所述目的虚拟机接入的目的交换机之间的第一路径MTU以及预设封装长度确定,所述第一路径MTU由所述源交换机根据所述目的交换机的地址和预设路径MTU发送至少一个探测报文,获取与所述至少一个探测报文对应的至少一个响应报文,并根据接收到第二响应报文时的预设路径MTU确定,所述至少一个响应报文包括第一响应报文和所述第二响应报文中的至少一个。
结合第四方面的上述任一种可能实现方式,在第四方面的第二种可能实现方式中,所述监听模块还用于对所述源虚拟机发送给所述源交换机的数据报文进行采样,获取采样得到的数据报文。
第五方面,提供了一种探测路径MTU的系统,所述系统包括:源虚拟机、源交换机、目的虚拟机和目的交换机,所述源虚拟机接入所述源交换机,所述目的虚拟机接入所述目的交换机;
所述源交换机用于根据所述目的交换机的地址和预设路径MTU,发送至少一个探测报文,并获取与所述至少一个探测报文对应的至少一个响应报文,所述至少一个响应报文包括第一响应报文和第二响应报文中的至少一个,所述第一响应报文用于指示当前的预设路径MTU大于所述源交换机与所述目的交换机之间的第一路径MTU,所述第二响应报文用于指示当前的预设路径MTU不大于所述第一路径MTU;根据接收到所述第二响应报文时的预设路径MTU,确定所述第一路径MTU;根据所述第一路径MTU及预设封装长度,确定接入所述源交换机的源虚拟机与接入所述目的交换机的目的虚拟机之间的第二路径MTU;
所述源虚拟机用于通过所述源交换机向所述目的虚拟机发送至少一个数据报文,使得所述源交换机根据探测到的第二路径MTU,返回与所述至少一个数据报文对应的至少一个响应报文;根据所述至少一个响应报文,确定所述第二路径MTU。
结合第五方面,在第五方面的第一种可能实现方式中,所述系统还包括控制器;
所述源交换机还用于向所述控制器发送所述第二路径MTU;
所述源虚拟机用于通过所述源交换机向所述目的虚拟机发送至少一个数据报文;
所述控制器用于获取所述源交换机发送的第二路径MTU,所述第二路径MTU为所述源交换机接入的所述源虚拟机与所述目的虚拟机之间的路径MTU;监听所述源虚拟机发送给所述源交换机的数据报文;当确定所述数据报文的长度大于所述第二路径MTU时,向所述源虚拟机发送第三响应报文,所述第三响应报文用于指示所述数据报文的长度大于所述第二路径MTU。
本发明实施例提供的技术方案带来的有益效果是:
通过发送至少一个探测报文的方式进行学习,从而探测到源交换机与目的交换机之间的第一路径MTU,并确定源虚拟机与目的虚拟机之间的第二路径MTU,以便根据第二路径MTU控制源虚拟机所发送报文的长度,避免了报文发送失败的问题,提高了发送报文的成功率。
进一步地,通过获取源虚拟机发往目的虚拟机的数据报文,当确定该数据报文的长度大于第二路径MTU时,向源虚拟机发送第三响应报文,该第三响应报文用于指示该数据报文的长度大于第二路径MTU,通过对源虚拟机所发送的数据报文进行响应,以便对该源虚拟机进行预警,从而使得源虚拟机可以根据响应的报文探测到第二路径MTU,从而控制所发送报文的长度,提高了控制效率。
进一步地,通过根据预设交换机地址列表,确定多个目的交换机的地址,提高了获取目的交换机地址的效率和准确性,通过根据每个目的交换机的地址以及预设路径MTU,发送至少一个探测报文,便于探测源交换机与多个目的交换机之间的路径MTU。
进一步地,通过当接收到第一响应报文时,减小该预设路径MTU,根据该减小后的预设MTU生成第二探测报文,第二探测报文的长度小于第一探测报文的长度,并继续根据目的交换机的地址,发送该第二探测报文,直至接收到第二响应报文时,根据接收到第二响应报文时的预设路径MTU确定第一路径MTU,即通过多次发送探测报文,对该多个探测报文对应的响应报文进行学习,实现了对第一路径MTU的探测,便于根据该第一路径MTU确定源虚拟机与目的虚拟机之间的第二路径MTU。
进一步地,通过遍历配置的每个端口,根据目的交换机的地址以及预设路径MTU,基于遍历到的每个端口发送至少一个探测报文,并通过遍历到的端口,接收与至少一个探测报文对应的至少一个响应报文,便于探测出每个端口对应的路径MTU。
进一步地,通过根据每个端口接收到第二响应报文时的预设路径MTU,确定每个端口对应的路径MTU,再根据每个端口对应的路径MTU,确定第一路径MTU,确保根据第一路径MTU控制的报文能够通过每个端口,提高了可靠性以及发送报文的成功率。
进一步地,考虑到对源虚拟机所发送的报文进行转发时会对该报文进行封装,报文的长度会增加预设封装长度,则确定第一路径MTU后,计算第一路径MTU与预设封装长度之间的差值,将差值确定为第二路径MTU,从而根据第二路径MTU控制源虚拟机所发送报文的长度,避免了报文发送失败的问题,提高了发送报文的成功率。
进一步地,通过向控制器发送第二路径MTU,使得控制器监听源虚拟机发送给源交换机的数据报文,并根据第二路径MTU对监听到的数据报文进行响应,通过由处理能力较强的控制器对源虚拟机发送的数据报文进行响应,提高了响应效率,无需耗费源交换机的硬件资源,减小了源交换机的压力,且能够防止源交换机被探测攻击,提高了网络系统的安全性。
进一步地,通过对源虚拟机发送的数据报文进行采样,获取采样得到的数据报文,并对采样得到的数据报文进行响应,保证了源虚拟机根据源交换机返回的响应报文学习到第二路径MTU,而且,无需对源虚拟机发送的每个报文进行响应,减小了源交换机或者控制器的压力。
进一步地,通过选取每个端口对应的路径MTU中的最小路径MTU,将最小路径MTU作为第一路径MTU,确保了根据第一路径MTU控制的报文能够通过每个端口,提高了可靠性以及发送报文的成功率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本发明实施例提供的一种网络系统的结构示意图;
图1B是本发明实施例提供的另一种网络系统的结构示意图;
图2是本发明实施例提供的一种VXLAN的结构示意图;
图3是本发明实施例提供的一种源交换机的结构示意图;
图4是本发明实施例提供的一种源虚拟机的结构示意图;
图5是本发明实施例提供的一种控制器的结构示意图;
图6是本发明实施例提供的一种探测路径MTU的方法流程图;
图7是本发明实施例提供的一种探测路径MTU的方法流程图;
图8是本发明实施例提供的一种探测路径MTU的方法流程图;
图9是本发明实施例提供的一种探测路径MTU的方法流程图;
图10是本发明实施例提供的一种探测路径MTU的方法流程图;
图11是本发明实施例提供的一种探测路径MTU的装置结构示意图;
图12是本发明实施例提供的一种探测路径MTU的装置结构示意图;
图13是本发明实施例提供的一种探测路径MTU的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1A是本发明实施例提供的一种网络系统的结构示意图,参见图1A,该网络系统包括源虚拟机101、源交换机102、目的虚拟机103和目的交换机104。其中,该源虚拟机101接入该源交换机102,该目的虚拟机103接入该目的交换机104,该源交换机102与该目的交换机104之间通过多条路径连接,每条路径上包括至少一个中间交换机。
源交换机102用于根据目的交换机104的地址和预设路径MTU,发送至少一个探测报文,并获取与该至少一个探测报文对应的至少一个响应报文,该至少一个响应报文为包括第一响应报文和第二响应报文中的至少一个,该第一响应报文用于指示当前的预设路径MTU大于该源交换机与该目的交换机之间的第一路径MTU,该第二响应报文用于指示当前的预设路径MTU不大于该第一路径MTU;根据接收到第二响应报文时的预设路径MTU,确定该第一路径MTU;根据该第一路径MTU及预设封装长度,确定接入该源交换机的源虚拟机与接入该目的交换机的目的虚拟机之间的第二路径MTU。
源虚拟机101用于通过该源交换机102向该目的虚拟机103发送至少一个数据报文,使得该源交换机根据探测到的第二路径MTU,返回与该至少一个数据报文对应的至少一个响应报文;根据该至少一个响应报文,获取该第二路径MTU。
参见图1B,可选地,该系统还包括控制器105。
该源交换机102还用于向该控制器105发送该第二路径MTU。该控制器105用于获取该源交换机发送的第二路径MTU,该第二路径MTU为该源交换机接入的该源虚拟机与该目的虚拟机之间的路径MTU;监听该源虚拟机发送给该源交换机的数据报文;当确定该数据报文的长度大于该第二路径MTU时,向该源虚拟机发送第三响应报文,该第三响应报文用于指示该数据报文的长度大于该第二路径MTU。
进一步地,该网络系统可以为虚拟可扩展局域网(英文:Virtual ExtensibleLocal Area Network,简称:VXLAN),所述VXLAN包括多个数据中心以及多个虚拟机,不同数据中心之间通过广域网(英文:Wide Area Network,简称:WAN)连接。
每个数据中心中包括多个交换机,至少一个交换机配置有VXLAN隧道端点(英文:VXLAN Tunnel Endpoint,简称:VTEP),通过配置的VTEP,与同一数据中心内的其他交换机或者其他数据中心内的交换机实现隧道互通。任一虚拟机可以接入交换机,通过任两个交换机之间的隧道,与接入另一交换机的虚拟机实现通信。另外,数据中心中还可以包括控制器,控制器可以与交换机连接,为交换机或者接入交换机的虚拟机提供服务。
图2是本发明实施例提供的一种VXLAN的结构示意图,参见图2,该VXLAN包括:数据中心(英文:Data Center)DC1、WAN和数据中心DC2。其中,数据中心DC1包括虚拟机(英文:Virtual Machine)VM1、架顶交换机(英文:Top of Rack)ToR1、架顶交换机ToR2、核心交换机Spine1、核心交换机Spine2、控制器Controller1,数据中心DC2包括虚拟机VM2、架顶交换机ToR3、核心交换机Spine3和控制器Controller2,数据中心DC1与数据中心DC2之间可通过WAN连接。所述Controller1和Controller2可以是网络管理系统。
ToR1配置有隧道端点VTEP1,ToR3配置有隧道端点VTEP3,隧道端点VTEP1与隧道端点VTEP3之间通过隧道进行通信,该隧道至少包括一个Spine。且,VM1接入ToR1,VM2接入ToR3,VM1与VM2之间的路径包括从VM1到VTEP1之间的路径、VTEP1与VTEP3之间的隧道以及VTEP3到VM2之间的路径。
ToR1可以多次向ToR3发送探测报文,从而探测到ToR1与ToR3之间的路径MTU,并确定VM1与VM2之间的路径MTU。之后,ToR1可以根据VM1与VM2之间的路径MTU,控制虚拟机VM1所发送的报文的长度。或者,ToR1还可以向Controller1发送VM1与VM2之间的路径MTU,由Controller1控制虚拟机VM1所发送的报文的长度。
图3是本发明实施例提供的一种源交换机的结构示意图,参见图3,包括:收发器301、存储器302和处理器303,收发器301配置有至少一个VTEP3011,通过配置的VTEP3011,与其他交换机配置的VTEP进行通信。该收发器301和该存储器302分别与该处理器303连接,该存储器302存储有程序代码,该处理器303用于调用该程序代码,执行以下操作:
通过收发器301,根据目的交换机的地址和预设路径MTU,发送至少一个探测报文,并获取与该至少一个探测报文对应的至少一个响应报文,该至少一个响应报文包括第一响应报文和第二响应报文中的至少一个,该第一响应报文用于指示当前的预设路径MTU大于源交换机与该目的交换机之间的第一路径MTU,该第二响应报文用于指示当前的预设路径MTU不大于该第一路径MTU;
根据接收到该第二响应报文时的预设路径MTU,确定该第一路径MTU;
根据该第一路径MTU及预设封装长度,确定接入该源交换机的源虚拟机与接入该目的交换机的目的虚拟机之间的第二路径MTU。
可选地,该处理器303还用于调用该程序代码,执行以下操作:
向控制器发送该第二路径MTU,使得该控制器监听该源虚拟机发送给该源交换机的数据报文,并根据该第二路径MTU对监听到的数据报文进行响应。
基于图2所示的网络系统,该源交换机可以为图2中的交换机ToR。如,该源交换机为ToR1,目的交换机为ToR3,则ToR1根据ToR3的地址和预设路径MTU,发送至少一个探测报文,并获取到与该至少一个探测报文对应的至少一个响应报文,从而根据该至少一个响应报文和对应的预设路径MTU,确定ToR1与ToR3之间的第一路径MTU,根据第一路径MTU和预设封装长度确定VM1与VM2之间的第二路径MTU。
图4是本发明实施例提供的一种源虚拟机的结构示意图,参见图4,包括:接收器401、发射器402、存储器403和处理器404,该接收器401、该发射器402和该存储器403分别与该处理器404连接,该存储器403存储有程序代码,该处理器404用于调用该程序代码,执行以下操作:
通过发射器402,向源交换机发送发往目的虚拟机的至少一个数据报文,使得该源交换机或控制器根据探测到的第二路径MTU,返回与该至少一个数据报文对应的至少一个响应报文;
通过接收器401,接收该至少一个响应报文;
根据该至少一个响应报文,确定该第二路径MTU;
其中,该第二路径MTU由该源交换机根据探测到的第一路径MTU及预设封装长度确定,该第一路径MTU为该源交换机与该目的虚拟机接入的目的交换机之间的路径MTU,该第二路径MTU为该源虚拟机与该目的虚拟机之间的路径MTU;
该响应报文为第三响应报文或第四响应报文,该第三响应报文用于指示对应数据报文的长度大于该第二路径MTU,该第四响应报文用于指示对应数据报文的长度不大于该第二路径MTU。
基于图2所示的网络系统,该源交换机可以为图2中的虚拟机VM。如,该源虚拟机为VM1,目的虚拟机为VM2,则VM1通过ToR1向VM2发送至少一个数据报文,使得该ToR1或控制器根据探测到的第二路径MTU,返回与该至少一个数据报文对应的至少一个响应报文,则该VM1可根据该至少一个响应报文,确定该第二路径MTU。
图5是本发明实施例提供的一种控制器的结构示意图,参见图4,包括:接收器501、发射器502、存储器503和处理器504,该接收器501、该发射器502和该存储器503分别与该处理器504连接,该存储器503存储有程序代码,该处理器504用于调用该程序代码,执行以下操作:
通过接收器501,获取源交换机发送的第二路径MTU,该第二路径MTU为接入该源交换机的源虚拟机与目的虚拟机之间的路径MTU;
监听该源虚拟机发送给该源交换机的数据报文;
当确定该数据报文的长度大于该第二路径MTU时,通过发射器502,向该源虚拟机发送第三响应报文,该第三响应报文用于指示该数据报文的长度大于该第二路径MTU。
基于图2所示的网络系统,该控制器可以为图2中的控制器Controller。如,该控制器为Controller1,则在ToR1确定第二路径MTU后,Controller1获取ToR1发送的第二路径MTU,并监听VM1发送给ToR1的数据报文,当确定该数据报文的长度大于该第二路径MTU时,向虚拟机VM1发送第三响应报文,以指示该数据报文的长度大于该第二路径MTU。
图6是本发明实施例提供的一种探测路径MTU的方法流程图,如图6所示,该探测路径MTU的方法的交互主体为源虚拟机和源交换机,包括以下步骤:
601、源交换机根据目的交换机的地址和预设路径MTU,发送第一探测报文,并获取与该探测报文对应的响应报文。
本发明实施例中,将源交换机与目的交换机之间的路径MTU称为第一路径MTU,实际应用时,源交换机与目的交换机之间的路径可能会发生动态变化,相应的,该第一路径MTU也会发生变化,则为了确定源交换机与目的交换机之间当前的第一路径MTU,源交换机可以采用发送探测报文的方式进行探测。
具体地,源交换机可以根据目的交换机的地址和预设路径MTU,生成第一探测报文,使得第一探测报文的长度等于预设路径MTU,并向目的交换机发送该第一探测报文。其中,该预设MTU可由源交换机预先根据一般的路径MTU的大小设置,本发明实施例对此不做限定。
例如,源交换机的预设路径MTU为1600字节,则向目的交换机发送的第一探测报文的长度为1600字节。
进一步地,源交换机可以根据预设交换机地址列表,确定目的交换机的地址,根据目的交换机的地址,对待发送的原始报文进行封装,即为原始报文封装一层以源交换机的地址为源设备地址、以该目的交换机的地址为目标设备地址的外层头,使得封装后的长度等于预设路径MTU,将封装后的报文作为第一探测报文。
其中,该预设交换机地址列表中包括多个交换机的地址,网络系统中的每个交换机均可获取该预设交换机地址列表,并对该预设交换机地址列表进行动态更新。
源交换机向目的交换机发送第一探测报文后,可以获取与该探测报文对应的响应报文。其中,该响应报文用于对该第一探测报文进行响应,可以为第一响应报文或第二响应报文,该第一响应报文用于指示当前的预设路径MTU大于该源交换机与该目的交换机之间的第一路径MTU,该第二响应报文用于指示当前的预设路径MTU不大于该源交换机与该目的交换机之间的第一路径MTU。其中,该第一响应报文可以为ICMP(Internet ControlMessage Protocol,因特网控制报文协议)too big报文等,本发明实施例对此不做限定。
具体地,源交换机发送第一探测报文,并获取与该第一探测报文对应的响应报文的过程可以包括以下步骤1或2:
1、源交换机根据当前的预设路径MTU生成第一探测报文,发送第一探测报文后,第一探测报文会在源交换机与目的交换机之间的路径中传输。如果第一探测报文的长度大于路径中的某一中间设备的MTU,则该第一探测报文将无法通过该中间设备发送至目的交换机,此时,该中间设备将根据该第一探测报文中的源设备地址,即该源交换机的地址,向该源交换机发送第一响应报文,以指示该探测报文的长度过大,则该源交换机接收该第一响应报文。
由于路径MTU为路径上所有设备的MTU的最小值,该第一探测报文的长度大于该中间设备的MTU,则必然大于该源交换机与该目的交换机之间的第一路径MTU。因此,该第一响应报文可以用于指示该探测报文的长度大于该第一路径MTU,也即是,当前的预设路径MTU大于第一路径MTU。
2、源交换机根据当前的预设路径MTU生成第一探测报文,发送第一探测报文后,第一探测报文在源交换机与目的交换机之间的路径中传输。如果第一探测报文的长度不大于路径中任一中间设备的MTU,则该第一探测报文可通过路径中的全部中间设备,成功发送至目的交换机,该目的交换机接收到该第一探测报文时,将根据该第一探测报文中的源设备地址,即该源交换机的地址,向源交换机发送第二响应报文,以指示成功接收到该第一探测报文,则该源交换机接收该第二响应报文。
由于该第一探测报文能够通过全部中间设备,到达目的交换机,则该第一探测报文的长度必然不大于路径中任一中间设备的MTU,因此,该第二响应报文可以用于指示该第一探测报文的长度不大于该第一路径MTU,也即是,当前的预设路径MTU不大于该第一路径MTU。。
需要说明的一点是,发送该第一探测报文的目的在于根据该第一探测报文对应的响应报文,确定第一探测报文的长度是大于源交换机与目的交换机之间的路径MTU,还是不大于源交换机与目的交换机之间的路径MTU,从而确定当前的预设路径MTU是大于源交换机与目的交换机之间的路径MTU,还是不大于源交换机与目的交换机之间的路径MTU。因此,本发明实施例仅关注于该第一探测报文的长度,而无需关注该第一探测报文的内容。实际上,该第一探测报文可以携带长度信息、协议类型等相关内容,本发明实施例对该第一探测报文的内容不做限定。
需要说明的另一点是,本发明实施例仅是以源交换机对与一个目的交换机之间的路径MTU进行探测为例,而实际应用中,源交换机还可以根据预设交换机地址列表,确定多个目的交换机的地址,并根据每个目的交换机的地址,向每个目的交换机分别发送至少一个探测报文,以便对该源交换机与每个目的交换机之间的路径MTU进行探测,具体过程在此不再赘述。
602、当源交换机接收到第一响应报文时,减小该预设路径MTU,根据减小后的预设MTU生成第二探测报文,并继续根据目的交换机的地址,发送该第二探测报文。
当接收到该源交换机与该目的交换机之间路径上的任一中间设备发送的第一响应报文时,源交换机将在该预设路径MTU的基础上,将该预设路径MTU减去预设值,得到减小后的预设路径MTU,根据减小后的预设路径MTU生成第二探测报文,并继续根据目的交换机的地址,向目的交换机发送该第二探测报文,接收与该第二探测报文对应的响应报文。
其中,该预设值可由源交换机预先确定,也可随机确定,本发明实施例对此不做限定。
另外,减小预设路径MTU后,生成第二探测报文时,该源交换机可以在第一探测报文的基础上,将该第一探测报文的长度减小,使得减小后得到的报文长度等于减小后的预设MTU,将长度减小后的报文作为第二探测报文。或者,该源交换机也可以重新生成长度等于减小后的预设路径MTU的报文,作为第二探测报文。本发明实施例对生成第二探测报文的方式不做限定。
后续过程中,当与该第二探测报文对应的响应报文仍为第一响应报文时,源交换机继续减小预设路径MTU,并根据减小后的预设MTU生成第三探测报文,继续向目的交换机发送该第三探测报文,以此类推,直至源交换机接收到第二响应报文为止。
603、源交换机根据接收到第二响应报文时的预设路径MTU,确定该第一路径MTU。
当源交换机接收到目的交换机发送的第二响应报文时,表示与该第二响应报文对应的探测报文已成功发送至该目的交换机,则可以确定,本次发送的、与该第二响应报文对应的探测报文的长度不大于第一路径MTU,也即是当前的预设路径MTU不大于第一路径MTU,而与上一次发送的探测报文的长度对应的预设路径MTU大于第一路径MTU。此时,可将当前的预设路径MTU作为该第一路径MTU。
例如,如果当前的预设路径MTU为1450字节,向目的交换机发送根据当前的预设路径MTU生成的探测报文后,接收到目的交换机发送的第二响应报文,则源交换机即可将该源交换机与该目的交换机之间的第一路径MTU确定为1450字节。
源交换机通过多次根据预设路径MTU发送探测报文,并依次减小预设路径MTU,根据减小后的预设路径MTU生成长度减小后的探测报文,直至接收到目的交换机发送的第二响应报文时,将最后一次发送的探测报文,即多个探测报文中的长度最小的探测报文对应的预设路径MTU作为第一路径MTU。也即是,源交换机引入了学习机制,通过多次发送探测报文,并根据多个探测报文对应的响应报文进行学习,探测出第一路径MTU,以便根据第一路径MTU确定第二路径MTU。
需要说明的一点是,本发明实施例仅是以探测源交换机与目的交换机之间的一条路径的MTU的过程为例,而在实际应用中,源交换机可以配置多个端口,通过每个端口与目的交换机进行通信,且源交换机配置的不同端口与目的交换机之间的路径可以相同,也可以不同。
那么,为了更加准确地确定源交换机与目的交换机之间的第一路径MTU,源交换机还可以基于源交换机的多个端口和预设路径MTU分别发送探测报文,进而确定每个端口对应的路径MTU,再根据每个端口对应的路径MTU,确定第一路径MTU。
具体地,该源交换机可以遍历配置的每个端口,根据该目的交换机的地址以及预设路径MTU,基于遍历到的每个端口发送至少一个探测报文,并通过遍历到的每个端口,接收与该至少一个探测报文对应的至少一个响应报文,进而根据每个端口接收到第二响应报文时的预设路径MTU,确定每个端口对应的路径MTU。之后,源交换机可以从每个端口对应的路径MTU中,选取最小的路径MTU作为该第一路径MTU。
可选地,在ECMP(Equal-Cost Multipath Routing,等价路由)等网络场景下,源交换机可以选取一段连续范围内的端口号,如[100,200]等,对该范围所指示的每个端口进行遍历,确定每个端口对应的路径MTU。
604、源交换机根据该第一路径MTU及预设封装长度,确定接入该源交换机的源虚拟机与接入该目的交换机的目的虚拟机之间的第二路径MTU。
源虚拟机与目的虚拟机之间的路径包括从源虚拟机到源交换机之间的路径、源交换机与目的交换机之间的路径以及目的交换机到目的虚拟机之间的路径。相应的,每次源虚拟机向目的虚拟机发送数据报文时,会先向源交换机发送该数据报文,源交换机接收到该数据报文时,会按照隧道协议为该数据报文封装一层以源交换机的地址为源设备地址、以目的交换机的地址为目标设备地址的外层头,得到封装报文,源交换机向目的交换机发送封装报文,目的交换机接收到该封装报文后,会按照隧道协议对封装报文进行解封装,并将解封装后得到的报文发送给目的虚拟机。
上述发送数据报文的过程中,由于源交换机对数据报文进行了封装,会导致封装报文的长度会比数据报文的长度多出预设封装长度。
则为了保证每次发送的数据报文均能通过源交换机与目的交换机之间的路径上的所有设备,源交换机确定源交换机与目的交换机之间的第一路径MTU之后,可以计算第一路径MTU与该预设封装长度之间的差值,将该差值确定为源虚拟机与目的虚拟机之间的第二路径MTU。那么,如果源虚拟机向目的虚拟机发送的数据报文的长度小于第二路径MTU,源交换机对该数据报文进行封装后,所得到的封装报文的长度就会小于第一路径MTU,该封装报文即可成功发送至目的交换机。
需要说明的是,本发明实施例仅是以发送多次探测报文,探测出第一路径MTU,并探测出第二路径MTU为例,而在实际应用中,源交换机还可以每隔预设时长,探测一次第一路径MTU和第二路径MTU,进而实现周期性探测,以保证当源交换机与目的交换机之间的路径随时间发生变化时,也能够准确地探测出变化后的路径MTU。
605、源虚拟机通过源交换机向目的虚拟机发送第一数据报文。
源虚拟机要向目的虚拟机发送数据时,会以源虚拟机的地址为源设备地址,以目的虚拟机的地址为目标设备地址,生成包含待发送数据的第一数据报文,通过源交换机向目的虚拟机发送该第一数据报文,由源交换机将第一数据报文转发至目的虚拟机。
606、源交换机获取该源虚拟机发往该目的虚拟机的第一数据报文。
源交换机接收到该第一数据报文时,并不会直接对该第一数据报文进行封装和转发,而是先获取该第一数据报文的长度,将该第一数据报文的长度与该第二路径MTU进行比较,判断该第一数据报文的长度是否大于第二路径MTU。
607、当源交换机确定该第一数据报文的长度大于该第二路径MTU时,向该源虚拟机发送第三响应报文,该第三响应报文用于指示该第一数据报文的长度大于该第二路径MTU。
当源交换机确定第一数据报文的长度大于该第二路径MTU时,表示该第一数据报文封装后得到的封装报文的长度将大于该第一路径MTU,则该第一数据报文无法成功发送至目的交换机,相应的,也无法发送至目的虚拟机。
此时,该源交换机可以向该源虚拟机发送第三响应报文,指示该第一数据报文的长度大于该第二路径MTU。例如,该源交换机可以以目的虚拟机的地址为源地址,代为发送第三响应报文至源虚拟机。其中,该第三响应报文可以为ICMP too big报文等,本发明实施例对此不做限定。
在本发明实施例提供的另一实施例中,如果该第一数据报文的长度不大于第二路径MTU,源交换机即可确定对第一数据报文进行封装后得到的封装报文可以成功发送至目的交换机,则源交换机可以对第一数据报文进行封装,封装后发送至目的交换机,且源交换机还可以向源虚拟机发送第四响应报文,该第四响应报文用于指示第一数据报文的长度不大于源虚拟机与目的虚拟机之间的第二路径MTU。
608、源虚拟机接收到源交换机发送的第三响应报文时,生成第二数据报文,该第二数据报文的长度小于该第一数据报文的长度,继续向该源交换机发送第二数据报文,直至接收到第四响应报文。
源虚拟机接收到该第三响应报文时,表示该第一数据报文的长度过大,不能成功发送至目的交换机,则源虚拟机可以生成长度小于该第一数据报文长度的第二数据报文,继续向该源交换机发送第二数据报文。
其中,生成第二数据报文时,该源虚拟机可以将该第一数据报文划分为多个长度较小的数据报文,将划分得到的其中一个数据报文作为第二数据报文,发送至源交换机,后续再发送划分得到的其他数据报文。
后续过程中,当源虚拟机接收到的与该第二数据报文对应的响应报文仍为第三响应报文时,继续生成长度小于该第二数据报文的第三数据报文,并继续向目的虚拟机发送该第三数据报文,以此类推,直至接收到第四响应报文为止。
需要说明的一点是,该源虚拟机对第一数据报文进行划分得到的报文数目可以由源虚拟机预先确定或者随机确定,该第一数据报文的长度与第二数据报文的长度之间的差值也可由源交换机预先确定或者随机确定,本发明实施例对此均不做限定。
需要说明的另一点是,源虚拟机与源交换机之间可以通过运行的TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)协议栈进行交互。例如,当源虚拟机发送第一数据报文后,接收到第三响应报文时,会根据TCP/IP协议栈,修改第一数据报文的长度,得到第二数据报文。
609、源虚拟机根据与该第四响应报文对应的数据报文的长度,确定该第二路径MTU。
当源虚拟机接收到源交换机发送的第四响应报文时,表示与该第四响应报文对应的数据报文可以成功发送至该目的虚拟机,则可以确定,本次发送的、与该第四响应报文对应的数据报文的长度不大于第二路径MTU,而上一次发送的数据报文的长度大于第二路径MTU。此时,源虚拟机可将与该第四响应报文对应的数据报文的长度确定为该第二路径MTU。
源虚拟机通过多次发送数据报文,并接收到与待发送数据报文对应的第三响应报文时减小数据报文的长度,直至接收到第四响应报文为止,将最后一次发送的数据报文的长度,即多个数据报文中的最小长度作为第二路径MTU。
本发明实施例中,通过在源交换机中定义第三响应报文和第四响应报文,以第三响应报文对源虚拟机发出的长度过大的数据报文进行预警,并在源虚拟机中引入了学习机制,使得源虚拟机能够通过多次发送数据报文,并根据多个数据报文对应的响应报文进行学习,确定出第二路径MTU。
例如,源虚拟机接收到源交换机的至少一个响应报文后,源虚拟机的TCP/IP协议栈可根据该至少一个响应报文,学习到第二路径MTU。
后续过程中,源虚拟机可根据学习到的第二路径MTU发送数据报文,保证发送的数据报文的长度不大于该第二路径MTU,避免了报文发送失败的问题,提高了发送报文的成功率。
需要说明的是,本发明实施例仅是以源交换机对源虚拟机发送的每个数据报文均进行响应为例,而在实际应用中,源交换机还可以对源虚拟机发送的数据报文进行采样,根据第二路径MTU,对采样得到的数据报文进行响应,而对于其他的数据报文,源交换机直接对这些数据报文进行封装后发送至目的虚拟机即可。其中,源交换机可以按照采样频率进行采样,源交换机的采样频率可以预先确定,也可以根据当前的空闲硬件资源确定,或者源交换机还可以采用镜像、sFlow(网络监测技术)、NetStream(报文统计功能)等技术对数据报文进行采样,本发明实施例对此均不做限定。
源交换机通过对源虚拟机发送的数据报文进行采样,对采样得到的数据报文进行响应,保证了源虚拟机根据源交换机返回的响应报文学习到第二路径MTU,而且,无需对源虚拟机发送的每个报文进行响应,减小了源交换机的压力。
本发明实施例中的源交换机和目的交换机均可为网络系统中的任一交换机。可选地,源交换机和目的交换机可以为位于VXLAN中同一数据中心内的两个交换机,也可以为位于VXLAN中不同数据中心的两个交换机,或者,源交换机和目的交换机还可以为跨IP/MPLS公网的二层互联网络中的两个交换机,本发明实施例对该源交换机和该目的交换机不做限定。
可选地,源交换机可以根据需求,确定需要探测路径MTU的目的交换机,如源交换机可以仅探测与不同数据中心的交换机之间的路径MTU,而无需探测同一数据中心内的交换机之间的路径MTU。
本发明实施例通过发送至少一个探测报文的方式进行学习,从而探测到源交换机与目的交换机之间的第一路径MTU,并确定源虚拟机与目的虚拟机之间的第二路径MTU,以便根据第二路径MTU控制源虚拟机所发送报文的长度,避免了报文发送失败的问题,提高了发送报文的成功率。
上述实施例中,源交换机在确定第二路径MTU以后,根据第二路径MTU,对源虚拟机发送的报文进行响应,而在实际应用中,还可以由控制器监听源虚拟机发送给源交换机的报文,并根据该第二路径MTU对监听到的报文进行响应。
也即是,参见图7,在步骤604之后,该方法还包括:
610、源交换机向控制器发送该第二路径MTU。
源交换机确定源虚拟机与目的虚拟机之间的第二路径MTU后,可以向控制器发送该第二路径MTU。其中,该控制器可以为堡垒机、控制器等,本发明实施例对此不做限定。
611、控制器获取源交换机发送的第二路径MTU,并监听源虚拟机发送给该源交换机的数据报文。
该控制器接收该源交换机发送的第二路径MTU,并存储该第二路径MTU。后续过程中,控制器即可监听源虚拟机通过该源交换机发往目的虚拟机的数据报文,每当监听到数据报文时,确定该数据报文的长度,将该数据报文的长度与该第二路径MTU进行比较,判断该数据报文的长度是否大于第二路径MTU。
另外,该控制器还可以对源虚拟机发送给该源交换机的数据报文进行分析,例如,分析该数据报文耗费的流量、数据报文的长度、数据报文的目标设备地址等,本发明实施例对此不做限定。
612、当确定该数据报文的长度大于该第二路径MTU时,控制器向该源虚拟机发送第三响应报文,该第三响应报文用于指示该数据报文的长度大于该第二路径MTU。
当控制器确定第一数据报文的长度大于该第二路径MTU时,表示该第一数据报文封装后得到的封装报文的长度将大于该第一路径MTU,则该第一数据报文无法成功发送至目的交换机,相应的,也无法发送至目的虚拟机。
此时,该控制器可以向该源虚拟机发送第三响应报文,以指示该第一数据报文的长度大于该第二路径MTU。例如,该控制器可以以目的虚拟机的地址为源地址,代为发送第三响应报文至源虚拟机。
在本发明实施例提供的另一实施例中,如果该第一数据报文的长度不大于第二路径MTU,控制器即可确定对第一数据报文进行封装后得到的封装报文可以成功发送至目的交换机,则控制器可以不对该第一数据报文进行响应,也可以向源虚拟机发送第四响应报文,该第四响应报文用于指示第一数据报文的长度不大于源虚拟机与目的虚拟机之间的第二路径MTU。
613、源虚拟机接收到控制器发送的第三响应报文时,生成第二数据报文,该第二数据报文的长度小于该第一数据报文的长度,继续向该控制器发送第二数据报文,直至接收到第四响应报文。
614、源虚拟机根据与该第四响应报文对应的数据报文的长度,确定该第二路径MTU。
上述步骤613-614与上述步骤608-609类似,区别仅在于执行主体不同,上述步骤613-614的执行主体为控制器,而步骤608-609的执行主体为源交换机,具体过程在此不再赘述。
本发明实施例中,通过在控制器中定义第三响应报文和第四响应报文,以第三响应报文对源虚拟机发出的长度过大的数据报文进行预警,并在源虚拟机中引入了学习机制,使得源虚拟机能够通过多次发送数据报文,并根据多个数据报文对应的响应报文进行学习,探测出第二路径MTU。
后续过程中,源虚拟机可根据学习到的第二路径MTU发送数据报文,保证发送的数据报文的长度不大于该第二路径MTU,避免了报文发送失败的问题,提高了发送报文的成功率。
需要说明的是,本发明实施例仅是以控制器对源虚拟机发送的每个数据报文均进行响应为例,而在实际应用中,控制器还可以对源虚拟机发送的数据报文进行采样,根据第二路径MTU,对采样得到的数据报文进行响应,而对于其他的数据报文,控制器直接对这些数据报文进行封装后发送至目的虚拟机即可。
控制器通过对源虚拟机发送的数据报文进行采样,对采样得到的数据报文进行响应,保证了源虚拟机根据控制器返回的响应报文学习到第二路径MTU,而且,无需对源虚拟机发送的每个报文进行响应,减小了控制器的压力。
本发明实施例通过源交换机确定第二路径MTU后,向控制器发送第二路径MTU,由处理能力较强的控制器监听源虚拟机发送给源交换机的报文,并代替源交换机对监听到的报文进行响应,提高了响应效率,无需耗费源交换机的硬件资源,减小了源交换机的压力,且能够防止源交换机被探测攻击,提高了网络系统的安全性。
图8是本发明实施例提供的一种探测路径MTU的方法的流程图,本发明实施例的执行主体为源交换机,参见图8,该方法可以包括:
801、根据目的交换机的地址和预设路径MTU,发送至少一个探测报文,并获取与该至少一个探测报文对应的至少一个响应报文,该至少一个响应报文包括第一响应报文和第二响应报文中的至少一个,该第一响应报文用于指示当前的预设路径MTU大于源交换机与该目的交换机之间的第一路径MTU,该第二响应报文用于指示当前的预设路径MTU不大于该第一路径MTU;
802、根据接收到第二响应报文时的预设路径MTU,确定该第一路径MTU;
803、根据该第一路径MTU及预设封装长度,确定接入该源交换机的源虚拟机与接入该目的交换机的目的虚拟机之间的第二路径MTU。
本发明实施例提供的方法,通过发送至少一个探测报文的方式进行学习,从而探测到源交换机与目的交换机之间的第一路径MTU,并确定源虚拟机与目的虚拟机之间的第二路径MTU,以便根据第二路径MTU控制源虚拟机所发送报文的长度,避免了报文发送失败的问题,提高了发送报文的成功率。
可选地,该根据该第一路径MTU及预设封装长度,确定接入该源交换机的源虚拟机与接入该目的交换机的目的虚拟机之间的第二路径MTU之后,该方法还包括:
获取该源虚拟机发往该目的虚拟机的数据报文;
当确定该数据报文的长度大于该第二路径MTU时,向该源虚拟机发送第三响应报文,该第三响应报文用于指示该数据报文的长度大于该第二路径MTU。
可选地,该根据目的交换机的地址预设路径MTU,发送至少一个探测报文,包括:
根据预设交换机地址列表,确定多个目的交换机的地址;
根据每个目的交换机的地址以及该预设路径MTU,向每个目的交换机发送至少一个探测报文。
可选地,该根据目的交换机的地址以及该预设路径MTU,发送至少一个探测报文,并获取与该至少一个探测报文对应的至少一个响应报文,包括:
根据该目的交换机的地址以及该预设路径MTU,发送第一探测报文;
当接收到该第一响应报文时,减小该预设路径MTU,根据该减小后的预设MTU生成第二探测报文。
可选地,该根据目的交换机的地址以及该预设路径MTU,发送至少一个探测报文,并获取与该至少一个探测报文对应的至少一个响应报文,包括:
遍历配置的每个端口;
根据该目的交换机的地址以及该预设路径MTU,基于遍历到的每个端口发送至少一个探测报文;
通过该遍历到的端口,接收与该至少一个探测报文对应的至少一个响应报文。
可选地,根据接收到所述第二响应报文时的预设路径MTU,确定所述第一路径MTU,包括:
根据每个端口接收到所述第二响应报文时的预设路径MTU,确定每个端口对应的路径MTU;
根据每个端口对应的路径MTU,确定该第一路径MTU。
可选地,该根据该第一路径MTU及预设封装长度,确定接入该源交换机的源虚拟机与接入该目的交换机的目的虚拟机之间的第二路径MTU,包括:
计算该第一路径MTU与该预设封装长度之间的差值;
将该差值确定为该第二路径MTU。
可选地,该根据该第一路径MTU及预设封装长度,确定接入该源交换机的源虚拟机与接入该目的交换机的目的虚拟机之间的第二路径MTU之后,该方法还包括:
向控制器发送该第二路径MTU,使得该控制器监听该源虚拟机发送给该本端的数据报文,根据该第二路径MTU对监听到的数据报文进行响应。
图9是本发明实施例提供的一种探测路径MTU的方法的流程图,本发明实施例的执行主体为源虚拟机,参见图9,该方法可以包括:
901、通过源交换机向目的虚拟机发送至少一个数据报文,使得该源交换机或控制器根据探测到的第二路径MTU,返回与该至少一个数据报文对应的至少一个响应报文;
902、接收该至少一个响应报文,根据该至少一个响应报文,确定该第二路径MTU;
其中,该第二路径MTU由该源交换机根据探测到的第一路径MTU及预设封装长度确定,该第一路径MTU为该源交换机与该目的虚拟机接入的目的交换机之间的路径MTU,该第二路径MTU为该源虚拟机与该目的虚拟机之间的路径MTU;
该响应报文为第三响应报文或第四响应报文,该第三响应报文用于指示对应数据报文的长度大于该第二路径MTU,该第四响应报文用于指示对应数据报文的长度不大于该第二路径MTU。
本发明实施例提供的方法,通过向源交换机发送发往目的虚拟机的至少一个数据报文,使得该源交换机或控制器根据探测到的第二路径MTU,返回与该至少一个数据报文对应的至少一个响应报文,并根据该至少一个响应报文,确定该第二路径MTU,以便根据第二路径MTU控制所发送报文的长度,避免了报文发送失败的问题,提高了发送报文的成功率。
可选地,该方法还包括:
向该源交换机发送发往目的虚拟机的第一数据报文;
如果接收到的与该第一数据报文对应的响应报文为该第三响应报文时,生成第二数据报文,该第二数据报文的长度小于该第一数据报文的长度;
继续向该源交换机发送该第二数据报文,直至接收到该第四响应报文时,根据与该第四响应报文对应的数据报文的长度,确定该第二路径MTU。
图10是本发明实施例提供的一种探测路径MTU的方法的流程图,本发明实施例的执行主体为控制器,参见图9,该方法可以包括:
1001、获取源交换机发送的第二路径MTU,该第二路径MTU为接入该源交换机的源虚拟机与目的虚拟机之间的路径MTU;
1002、监听该源虚拟机发送给该源交换机的数据报文;
1003、当确定该数据报文的长度大于该第二路径MTU时,向该源虚拟机发送第三响应报文,该第三响应报文用于指示该数据报文的长度大于该第二路径MTU。
本发明实施例提供的方法,通过源交换机确定第二路径MTU后,向控制器发送第二路径MTU,由处理能力较强的控制器监听源虚拟机发送给源交换机的报文,并代替源交换机对监听到的报文进行响应,提高了响应效率,无需耗费源交换机的硬件资源,减小了源交换机的压力,且能够防止源交换机被探测攻击,提高了网络系统的安全性。
可选地,所述第二路径MTU由所述源交换机根据所述源交换机与所述目的虚拟机接入的目的交换机之间的第一路径MTU以及预设封装长度确定,所述第一路径MTU由所述源交换机根据所述目的交换机的地址和预设路径MTU发送至少一个探测报文,获取与所述至少一个探测报文对应的至少一个响应报文,并根据接收到第二响应报文时的预设路径MTU确定,所述至少一个响应报文包括第一响应报文和所述第二响应报文中的至少一个。
图11是本发明实施例提供的一种探测路径MTU的装置结构示意图,参见图11,该装置包括:发送模块1101、接收模块1102、第一确定模块1103和第二确定模块1104。
发送模块1101用于根据目的交换机的地址和预设路径MTU,发送至少一个探测报文。
接收模块1102用于获取与该至少一个探测报文对应的至少一个响应报文,该至少一个响应报文包括第一响应报文和第二响应报文中的至少一个,该第一响应报文用于指示当前的预设路径MTU大于源交换机与该目的交换机之间的第一路径MTU,该第二响应报文用于指示当前的预设路径MTU不大于该第一路径MTU。
第一确定模块1103用于根据接收到该第二响应报文时的预设路径MTU,确定该第一路径MTU。
第二确定模块1104用于根据该第一路径MTU及预设封装长度,确定接入该源交换机的源虚拟机与接入该目的交换机的目的虚拟机之间的第二路径MTU。
本发明实施例提供的装置,通过发送至少一个探测报文的方式进行学习,从而探测到源交换机与目的交换机之间的第一路径MTU,并确定源虚拟机与目的虚拟机之间的第二路径MTU,以便根据第二路径MTU控制源虚拟机所发送报文的长度,避免了报文发送失败的问题,提高了发送报文的成功率。
可选地,该接收模块1102,还用于获取该源虚拟机发往该目的虚拟机的数据报文;
该发送模块1101,还用于当确定该数据报文的长度大于该第二路径MTU时,向该源虚拟机发送第三响应报文,该第三响应报文用于指示该数据报文的长度大于该第二路径MTU。
可选地,该发送模块1101还用于根据预设交换机地址列表,确定多个目的交换机的地址;根据每个目的交换机的地址以及该预设路径MTU,向每个目的交换机发送至少一个探测报文。
可选地,该发送模块101还用于根据该目的交换机的地址以及该预设路径MTU,发送第一探测报文;
该接收模块1102还用于当接收到该第一响应报文时,减小该预设路径MTU,根据该减小后的预设MTU生成第二探测报文;
该发送模块1101还用于继续根据该目的交换机的地址,发送该第二探测报文。
可选地,该发送模块1101还用于遍历配置的每个端口;根据该目的交换机的地址以及该预设路径MTU,基于遍历到的每个端口发送至少一个探测报文;
该接收模块1102还用于通过该遍历到的端口,接收与该至少一个探测报文对应的至少一个响应报文。
可选地,该第一确定模块1103还用于根据根据每个端口接收到该第二响应报文时的预设路径MTU,确定每个端口对应的路径MTU;根据每个端口对应的路径MTU,确定该第一路径MTU。
可选地,该第二确定模块1104还用于计算该第一路径MTU与该预设封装长度之间的差值;将该差值确定为该第二路径MTU。
可选地,该发送模块1101还用于向控制器发送该第二路径MTU,使得该控制器监听该源虚拟机发送给该源交换机的数据报文,根据该第二路径MTU对监听到的数据报文进行响应。
结合上述图6所示实施例,发送模块1101和接收模块1102可以用于执行上述步骤601-602,第一确定模块1103可以用于执行上述步骤603,第二确定模块1104可以用于执行上述步骤604。
图12是本发明实施例提供的一种探测路径MTU的装置结构示意图,参见图12,该装置包括:发送模块1201、接收模块1202和确定模块1203。
发送模块1201用于通过源交换机向目的虚拟机发送至少一个数据报文,使得该源交换机或控制器根据探测到的第二路径MTU,返回与该至少一个数据报文对应的至少一个响应报文;
接收模块1202用于接收该至少一个响应报文;
确定模块1203用于根据该至少一个响应报文,确定该第二路径MTU;
其中,该第二路径MTU由该源交换机根据探测到的第一路径MTU及预设封装长度确定,该第一路径MTU为该源交换机与该目的虚拟机接入的目的交换机之间的路径MTU,该第二路径MTU为该源虚拟机与该目的虚拟机之间的路径MTU;
该响应报文为第三响应报文或第四响应报文,该第三响应报文用于指示对应数据报文的长度大于该第二路径MTU,该第四响应报文用于指示对应数据报文的长度不大于该第二路径MTU。
本发明实施例提供的装置,通过向源交换机发送发往目的虚拟机的至少一个数据报文,使得该源交换机或控制器根据探测到的第二路径MTU,返回与该至少一个数据报文对应的至少一个响应报文,并根据该至少一个响应报文,确定该第二路径MTU,以便根据第二路径MTU控制所发送报文的长度,避免了报文发送失败的问题,提高了发送报文的成功率。
可选地,该发送模块1201还用于向该源交换机发送发往目的虚拟机的第一数据报文;
该接收模块1202还用于如果接收到的与该第一数据报文对应的响应报文为该第三响应报文时,生成第二数据报文,该第二数据报文的长度小于该第一数据报文的长度;
该发送模块1201还用于继续向该源交换机发送该第二数据报文,直至该接收模块接收到该第四响应报文时;
该确定模块1203还用于根据与该第四响应报文对应的数据报文的长度,确定该第二路径MTU。
结合上述图6和图7所示实施例,发送模块1201可以用于执行上述步骤605,接收模块1202可以用于执行上述步骤608或613,确定模块1203可以用于执行上述步骤609或614。
图13是本发明实施例提供的一种探测路径MTU的装置结构示意图,参见图13,该装置包括:获取模块1301、监听模块1302和响应模块1303。
获取模块1301用于获取源交换机发送的第二路径MTU,该第二路径MTU为接入该源交换机的源虚拟机与目的虚拟机之间的路径MTU;
监听模块1302用于监听该源虚拟机发送给该源交换机的数据报文;
响应模块1303用于当确定该数据报文的长度大于该第二路径MTU时,向该源虚拟机发送第三响应报文,该第三响应报文用于指示该数据报文的长度大于该第二路径MTU。
本发明实施例提供的装置,通过源交换机确定第二路径MTU后,向控制器发送第二路径MTU,由处理能力较强的控制器监听源虚拟机发送给源交换机的报文,并代替源交换机对监听到的报文进行响应,提高了响应效率,无需耗费源交换机的硬件资源,减小了源交换机的压力,且能够防止源交换机被探测攻击,提高了网络系统的安全性。
可选地,所述第二路径MTU由所述源交换机根据所述源交换机与所述目的虚拟机接入的目的交换机之间的第一路径MTU以及预设封装长度确定,所述第一路径MTU由所述源交换机根据所述目的交换机的地址和预设路径MTU发送至少一个探测报文,获取与所述至少一个探测报文对应的至少一个响应报文,并根据接收到第二响应报文时的预设路径MTU确定,所述至少一个响应报文包括第一响应报文和所述第二响应报文中的至少一个。
结合上述图7所示实施例,获取模块1301和监听模块1302可以用于执行上述步骤611,响应模块1303可以用于执行上述步骤612。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上该仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。