LINUX.ORG.RU
ФорумAdmin

переключение между каналами.


0

0

Есть две производственные площадки. Между ними есть 3 разных канала точка-точка. Каналы очень разнородные по скорости и задержкам.

С обоих сторон - linux роутеры.

Нужен механизм переключения, при пропадании хорошего канала, на более плохие и возврат на хороший при его появлении.

При обрыве переключение должно быть относительно быстрым, в течении нескольких секунд, что бы не происходили обрывы сессий.

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

Как посоветуете решить? Сделать load-balance teql по всем трем с разными приоритетами? но как он поведет себя при обрыве на одном из линков?

ospf на линкуксе можно дотунить до быстрой сходимости.
вещай на каналы разные cost и используй минимальные значения helo и dead интервалов.

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

через нее родимую, или через openospfd.
квага от версии к версии бывает падучая, поэтому релиз нужно тщательно выбирать.
потом работает как часы.

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

не получается сконфигурировать.

можете подсказать примерно настройку?

допустим есть две сети 10.1/16 и 10.2/16. и есть по три сетевухи в сетях 192.168.{0,1,2}.x в каждой сети, где X=1 для сети 10.1 и X=2 для сети 10.2.

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

в терминах циски (в кваге незначительные отличия, возможны)
router ospf 1
network 192.168.0.0 0.0.0.3 area 192.168.0.0
network 192.168.1.0 0.0.0.3 area 192.168.0.0
network 192.168.2.0 0.0.0.3 area 192.168.0.0

почитайте про инверсную маску, и сконфигурируйте в соответствии со своей маской подсети.


int eth0
ip ospf cost 1
ip ospf hello-interval 1
ip ospf dead-interval 3

int eth1
ip ospf cost 2
ip ospf hello-interval 1
ip ospf dead-interval 3


int eth2
ip ospf cost 3
ip ospf hello-interval 1
ip ospf dead-interval 3


ну и самого демона ospf надо врубить, помойму в zebra.conf


за тонкостями сюда:
http://www.quagga.net/docs/docs-info.php

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

с этим я более-менее понял. Вопрос в следующем: у меня за самим роутером висит сеть 10.x/8, хотя сам роутер в подсети 10.x.y/16. мне надо как-то на каждом из них сказать, что он отвечает за всю /8, т.к. сам оп себе он ее не анонсирует соседу.

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

вариантов несколько...
только схемку нарисуйте, хотябы так

(10.1/16) - [роутер1] <- линк1-192.168.0.0 -> [роутер2] - (10.2/16)
<- линк1-192.168.1.0 -> - (10.3/16)


чтоб понятно было какой роутер в какие сети смотрит.

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

вариантов несколько...
только схемку нарисуйте, хотябы так

(10.1/16) - [роутер1]  <- линк1-192.168.0.0 -> [роутер2] - (10.2/16)
                       <- линк1-192.168.1.0 ->           - (10.3/16)


чтоб понятно было какой роутер в какие сети смотрит.

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

схема именно такая.

роутер 1 сетевухи: 192.168.{1-3}.1 ptp, 10.1.250.1/24 в локалку 10.1/16

роутер 2 сетевухи: 192.168.{1-3}.1 ptp, 10.2.250.1/24 в локалку 10.2/16

надо как-то прописать на первом, что за ним висит вся 10.1/16, и надо роутить на него, а на 2, что за ним 10.2/16 и пойдет через него.

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

не очень понял про это
10.1.250.1/24 в локалку 10.1/16

1) если это directly connected сеть, тогда в router ospf надо объявить
на первом: network 10.1.0.0 0.0.255.255 area 192.168.0.0
на втором: network 10.2.0.0 0.0.255.255 area 192.168.0.0

2) если это статик маршрут через интерфейс 10.[1,2].250.1/24
тогда надо в router ospf
redistribute static
(эта команда вносит статик маршруты в ospf, только надо убедиться не ли мешающих друг другу маршрутов на двух роутерах. если есть, используйте фильтрацию с помощью, например redistribute static route-map, а в нем уже отметьте необходимые ospf-у маршруты)

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

