|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 17 Jan 2008 03:34:36 To : Eugene Grosbein Subject : Re: lacp --------------------------------------------------------------------------------
15 янв 2008, вторник, в 02:18 KRAT, Eugene Grosbein написал(а):
EG> Первый вариант, заработавший в лабораторных условиях, получил:
EG> на каждом роутере создаётся два отдельных бриджа, в каждом
EG> из которых по одному (sic!) порту, в первом gif1, во втором gif2.
EG> Таким образом, получается пара работающих EtherIP-туннелей между
EG> роутерами,
EG> для этого пришлось патчить gif(4).
ftp://www.kuzbass.ru/pub/freebsd/lagg-0.1.tgz
Патчи ложатся на RELENG_6 и RELENG_7
(проверено на 6.2, 6.3-PRERELEASE и 7.0-PRERELEASE).
Прикладывать:
cd /usr/src/sys/net
cat /path/to/dir-with-patched/*.diff | patch
Далее пересобрать модули if_gif.ko, if_bridge.ko и if_lagg.ko
либо ядро, если модули не используются. В случае использования
этих трёх модулей ядро можно не пересобирать и не перегружать систему,
а только модули.
I. Обучение if_gif(4) и if_bridge(4) создавать туннели EtherIP
без бриджевания трафика в физические интерфейсы.
Для этого в if_bridge внесены добавления:
- бридж теперь формирует и хранит struct arpcom (bridge_alloc/bridge_free),
для того, чтобы вышедшие из туннеля EtherIP фреймы могли быть обработаны
верхними уровнями стека (без arpcom гарантирован kernel panic);
В if_gif внесены добавления:
- if_gif более не убивает фреймы, которые if_bridge возвратил для
передачи верхним уровням стека, а передаёт их в ether_demux,
помечая при этом бродкасты и мультикасты как таковые - таким образом,
начинает работать ARP внутри туннеля EtherIP.
При создании бриджа с единственным портом в виде gif теперь получается
полноценный ethernet-туннель, IP-адреса для туннеля надо ставить
на самом бридже, на gif, кроме туннельных, IP-адресов не требуются.
Патчи никак не влияют на работу if_gif и if_bridge, если те используются
по-отдельности, поэтому пропатченная система без EtherIP-туннелей
работает по-прежнему.
II. Обучение if_lagg(4) использовать туннели EtherIP посредством
if_gif(4) и if_bridge(4).
Собственно патч на if_lagg минимален, в одну строчку -
позволяет использовать не только ethernet-интерфейсы, но и
if_bridge-интерфейсы.
Для этого в if_bridge внесены добавления:
- в bridge_softc добавлено поле struct ifmedia sc_media
и бридж обучен симулировать наличие у него понятия
"линка", его состояния и скорости.
if_lagg для использования порта требует полного дуплекса и ненулевой
скорости на этом порту, поэтому if_bridge симулирует линк 100BaseTX/FD.
В if_gif внесены добавления:
- if_gif передаёт пакеты, возвращённые бриджом для передачи верхним
уровням стека в интерфейс lagg, если бридж является портом в таком
интерфейсе.
Патч никак не влияют на работу бриджей, не добавленных в какой-нибудь
if_lagg в качестве портов, поэтому пропатченная система без интерфейсов lagg
работает по-прежнему.
Eugene
--
Рейтинг, рейтинг - юбер аллес! (суровая правда телеискусства)
--- slrn/0.9.8.1 (FreeBSD)
* Origin: Svyaz Service JSC (2:5006/1@fidonet)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/26093dbeab4ec.html, оценка из 5, голосов 10
|