07-hands-on-lab.md
1 # Практика 2 3 > Наверное, большинство ошибок в Packet Tracer допущено в части кода, отвечающего за симуляцию STP, будте готовы. В случае сомнения сохранитесь, закройте PT и откройте заново 4 5 Итак, переходим к практике. Для начала внесем некоторые изменения в топологию — добавим избыточные линки. Учитывая сказанное в самом начале, вполне логично было бы сделать это в московском офисе в районе серверов — там у нас свич msk-arbat-asw2 доступен только через asw1, что не есть гуд. Мы отбираем \(пока, позже возместим эту потерю\) гигабитный линк, который идет от msk-arbat-dsw1 к msk-arbat-asw3, и подключаем через него asw2. Asw3 пока подключаем в порт Fa0/2 dsw1. Перенастраиваем транки: 6 7 > msk-arbat-dsw1\(config\)\#interface gi1/2 8 9 > msk-arbat-dsw1\(config-if\)\#description msk-arbat-asw2 10 11 > msk-arbat-dsw1\(config-if\)\#switchport trunk allowed vlan 2,3 12 13 > msk-arbat-dsw1\(config-if\)\#int fa0/2 14 15 > msk-arbat-dsw1\(config-if\)\#description msk-arbat-asw3 16 17 > msk-arbat-dsw1\(config-if\)\#switchport mode trunk 18 19 > msk-arbat-dsw1\(config-if\)\#switchport trunk allowed vlan 2,101-104 20 21 22 > msk-arbat-asw2\(config\)\#int gi1/2 23 24 > msk-arbat-asw2\(config-if\)\#description msk-arbat-dsw1 25 26 > msk-arbat-asw2\(config-if\)\#switchport mode trunk 27 28 > msk-arbat-asw2\(config-if\)\#switchport trunk allowed vlan 2,3 29 30 > msk-arbat-asw2\(config-if\)\#no shutdown 31 32 Не забываем вносить все изменения в документацию! 33 34  35 36 [Скачать актуальную версию документа](http://dl.dropbox.com/u/47476169/Habr/V4/Network_Planning_v4.xlsx) 37 38 Теперь посмотрим, как в данный момент у нас _самонастроился_ STP. Нас интересует только VLAN0003, где у нас, судя по схеме, петля. 39 40 ```text 41 msk-arbat-dsw1>en 42 msk-arbat-dsw1#show spanning-tree vlan 3 43 ``` 44 45 Разбираем по полочкам вывод команды 46 47  48 49 Итак, какую информацию мы можем получить? Так как по умолчанию на современных цисках работает PVST+ \(т.е. для каждого влана свой процесс STP\), и у нас есть более одного влана, выводится информация по каждому влану в отдельности, каждая запись предваряется номером влана. Затем идет вид STP: ieee значит PVST, rstp — Rapid PVST, mstp то и значит. Затем идет секция с информацией о корневом свиче: установленный на нем приоритет, его mac-адрес, стоимость пути от текущего свича до корневого, порт, который был выбран в качестве корневого \(имеет лучшую стоимость\), а также настройки таймеров STP. Далее- секция с той же информацией о текущем свиче \(с которого выполняли команду\). Затем- таблица состояния портов, которая состоит из следующих колонок \(слева направо\): 50 51 * собственно, порт 52 * его роль \(Root- корневой порт, Desg- назначенный порт, Altn- дополнительный, Back- резервный\) 53 * его статус \(FWD- работает, BLK- заблокирован, LIS- прослушивание, LRN- обучение\) 54 * стоимость маршрута до корневого свича 55 * Port ID в формате: приоритет порта.номер порта 56 * тип соединения 57 58 Итак, мы видим, что Gi1/1 корневой порт, это дает некоторую вероятность того, что на другом конце линка корневой свич. Смотрим по схеме, куда ведет линк: ага, некий msk-arbat-asw1. 59 60 ```text 61 msk-arbat-asw1#show spanning-tree vlan 3 62 ``` 63 64 И что же мы видим? 65 66 ```text 67 VLAN0003 68 Spanning tree enabled protocol ieee 69 Root ID Priority 32771 70 Address 0007.ECC4.09E2 71 This bridge is the root 72 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec 73 ``` 74 75 Вот он, наш корневой свич для VLAN0003. 76 77 А теперь посмотрим на схему. Ранее, мы увидели в состоянии портов , что dsw1 блокирует порт Gi1/2, разрывая таким образом петлю. Но является ли это оптимальным решением? Нет, конечно. Сейчас наша новая сеть работает точь-в-точь как старая- трафик от asw2 идет только через asw1. Выбор корневого маршрутизатора никогда не нужно оставлять на совесть глупого STP. Исходя из схемы, наиболее оптимальным будет выбор в качестве корневого свича dsw1- таким образом, STP заблокирует линк между asw1 и asw2. Теперь это все надо объяснить недалекому протоколу. А для него главное что? Bridge ID. И он неслучайно складывается из двух чисел. Приоритет- это как раз то слагаемое, которое отдано на откуп сетевому инженеру, чтобы он мог повлиять на результат выбора корневого свича. Итак, наша задача сводится к тому, чтобы уменьшить \(меньше-лучше, думает STP\) приоритет нужного свича, чтобы он стал Root Bridge. Есть два пути: 78 79 1\) вручную установить приоритет, заведомо меньший, чем текущий: 80 81 ```text 82 msk-arbat-dsw1>enable 83 msk-arbat-dsw1#configure terminal 84 msk-arbat-dsw1\(config\)#spanning-tree vlan 3 priority ? 85 <0-61440> bridge priority in increments of 4096 86 msk-arbat-dsw1\(config\)#spanning-tree vlan 3 priority 4096 87 ``` 88 89 Теперь он стал корневым для влана 3, так как имеет меньший Bridge ID: 90 91 ```text 92 msk-arbat-dsw1#show spanning-tree vlan 3 93 VLAN0003 94 Spanning tree enabled protocol ieee 95 Root ID Priority 4099 96 Address 000B.BE2E.392C 97 This bridge is the root 98 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec 99 ``` 100 101 2\) дать умной железке решить все за тебя: 102 103 ```text 104 msk-arbat-dsw1\(config\)#spanning-tree vlan 3 root primary 105 ``` 106 107 Проверяем: 108 109 ```text 110 msk-arbat-dsw1#show spanning-tree vlan 3 111 VLAN0003 112 Spanning tree enabled protocol ieee 113 Root ID Priority 24579 114 Address 000B.BE2E.392C 115 This bridge is the root 116 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec 117 ``` 118 119 Мы видим, что железка поставила какой-то странный приоритет. Откуда взялась эта круглая цифра, спросите вы? А все просто- STP смотрит минимальный приоритет \(т.е. тот, который у корневого свича\), и уменьшает его на два шага инкремента \(который составляет 4096, т.е. в итоге 8192\). Почему на два? А чтобы была возможность на другом свиче дать команду spanning-tree vlan n root secondary \(назначает приоритет=приоритет корневого-4096\), что позволит нам быть уверенными, что, если с текущим корневым свичом что-то произойдет, его функции перейдут к этому, “запасному”. Вероятно, вы уже видите на схеме, как лампочка на линке между asw2 и asw1 пожелтела? Это STP разорвал петлю. Причем именно в том месте, в котором мы хотели. Sweet! Зайдем проверим: лампочка — это лампочка, а конфиг — это факт. 120 121 ```text 122 msk-arbat-asw2#show spanning-tree vlan 3 123 VLAN0003 124 Spanning tree enabled protocol ieee 125 Root ID Priority 24579 126 Address 000B.BE2E.392C 127 Cost 4 128 Port 26\(GigabitEthernet1/2\) 129 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec 130 131 Bridge ID Priority 32771 \(priority 32768 sys-id-ext 3\) 132 Address 000A.F385.D799 133 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec 134 Aging Time 20 135 136 Interface Role Sts Cost Prio.Nbr Type 137 ---------------- ---- --- --------- -------- -------------------------------- 138 Fa0/1 Desg FWD 19 128.1 P2p 139 Gi1/1 Altn BLK 4 128.25 P2p 140 Gi1/2 Root FWD 4 128.26 P2p 141 ``` 142 143 Теперь полюбуемся, как работает STP: заходим в командную строку на ноутбуке PTO1 и начинаем бесконечно пинговать наш почтовый сервер \(172.16.0.4\). Пинг сейчас идет по маршруту ноутбук-asw3-dsw1-gw1-dsw1\(ну тут понятно, зачем он крюк делает — они из разных вланов\)-asw2-сервер. А теперь поработаем Годзиллой из SimСity: нарушим связь между dsw1 и asw2, вырвав провод из порта \(замечаем время, нужное для пересчета дерева\). 144 145 Пинги пропадают, STP берется за дело, и за _каких-то_ 30 секунд коннект восстанавливается. Годзиллу прогнали, пожары потушили, связь починили, втыкаем провод обратно. Пинги опять пропадают на 30 секунд! Мда-а-а, как-то не очень быстро, особенно если представить, что это происходит, например, в процессинговом центре какого-нибудь банка. 146 147 Но у нас есть ответ медленному PVST+! И ответ этот — Быстрый PVST+ \(так и называется, это не шутка: Rapid-PVST\). Посмотрим, что он нам дает. Меняем тип STP на всех свичах в москве командой конфигурационного режима: spanning-tree mode rapid-pvst 148 149 Снова запускаем пинг, вызываем Годзиллу... Эй, где пропавшие пинги? Их нет, это же Rapid-PVST. Как вы, наверное, помните из теоретической части, эта реализация STP, так сказать, “подстилает соломку” на случай падения основного линка, и переключается на дополнительный \(alternate\) порт очень быстро, что мы и наблюдали. Ладно, втыкаем провод обратно. Один потерянный пинг. Неплохо по сравнению с 6-8, да? 150 151 ## EtherChannel 152 153 Помните, мы отобрали у офисных работников их гигабитный линк и отдали его в пользу серверов? Сейчас они, бедняжки, сидят, на каких-то ста мегабитах, прошлый век! Попробуем расширить канал, и на помощь призовем EtherChannel. В данный момент у нас соединение идет от fa0/2 dsw1 на Gi1/1 asw3, отключаем провод. Смотрим, какие порты можем использовать на asw3: ага, fa0/20-24 свободны, кажется. Вот их и возьмем. Со стороны dsw1 пусть будут fa0/19-23. Соединяем порты для EtherChannel между собой. На asw3 у нас на интерфейсах что-то настроено, обычно в таких случаях используется команда конфигурационного режима default interface range fa0/20-24, сбрасывающая настройки порта \(или портов, как в нашем случае\) в дефолтные. Packet tracer, увы, не знает такой хорошей команды, поэтому в ручном режиме убираем каждую настройку, и тушим порты \(лучше это сделать, во избежание проблем\) 154 155 ```text 156 msk-arbat-asw3\(config\)#interface range fa0/20-24 157 msk-arbat-asw3\(config-if-range\)#no description 158 msk-arbat-asw3\(config-if-range\)#no switchport access vlan 159 msk-arbat-asw3\(config-if-range\)#no switchport mode 160 msk-arbat-asw3\(config-if-range\)#shutdown 161 ``` 162 163 ну а теперь волшебная команда 164 165 ```text 166 msk-arbat-asw3\(config-if-range\)#channel-group 1 mode on 167 ``` 168 169 то же самое на dsw1: 170 171 ```text 172 msk-arbat-dsw1\(config\)#interface range fa0/19-23 173 msk-arbat-dsw1\(config-if-range\)#channel-group 1 mode on 174 ``` 175 176 поднимаем интерфейсы asw3, и вуаля: вот он, наш EtherChannel, раскинулся аж на 5 физических линков. В конфиге он будет отражен как interface Port-channel 1. Настраиваем транк \(повторить для dsw1\): 177 178 ```text 179 msk-arbat-asw3\(config\)#int port-channel 1 180 msk-arbat-asw3\(config-if\)#switchport mode trunk 181 msk-arbat-asw3\(config-if\)#switchport trunk allowed vlan 2,101-104 182 ``` 183 184 Как и с STP, есть некая трудность при работе с etherchannel в Packet Tracer’e. Настроить-то мы, в принципе, можем по вышеописанному сценарию, но вот проверка работоспособности под большим вопросом: после отключения одного из портов в группе, трафик перетекает на следующий, но как только вы вырубаете второй порт — связь теряется и не восстанавливается даже после включения портов. 185 186 Отчасти в силу только что озвученной причины, отчасти из-за ограниченности ресурсов мы не сможем раскрыть в полной мере эти вопросы и посему оставляем бОльшую часть на самоизучение. 187