точнее, там где 10.1/16 еще есть и 172.16/12, но это не принципиально.

и роутер 2 конечно "192.168.{1-3}.3 ptp", опечатался.

easy_john
() автор топика
Ответ на: комментарий от chocholl

вариант первый, сеть прямая. роутеры это именно точки перехода межу 10.1/16 и 10.2/16

вопрос, почему на каждом из роутеров мы сеть 10.x/16 запихиваем в ту же арею, в которой висят ptp линки?

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

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

1) в будущем вы будете с кем-то объединяться, в этом случае вероятность, что вас включат в бекбон мала. а если изначально использовать арею 0, при объединении конфигурацию нужно будет менять вам.а если у вас будет уникальная арея, то процес объединения пройдет прозрачно для вас.

2) если ни с кем и никогда объединяться не будете, тогда пофигу что использовать.

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

ни с кем соединяться не будем, это связь между двумя производственными площадками, исключительно по своим каналами.

на сколько я попробовал - тут все же не первый вариант, а второй.

например роутер 1, он сидит в сети 10.1.250.1/24 у него есть defgw. на 10.1.250.254.

он должен через ospf получить маршрут на 10.2/16, а он максимум получает только 10.2.250/24. то есть не видит всю необходимую посеть.

вопрос про арии был таким: подсети 10.1/16 и 10.2/16 должны быть в отдельных от бэкбона уникальных ариях или в одной и той же и почему.

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

тогда нужно помимо defgw на роутере1 прописать маршрут на сеть 10.1/16 через 10.1.250.254 и сделать redistribute static.

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

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

прописал дополнительные роуты на подсети /16, добавил "redistribute static", добавил описание network на все те подсети в ту же арею.

и единственное что добавляет зебра в роуты после синхронизации это: 10.2.250.0/24 то есть опять только подсеть.

easy_john
() автор топика
Ответ на: комментарий от chocholl

а! посыпаю голову.

я добавил роуты на самом роутере (системные) а надо было в конфиге самой яебры/куаги. :)

поменял, один из роутеров увидел соседние сети. ура.

правда второй почему-то не увидел. разбираюсь.

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

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

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

убрал.

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

easy_john
() автор топика
Ответ на: комментарий от chocholl

кстати, прои коннекте пишет:

Route[External]: Calculate AS-external-LSA to 10.2.0.0/16
Route[External]: Can't find originating ASBR route

это нормально?

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

вот это и причина
покажи ка полные конфиги кваги с обоих серверов.

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

реальные конфиги:

===local router

= zebra.conf
hostname xxxx
password zebra
enable password zebra
interface eth1
multicast
interface eth2
multicast
interface ppp0
multicast
ip route 10.1.0.0/16 172.20.9.253
ip route 172.16.0.0/16 172.20.9.253
log syslog

= ospfd.conf
hostname xxxxx
password zebra
log syslog
interface eth1
ip ospf priority 20
ip ospf hello-interval 1
ip ospf dead-interval 3
interface eth2
ip ospf priority 15
ip ospf hello-interval 1
ip ospf dead-interval 3
interface ppp0
ip ospf priority 10
ip ospf hello-interval 1
ip ospf dead-interval 3
interface lo
router ospf
network 10.0.254.0/30 area 10.0.0.0
network 10.0.254.4/30 area 10.0.0.0
network 10.0.254.8/30 area 10.0.0.0
redistribute static
line vty

===remote router

= zebra.conf
hostname yyyyy
password zebra
enable password zebra
interface eth1
multicast
interface eth2
multicast
interface ppp0
multicast
ip route 10.2.0.0/16 10.2.250.254
ip route 192.168.0.0/16 10.2.250.254
log syslog

= ospfd.conf
hostname yyyyy
password zebra
interface eth1
ip ospf priority 20
ip ospf hello-interval 1
ip ospf dead-interval 3
interface eth2
ip ospf priority 15
ip ospf hello-interval 1
ip ospf dead-interval 3
interface ppp0
ip ospf priority 10
ip ospf hello-interval 1
ip ospf dead-interval 3
router ospf
network 10.0.254.0/30 area 10.0.0.0
network 10.0.254.4/30 area 10.0.0.0
network 10.0.254.8/30 area 10.0.0.0
redistribute static
log syslog

