LINUX.ORG.RU
ФорумAdmin

Резервирование в ospf quagga


0

1

Резервирование в ospf quagga
Много всего в инете на тему есть, но так и не глянулась реальная рабочая схема.
Попробую изобразить то, что мне кажется, одним из вариантов реализации резервирования
и балансировки. Могу ошибаться. Все решения проверяются в условиях лабы, о результатах,
я готов сообщить.
Мне видится, схема должна быть следующая

[UPlink1]                   [UPlink2]
|                                          |
-----------[L2_switch]-------------
                |          |
[GW1]-------          ---------[GW2]
  |                                     |
  ----------[L2_swich]-----------
                | |      | |
     ---------- |       | ----------
     |            |       |            |
[L3_1_sw][L3_2_sw][.....][L3_n_sw]
Возьмем для примера:
Пусть оба аплинка равнозначны по надежности и пропускной способности,
но первый используется как основной, 2 как резервный.
UPlink1 IP=xx.xx.xx.xx
UPlink2 IP=yy.yy.yy.yy
GW1 eth0=xx.xx.xx.xx/30
GW1 eth1=10.0.0.1/24
GW2 eth0=yy.yy.yy.yy/30
GW2 eth1=10.255.255.1/24
На обоих GW1 и GW2 поднята quagga+ospf с следующими параметрами:
GW1:
--------------------
zebra.conf
hostname GW1
password GW1zebra
enable password GW1zebra
interface eth0
ip address xx.xx.xx.xx/30
ipv6 nd suppress-ra
!
interface eth1
ip address 10.0.0.1/24
# multicast
ipv6 nd suppress-ra
!
interface lo
!
interface pan0
ipv6 nd suppress-ra
!
ip route 10.0.0.0/24 eth1
!
router-id 10.0.0.1
ip forwarding
!
!
line vty
-------------------------
ospfd.conf
hostname ospfd
password zebra
!
interface eth0
!
interface eth1
ip ospf cost 1
!
router ospf
ospf router-id 10.0.0.1
redistribute static metric-type 1
passive-interface eth0
network 10.0.0.0/24 area 0.0.0.0
network 10.255.255.0/24 area 0.0.0.0
default-information originate
!
line vty
!
---------------------------
GW2:
--------------------
zebra.conf
hostname GW2
password GW2zebra
enable password GW2zebra
interface eth0
ip address yy.yy.yy.yy/30
ipv6 nd suppress-ra
!
interface eth1
ip address 10.255.255.1/24
# multicast
ipv6 nd suppress-ra
!
interface lo
!
interface pan0
ipv6 nd suppress-ra
!
ip route 10.255.255.0/24 eth1
!
router-id 10.255.255.1
ip forwarding
!
!
line vty
-------------------------
ospfd.conf
hostname GW2ospfd
password GW2zebra
!
interface eth0
!
interface eth1
ip ospf cost 1
!
router ospf
ospf router-id 10.255.255.1
redistribute static metric-type 1
passive-interface eth0
network 10.0.0.0/24 area 0.0.0.0
network 10.255.255.0/24 area 0.0.0.0
default-information originate
!
line vty
!
---------------------------

В данном случае default-information originate необходимо, чтобы L3
свичи в схеме могли получить маршрут по усолчанию от маршрутизаторов.

Для L3 свичей, конфиг должен быть приерно такой:

interface VLAN 1
ip ospf cost 10
IP address 10.0.0.2 255.255.255.0

interface VLAN 2
ip ospf cost 20
IP address 10.255.255.2 255.255.255.0

router OSPF
ospf router-id 10.0.0.2
redistribute connected metric-type 1
network 10.0.0.0 255.255.255.0 area 0.0.0.0
network 10.255.255.0 255.255.255.0 area 0.0.0.0

Соотвественно в L2 свиче на GW1 выводится нативным VLAN1,
на GW2 выводится нативным VLAN2.

Вопросы: будет ли данная схема работать в режиме GW1 как основной шлюз,
GW2 как резевный?
Есть ли у кого опыт по реализации таких схем, может я ошибаюсь, буду рад
информации на тему.




посмотрите лучше в сторону vrrp/hsrp/glbp, в юниксах аналоги carp/heartbeat

Jaizer ()

в принципе все правильно, только нахрена вам на L3-свичах redistribute connected? просто network должно быть достаточно ИМХО. Или там есть еще сети, которые надо вещать, кроме 10.0.0.0/24 и 10.255.255.0/24?

