Thursday, December 31, 2015

Строим отказоустойчивую сетевую инфраструктуру предприятия.

Часть 2: Соединяем Cisco и HP ProCurve при помощи MSTP.
(Update from 2016.01.05)

Часть 1: "MSTP на HP ProCurve"
Часть 3: "Тюнинг настроек пограничных портов и портов доступа на Cisco и HP ProCurve"


     Продолжаем серию для "начинающих профессионалов" :) В прошлый раз мы собрали в единую сеть все наши HP ProCurve, а сегодня настал черед подключить оставшееся оборудование Cisco к нашей схеме:
         Кроссируем наши Cisco 1, 2, 3 и 4, как показано на схеме, но один из линков в каждой группе из двух коммутаторов пока отключаем для предотвращения петли, до тех пор, пока не заработает Spanning Tree.

     Итак, на ProCurve мы настраивали MSTP, по логике мы должны настроить и на Cisco MSTP, и в интернете даже есть некоторое количество информации на тему связывания этих двух производителей, и даже официальные доки от HP и от Cisco. Но к сожалению...

     Настройка MSTP на Cisco.

      Для начала, если вы еще не читали Часть 1: "MSTP на HP ProCurve", то советую почитать! Там рассматриваются основные принципы настройки MSTP на коммутаторах, которые являются общими и для HP и для Cisco. Ну а вкратце основные рекомендации Cisco и здравого смысла по настройке MSTP такие:
  1. Использовать один регион во всей сети.
  2. Минимальное количество instances, т.е. не более числа дублирующих линков.
  3. Задавать приоритеты для root bridge.
  4. Заранее разбивать сразу весь возможный диапазон VLAN на instances.
  5. Все instances на всех коммутаторах региона должны содержать одинаковый список VLAN'ов! На Cisco в этом вопросе на помощь придёт протокол VTP v3, который умеет обслуживать не только VLAN'ы, но и instances MST. На ProCurve есть только GVRP, который является аналогом VTP V1/2, и работать с MSTP не умеет, так что все синхронизации настроек instances между коммутаторами на HP выполняются "ручками".
  6. Имя домена и ревизия конфигурации должны совпадать в регионе!
  7. На всех транках между коммутаторами должен быть разрешен весь список VLAN'ов которые обслуживает Spanning Tree.
     А так же еще есть правила для связывания ProCurve и Cisco:
  1. Cisco поддерживает 802.1s MSTP только с 2005 года, и надо убедиться, что IOS новее 2005 года. Апдейт фирмвари вообще делать полезно!
  2. Не путать Pre-STD MST с MSTP - они несовместимы.
  3. Убедиться, что на транках между Cisco и HP установлен Native/Untagged VLAN 1.
     Выполнение этих правил позволит вашей топологии Spanning Tree стабильно работать, распределять нагрузку по линкам, и не пересчитываться без критической надобности, укладывая всю сеть :)

Убеждаемся, что на транках между Cisco и ProCurve у нас разрешены все необходимые VLAN'ы, после чего приступаем:
conf t
spanning-tree mst configuration
Все делаем как и на ProCurve. Задаём имя региона, такое же как и на ProCurve, т.е. одинаковое во всём регионе:
name H2SO4
Номер ревизии конфига должен обязательно совпадать во всем регионе:
revision 1
Разбиваем наши вланы на 2 instance, абсолютно аналогично, как на ProCurve:
instance 1 vlan 1-35,101,111-500,1001-4094
instance 2 vlan 36-100,102-110,501-1000
И для профилактики, не выходя из режима конфигурации MST смотрим, что у нас получилась за конфигурация:
show pending
Pending MST configuration
Name      [H2SO4]
Revision  1     Instances configured 3

Instance  Vlans mapped
--------  ---------------------------------------------------------------------
0         none
1         1-35,101,111-500,1001-4094
2         36-100,102-110,501-1000
-------------------------------------------------------------------------------
Для сохранения конфигурации набираем exit или нажимаем CTRL-Z:
exit
В случае, если Cisco у вас главные в MST регионе, или у вас Cisco-Only сеть, то задаём параметры определяющие, что наши коммутаторы будут главными в MSTP регионе для конкретных instances, как мы делали на HP в прошлой статье, и зададим приоритеты для instances:  
Cisco 1/3:
conf t
spanning-tree mst 1 root primary
spanning-tree mst 0-1 priority 0
spanning-tree mst 2 priority 4096
Cisco 2/4:
conf t
spanning-tree mst 2 root primary
spanning-tree mst 0-1 priority 4096
spanning-tree mst 2 priority 0
Для нашей конфигурации Cisco+HP данная настройка приоритетов на Cisco не требуется, так как root bridge у нас ProCurve, и все высшие приоритеты у нас на ProCurve!
После того, как сконфигурировали ваш MSTP на всех Cisco в пределах группы, включаем его: 
spanning-tree mode mst
     Все должно легко и непринужденной взлететь, если только вы следовали инструкциям, и в вашей сети не притаился за углом сюрприз, как было в моей :)
     Я несколько дней убил пытаясь понять, почему у меня ничего не работает! В итоге, в тёмном забытом углу нашлась Cisco 3560, про которую все забыли, и которая работала в режиме PVST... Признаться я даже не предполагал, что BPDU могут вот так пролетать сквозь всю топологию, и портить жизнь. В общем её BPDU пролетали насквозь и сводили с ума Cisco на которых я включал MSTP. Постоянные пересчеты топологии, веерные блокировки портов и т.д. и т.п.

000068: 00:49:18: %SPANTREE-2-PVSTSIM_FAIL: Blocking root port Gi0/8: Inconsistent inferior PVST BPDU received on VLAN 110, claiming root 32878:0015.c6d7.9900

Gi0/7            Mstr BKN*20000     128.7    P2p Bound(PVST) *PVST_Inc

     Кстати, на HP есть такая штука, как pvst-filter, возможно ее включение спасло бы меня без поиска всех железок отправляющих неправильные BPDU.

      Итак, что же я делал... Включаю на Cisco debug принятых BPDU:

term mon
debug spanning-tree bpdu receive

И вижу вот такую картину:

002836: Jan  5 16:36:57.625: STP: MST0 rx BPDU: config protocol = mstp, packet from GigabitEthernet0/8  , linktype IEEE_SPANNING , enctype 2, encsize 17 
002837: Jan  5 16:36:57.625: STP: enc 01 80 C2 00 00 00 00 1B 3F 58 31 EF 00 89 42 42 03 
002838: Jan  5 16:36:57.625: STP: Data     000003023C1000001B3FC1A800000000001000001B3FC1A80080110000140002000F00
002839: Jan  5 16:36:57.634: STP: MST0 Gi0/8:0000 03 02 3C 1000001B3FC1A800 00000000 1000001B3FC1A800 8011 0000 1400 0200 0F00
002840: Jan  5 16:36:58.238: STP: MST0 rx BPDU: config protocol = mstp, packet from GigabitEthernet0/8  , linktype SSTP , enctype 3, encsize 22 
002841: Jan  5 16:36:58.238: STP: enc 01 00 0C CC CC CD 9C 4E 20 B2 2E 98 00 32 AA AA 03 00 00 0C 01 0B 
002842: Jan  5 16:36:58.238: STP: Data     000000000080649C4E20B22E800000000080649C4E20B22E8080180000140002000F00
002843: Jan  5 16:36:58.238: STP: MST0 Gi0/8:0000 00 00 00 80649C4E20B22E80 00000000 80649C4E20B22E80 8018 0000 1400 0200 0F00

IEEE_SPANNING - это то, что должно быть, это нормально.
А вот SSTP - это уже ненормально. Это не наш MSTP, это "чужой" Spanning-tree, который нам и портит жизнь.
Найти злодея проще простого. Первые 6 цифр в поле ENC это заголовок, он всегда одинаковый: 01 00 0C CC CC CD, а вот следующие 6 цифр это уже MAC адрес отправителя, по нему и надо искать мешающее оборудование: 9C 4E 20 B2 2E 98  - в моём случае это оказалась Cisco 3560. После отключения на ней STP все пришло в норму. MSTP забегал, и все стало хорошо.

Несколько команд для проверки конфигурации MSTP на Cisco и HP:
HP:
sh spanning-tree mst-config

  MST Configuration Identifier Information

  MST Configuration Name : H2SO4                          
  MST Configuration Revision : 1    
  MST Configuration Digest : 0xF1AD53AD5D69827DFCB5C5B5D00F6D88

  IST Mapped VLANs : 

  Instance ID Mapped VLANs                                             
  ----------- ---------------------------------------------------------
  1           1-35,101,111-500,1001-4094
  2           36-100,102-110,501-1000

Синим цветом выделена контрольная сумма, она должна совпадать при правильной и одинаковой конфигурации на HP и Cisco. Если она отличается - ищите различия. Пока она отличается, все будет работать через instance 0 и все порты будет Boundary.

Cisco:
sh spanning-tree mst configuration 

Name      [H2SO4]
Revision  1     Instances configured 3

Instance  Vlans mapped
--------  ---------------------------------------------------------------------
0         none
1         1-35,101,111-500,1001-4094
2         36-100,102-110,501-1000
-------------------------------------------------------------------------------
sh spanning-tree mst configuration digest 
Name      [H2SO4]
Revision  1     Instances configured 3
Digest          0xF1AD53AD5D69827DFCB5C5B5D00F6D88
Pre-std Digest  0x79EA425B9595B8B88B3E715854CC0CC8

     В этом случае, не мудрствуя лукаво, MSTP просто для всех instances заблокировал межкоммутаторный линк оставив его на случай аварии, что логично. Ведь этот линк менее быстрый, и больше хопов на пути до root bridge.

Немного статистики с Cisco:

sh spanning-tree mst 1

##### MST1    vlans mapped:   1-35,101,111-500,1001-4094
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Gi0/18           Desg FWD 20000      128.18   P2p 
Gi0/20           Desg FWD 200000    128.20   P2p 
Gi0/21           Desg FWD 200000    128.21   P2p 
Gi0/22           Desg FWD 200000    128.22   P2p 
Gi0/23           Desg FWD 200000    128.23   P2p 
Gi0/24           Altn BLK 20000        128.24   P2p 
Po1                Root FWD 20000      128.36   P2p 

sh spanning-tree mst 2

##### MST2    vlans mapped:   36-100,102-110,501-1000
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Gi0/24           Altn BLK 20000      128.24   P2p 
Po1               Root FWD 20000     128.36   P2p 

     Документации по работе оборудования HP и Cisco вместе: от HP и от Cisco
Коммутаторы в единую сеть мы собрали, по-этому в следующих заметках поговорим о настройках пользовательских портов, добавлю немного о защите сети от пользователей и петель, а так же зарезервируем доступ в интернет, почтовый релей, и подключение компании к интернету.
  1. Поговорим про BPDUGuard, BPDUFilter, PortFast и о некоторых особенностях применения этих сервисов на Cisco и HP ProCurve.
  2. Сделаем кластер из двух серверов на базе FreeBSD+CARP для раздачи интернета пользователям.
  3. Сделаем кластер из двух Debian/Ubuntu+UCARP для почтового релея, пересылающего почту между интернетом и почтовым сервером или кластером компании.
  4. Сделаем кластер из двух Cisco+HSRP в которые приходят каналы от провайдеров.

No comments :

Post a Comment