=======
# sh ip ospf neighbor detail
Neighbor 10.2.250.1, interface address 10.0.254.6
In the area 10.0.0.0 via interface eth2
Neighbor priority is 15, State is Full, 5 state changes
DR is 10.0.254.5, BDR is 10.0.254.6
Options 2 *|-|-|-|-|-|E|*
Dead timer due in 00:00:02
Database Summary List 0
Link State Request List 0
Link State Retransmission List 0
Thread Inactivity Timer on
Thread Database Description Retransmision off
Thread Link State Request Retransmission on
Thread Link State Update Retransmission on

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

не очень понял на remote роутере вот эту строчку
ip route 10.2.0.0/16 10.2.250.254

там сетка 10.2/16 вс-таки directly connected?

если да, то сделай на нем network 10.2.0.0 255.255.0.0 area 10.0.0.0

у ospf есть понятие external address, от которого в такой ситуации ему может снести голову.

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

в каждо офисе обычная сеть с вланами. разные машины в разных вланах, все роутятся через центральную циску. маршрут дефолта 10.2.250.254 на нее и смотрит. по этому маршруту доступна вся сеть 10.2/16.

меня смущает, почему количество neighbor 1. может подобавлять ему neighbor в конфиг принудительно?

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

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

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

это нужно потому, что ospf видит адрес шлюза 10.2.250.254, и не находит в свой базе соответствующую ему сеть.
вот поэтому и орет.

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

добавил.
ошибка осталась.

вот с ближайшего роутера пишет что 1 сосед:

gw-nzl# sh ip ospf interface
eth0 is up
  Internet Address 172.20.9.198/24, Broadcast 172.20.9.255, Area 10.0.0.0
  Router ID 10.0.254.5, Network Type BROADCAST, Cost: 10
  Transmit Delay is 1 sec, State DR, Priority 1
  Designated Router (ID) 10.0.254.5, Interface Address 172.20.9.198
  No backup designated router on this network
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    Hello due in 00:00:06
  Neighbor Count is 0, Adjacent neighbor count is 0
eth1 is up
  Internet Address 10.0.254.1/30, Broadcast 10.0.254.3, Area 10.0.0.0
  Router ID 10.0.254.5, Network Type BROADCAST, Cost: 10
  Transmit Delay is 1 sec, State DR, Priority 20
  Designated Router (ID) 10.0.254.5, Interface Address 10.0.254.1
  No backup designated router on this network
  Timer intervals configured, Hello 1, Dead 3, Wait 3, Retransmit 5
    Hello due in 00:00:00
  Neighbor Count is 0, Adjacent neighbor count is 0
eth2 is up
  Internet Address 10.0.254.5/30, Broadcast 10.0.254.7, Area 10.0.0.0
  Router ID 10.0.254.5, Network Type BROADCAST, Cost: 10
  Transmit Delay is 1 sec, State Backup, Priority 15
  Designated Router (ID) 10.2.250.1, Interface Address 10.0.254.6
  Backup Designated Router (ID) 10.0.254.5, Interface Address 10.0.254.5
  Timer intervals configured, Hello 1, Dead 3, Wait 3, Retransmit 5
    Hello due in 00:00:00
  Neighbor Count is 1, Adjacent neighbor count is 1
lo is up
  OSPF not enabled on this interface
ppp0 is down
  OSPF not enabled on this interface

при отрывании кабеля - соседей становится 0.

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

можно поменять тип сети на eth1 и посомтреть

на обоих роутерах:

interface eth1
ip ospf network non-broadcast

router ospf
neighbor ip_адрес_удаленной_стороны

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

а должны бы быть соседи и на eth1
смущает то, что на eth1 state "Unknown", хотя пинги по ней бегают (сетевухи разных производителей)

ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:10:22:ff:b5:2c brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:15:f2:ef:d9:d8 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:19:d1:15:9a:2d brd ff:ff:ff:ff:ff:ff


поменял тип обоих на point-to-point, прописал по два neighbor на каждом роутере - ничего не изменилось.

