Итак, я искал способ изменить MTU интерфейсов на XenServer 6.2, но не нашел ничего, что подойдет мне ...
Один метод говорил об изменении 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
Кто-нибудь знает, что я делаю не так?
В вики Xen есть обсуждение того, как это сделать: Страница производительности сети Xen wiki. Коротко:
Включение Jumbo-кадров
Предположим, что eth6 и xenbr6 - это устройство и мост, соответствующие используемому соединению со скоростью 10 ГиБ / с.
Завершите работу пользовательских доменов:
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 это делается с помощью:
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
Столкнувшись с проблемами, связанными с MTU, может быть более эффективным изменить MSS, чем настраивать MTU отдельных ссылок. Похоже, эта платформа основана на Linux, поэтому iptables будет доступен. Эта пара правил iptables может уменьшить MSS для SYN-пакетов в обоих направлениях и, таким образом, избежать большинства проблем с 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.