LINUX.ORG.RU
ФорумAdmin

Распределение нагрузки (канала)


0

1

Привет.

Имеется PC шлюз, (debian) в него приходят два канала (по гигу каждый) от одного провайдера. По одному каналу FV по другому дефолт. Все было ок, но сейчас нагрузка возросла и один канал в час пик забивается по максимуму и начинаются тормоза. (по которому приходит FV)

Подскажите пожалуйста как правильно распределить нагрузку, что бы часть трафика шла по одному каналу, часть по другому.

З.Ы. Запросить в во второй канал FV или что нить другое кроме одного дефолта, не проблема.

ну запраси на втором fw - размажет исходняк, но забивается то я так полагаю входным скорее всего?

GHhost ()

Препенды и more specific на крайняк, это если даунлоад забит. Еще хорошо б узнать какие есть коммюнити у провайдеров твоих.

ventilator ★★★ ()

у тебя кто инициирует соединения? Если они приходят изнутри то тут 100500 способов, гугли. Если у тебя клиенты снаружи а внутри сервера то тут уже играешься с бгп, опять-таки все уже давно изучено.

true_admin ★★★★★ ()

не забудте зафильтровать дефолт, когда fv от второго провайдера возмете

pr0mille ()
Ответ на: комментарий от ventilator

Коммюнити нет, ну точнее у него то они наверное и есть какие нить, но у меня в конфиге они ни коем образом не настроенны.

Если я попрошу от провайдера два фул вью, и сам у себя через префиксы настрою фильтры скажем так что бы через один линк принимать /24 сети, а через другой все остальные. Это же должно распределить нагрузку?

Morbid ()
Ответ на: комментарий от Morbid

Вы для начала расскажите где полка у вас, на исходе или на входе? Исход можно балансить вообще любым способом, хоть с fv, хоть без.

ventilator ★★★ ()
Ответ на: комментарий от Morbid

Если полка по входу - решаем дело препендами. Тому апстриму который вливает вам сильно много, анонсируете свои префиксы с препендом. Увеличиваете длину as-path до достижения примерно ровной картинки между каналами. Сколько и какие у вас префиксы? Если препенды не помогают, остается мор специфик роуты, но возможность их использования зависит от ваших префиксов. Если префиксов несколько дело упрощается.

Если полка по исходу. Куча способов послать один трафик в одного провайдера, а другой в другого - просто с помощью localpref хоть в зависимости от as-path, хоть просто по сети. Можно вообще без fv, тупо добавить два дефолта и линуксовое ядро сделает за вас работу - будет балансить пополам. Но лучше узнайть коммюнити которые есть и использовать это.

ventilator ★★★ ()
Ответ на: комментарий от ventilator

Полка по входящему трафику.

Апстрим один, но до него два разных физических канала, оба по гигабиту. Анонс у меня один, сеть /23.

Morbid ()
Ответ на: комментарий от ventilator

а какая разница кто инициирует соединения?

а исходящие соединения можно 1) проксировать через умную проксю, это легко гуглится 2) использовать cluster-модуль в iptables и балансировать нагрузку между гейтвеями 3) использовать multiple default routers в линухе 4) 100500 других способов балансировки.

Со входящими всё по-другому. Хотя, если есть пул серверов то, я думаю, round-robin DNS поможет без всяких ухищрений :). Но можно и traffic engineering заюзать. Я затрудняюсь сказать что в итоге окажется лучше, но точно знаю что это уже 100 раз обсуждалось в гугле.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Внешний роутер один. на нем три сетевые. одна смотрит во внутрь, две другие смотрят на одного вышестоящего провайдера, двумя разными физическими каналами (ну и вланы, ип тоже другие).

Сейчас во входящий потолок встает один канал, поэтому хочу раскидать нагрузку между двумя внешними каналами.

З.Ы. Понятно дело что буду добавляеть еще одну сетевую, для того что бы во внутрь тоже не было проблем.

Morbid ()
Ответ на: комментарий от Morbid

Я понимаю что внешний роутер один, вопрос в том что у тебя за роутером - сервера или юзеры. Если юзеры то можно и без BGP раскидать нагрузку. Если сервера то тут можно или через BGP или ДНС.

true_admin ★★★★★ ()
Ответ на: комментарий от Morbid

О, так всё за натом, верно? Ну тогда тут вообще куча простора для действий даже без задействования bgp. Но это уже сам решай что тебе удобнее.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

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

Учитавая то что есть своя АС и своя сеть на 512 ИП адресов.

Morbid ()
Ответ на: комментарий от Morbid

