The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Quagga и приоритезация каналов, !*! проблемавыбора, 26-Сен-09, 23:11  [смотреть все]
Имеется своя AS, PI /22 , 2 аплинка, все вертится на кваге под линухом.
Хотелось бы следующего (возможно ли такое):
1. клиенты подсети x.y.z.1/24 ходили всегда через аплинка А, остальные подсети через аплинка В. А в случае отвала одного из аплинков все клиенты ходили через живого прова
2. заворачивать, например, yandex.ru через прова А, а mail.ru через прова В
  • Quagga и приоритезация каналов, !*! PavelR, 09:35 , 27-Сен-09 (1)
    >Имеется своя AS, PI /22 , 2 аплинка, все вертится на кваге
    >под линухом.
    >Хотелось бы следующего (возможно ли такое):
    >1. клиенты подсети x.y.z.1/24 ходили всегда через аплинка А, остальные подсети через
    >аплинка В. А в случае отвала одного из аплинков все клиенты
    >ходили через живого прова

    BGP - это то, что управляет входящим трафиком. Очень четко разделить трафик ИМХО будет сложно (некоторая часть трафика пойдет не так, как описано).
    Соответственно, надо чтобы блок /22 уходил с большим prepend в аплинки А и В, и отдельно аносировать в A маршрут  x.y.z.0/24.

    Далее, надо разрулить наш исходящий трафик.

    Первый вариант, который видится - это сделать два маршрутизатора, первый - аплинк А и подсеть x.y.z.0/24, второй - аплинк В и остальные подсети. оба маршрутизатора также имеют соединение друг с другом, и обмениваются маршрутами. Для внешних пиров на каждом из рутеров выставляем повышенный приоритет.  Соответственно, исходящий трафик будет идти приоритетно через маршруты аплинка, а если маршрута нет - то может пойти в соседний маршрутизатор и в аплинк соседа.

    Другой вариант - это больше теоретический, потому что этот софт у меня запустить так и не удалось.

    есть бгп-рутер bird, который "умеет" (если его удастся запустить) реализовывать два маршрутизатора в одной системе, ведя таблицы маршрутов в разных таблицах ядра (Linux).

    Соответственно, есть две таблицы, и в iproute2 задаем какую для какой сети использовать:

    типа так:

    ip ru add from x.y.z.0/24 lookup uplinkA pref 2000
    ip ru add from x.y.q.0/22 lookup uplinkB pref 2020
    ip ru add from x.y.q.0/22 lookup uplinkA pref 2030

    Поскольку задачи анонса в А маршрутов, полученных от Б - не стоит, то копии маршрутизатора в bird будут независимыми, и друг с другом маршрутами (как в первом варианте) обмениваться не будут. Если в таблице В маршрут к сети найден не будет, то будет произведен поиск в таблице А, а /24 еще до этого отдельно попытается быть отправленной через маршруты аплинкаА.


    Третий вариант - использовать FreeBSD с её возможностью FIB (множественные таблицы маршрутизации) и пытаться запустить две копии quagga, привязывая "куда писать маршруты" через setfib.

    Насколько мне известно, отсутствие маршрута в первой таблице не приведет к поиску во второй, поэтому в этом случае копии quagga должны будут обмениваться друг с другом маршрутами, аналогично случаю, описанному в первом варианте решения.

    Кроме того, первый случай можно реализовать в одной коробке используя что-нибудь вроде Xen.

    >2. заворачивать, например, yandex.ru через прова А, а mail.ru через прова В
    >

    Входящий трафик от "сайтов" пойдет соответственно анонсам маршрутов, исходящий-то вы можете пинать куда хотите - только асимметрия будет.




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

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