Pinkbyte ★★★★★ ()

а, ну и еще можно dead-interval НА ВСЕХ OSPF-соседях в одной области уменьшить, чтобы переключение происходило быстрее

Pinkbyte ★★★★★ ()

А как будет происходить само резервирование ? В общем, схема не совсем рабочая. В идеале default-information originate быть не должно, на аплинках должен быть BGP (и между GW) и дефолты должны получаться с аплинков. Соответственно, нужна ещё автономная система.

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

> и дефолты должны получаться

Или, вообще, полные таблицы, для нормальной балансировки исходящего трафика.

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

>только нахрена вам на L3-свичах redistribute connected? Свичей дохрена. На кожлма свиче по 100-200 сетей типа vlan 67 ip address 10.0.14.2 255.255.255.248

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

на аплинках должен быть BGP. Cоответственно, нужна ещё автономная система.

Есть и то и другое. Но пока не понял, как это все между собой состыковать.

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

через redistribute вестимо(как OSPF External LSA). кстати, может лучше вместо redistribute вручную задавать подключенные сети, а то некоторые свичи умеют делать redistribute только внешними LSA, что не всегда корректно отражает топологию сети и протоколов обмена маршрутами...

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

> только при условии redistribute нужных маршрутов с BGP на OSPF

Ну так это естественно.

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

> Есть и то и другое. Но пока не понял, как это все между собой состыковать.

кроме ospfd, задействуется ещё bgpd. bgp настраивается как к аплинкам, так и между шлюзами (ebgp и ibgp получится, но это само собой так выйдет). Дальше всё зависит от того, что принимается. если только маршрут по-умолчанию, default-information originate надо убрать и, как уже дополнил Pinkbyte, сделать редистрибьюцицию дефолта из BGP в OSPF (кстати, а умеет ли квагга... по идее должна). Если принимается full view, то тут, как раз, можно и оставить default-information originate. gw должны обмениваться полными таблицами.

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

>сделать редистрибьюцицию дефолта из BGP в OSPF

если будут i-bgp соседи(на которых бордер будет спускать дефолт), они и будут делать redistribute, так что тут с кваггой все ок. сложнее будет без i-bgp, тут я не уверен, будет ли работать - тупо не пробовал...

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

> если будут i-bgp соседи(на которых бордер будет спускать дефолт),

они и будут делать redistribute,


Дефолт-то надо отдать дальше, на свичи. Из BGP-таблицы оно не сретранслируется. Но оно может оказаться «kernel route» и, тогда, можно redistribute kernel попробовать сказать. Тут я тоже не знаю - не пробовал.

сложнее будет без i-bgp,


С более, чем одним бордером, положено иметь bgp внутри AS или «каждый с каждым», или «каждый с роуте-рефлектором» (при двух рефлектор ещё оверхед :-) ).

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

>Из BGP-таблицы оно не сретранслируется

смотря что отдают по BGP - default route или full-view

Pinkbyte ★★★★★ ()

У меня такая схема. Два бордера и два ната(тут они как gw1/2 нарисованы). На натах

keos-blade1# show  ip ro ospf  
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       I - ISIS, B - BGP, > - selected route, * - FIB route

O>* 0.0.0.0/0 [110/11] via 1.1.1.37, eth1.100, 3d02h43m
  *                    via 1.1.1.38, eth1.100, 3d02h43m
То есть в fib попадают оба роута и трафик балансится на два бордера.

На бордерах квагге сказал default-information originate always. Однако в таком режиме я поимел на каждом бордере появляющийся/пропадающий дефолт в сторону второго бордера - жутко некрасивая ситуация. Красиво забороть это не получилось и я сделал

route-map NO_OSPF_DEFAULT deny 5
 match ip address prefix-list DEFAULT_ROUTE
route-map NO_OSPF_DEFAULT permit 10
 match ip address 22
ip protocol ospf route-map NO_OSPF_DEFAULT

теперь на бордерах

border0# show  ip ro 0.0.0.0
Routing entry for 0.0.0.0/0
  Known via "ospf", distance 110, metric 11
  Last update 3d02h48m ago
    1.1.1.38, via eth1.100 inactive

то есть дефолт в fib не попадает.

Между бордерами конечно нужна bgp сессия (ibgp). В моем случае сессии есть и с натами.

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

У меня fv и дефолты от апстримов я не принимаю. Если апстримы отдают дефолт или вообще он есть в таблице, полученный любым способом то можно сказать просто default-information originate без always.

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