XenServer 6.2更改MTU

所以我已经四处寻找一种方法来改变XenServer 6.2上的接口的MTU,但找不到任何适合我的东西…

有一种方法提到了修改/etc/sysconfig/network-scripts目录中的ifcnfg-intX文件,但这些文件并不存在……唯一的一个就是ifcnfg-lo文件。 我只需要为每个接口创build一个文件?

然后我想,我只是做一个启动脚本:

 #!/bin/bash #Saved as /etc/init.d/mtuchange.sh #Change mtu of interfaces ifconfig xenbr0 mtu 1454 ifconfig xenbr1 mtu 1454 ifconfig eth0 mtu 1454 ifconfig eth1 mtu 1454 

此脚本在控制台中运行时工作。

所以,要让它在开始运行:

 ln -s /etc/init.d/mtuchange.sh /etc/rc3.d/S99mtuchange 

但是,它不会运行…

我需要更改MTU的原因是由于一些奇怪的原因,XenCenter无法连接默认1500的MTU,它必须是1454

任何人都知道我在做什么错了?

关于如何做到这一点的Xen wiki有一些讨论: Xen wikinetworking性能页面 。 简而言之:

启用巨型帧

假设eth6和xenbr6是对应于所使用的10 GiB / sec连接的设备和网桥。

closures用户域:

 VMs=$(xe vm-list is-control-domain=false params=uuid --minimal | sed 's/,/ /g') for uuid in $VMs; do xe vm-shutdown uuid=$uuid; done` 

将networkingMTU设置为9000,并重新插入相关的PIF:

 net_uuid=`xe network-list bridge=xenbr6 params=uuid --minimal` xe network-param-set uuid=$net_uuid MTU=9000 PIFs=$(xe pif-list network-uuid=$net_uuid --minimal | sed 's/,/ /g') for uuid in $PIFs; do xe pif-unplug uuid=$uuid; xe pif-plug uuid=$uuid; done 

启动用户域(可能需要确保虚拟机一个接一个地启动以避免潜在的VIF静态分配问题):

 VMs=$(xe vm-list is-control-domain=false params=uuid --minimal | sed 's/,/ /g') for uuid in $VMs; do xe vm-start uuid=$uuid; done 

设置您将在用户域内使用的连接以使用MTU 9000.对于Linux VM,这是通过以下方式完成的:

 ETH=eth1 # the user domain connection you are concerned with ifconfig $ETH mtu 9000 up 

validation:

 xe vif-list network-uuid=$net_uuid params=MTU --minimal 

当遇到与MTU有关的问题时,修改MSS而不是调整单个链路的MTU可能更有效。 看起来这个平台是基于Linux的,所以iptables将可用。 这两个iptables规则可以在两个方向上减lessSYN数据包上的MSS,从而避免大部分MTU问题。

 iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1220 iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1220 

如果使用这组规则而不是更改MTU,则可以将其永久添加到您的iptablesconfiguration中。