所以我已经四处寻找一种方法来改变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中。