Назад | Перейти на главную страницу

XenServer 6.2 изменение mtu

Итак, я искал способ изменить 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.