XenServer 6.2 更改 mtu

XenServer 6.2 更改 mtu

因此,我一直在寻找更改 XenServer 6.2 上接口 MTU 的方法,但找不到适合我的方法……

一种方法是更改​​目录ifcnfg-intX中的文件/etc/sysconfig/network-scripts,但文件却不存在... 唯一存在的就是文件ifcnfg-lo。我是否只需要为每个接口创建一个文件?

然后我想,我只需制作一个启动脚本:

#!/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 无法连接 MTU,默认为 1500,必须是 1454

有谁知道我做错了什么?

答案1

Xen wiki 上有一些关于如何执行此操作的讨论:Xen wiki 网络性能页面。 简而言之:

启用巨型帧

假设 eth6 和 xenbr6 是与使用的 10 GiB/秒连接相对应的设备和网桥。

关闭用户域:

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`

将网络 MTU 设置为 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

验证:

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

答案2

当遇到与 MTU 相关的问题时,修改 MSS 可能比调整单个链接的 MTU 更有效。看起来该平台是基于 Linux 的,因此可以使用 iptables。这几条 iptables 规则可以减少双向 SYN 数据包的 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,则可以将它们永久添加到您的 iptables 配置中。

相关内容