Ну, для тех что за nat, если они используют dhcp, можно тупо раздавать разным клиентам «разные» гейты которые трафик в разные каналы пихают (соотв. и внешний IP будет отличаться).

А для реальных клиентов кроме как играться с bgp я не знаю. Но про bgp я не подскажу, моё знание о нём ограничивается рамками курса который я прослушал, сдал экзамен и забыл :). В голове вертится только multi-exit traffic discriminator (MED), но, по-моему, это не совсем то.

Короче, гугли по bgp multi-home traffic balancing.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Ну, для тех что за nat, если они используют dhcp, можно тупо раздавать разным клиентам «разные» гейты которые трафик в разные каналы пихают (соотв. и внешний IP будет отличаться).

Не стоит так делать, у топикстартера свои адреса, и использовать адреса которые на интерфейсах к провайдеру(провайдерские), чтобы натить в них юзеров - это совсем неправильный подход. Хотя бы потому что при падении одного линка велика вероятность потери сервиса для половины пользователей.

TS: Если у вашего роутера подняты две сессии с одним и тем же роутером апстрима, то тут может получиться пичаль. Совсем не все маршрутизаторы умеют bgp балансировку. Во всяком случае один из моих трех апстриров такое не может и льет мне трафик в один канал. Я бы в таком случае сделал роутобжекты для /24 сетей. и анонсил бы в каждую сессию по одному /24 и аггрерированный /23 тоже в каждую. В случае когда оба канала рабочие, апстрим будет роутить по /24 префиксам.

ventilator ★★★ ()
Ответ на: комментарий от ventilator

То есть что-то типа подобного должно быть, да?

network x.x.x.0/24

network y.y.y.0/24

network xy.xy.xy.0/23

объявили две сети по отдельности, и их же, но агрегированно

-------------------------------------------

neighbor 111.111.111.111 route-map prepend_first out

neighbor 222.222.222.222 route-map prepend_second out

назначили роут-мапы соседям

--------------------------------------------------------------

ip prefix-list first permit x.x.x.0/24

ip prefix-list first deny any

ip prefix-list second permit y.y.y.0/24

ip prefix-list second deny any

ip prefix-list third permit xy.xy.xy.0/23

ip prefix-list third deny any

объявили префикс листы

---------------------------------------------------

route-map prepend_first permit 10

match ip address prefix-list first

--

route-map prepend_second permit 10

match ip address prefix-list second

--

route-map prepend_firs permit 10

match ip address prefix-list third

--

route-map prepend_second permit 10

match ip address prefix-list third

отдаем первому соседу - одну посдеть, второму - вторую подсеть. и какждому из них отдаем общее.

Morbid ()
Ответ на: комментарий от Morbid

Примерно так, да. Можно попробовать с MED тоже, но я как то им не пользовался.

Не забудьте роут для /24 префиксов в null сделать. Ну или как то еще обеспечить присутствие этих записей в роуттаблице.

ventilator ★★★ ()
Ответ на: комментарий от ventilator

у топикстартера свои адреса, и использовать адреса которые на интерфейсах к провайдеру(провайдерские), чтобы натить в них юзеров

у него уже часть юзеров за натом. Вот для них это нормальное решение.

при падении одного линка велика вероятность потери сервиса для половины пользователей.

абсолютно не проблема. Хотя сессии, конечно, порвутся.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

У него уже часть юзеров за натом. Вот для них это нормальное решение.

Только 99% что нат делается не в адреса выданные провайдером, а в свои, и для них ничего не сломается при падении одного из линков.

ventilator ★★★ ()
Ответ на: комментарий от ventilator

Иначе зачем вообще все заморочки с бгп, если юзать провайдерские адреса, вся гибкость и резервирование моментально превращаются в тыкву. Не говоря уже о том что делать нат на роутере с bgp fv некошерно с точки зрения архитектуры, как и вообще наличие там iptables.

ventilator ★★★ ()
Ответ на: комментарий от ventilator

Это внешний роутер, который принимает основную таблицу маршрутизации и агрегирует каналы + фильтрует всякие мелочи, за ним находиться уже внутренний шлюз, который как раз натит, шейпит и делает все остальную работу. IP конечно же свои, с провайдером только две p2p сессии с /30 сетями

Morbid ()
Ответ на: комментарий от true_admin

К сожалению блокировки в netfilter отрицательно сказываются на производительности роутинга на скоростях порядка нескольких гигабит. Не говоря уже про всякий конекшн трекинг.

Вы поймете что это не предрассудки, как только посмотрите профайлинг под нагрузкой. Первое правило софтроутинга - разделяйте разные функции между разными железками.

ventilator ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.