The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

[FreeBSD] Перевод руководства по ng_one2many (netgraph freebsd)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: netgraph, freebsd,  (найти похожие документы)
From: Eugene Mychlo <http://forum.bestcom.ru/index.php?showuser=8>; Newsgroups: http://forum.bestcom.ru Date: Mon, 29 Jan 2006 18:21:07 +0000 (UTC) Subject: [FreeBSD] Перевод руководства по ng_one2many Оригинал: http://forum.bestcom.ru/index.php?showtopic=31 NG_ONE2MANY Руководство по интерфейсам ядра FreeBSD ИМЯ ng_one2many - пакетный мультиплексирующий тип узла netgraph СИНТАКСИС #include <sys/types.h> #include <netinet/in.h> #include <netgraph/netflow/ng_netflow.h> ОПИСАНИЕ one2many обеспечивает простой механизм маршрутизации пакетов между несколькими связями по типу "один ко многим" (и в обратном направлении, "многие к одному"). Существует единственный крюк с именем one и множество крюков с именами many0, many1 и т.д. Пакеты, полученные на любом из крюков many* отправляются в крюк one. Пакеты, полученные на крюке one отправляются в один или несколько крюков many; в какой (какие) из крюков отправлять пакеты - определяется конфигурацией алгоритма передачи этого узла. В любом случае пакеты остаются неизменными. Предполагается, что каждый из линков many* может быть либо включен (up), либо выключен (down). Пакеты никогда не отправляются в выключенные крюки many. Способ определеня состояния линка зависит от конфигурации алгоритма обнаружения сбоев этого узла. Прежде чем интерфейс или линк может быть вставлен в группу, его статус должен быть помечен как "up". Обычно это устанавливется на стадииначальной загрузки, в rc.conf (5). Также можно изменить статус интерфейса на "up" используя ifconfig(8). АЛГОРИТМЫ ПЕРЕДАЧИ NG_ONE2MANY_XMIT_ROUNDROBIN Пакеты отправляются в крюки many в последовательно. Каждый последующий пакет выходит через другой many-крюк. NG_ONE2MANY_XMIT_ALL Пакеты отравляются сразу во все крюки many. Каждый пакет уходит через каждый many-крюк. В будущем, могут быть добавлены также другие алгоритмы. ОБНАРУЖЕНИЕ СБОЕВ СВЯЗИ В настоящее время, единственным алгоритм определения отказов связи, кроме случая отсоединения крюка, является "ручной" алгоритмом: используя контрольные сообщения NGM_ONE2MANY_SET_CONFIG (см. ниже), узлу явно говорится, какие из линков включены. Новые подключенные линки будут выключены, пока они не будут сконфигурированы иначе. В будущем, возможно будут добавлены другие алгоритмы. КРЮЧКИ (HOOKS) Данный тип узел поддерживает до NG_ONE2MANY_MAX_LINKS крючков, с именами many0, many1, и т.д., и один крюк с именем one. УПРАВЛЯЮЩИЕ СООБЩЕНИЯ Этот тип узла поддерживает стандартные управляющие сообщения. Дополнительные сообщения: NGM_ONE2MANY_SET_CONFIG Устанавливает конфигурацию узла, используя структуру struct ng_one2many_link_config как аргумент сообщения: /*структура конфигурации узла*/ struct ng_one2many_config { u_int32_t xmitAlg; /* как распределять пакеты */ u_int32_t failAlg; /* как обнаруживать отказ связи */ u_char EnabledLinks[NG_ONE2MANY_MAX_LINKS]; }; В настоящее время, для поля xmitAlg возможны значения - NG_ONE2MANY_XMIT_ROUNDROBIN (по умолчанию) или NG_ONE2MANY_XMIT_ALL. Для поля failAlg возможно единственное значение - NG_ONE2MANY_FAIL_MANUAL; оно также является значением по умолчанию. NGM_ONE2MANY_GET_CONFIG Возвращает текущую конфигурацию узла в виде структуры struct ng_one2many_link_config. NGM_ONE2MANY_GET_STATS Команда принимает в качестве аргумента 32-х битный номер линка и возвращает структуру struct ng_one2many_link_stats, содержащую статистику для соответствующего линка many, который, в текущий момент, может быть как подкюченн ым, так и отключенным: /* структура статистики (одинакова для всех линков) */ struct ng_one2many_link_stats { u_int64_t recvOctets; /*общее количество байт получех из линка */ u_int64_t recvPackets; /*общее количество пакетов получех из линка */ u_int64_t xmitOctets; /*общее количество байт отправленных в линк */ u_int64_t xmitPackets; /*общее количество пакетов отправленных в линк */ }; Для доступа к статистике линка one, нужно использоват номер линка -1. NGM_ONE2MANY_CLR_STATS Команда принимает в качестве аргумента 32-х битный номер линка и очищает статистику этого линка. NGM_ONE2MANY_GETCLR_STATS То же что и NGM_ONE2MANY_GET_STATS, но автоматически очищает статистику для данного линка. ЗАКРЫТИЕ Узел закрывается при получении сообщения NGM_SHUTDOWN, или при отключении всех крюков. ПРИМЕРЫ Следующие команды настраивают Ethernet интерфейс fxp0, так чтобы отправлять пакеты, чередуя физическиe интерфейсы, соответствующие сетевым интерфейсам fxp0 - fxp3: # Скрепляем узлы вместе ngctl mkpeer fxp0: one2many upper one ngctl connect fxp0: fxp0:upper lower many0 ngctl connect fxp1: fxp0:upper lower many1 ngctl connect fxp2: fxp0:upper lower many2 ngctl connect fxp3: fxp0:upper lower many3 # Позволяем fxp1 - fxp3 отправлять/получать фрэймы fxp0 ngctl msg fxp1: setpromisc 1 ngctl msg fxp2: setpromisc 1 ngctl msg fxp3: setpromisc 1 ngctl msg fxp1: setautosrc 0 ngctl msg fxp2: setautosrc 0 ngctl msg fxp3: setautosrc 0 # Включаем все линки ngctl msg fxp0:upper setconfig "{ xmitAlg=1 failAlg=1 enabledLinks=[ 1 1 1 1 ] }" # Поднимаем интерфейс ifconfig fxp0 192.168.1.1 netmask 0xfffffffc Проделывая подобное на другой машине (используя адрес 192.168.1.2), получаем Ethernet соединение типа "точка-точка" с 4-х кратной пропускной способ ностью. ОШИБКИ Необходима поддержка большего числа алгоритмов передачи и обнаружения сбоев. Хороший кандидат - технология Cisco Etherchannel. СМОТРИ ТАКЖЕ netgraph (4), ng_bridge (4), ng_ether (4), ng_hub (4), ifconfig (8), ngctl (8) АВТОРЫ Узел netgraph one2many (с алгоритмом round-robin) был написан Archie Cobbs <archie@FreeBSD.org.">archie@FreeBSD.org>. Весь алгоритм был добавлен Rogier R. Mulhuijzen <drwilco@drwilco.net.">drwilco@drwilco.net>. Превод: Eugene Mychlo

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру