ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

Архивные статьи в категории ‘Сетевое оборудование’

Juniper: BGP load balancing on 2 links (same ISP)

На одном из маршрутизаторов Juniper появился второй физический линк на того же апстрима, т.к. первый линк уже сильно нагружен. Что по итогу получилось ?

А получилось что мы имеем два линка в одну и ту же ASку (два физических линка и две BGP сессии) и трафик может распределяться по 2 линкам неравномерно.

В своей предыдущей статье «Настройка протокола BGP на оборудовании Juniper» я уже затрагивал тему лоад балансинга, но там load balance применяется ко всем апстримам, а тут у меня появилась немного другая задача, сделать балансинг только на двух этих линках. (уточню, что речь идет ТОЛЬКО про исходящий трафик из моей AS)

Для примера будем считать, что у апстрима номер автономной системы AS100.

Итак начнем, войдем в режим конфигурации:

root@juniper> configure

Как известно, что практический любой вопрос можно решить как минимум двумя способами, подумав, я решил балансить трафик исходя из as-path, поэтому создадим «AS path regular expression «:

[edit]
root@juniper#
set policy-options as-path as100 «100.*»

что означает, что путь должен начинаться с AS номер 100, а что там будет дальше нам все равно, главное что мы обозначили что он идет именно через нашего апстрима.

Далее создадим полиси (в терминах cisco «маршрутную карту» — route-map):

[edit]
root@juniper#
set policy-options policy-statement load-balance-as100 from as-path as100
[edit]
root@juniper#
set policy-options policy-statement load-balance-as100 then load-balance per-packet

в которой мы и указали созданный выше as-path как параметр для матча (совпадение as-path в маршруте)

Ну и осталось применить это к таблице маршрутизации — forwarding-table:

[edit]
root@juniper#
set routing-options forwarding-table export load-balance-as100

Проверим все ли в порядке:

[edit]
root@juniper#
commit check

Если в ответ вы получили сообщение:

configuration check succeeds

значит ошибок в конфигурации нет и вы можете применять её на маршрутизаторе.

Сделаем это и добавим комментарий к этому конфигу:

[edit]
root@juniper#
commit comment «Load balance AS100»

После применения данных изменений на моем маршрутизаторе исходящий трафик в двух линках выровнялся и начал ходить почти одинаково.

Разница конечно будет, не ждите 100% одинаковости трафика по каналам, но в общем целом она перестала различаться в разы и составляет 10-20 Мбит/с.

За балансинг входящего к вам трафик уже отвечает ваш апстрим, но для него это же исходящий трафик 😉

Ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: Николаев Дмитрий (virus (at) subnets.ru)

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 2, среднее: 4,50 из 5)
Загрузка...
Отправить на почту Отправить на почту

Продолжение статьи о настройке Foundry BigIron 4000.

Из предыдущей статьи мы знаем как создать виланы. Теперь будем настраивать маршрутизацию.
Общий принцип заключен в следующем порядке действий:

BigIron Router(config)#vlan <номер_вилана> by port //Создание вилана
BigIron Router(config-vlan-<номер_вилана>)#tagged ethernet <слот/порт> //Добавляем тегированный порт.
BigIron Router(config-vlan-<номер_вилана>)#router-interface ve <номер> //Указываем номер виртуального интерфейса для роутинга
BigIron Router(config-vlan-<номер_вилана>)#interface ve <номер> //Переходим к настройке того самого маршрутизирующего интефейса
BigIron Router(config-vif-<номер>)#ip address <ip-адрес/CIDR> //ip-адрес вилана на маршрутизаторе и ширину подсети. Адрес вилана будет gw для устройств, находящихся в этом вилане.
BigIron Router(config-vif-<номер>)#ip helper-address 1 <ip-адрес DHCP сервера> //Указываем адрес DHCP-сервера, цифра 1 обозначает порядковый номер DHCP-сервера. Их может быть несколько.
//Далее создаем ACL
BigIron Router(config-vif-<номер>)#access-list <100-199> perm udp any any eq bootps //создаем ACL с номером от 100 до 199 и разрешаем проброс DHCP-пакетов от любого адреса к любому.
BigIron Router(config-vif-<номер>)#access-list <100-199> perm ip <Сеть_в_исходном_вилане/CIDR> <Сеть_в_вилане_назначения/CIDR> //разрешаем хождение трафика из одной подсети в другую
BigIron Router(config-vif-<номер>)#access-list <100-199> perm ip <Сеть_в_исходном_вилане/CIDR> host <ip-адрес_вилана> //Разрешаем хождение трафика из этокого вилана в любой другой через host <ip-адрес_вилана>
BigIron Router(config-vif-<номер>)#access-list <100-199> deny ip any any //Запрещаем хождение трафика из любой подсети в любую, кроме тех, которые были ранее разрешены.
BigIron Router(config-vif-<номер>)#ip access-group <100-199> in //Прикручиваем ACL к интерфейсу, приэтом весь входящий трафик будет подчиняться этим правилам.

Вот пример настройки 1 и 167 вилана:

BigIron Router(config)#vlan 1
BigIron Router(config-vlan-1)#tagged ethe 4/5 ethe 4/14
BigIron Router(config-vlan-1)#router-interface ve 1
BigIron Router(config-vlan-1)#interface ve 1
BigIron Router(config-vif-1)#interface ve 1
BigIron Router(config-vif-1)#ip address 10.10.0.1 255.255.0.0
BigIron Router(config-vif-1)#ip helper-address 1 10.10.254.254

BigIron Router(config)#vlan 167 by port
BigIron Router(config-vlan-167)#tagged ethe 4/5 ethe 4/14
BigIron Router(config-vlan-167)#router-interface ve 167
BigIron Router(config-vlan-167)#interface ve 167
BigIron Router(config-vif-167)#interface ve 167
BigIron Router(config-vif-167)#ip address 10.2.70.1 255.255.255.0
BigIron Router(config-vif-167)#ip helper-address 1 10.10.254.254
BigIron Router(config-vif-167)#access-list 167 perm udp any any eq bootps
BigIron Router(config-vif-167)#access-list 167 perm ip 10.2.70.0 0.0.0.255 10.10.0.0 0.0.255.255
BigIron Router(config-vif-167)#access-list 167 deny ip any any
BigIron Router(config-vif-167)#access-list 167 perm ip 10.2.70.0 0.0.0.255 host 10.2.70.1
BigIron Router(config-vif-167)#ip access-group 167 in

Важно:
1. Если надо добавить несколько портов, то синтаксис будет выглядеть так
tagged ethernet <слот1/порт1> to <слот2/порт5> //Для добавления ряда портов с порт1 по порт5 находящемся в слоте1
tagged ethernet <слот1/порт1> ethernet <слотN/портN> //Для добавления выбранных портов, т.е добавится порт1 из слота1 и портN из слотаN.

2. В маршрутизирующих коммутаторах Foundry BigIron 4000 виланом по умолчанию считается vlan 1, если требуется сменить этот вилан, то следует использовать команду default-vlan-id <номер вилана по умолчанию>.

3. В маршрутизирующих коммутаторах Foundry BigIron 4000 существует ограничение по количеству виланов. У меня по умолчанию было 8 виланов из 256. Проверить это можно выполнив show default values. Изменить максимальное количество виланов можно следующим набором команд:
BigIron Router(config)#system-max vlan 256
BigIron Router(config)#write memory
BigIron Router(config)#exit
BigIron Router#reload

Следует отметить, что команды можно сокращать до нескольких знаков. К примеру команду show можно использовать как sh. А команду ip helper-address 1 10.10.254.254 можно использовать как ip help 1 10.10.254.254.

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 1, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту
На "правах" заметки

Столкнулся сегодня с задачей создания vlan с номером из диапазона с 1006  по 4094 включительно (extended-range vlan).
Все делается как обычно:


Switch(config)# vlan 1070
Switch(config-vlan)# name EXT_VLAN
Switch(config-vlan)# end

Но есть нюанс: VTP свитча у вас должен быть в режиме transparent, иначе (например, в режиме server) при выходе из режима конфигурирования влана свитч не создаст влан и будет сообщать об ошибке:

% Failed to create VLANs 1070
Failed due to unknown reason.
%Failed to commit extended VLAN(s) changes.
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 2, среднее: 4,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Собственно, а для чего это нужно, спросите вы? Мне это понадобилось для предоставления полных прав для одного устройства локальному администратору. На всех устройствах в сети авторизация происходит по TACACS, соответственно и ограничиваются права на выполнение тех или иных команд. Конфигурацию TACACS менять не хотелось и все надо было сделать быстро. Вот пример первоначального конфига:
aaa new-model
aaa authentication login default group tacacs+ local
aaa authorization exec default group tacacs+ local
aaa authorization commands 15 default group tacacs+ local
aaa accounting exec default start-stop group tacacs+


!
line vty 0 15
access-class 1 in
exec-timeout 60 0

Что требуется? Требуется предоставить полный доступ к одному устройству Cisco с определенного IP адреса для определенного пользователя, причем для остальных ничего не должно измениться.

Добавляем новую aaa группу:

aaa new-model
aaa authentication login default group tacacs+ local
aaa authentication login GROUP1 local
aaa authorization exec default group tacacs+ local
aaa authorization exec GROUP1 local
aaa authorization commands 15 default group tacacs+ local
aaa authorization commands 15 GROUP1 local
aaa accounting exec default start-stop group tacacs+

Добавляем нового пользователя:

username CustomUser password 7 050A0A03281F32

Создаем новый access-list, в котором разрешаем доступ с определенного IP адреса:

access-list 2 permit 111.111.111.111

И применяем все наши настройки например к vty 5

line vty 5
access-class 2 in
authorization commands 15 GROUP1
authorization exec GROUP1
login authentication GROUP1
rotary 5

Теперь человек, для которого собственно все и делалось может попасть на необходимый vty, используя следующую команду:

telnet 11.11.11.11 3005

Вход будет выполнен на vty 5.

Автор: zaikini
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 1, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Рассмотрим пример настройки протокола BGP на оборудовании Cisco Systems.

В основном принципе настройка на Cisco ничем не отличается от настройки BGP на FreeBSD используя Quagga.

Для примера возьмем немного другую ситуацию чем в предыдущей статье, итак:

схема BGP

AS100 — наш номер ASки

5.5.0.0/20 — анонсируемый нами префикс (наш блок адресов)

AS200 — наш апстрим, который отдает нам full-view (полную таблицу маршрутов)

AS300 — наш privat peer (приватный пир), который отдает нам маршруты в свою AS и своего клиента AS400.

С чего начать ?

С настройки интерфейсов конечно.

GigabitEthernet3/0 — AS200
GigabitEthernet3/1 — AS300

Зайдите на router телнетом и перейдите в enable режим.

cisco# conf t
cisco(config)# interface GigabitEthernet3/0
cisco(config-if)# ip address 1.1.1.2 255.255.255.252
cisco(config-if)# interface GigabitEthernet3/1
cisco(config-if)# ip address 2.2.2.10 255.255.255.252
cisco(config-if)# exit

Добавим маршруты, сначала отправим туда, откуда не возвращаются :), маршруты в «серые сети»:


cisco(config)# ip route 10.0.0.0 255.0.0.0 Null0 254
cisco(config)# ip route 172.16.0.0 255.240.0.0 Null0 254
cisco(config)# ip route 192.168.0.0 255.255.0.0 Null0 254

Затем добавим маршрут на свой полный блок:


cisco(config)# ip route 5.5.0.0 255.255.240.0 Null0 254

Протокол BGP не будет анонсировать префикс, пока сам не узнает маршрут до него.
Именно для этого мы и создали этот маршрут, который будет присутствовать в таблице маршрутизации всегда.
Вы можете пророутить внутрь своей сети как полный блок (тогда маршрут в Null0 (нуль ноль) можно и не добавлять) так и его, побитые на подсети, части.  Например подсети по /21:

cisco(config)# ip route 5.5.0.0 255.255.248.0 10.0.0.2
cisco(config)# ip route 5.5.0.0 255.255.248.0 10.0.0.3

Где:

  • 10.0.0.2
  • 10.0.0.3

маршрутизаторы внутри сети. Ессно, что они должны быть доступны с маршрутизатора BGP.

Роутер всегда отправляет пакеты по маршруту с лучшим совпадением по маске, именно поэтому маршрут в Null0 и два маршрута, которые мы сделали выше, будут прекрасно сосуществовать и пакеты будут идти на хосты 10.0.0.2 и 10.0.0.3, т.к. у них более точное совпадение по маске.

Приступим к созданию необходимых route-map. Сначала начнем со всего «серого» (адресов и номеров AS).

Создадим необходимые prefix-list и as-path access-list.

Маршрут в default:
cisco(config)# ip prefix-list bogons description bogus nets
cisco(config)# ip prefix-list bogons seq 15 permit 0.0.0.0/8 le 32

Затем остальное:
cisco(config)# ip prefix-list bogons seq 20 permit 127.0.0.0/8 le 32
cisco(config)# ip prefix-list bogons seq 25 permit 192.0.2.0/24 le 32
cisco(config)# ip prefix-list bogons seq 30 permit 10.0.0.0/8 le 32
cisco(config)# ip prefix-list bogons seq 35 permit 172.16.0.0/12 le 32
cisco(config)# ip prefix-list bogons seq 40 permit 192.168.0.0/16 le 32
cisco(config)# ip prefix-list bogons seq 45 permit 169.254.0.0/16 le 32
cisco(config)# ip prefix-list bogons seq 50 permit 192.42.172.0/24 le 32
cisco(config)# ip prefix-list bogons seq 55 permit 198.18.0.0/15 le 32
cisco(config)# ip prefix-list bogons seq 60 permit 192.88.99.0/24 le 32
cisco(config)# ip prefix-list bogons seq 65 permit 224.0.0.0/4 le 32
cisco(config)# ip prefix-list bogons seq 70 permit 240.0.0.0/4 le 32

Теперь «серые» номера AS`ок:
cisco(config)# ip as-path access-list 1 permit _6451[2-9]_
cisco(config)# ip as-path access-list 1 permit _645[2-9][0-9]_
cisco(config)# ip as-path access-list 1 permit _64[6-9][0-9][0-9]_
cisco(config)# ip as-path access-list 1 permit _65[0-9][0-9][0-9]_

Создадим маршрутную карту на IN для AS200 (нашего апстрима).
Запрещаем маршруты с «серыми» номерами AS в as-path, то что матчит (разрешает (permit)) наш as-path access-list, то запрещает наша следующая маршрутная карта:

cisco(config)# route-map map-AS200-in deny 100
cisco(config-route-map)# description — filter private ASs
cisco(config-route-map)# match as-path 1
cisco(config-route-map)# exit

Теперь по маршруту по умолчанию и «серым» сетям, логика действия как и в пред. случае, запрещаем то что permit в prefix-list bogons:

cisco(config)# route-map map-AS200-in deny 110
cisco(config-route-map)# description — — filter bogons
cisco(config-route-map)# match ip address prefix-list bogons
cisco(config-route-map)# exit

Ну и последнее, т.к. мы хотим принимать от AS200 full-view (т.е. полную таблицу), то:

  • разрешаем все остальные маршруты
  • выставляем local-preference по умолчанию внутри своей AS

cisco(config)# route-map map-AS200-in permit 200
cisco(config-route-map)# description — permit any else, set default loc-pref
cisco(config-route-map)# set local-preference 100
cisco(config-route-map)# exit

Создадим маршрутную карту на OUT для AS200 (нашего апстрима). Эта маршрутная карта нужна нам для того, чтобы наша AS анонсировала только свой префикс. Если маршрутной карты на OUT не будет, то ваша AS будет анонсировать всем своим соседям все известные ей маршруты и вы, сами того не желая, дадите возможность прогонять через вас трафик.
Но прежде создадим префикс лист со своим префиксом:

cisco(config)# ip prefix-list own-prefixes permit 5.5.0.0/20

Вот теперь вернемся к маршрутке на OUT:

cisco(config)# route-map map-AS200-out permit 100
cisco(config-route-map)# description — permit our prefixes
cisco(config-route-map)# match ip address prefix-list own-prefixes
cisco(config-route-map)# exit

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

Настало время приступить к маршрутным картам для нашего private peer`а.
Т.к. от него мы собираемся получать только маршруты принадлежащие ему (AS300) и его клиенту (AS400), то будет проще, разрешим только необходимые префиксы, а все остальное запретим:

cisco(config)# ip prefix-list peer-prefixes permit 11.11.0.0/21
cisco(config)# ip prefix-list peer-prefixes permit 12.12.0.0/21

Теперь можно создать маршрутную карту на IN, в которой разрешим необходимые префиксы и поднимем loc-pref, на данные префиксы, чтобы маршруты полученные от этого пира имели приоритет над маршрутами к этим префиксам полученными от других апстримов/пиров:

cisco(config)# route-map map-AS300-in permit 100
cisco(config-route-map)# description — — permit peer prefix
cisco(config-route-map)# match ip address prefix-list peer-prefixes
cisco(config-route-map)# set local-preference 200
cisco(config-route-map)# exit

Ну и тут не обойдется без маршрутной карты на OUT:

cisco(config)# route-map map-AS300-out permit 100
cisco(config-route-map)# description — permit our prefixes
cisco(config-route-map)# match ip address prefix-list own-prefixes
cisco(config-route-map)# exit

Зачем мы создали две маршрутные карты на OUT с разными названиями, но с одинаковым содержимым ?
Ответ прост. Если, в последствии, нам нужно будет, например добавить community к своему маршруту или оглашать свой блок меньшими подсетями, то все равно придется делать разные маршрутные карты, вот поэтому сделаем это сразу, чтобы потом не изменять конфигурацию bgp, а просто подправить маршрутную карту.

Закончим подготовку перед настройкой BGP:

cisco(config)# ip classless
cisco(config)# ip routing
cisco(config)# ip subnet-zero

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

cisco(config)# router bgp 100
cisco(config-router)# no synchronization
cisco(config-router)# bgp log-neighbor-changes
cisco(config-router)# bgp deterministic-med

Объявим наш префикс:
cisco(config-router)# network 5.5.0.0 mask 255.255.240.0

Пропишем наего апстрима AS200:
cisco(config-router)# neighbor 1.1.1.1 remote-as 200
cisco(config-router)# neighbor 1.1.1.1 description AS200-upstream
cisco(config-router)# neighbor 1.1.1.1 send-community
cisco(config-router)# neighbor 1.1.1.1 version 4
cisco(config-router)# neighbor 1.1.1.1 soft-reconfiguration inbound
cisco(config-router)# neighbor 1.1.1.1 route-map map-AS200-in in
cisco(config-router)# neighbor 1.1.1.1 route-map map-AS200-out out

Пропишем нашего private peer`а:
cisco(config-router)# neighbor 2.2.2.9 remote-as 300
cisco(config-router)# neighbor 2.2.2.9 description AS300-private-peer
cisco(config-router)# neighbor 2.2.2.9 send-community
cisco(config-router)# neighbor 2.2.2.9 version 4
cisco(config-router)# neighbor 2.2.2.9 soft-reconfiguration inbound
cisco(config-router)# neighbor 2.2.2.9 route-map map-AS300-in in
cisco(config-router)# neighbor 2.2.2.9 route-map map-AS300-out out

Заканчиваем:
cisco(config-router)# distance bgp 180 200 200
cisco(config-router)# no auto-summary
cisco(config-router)# exit
cisco(config)# exit
cisco# wri

После запуска посмотрите, что все настроенные BGP сессии поднялись. Команда:
cisco# show ip bgp summary

Так же стоит взгянуть что именно мы огласили нашему апстриму:
cisco# show ip bgp neighbors 1.1.1.1 advertised-routes

И нашему private peer`у:
cisco# show ip bgp neighbors 2.2.2.9 advertised-routes

Можно взглянуть и что мы от них получили:
cisco# show ip bgp neighbors 1.1.1.1 received-routes
cisco# show ip bgp neighbors 2.2.2.9 received-routes

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


Заметка:
После каждого изменения route-map, в процессе работы, чтобы изменения вступили в силу необходимо оборвать (clear`нуть) BGP сессию с сосседом. Для того чтобы этого не делать и существует команда soft-reconfiguration inbound при настройке neighbor. Она заставляет роутер хранить маршруты полученные от соседа не только после обработки вашими route-map, но и до этого.
Тем самым вы не обрываете сессию с соседом, а роутер просто берет сохраненные у себя маршруты, которые пришли от соседа и сохранены в первозданном виде ДО обработки вашими route-map и снова прогоняет их через уже измененную route-map.
Например вы изменили route-map map-AS200-in, значит нуна клирнуть сессию с соседом IP-адрес 1.1.1.1.
cisco# clear ip bgp 1.1.1.1 soft in


Заметка:
Если вы хотите принимать от BGP соседа маршруты не более определенной маски, то необходимо создать prefix-list с указанием le или ge:

  • eq — Matches the exact prefix length
  • ge — Matches a prefix length that is equal to or greater than the configured prefix length
  • le — Matches a prefix length that is equal to or less than the configured prefix length

Например: принимать все маршруты с любым префиксом, но не более /24:
cisco(config)# ip prefix-list prefix-range seq 5 permit 0.0.0.0/0 le 24
cisco(config)# route-map peer-in permit 200
cisco(config-route-map)# match ip address prefix-list prefix-range


Полезные ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: Николаев Дмитрий (virus (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 14, среднее: 3,93 из 5)
Загрузка...
Отправить на почту Отправить на почту