при обрыве eth2 получаю 
eth1 is up
  Internet Address 10.0.254.1/30, Broadcast 10.0.254.3, Area 10.0.0.0
  Router ID 10.0.254.5, Network Type POINTOPOINT, Cost: 10
  Transmit Delay is 1 sec, State Point-To-Point, Priority 20
  No designated router on this network
  No backup designated router on this network
  Timer intervals configured, Hello 1, Dead 3, Wait 3, Retransmit 5
    Hello due in 00:00:01
  Neighbor Count is 0, Adjacent neighbor count is 0
eth2 is up
  Internet Address 10.0.254.5/30, Broadcast 10.0.254.7, Area 10.0.0.0
  Router ID 10.0.254.5, Network Type POINTOPOINT, Cost: 10
  Transmit Delay is 1 sec, State Point-To-Point, Priority 15
  No designated router on this network
  No backup designated router on this network
  Timer intervals configured, Hello 1, Dead 3, Wait 3, Retransmit 5
    Hello due in 00:00:01
  Neighbor Count is 0, Adjacent neighbor count is 0

easy_john
() автор топика
Ответ на: комментарий от chocholl

на обоих концах вижу массу пакетов hello, с обоих ip:

IP 10.0.254.1 > 224.0.0.5: OSPFv2, Hello, length: 48
IP 10.0.254.2 > 224.0.0.5: OSPFv2, Hello, length: 48

один раз видел "SPFv2, Database Description" и "LS-Update"

easy_john
() автор топика
Ответ на: комментарий от chocholl

пойду сначала переставлю все сетевухи местами.

easy_john
() автор топика
Ответ на: комментарий от chocholl

Определенно проблемы из-за железа.

Переставил сетевухи, все работает нормально, видит двух соседов, переживает отключение любого:

переход на резервный канал:
e100: eth2 NIC Link is Down
ospfd[13502]: nsm_change_state(10.2.250.1, Full -> Down): scheduling new router-LSA origination
ospfd[13502]: Route[External]: Calculate AS-external-LSA to 10.1.0.0/16
ospfd[13502]: Route[External]: AS-external-LSA is self originated
ospfd[13502]: Route[External]: Calculate AS-external-LSA to 10.2.0.0/16
ospfd[13502]: Route[External]: type-2 created.
ospfd[13502]: Route[External]: Adding a new route 10.2.0.0/16
ospfd[13502]: Route[External]: Calculate AS-external-LSA to 172.16.0.0/16
ospfd[13502]: Route[External]: AS-external-LSA is self originated
ospfd[13502]: Route[External]: Calculate AS-external-LSA to 192.168.0.0/16
ospfd[13502]: Route[External]: type-2 created.
ospfd[13502]: Route[External]: Adding a new route 192.168.0.0/16


Возврат линка 
e100: eth2 NIC Link is Up 100 Mbps Full Duplex
ospfd[13502]: Packet[DD]: Neighbor 10.2.250.1 Negotiation done (Slave).
ospfd[13502]: nsm_change_state(10.2.250.1, Exchange -> Full): scheduling new router-LSA origination
ospfd[13502]: Route[External]: Calculate AS-external-LSA to 10.1.0.0/16
ospfd[13502]: Route[External]: AS-external-LSA is self originated
ospfd[13502]: Route[External]: Calculate AS-external-LSA to 10.2.0.0/16
ospfd[13502]: Route[External]: type-2 created.
ospfd[13502]: Route[External]: Adding a new route 10.2.0.0/16
ospfd[13502]: Route[External]: Calculate AS-external-LSA to 172.16.0.0/16
ospfd[13502]: Route[External]: AS-external-LSA is self originated
ospfd[13502]: Route[External]: Calculate AS-external-LSA to 192.168.0.0/16
ospfd[13502]: Route[External]: type-2 created.
ospfd[13502]: Route[External]: Adding a new route 192.168.0.0/16

--- 
chochol - огромное спасибо за помощь. стало заметно понятнее как оно должно работать.

остался всякий тюнинг, но это уже наверно справлюсь сам.

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