Member
Статус: Не в сети Регистрация: 06.07.2004 Откуда: РФ Фото: 6
Всем привет. Итак, имеется в наличии: ББ - большой брат, игровая система на винде 7/8. Сетевуха на ББ имеет поддержку JF. СБ - средний брат, система на debian, которая содержит в себе дисковый массив и систему виртуализации. Сетевуха на СБ имеет поддержку JF. Гейт - система на дебиан, которая работает гейтом между локалкой и сетью Интернет, а также держит точку доступа для подключения к локалке по wi-fi. Сетевуха на гейте имеет поддержку JF, у wi-fi нет поддержки JF. свитч с поддержкой jumbo frame
Задача - попробовать задействовать в локалке jumbo frame.
Если я правильно понимаю, то в цепочке система - свитч - система каждый из компонентов должен поддерживать jf. В противном случае кадр просто не дойдёт до получателя. То есть, например, при схеме система MTU 9000 - свитч MTU 1500 - система MTU 9000 кадр размером более 1500, посланный любой из систем, дойдёт до свитча и там, грубо говоря, и останется. В смысле, будет отброшен.
Стало быть, начинаем включать поддержку jf по-порядку на каждом участнике локальной сети. Поехали. В случае ББ всё просто. Идём в свойства драйвера сетевухи и включаем. Работает. В случае свитча у меня было включено сразу.
Переходим к СБ и начинается самое интересное. Я использую qemu/kvm для виртуализации и linux bridge для обеспечения работы сети в виртуалках. То есть, я создаю бридж на этапе загрузки хост-системы и даю его виртуалкам для работы. Что такое бридж? Это просто виртуальный свитч. То есть, при включении виртуалки создается виртуальный сетевой интерфейс и включается в состав указанного бриджа. И вот здесь есть тонкость:
На текущий момент мне удалось сделать так, что и физический интерфейс на СБ и бридж и интерфейсы виртуалок имеют MTU 9000. Сделано очень просто: в файле /etc/network/interfaces указываем
Код:
auto lo eth0 eth1 br_lan allow-hotplug eth0 eth1
iface lo inet loopback
iface eth0 inet manual
iface eth1 inet manual
iface wlan0 inet manual
iface br_lan inet dhcp bridge_ports eth1 bridge_stp on bridge_fd 0 pre-up ifconfig eth1 mtu 9000
Интерфейсы eth0 и wlan0 на СБ пока не задействованы. Я выключил автозагрузку у виртуалок и отправил систему в ребут. По факту загрузки системы с таким конфигом я получил следующее:
Код:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether a0:36:9f:02:e1:22 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq master br_lan state UP mode DEFAULT qlen 1000 link/ether a0:36:9f:02:e1:23 brd ff:ff:ff:ff:ff:ff 4: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether 24:0a:64:0f:4a:66 brd ff:ff:ff:ff:ff:ff 5: br_lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP mode DEFAULT link/ether a0:36:9f:02:e1:23 brd ff:ff:ff:ff:ff:ff
Далее, запуск виртуалок дал такую картину:
Код:
7: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master br_lan state UNKNOWN mode DEFAULT qlen 500 link/ether fe:54:00:26:6b:8e brd ff:ff:ff:ff:ff:ff 8: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master br_lan state UNKNOWN mode DEFAULT qlen 500 link/ether fe:54:00:59:bb:8e brd ff:ff:ff:ff:ff:ff 9: vnet2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master br_lan state UNKNOWN mode DEFAULT qlen 500 link/ether fe:54:00:de:fb:81 brd ff:ff:ff:ff:ff:ff
И это клёво. Они сами получили MTU 9000, без дополнительных манипуляций с конфигами. Среди виртуалок есть debian и windows 8. Проверяем пинг из одной виртуалки в другую:
Код:
root@tarh-dlna:~# ping -s 8972 windows8 PING windows8.tarh.local (192.168.78.48) 8972(9000) bytes of data. 8980 bytes from windows8.tarh.local (192.168.78.48): icmp_req=1 ttl=128 time=0.407 ms 8980 bytes from windows8.tarh.local (192.168.78.48): icmp_req=2 ttl=128 time=0.433 ms 8980 bytes from windows8.tarh.local (192.168.78.48): icmp_req=3 ttl=128 time=0.486 ms 8980 bytes from windows8.tarh.local (192.168.78.48): icmp_req=4 ttl=128 time=0.441 ms 8980 bytes from windows8.tarh.local (192.168.78.48): icmp_req=5 ttl=128 time=0.513 ms 8980 bytes from windows8.tarh.local (192.168.78.48): icmp_req=6 ttl=128 time=0.538 ms 8980 bytes from windows8.tarh.local (192.168.78.48): icmp_req=7 ttl=128 time=0.505 ms
Работает. Включаем автозагрузку у пары виртуалок и отправляем хост-систему в ребут. После загрузки имеем:
Код:
root@tarh-cloud:~# ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether a0:36:9f:02:e1:22 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq master br_lan state UP mode DEFAULT qlen 1000 link/ether a0:36:9f:02:e1:23 brd ff:ff:ff:ff:ff:ff 4: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether 24:0a:64:0f:4a:66 brd ff:ff:ff:ff:ff:ff 5: br_lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP mode DEFAULT link/ether a0:36:9f:02:e1:23 brd ff:ff:ff:ff:ff:ff 6: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master br_lan state UNKNOWN mode DEFAULT qlen 500 link/ether fe:54:00:26:6b:8e brd ff:ff:ff:ff:ff:ff 7: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master br_lan state UNKNOWN mode DEFAULT qlen 500 link/ether fe:54:00:59:bb:8e brd ff:ff:ff:ff:ff:ff root@tarh-cloud:~#
Вроде работает.
Остался один только гейт. Сейчас на гейте пока нет JF. Пока что есть отдельно стоящий интерфейс, смотрящий в WAN, и есть бридж, в который включены интерфейс wi-fi адаптера и интерфейс ethernet, смотрящий в локалку. То есть, клиенты wi-fi включены в локалку скозняком. Они ипользует dhcp из локалки, в том числе. Поскольку у wi-fi нет JF, то возникает вопрос, как это всё реорганизовать. Еще раз напомню, бридж берет себе значение MTU по интерфейсу, включенному в бридж, с минимальным MTU. Смотрящий в WAN интерфейс трогать не нужно. С mtu на wi-fi сделать ничего нельзя.
И здесь, внимание, вопрос. Стало быть, что делать-то? Отрывать интерфейс wi-fi от бриджа и разруливать связь между проводной сетью и беспроводной с помощью маршрутизации? Или есть еще варианты? Подскажите, кто в курсе.
Member
Статус: Не в сети Регистрация: 06.07.2004 Откуда: РФ Фото: 6
targitaj писал(а):
В случае свитча у меня было включено сразу.
Наврал. У меня SLM2008T из серии Cisco SG200-08 8-Port Gigabit Smart Switch и потребовалось руками выставить MTU для каждого порта.
Добавлено спустя 1 час 3 минуты 40 секунд: Пришел к мысли, что надо wlan интерфейс отрывать от бриджа с проводными подключениями и делать для него отдельный бридж. А потом уже рулить. Например, виртуальную машину с ролью "сетевой шлюз" включать в оба этих бриджа и форвардить трафик через неё. Похоже, что это самый правильный способ.
Добавлено спустя 5 часов 13 минут 40 секунд: Надо уточнить несколько моментов. Гейт внедрен и работает уже пару лет. Вай-фай на нем реализован на простой PCI карте. Главная особенность гейта заключается в том, что оно не поддерживает аппаратную виртуализацию. По этой причине. Зато низкое энергопотребление и сетевуха Intel на борту. СБ был собран недавно и на нём тоже есть wi-fi. По этой причине. Машинка изначально бралась под виртуализацию. По идее, СБ заменит собой машину Гейт, в том числе.
В общем, получилось мне запустить отдельный бридж на СБ для работы wi-fi. /etc/network/interfaces
Код:
auto lo eth0 eth1 br_lan br_wlan allow-hotplug eth0 eth1
iface lo inet loopback
iface eth0 inet manual
iface eth1 inet manual
iface wlan0 inet manual
iface br_lan inet dhcp bridge_ports eth1 bridge_stp on bridge_fd 0 pre-up ifconfig eth1 mtu 9000
iface br_wlan inet manual bridge_ports wlan0 # bridge_stp on # bridge_fd 0 up /usr/sbin/brctl setageing br_wlan 0 up /usr/sbin/brctl stp br_wlan off
/etc/hostapd/hostapd.conf
Код:
interface=wlan0 bridge=br_wlan
В результате имеем
Код:
root@tarh-cloud:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 link/ether a0:36:9f:02:e1:22 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq master br_lan state UP qlen 1000 link/ether a0:36:9f:02:e1:23 brd ff:ff:ff:ff:ff:ff 4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br_wlan state UP qlen 1000 link/ether 24:0a:64:0f:4a:66 brd ff:ff:ff:ff:ff:ff 5: br_lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP link/ether a0:36:9f:02:e1:23 brd ff:ff:ff:ff:ff:ff inet 192.168.78.35/24 brd 192.168.78.255 scope global br_lan 6: br_wlan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 24:0a:64:0f:4a:66 brd ff:ff:ff:ff:ff:ff 7: mon.wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000 link/ieee802.11/radiotap 24:0a:64:0f:4a:66 brd ff:ff:ff:ff:ff:ff
Обращаю ваше внимание на отсутствие ip адреса у wi-fi интерфейса/бриджа. Это ключевой момент.
Добавлено спустя 1 час 38 минут 31 секунду: Выяснился любопытный момент в работе JF на виртуалках. Напомню, на бридже в хост-системе выставлено MTU 9000
Код:
root@tarh-core:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:6b:9e:63 brd ff:ff:ff:ff:ff:ff inet 192.168.78.41/24 brd 192.168.78.255 scope global eth0 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:76:51:b8 brd ff:ff:ff:ff:ff:ff
root@tarh-core:~# ping -s 65507 tarh-dlna PING tarh-dlna.tarh.local (192.168.78.46) 65507(65535) bytes of data. 65515 bytes from tarh-dlna.tarh.local (192.168.78.46): icmp_req=1 ttl=64 time=0.599 ms 65515 bytes from tarh-dlna.tarh.local (192.168.78.46): icmp_req=2 ttl=64 time=0.906 ms 65515 bytes from tarh-dlna.tarh.local (192.168.78.46): icmp_req=3 ttl=64 time=0.652 ms ^C --- tarh-dlna.tarh.local ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 0.599/0.719/0.906/0.133 ms
root@tarh-core:~# ping -s 65508 tarh-dlna WARNING: packet size 65508 is too large. Maximum is 65507 PING tarh-dlna.tarh.local (192.168.78.46) 65508(65536) bytes of data. ping: local error: Message too long, mtu=1500 ping: local error: Message too long, mtu=1500 ^C --- tarh-dlna.tarh.local ping statistics --- 2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 999ms
Member
Статус: Не в сети Регистрация: 06.07.2004 Откуда: РФ Фото: 6
Вчера копировал с ББ (винда 8.1) на СБ (samba на debian7) файл размером 30 гигабайт и обратил внимание на интересный момент. Скорость копирования стабильно держалась на отметке 116 мегабайт в секунду. Если я правильно помню, то до перевода на MTU 9000 скорость держалась обычно в диапазоне 80-90 мегабайт в секунду.
Теперь надо на ББ и СБ сделать бондинг. Свитч у меня поддерживает 802.3ad... Сейчас в СБ стоит Intel I350-T2, вторая такая карта лежит пока, поставлю в ББ. Интересно, сколько можно выжать из аггрегации 2 линков по гигабиту при MTU 9000.
ЗЫ. Второй интересный момент. Вчера же перевел СБ на mtu 1500, для эксперимента, и скорость копирования этого же файла упала до 11 мегабайт в секунду. То есть, где-то линк срезало до 100 мегабит.
Member
Статус: Не в сети Регистрация: 06.07.2004 Откуда: РФ Фото: 6
yorka писал(а):
x2 от того, что есть (230 мегабайт в секунду). Если дисковая система конечно позволит.
Одна беда - баг не позволяет нормально работать бондингу в бридже. Точнее, на хост-системе оно работает, в виртуалках на этом бридже сети нет. И это пичалька...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения