The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Объединение каналов, !*! vproto, 24-Апр-08, 03:49  [смотреть все]
Привет всем.

Задача объеденить несколько каналов разной ширины от разных провайдеров в один ,своей автономной системы нет и айпи по маршрутам каждый от своего прова.
По железу-софту: софт рутер под freebsd или openbsd.
Должна выполняться балансировка каналов т.е. равномерное разеделение нагрузки на них согласно полосе каждого из них и надёжность чтоб в случае пропадения любого канала или каналов нагрузка распределялась между оставшимися.
Поиск по инету почти не дал ничего, т.е. как именно это сделать и на чём я не нашёл.
Нашёл только упомнаение что в циско есть протокол eigrp или bgp+cef на них можно сделать это, но циски у меня нет и не будет!
Вообщем если кто то знает как можно реализовать выше описанное, расскажите очень прошу.

  • Объединение каналов, !*! skyer, 08:49 , 24-Апр-08 (1)
    >[оверквотинг удален]
    >Должна выполняться балансировка каналов т.е. равномерное разеделение нагрузки на них согласно полосе
    >каждого из них и надёжность чтоб в случае пропадения любого канала
    >или каналов нагрузка распределялась между оставшимися.
    >Поиск по инету почти не дал ничего, т.е. как именно это сделать
    >и на чём я не нашёл.
    >Нашёл только упомнаение что в циско есть протокол eigrp или bgp+cef на
    >них можно сделать это, но циски у меня нет и не
    >будет!
    >Вообщем если кто то знает как можно реализовать выше описанное, расскажите очень
    >прошу.

    В Фряхе это сделать очень сложно и пару лет назад делалось тлько через фаервол правилами форварда, мутно и очень криво... (сервак тогда из вне не доступен). На линухе делается за 5 минут с помошью iproute2 через ядро без дополнительных шаманств с бубном.
    по поводу eigrp или bgp+cef это протоколы маршрутизации для автономных сетей, обеспечивающие отказо устойчивость и балансировкку, но они не пригодны для нереальных ипи. У меня на линухе стоит 5 внешних каналов от разных внешних сетей и по ним раскидывается трафик достаточно сбалансировано для 500 пользователей. если пользователь пользуется прогами для скачивания которые умеют качать больше чем в 1 поток то получается сумарная пропускная скорость всех каналов.

  • Объединение каналов, !*! skyer, 08:50 , 24-Апр-08 (2)
    В Фряхе это сделать очень сложно и пару лет назад делалось тлько через фаервол правилами форварда, мутно и очень криво... (сервак тогда из вне не доступен). На линухе делается за 5 минут с помошью iproute2 через ядро без дополнительных шаманств с бубном.
    по поводу eigrp или bgp+cef это протоколы маршрутизации для автономных сетей, обеспечивающие отказо устойчивость и балансировкку, но они не пригодны для нереальных ипи. У меня на линухе стоит 5 внешних каналов от разных внешних сетей и по ним раскидывается трафик достаточно сбалансировано для 500 пользователей. если пользователь пользуется прогами для скачивания которые умеют качать больше чем в 1 поток то получается сумарная пропускная скорость всех каналов.
    • Объединение каналов, !*! vproto, 12:22 , 24-Апр-08 (3)
      >В Фряхе это сделать очень сложно и пару лет назад делалось тлько
      >через фаервол правилами форварда, мутно и очень криво... (сервак тогда из
      >вне не доступен). На линухе делается за 5 минут с помошью
      >iproute2 через ядро без дополнительных шаманств с бубном.
      >по поводу eigrp или bgp+cef это протоколы маршрутизации для автономных сетей, обеспечивающие
      >отказо устойчивость и балансировкку, но они не пригодны для нереальных ипи.
      >У меня на линухе стоит 5 внешних каналов от разных внешних
      >сетей и по ним раскидывается трафик достаточно сбалансировано для 500 пользователей.
      >если пользователь пользуется прогами для скачивания которые умеют качать больше чем
      >в 1 поток то получается сумарная пропускная скорость всех каналов.

      Раскажите с примером как это реализовано у вас ?

      • Объединение каналов, !*! skyer, 13:40 , 24-Апр-08 (4)

        >Раскажите с примером как это реализовано у вас ?

        скрипт большой.

        но в кратце:

        надо несколько каналов и если просто без излишеств, то

        /sbin/route del default
        /sbin/ip route add default equalize scope global nexthop via $nvgate1 dev eth2 weight 2\
                     nexthop via $nvgate2 dev eth4 weight 2\
                     nexthop via $nvgate3 dev eth5 weight 2\
                     nexthop via $nvgate4 dev eth3 weight 2\
                     nexthop via $nvgate5 dev eth0 weight 2

        у меня все каналы имеют одинаковую скорость, по этому у всех вес 2 , до этого часть каналов имело меньшую скорость а переписывать влом, прсто сделал всем одинаковый

        там можно создавать разные таблицы маршрутизации как для сетей так и для ипишников , количество таблиц ограничена вроде 240 штук, хотя это для желания. может получится так что для каждого интерфейса придется собрать по одной талице и одну общую, тогда будет таблиц маршрутизации n+1 по лоличесву интерфейсов. Сам сервер при такой раскладе одекватно разговаривает по всем интерфейсам. Балансировка идет по количесву соединений и потоку через них, т.е. если есть 10 соединений 7 маленьких и 3 больших, то на 5 сетевок они раскинутся достаточно равномерно 3, 4 соединения и 1, 1, 1 на оставшиеся.
        за пол года в месяц имеем раброс трафика на каналах в пределах 2 процентов при совокупном трафике в 0.4 Тб.

        Если надо более подробно пиши. Но это на Linux в фряхе такое делал только с 2 каналами и то не красиво.

        Щас думаю над подключением ещё 5  каналов и созданием всего на Vlan и линухе.

        • Объединение каналов, !*! vproto, 23:28 , 24-Апр-08 (5)
          >[оверквотинг удален]
          >5 сетевок они раскинутся достаточно равномерно 3, 4 соединения и 1,
          >1, 1 на оставшиеся.
          >за пол года в месяц имеем раброс трафика на каналах в пределах
          >2 процентов при совокупном трафике в 0.4 Тб.
          >
          >Если надо более подробно пиши. Но это на Linux в фряхе такое
          >делал только с 2 каналами и то не красиво.
          >
          >Щас думаю над подключением ещё 5  каналов и созданием всего на
          >Vlan и линухе.

          Спасибо за ответ.
          Расскажи пожалуста подробно со всеми тонкостями как это сделать ?
          Линуксом я не владею вообще, только bsd системами.
          Каналы у меня все разные.
          На скоколько я понял ты прописываешь несколько дефолтовых путей в таблице маршрутов и для каждого указываешь вес - уровень использования.
          Как расчитывать вес если каналы разные ?
          Каналов у меня 4 штуки и все разные как уже говорил.
          И ещё при падении канала или каналов, нагрузка распределиться среди остальных ? Не пропадают ли пакеты и как быстро он определят что канал не работает ?
          Заранее спасибо за помощь.


          • Объединение каналов, !*! skyer, 10:28 , 27-Апр-08 (6)

            >Каналы у меня все разные.

            В линуксе любой канал это интерфейс и у него может быть разная природа, главное чтобы на нем работал IP протокол
            >На скоколько я понял ты прописываешь несколько дефолтовых путей в таблице маршрутов
            >и для каждого указываешь вес - уровень использования.
            >Как расчитывать вес если каналы разные ?

            сам до конца схему непонял, но подисев маленько пришел к выводу что чем больше значение веса канала тем он приоритетнее, т.е. если у нас каналы 256 Кб 512 кб и 1024 Кб то веса должны быть 1 2 4 , иными словами надо выбрать самый наименьший и взависимости от его пропускной способности выставить кратные веча остальным каналам.
            >Каналов у меня 4 штуки и все разные как уже говорил.
            >И ещё при падении канала или каналов, нагрузка распределиться среди остальных ?

            она всегда распределяется, но тут есть небольшой нюанс:
            1 при падении канала об этом система ни чего не знает! и продолжает пихать ттуда запросы что приводит к отказам, но если тупо сделать обновить запрос пойдет в следующий канал
              вообще в описании сказано что этот случай должен как-то отслеживаться и устранятся, но у меня ни разу не было случая "падения" канала, а были блокировки вот их точно ни как не отслеживает! типа если кончились бабки иил флудили, то нас фаерволом накрывало, но линк работал.


            >Не пропадают ли пакеты и как быстро он определят что канал
            >не работает ?

            как писал выше если закрыли фаерволом то ни как вроде.
            за пол года не замечено потерь пакетов(правда у нас лини хорошии)
            Я смог разрулить на 600 дюроне 5 каналов по 2 мегабита в инет и по 30 мегабит во внутренние сети с нагрузкой в 1 процент (поток естественно предельный) внутрь сети стоит гигабитник и все работает без заминки.


            вообще надо более внимательно прочитать про команду ip в линухе, я думаю там есть возможность отслеживания живучести канала. А если нет то можно скрипт написать за часик который будет тупо передергивать маршрут в зависисмости от доступных каналов и пихнуть его в крон на каждые 5 минут. на фряхе так и делал.

        • Объединение каналов, !*! max, 15:02 , 02-Сен-08 (15)
          >[оверквотинг удален]
          >/sbin/ip route add default equalize scope global nexthop via $nvgate1 dev eth2
          >weight 2\
          >            
          > nexthop via $nvgate2 dev eth4 weight 2\
          >            
          > nexthop via $nvgate3 dev eth5 weight 2\
          >            
          > nexthop via $nvgate4 dev eth3 weight 2\
          >            
          > nexthop via $nvgate5 dev eth0 weight 2

          сделал все по так как Вы указали, клиенты получают инет по 2-м каналам, но! на самом шлюзе при этом инет пропадает. подскажите плз как решается эта проблема

  • Объединение каналов, !*! Av, 21:44 , 27-Апр-08 (7)
    pf Documentation, глава "Load Balance Outgoing Traffic"
    • Объединение каналов, !*! Av, 22:06 , 27-Апр-08 (8)
      Не думайте - на самом деле в бсди не все так плохо)

      pf: round-robin (цикл), probability - те же веса, метить пакеты tagged, tag.
      ipfw: fwd, prob и т.д.

      не забудьте keep state в правилах добавлять.

      если probability не устраивает: используйте таблицы + простенький скрипт снимающий показания загрузки каналов по тем же правилам + рулите динамически как угодно, так же определяйте падение канала.

      • Объединение каналов, !*! skyer, 06:02 , 28-Апр-08 (9)
        >[оверквотинг удален]
        >
        >pf: round-robin (цикл), probability - те же веса, метить пакеты tagged, tag.
        >
        >ipfw: fwd, prob и т.д.
        >
        >не забудьте keep state в правилах добавлять.
        >
        >если probability не устраивает: используйте таблицы + простенький скрипт снимающий показания загрузки
        >каналов по тем же правилам + рулите динамически как угодно, так
        >же определяйте падение канала.

        Если читал нитку, то видел что на фряхе такое тоже есть, только менее гибкое и удобное, да и фаервол менее удобный (более простой на мой взгляд).
        Идеалогические войны не по мне, я описал как это делал я, а дальше флаг в руки и большую лопату для копки! ;)

        • Объединение каналов, !*! Av, 09:58 , 28-Апр-08 (10)
          >Если читал нитку, то видел что на фряхе такое тоже есть, только
          >менее гибкое и удобное, да и фаервол менее удобный (более простой
          >на мой взгляд).

          Я могу тоже самое сказать про линух. Критерии гибкости и удобности откуда? Тем более сам говоришь не знаком с бсди. Чего пустомелить тогда?

          • Объединение каналов, !*! skyer, 10:09 , 28-Апр-08 (11)
            >>Если читал нитку, то видел что на фряхе такое тоже есть, только
            >>менее гибкое и удобное, да и фаервол менее удобный (более простой
            >>на мой взгляд).
            >
            >Я могу тоже самое сказать про линух. Критерии гибкости и удобности откуда?
            >Тем более сам говоришь не знаком с бсди. Чего пустомелить тогда?

            А с чего ты решил что не знаком? Я с фрхи начинал в далеком 99


            Да как сказать не знаком , просто последнии 2 года стараюсь рукмим её не трогать, а так за 8 лет администрирования локальных сетей разных провайдеров набрался впечатлений.

            далее нитка игнорится

            • Объединение каналов, !*! Av, 11:03 , 28-Апр-08 (12)
              >А с чего ты решил что не знаком? Я с фрхи начинал
              >в далеком 99

              я с 96, будем мерятся?)

              >Да как сказать не знаком , просто последнии 2 года стараюсь рукмим
              >её не трогать, а так за 8 лет администрирования локальных сетей
              >разных провайдеров набрался впечатлений.

              no comment

              • Объединение каналов, !*! skyer, 11:29 , 28-Апр-08 (13)
                >>А с чего ты решил что не знаком? Я с фрхи начинал
                >>в далеком 99
                >
                >я с 96, будем мерятся?)
                >
                >>Да как сказать не знаком , просто последнии 2 года стараюсь рукмим
                >>её не трогать, а так за 8 лет администрирования локальных сетей
                >>разных провайдеров набрался впечатлений.
                >
                >no comment

                ивини мерятся не будем.. с 3 постами за 8 лет ты точно гуру и демагог! признаю свою не компетентность.

      • Объединение каналов, !*! vproto, 12:12 , 29-Апр-08 (14)
        >[оверквотинг удален]
        >
        >pf: round-robin (цикл), probability - те же веса, метить пакеты tagged, tag.
        >
        >ipfw: fwd, prob и т.д.
        >
        >не забудьте keep state в правилах добавлять.
        >
        >если probability не устраивает: используйте таблицы + простенький скрипт снимающий показания загрузки
        >каналов по тем же правилам + рулите динамически как угодно, так
        >же определяйте падение канала.

        Спасибо за ответ.
        PF есть во фре и в опене, собственно он от туда и пришёл.
        Доку я читал уже много раз.
        Есть какой нибудь рабочий и провереный пример как это будет выглядеть ?
        И как вариант как это сделать на ipfw, естественно пример.Хоть общий, но рабочий.
        Заранее спасибо за ответ. Вадим.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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