Что такое SD-WAN? Это пересылка разных типов IP трафика в разные каналы в зависимости от разных условий.
Для лучшего понимания Что такое SD-WAN и как оно работает я создал упрощённую модель в симуляторе eve-ng, включающую 6 виртуальных маршрутизаторов Cisco, протокол BGP между R3 и R4.
Между маршрутизаторами R3 и R4 есть два WAN линка (wan1 and wan2).
Для упрощения есть два приложения генерирующих трафик.
Есть красный трафик от R1 до R5, и есть зелёный трафик от R2 до R6.
Упрощённо можно считать что, для красного и зелёного трафика требуется разная пропускная способность, разная задержка, разный jitter.
Есть управляющий сервер SD-WAN, откуда запускается Python программа, которая соединяется с маршрутизатором R3 и проверяет нагрузку на интерфейсах e0/0 e0/1, и в зависимости от заданных условий переключает красный или зелёный трафик соответственно в первый или во второй канал.
Между маршрутизаторами R3 и R4 настроен протокол bgp который позволяет управлять трафиком с маршрутизатора R3 в обе стороны (туда и обратно). С помощью "route-map in" и "route-map out" меняются приоритетность входящего и исходящего трафика для соответствующих префиксов.
В случае отключения одного из каналов конечно весь трафик пойдёт в оставшийся канал.
router bgp 3
bgp log-neighbor-changes
network 10.0.1.0 mask 255.255.255.0
network 10.0.2.0 mask 255.255.255.0
neighbor 10.0.34.4 remote-as 4
neighbor 10.0.34.4 route-map fr6 in
neighbor 10.0.34.4 route-map to5prepend out
neighbor 10.0.134.4 remote-as 4
neighbor 10.0.134.4 route-map fr5 in
neighbor 10.0.134.4 route-map to6prepend out
!
ip prefix-list 1 seq 5 permit 10.0.1.0/24
ip prefix-list 2 seq 5 permit 10.0.2.0/24
ip prefix-list 5 seq 5 permit 10.0.5.0/24
ip prefix-list 6 seq 5 permit 10.0.6.0/24
!
route-map fr5 permit 10
match ip address prefix-list 5
set local-preference 150
!
route-map fr5 permit 20
match ip address prefix-list 6
continue
!
route-map fr6 permit 10
match ip address prefix-list 6
set local-preference 150
!
route-map fr6 permit 20
match ip address prefix-list 5
continue
!
route-map to6prepend permit 10
match ip address prefix-list 2
set as-path prepend 3
!
route-map to6prepend permit 20
match ip address prefix-list 1
continue
!
route-map to5prepend permit 10
match ip address prefix-list 1
set as-path prepend 3
!
route-map to5prepend permit 20
match ip address prefix-list 2
continue
!
Где практически это можно использовать? Например банкомат подключен к банку через двух разных сотовых провайдеров. Нагрузка на сотовую сеть может меняться в течении дня по разному у обоих провайдеров и управляющая программа SD-WAN будет например каждые 5 минут проверять задержку на каналах и переключать трафик в тот где меньше задержка.
connection = ConnectHandler(**netmiko_connection) # Establish SSH connection
connection.enable() # Enter enable mode
commands = ['router bgp 3', 'neighbor 10.0.134.4 route-map fr6 in',
'neighbor 10.0.134.4 route-map to5prepend out', 'neighbor 10.0.34.4 route-map fr5 in',
'neighbor 10.0.34.4 route-map to6prepend out', 'end' ,'write', 'clear ip bgp * soft' ]
output = connection.send_config_set(commands)
outputd4 = connection.send_command('show runn | section router') #
connection.disconnect() # Disconnect from device
jozols
Салют! А как в этой схеме адекватно оценивать качество канала, например на красном пропадает 10% и jitter низкий, а на зелёном 5% и jitter высокий. Может можно ткнуть в код на питоне где замер jittera. Reggards!
CCNPengineer Автор
на маршрутизаторе R3 можно настроить
ip sla 10
icmp-jitter 10.0.6.2
и считывать его состояние из python программы
outputd5 = connection.send_command('show ip sla summ') #