os:
FreeBSD freebsd.domain.ru 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #0: Thu Dec 21 16:41:09 MSK 2006 test@freebsd.domain.ru:/usr/src/sys/i386/compile/CUBXL i386настройки сети:
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
inet 192.168.255.249 netmask 0xfffffff8 broadcast 192.168.255.255
ether 00:02:b3:2e:e3:d7
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
fxp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 195.x.x.215 netmask 0xffffff00 broadcast 195.x.x.255
ether 00:50:8b:5e:70:5a
media: Ethernet autoselect (10baseT/UTP)
status: active
fxp2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
inet 10.0.2.31 netmask 0xff000000 broadcast 10.255.255.255
ether 00:02:b3:5d:cb:98
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33208
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
pfsync0: flags=0<> mtu 2020
syncpeer: 224.0.0.240 maxupd: 128fxp0 - подсеть dmz
fxp1, fxp2 - интерфейсы, смотрящие, соотв., в инет ч/з 128kbs & 20mbs каналы.
хотелось бы, чтобы при падении одного из каналов (fxp2, например, как основного) пользователи переключались на fxp1 автоматически.
на ixbt.com http://forum.ixbt.com/topic.cgi?id=76:6339 посоветовали см. в сторону debian+iproute2 либо openbsd+pf. т.к. я немного знаю freebsd, а pf на ней работает, то решил попробовать связку freebsd+pf.
почитал мануал http://www.openbsd.org/faq/pf/pools.html#nat по pf и возник след. вопрос.
выбор интерфейса, на к-рый роутится трафик из внутр. подсети может быть осуществлен 4 способами:
1. bitmask - однозначно преобразует пул внутренних адресов в пул внешних комбинацией адреса сети внешнего интерфейса и адреса хоста клиента во внутр. сети
2. random - случайным образом выбирается интерфейс.
3. source-hash - жесткая привязка внутренних адресов к определенному внешнему интерфейсу.
4. round-robin - последовательный выбор следующего внешнего интерфейса (1->2->1->2...)
я не ошибся в инерпретации опций?
если нет, то вот суть вопроса: как я могу указать вероятность, с к-рой будет выбран тот или иной интерфейс? то есть: есть 2 канала, 20mbs & 128kbs; возможность динамической балансировки - это довесок и не критично (реализовать можно и policy-based routing). главное - чтобы при падении 1го канала исходящий трафик начинал использоваться 2ой канал без необходимости вмешательства тех. персонала =). если я выберу схему round-robin или random, не приведет ли это к снижению скорости доступа к инету: посылается один пакет ч/з быстрый канал, а след. или случайно выбранный - ч/з медленный. в рез-те часть пакетов идет ч/з 128кбс.
>os:
>FreeBSD freebsd.domain.ru 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #0: Thu Dec 21 16:41:09 MSK 2006
> test@freebsd.domain.ru:/usr/src/sys/i386/compile/CUBXL i386
>
>настройки сети:
>fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> options=b<RXCSUM,TXCSUM,VLAN_MTU>
> inet 192.168.255.249 netmask 0xfffffff8
>broadcast 192.168.255.255
> ether 00:02:b3:2e:e3:d7
> media: Ethernet autoselect (100baseTX <full-duplex>)
> status: active
>fxp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> options=8<VLAN_MTU>
> inet 195.x.x.215 netmask 0xffffff00
>broadcast 195.x.x.255
> ether 00:50:8b:5e:70:5a
> media: Ethernet autoselect (10baseT/UTP)
>
> status: active
>fxp2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> options=b<RXCSUM,TXCSUM,VLAN_MTU>
> inet 10.0.2.31 netmask 0xff000000
>broadcast 10.255.255.255
> ether 00:02:b3:5d:cb:98
> media: Ethernet autoselect (100baseTX <full-duplex>)
> status: active
>pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33208
>lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
> inet 127.0.0.1 netmask 0xff000000
>
>pfsync0: flags=0<> mtu 2020
> syncpeer: 224.0.0.240 maxupd: 128
>
>
>fxp0 - подсеть dmz
>fxp1, fxp2 - интерфейсы, смотрящие, соотв., в инет ч/з 128kbs & 20mbs
>каналы.
>хотелось бы, чтобы при падении одного из каналов (fxp2, например, как основного)
>пользователи переключались на fxp1 автоматически.
>на ixbt.com http://forum.ixbt.com/topic.cgi?id=76:6339 посоветовали см. в сторону debian+iproute2 либо openbsd+pf. т.к. я
>немного знаю freebsd, а pf на ней работает, то решил попробовать
>связку freebsd+pf.
>почитал мануал http://www.openbsd.org/faq/pf/pools.html#nat по pf и возник след. вопрос.
>выбор интерфейса, на к-рый роутится трафик из внутр. подсети может быть осуществлен
>4 способами:
>1. bitmask - однозначно преобразует пул внутренних адресов в пул внешних комбинацией
>адреса сети внешнего интерфейса и адреса хоста клиента во внутр. сети
>
>2. random - случайным образом выбирается интерфейс.
>3. source-hash - жесткая привязка внутренних адресов к определенному внешнему интерфейсу.
>4. round-robin - последовательный выбор следующего внешнего интерфейса (1->2->1->2...)
>я не ошибся в инерпретации опций?
>если нет, то вот суть вопроса: как я могу указать вероятность, с
>к-рой будет выбран тот или иной интерфейс? то есть: есть 2
>канала, 20mbs & 128kbs; возможность динамической балансировки - это довесок и
>не критично (реализовать можно и policy-based routing). главное - чтобы при
>падении 1го канала исходящий трафик начинал использоваться 2ой канал без необходимости
>вмешательства тех. персонала =). если я выберу схему round-robin или random,
>не приведет ли это к снижению скорости доступа к инету: посылается
>один пакет ч/з быстрый канал, а след. или случайно выбранный -
>ч/з медленный. в рез-те часть пакетов идет ч/з 128кбс.
http://dreamcatcher.ru/index.php?option=com_content&task=vie...
PS: А конкретно http://dreamcatcher.ru/index.php?option=com_content&task=vie...
"Балансировка нагрузки исходящего трафика"
>PS: А конкретно http://dreamcatcher.ru/index.php?option=com_content&task=vie...
>"Балансировка нагрузки исходящего трафика"определнную балнсировку я получил:
freebsd# pfctl -ss
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 85.21.216.2:62761 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 85.21.216.2:63017 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:44607 -> 10.0.2.31:58127 -> 195.x.x.19:3389 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:40285 -> 195.x.x.215:58957 -> 195.x.x.19:3389 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 83.139.17.34:36285 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:41452 -> 195.x.x.215:54512 -> 195.242.9.41:1723 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:44746 -> 195.x.x.215:61926 -> 80.67.86.63:80 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 84.48.225.63:53755 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:44748 -> 195.x.x.215:51678 -> 80.67.86.64:80 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 200.159.211.64:1079 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 207.255.241.74:24009 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 82.81.142.81:4087 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 80.252.156.82:40103 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 207.148.209.82:29168 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:44753 -> 10.0.2.31:58784 -> 216.239.59.99:80 ESTABLISHED:FIN_WAIT_2
self tcp 192.168.255.250:44756 -> 195.x.x.215:54790 -> 216.239.59.103:80 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 82.142.170.113:62834 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 84.137.238.138:2843 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:44750 -> 195.x.x.215:54138 -> 216.239.59.147:80 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 76.168.98.186:4130 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 84.40.204.186:65223 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 88.152.16.187:10950 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 85.64.55.191:2499 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 60.23.126.199:3213 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 68.146.142.204:2673 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.250:25 <- 195.x.x.215:25 <- 194.150.155.229:2490 ESTABLISHED:ESTABLISHED
self tcp 195.x.x.19:3389 <- 192.168.255.250:44607 ESTABLISHED:ESTABLISHED
self tcp 80.67.86.63:80 <- 192.168.255.250:44746 ESTABLISHED:ESTABLISHED
self tcp 80.67.86.64:80 <- 192.168.255.250:44748 ESTABLISHED:ESTABLISHED
self tcp 216.239.59.99:80 <- 192.168.255.250:44753 FIN_WAIT_2:ESTABLISHED
self tcp 216.239.59.103:80 <- 192.168.255.250:44756 ESTABLISHED:ESTABLISHED
self tcp 216.239.59.147:80 <- 192.168.255.250:44750 ESTABLISHED:ESTABLISHED
self tcp 192.168.255.249:22 <- 192.168.255.250:44555 ESTABLISHED:ESTABLISHEDто есть как минимум какая-то балансировка работает я вот думаю, что если сделать нат ч/з пул адресов, указанный табл., в к-рой, напр., 10 раз последовательно указан Ip-адрес быстрого соед., затем - 1 раз медленного. при round-robin адреса выбираются последовательно => как я понимаю, на 10 соединений по быстрому каналу я получу одно на медленном... как вы думаете, это не фантазия?
еще есть опасение, к-рое озвучил форумчанин с ixbt.com:>>Единственное, что меня тревожило, что при падении широкого канала, round-robin будет долго пытаться отдать пакеты на работающий (но без связи) интерфейс. Таймауты, помноженные на число повторений впустую, могут привести к тому, что сеть будет просто недоступна.