К. Кряженков, А. Степушин.
Центр сетевого управления и телекоммуникаций МИРЭА

В этот раз мы снова вернемся к коммутаторам от компании Huawei и посмотрим, как настраиваются некоторые необходимые функции и протоколы. Напомним, модель наших устройств Quidway S3928P-SI, которые имеют по 24 Ethernet порта 10/100 и 4 слота под sfp-модули.

В этот раз мы постараемся выполнить следующие задачи:

  1. Создание БД VLAN
  2. Протокол обнаружения соседей
  3. Настройка управляющего VLAN
  4. Настройка портов доступа и магистральных
  5. Распространение информации о VLAN на все коммутаторы
  6. Настройка порт-секьюрити
  7. Настройка голосовогоVLAN
  8. Настройка STP

На помощь нам придут мануалы, доступные для просмотра и скачивания здесь:

http://support.huawei.com/support/pages/kbcenter/view/product.do?actionFlag=searchManualTableOfContents&web_doc_id=SE0000308935&doc_type=ProductManual

Дальнейшие эксперименты будем проводить в нашей системе удаленного доступа к оборудованию TermILab. Эта статья будет посвящена коммутации. Давайте посмотрим, как же на коммутаторах Huawei создаются VLAN, как они распространяются между коммутаторами, как настраиваются порты для подключения рабочих станций, IP телефонов и создаются магистральные соединения, а также механизмы обеспечения безопасности на уровне доступа и борьба с петлями на 2 уровне.

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

Местами сравнение будем проводить с коммутаторами Cisco 3550.

Итак, начнем. Для начала убедимся, что все устройства соединены правильно. На коммутаторах Cisco для этого используем возможности протокола cdp. А как быть с коммутаторами Huawei? Обращаемся к документации. В файле 29-ClusterCommand нашли возможность определения соседей и предоставления информации о них по протоколу ndp (Neighbor discovery protocol).

Устройство Huawei
[LabSw]display ndp
Interface: Ethernet1/0/24
Status: Enabled, PktsSnd: 35, PktsRvd: 32, Pkts Err: 0
    Neighbor 1:  Aging Time: 177(s)
       MAC Address : 000f-e275-98d8
       Host Name   : Quidway
       Port Name   : Ethernet1/0/24
       Software Ver: Release 1602P11
       Device Name : QuidwayS3928P-SI
       Port Duplex : AUTO
       Product Ver : 3900-SI-1602P11
BootROMVer : 514
Устройство Cisco
show cdp neighbors

Выводимая информация протокола NDP примерно такая же как, как и у CDP. Только у CDP есть еще возможность отобразить информацию кратко и полностью. По умолчанию оба протокола активны на своих коммутаторах. Каждый из них можно отключить как полностью на устройствах, так и на каждом интерфейсе в отдельности. Итак, основываясь на выводе протоколов обнаружения соседних устройств,  мы можем понять, что схема соединений корректна.

Идем дальше. Современные локальные сети немыслимы без виртуализации на канальном уровне. Поэтому, приступим к созданию VLAN. Создадим VLAN5 – Staff, VLAN8 – Test, VLAN10 – Native.

Настраиваем БД VLAN на одном коммутаторе Huawei и Cisco. На коммутаторе Huawei переходим в режим system-view, а на коммутаторе Ciscoв -- режим configure-terminal. Для наполнения БД VLAN этих режимах конфигурации вводим следующие последовательности команд:

Устройство Huawei
[LabSw]vlan 5 
[LabSw -vlan5]name Staff
[LabSw -vlan5]vlan 8
[LabSw -vlan8]name Test
[LabSw -vlan8]vlan 10
[LabSw -vlan10]name Native
Устройство Cisco
Switch#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#vlan 5
Switch(config-vlan)#name Staff
Switch(config-vlan)#vlan 8
Switch(config-vlan)#name Test
Switch(config-vlan)#vlan 10
Switch(config-vlan)#name Native

Чтобы посмотреть созданные VLAN используем следующие команды:

Устройство Huawei Устройство Cisco
[LabSw]display vlan
 Total 4 VLAN exist(s).
 The following VLANs exist:
  1(default), 5, 8, 10 
Switch#show vlan

Коммутатор Cisco предоставляет более детальную информацию о том какие идентификаторы и имена VLAN существуют, какие порты коммутатора в каком VLAN находятся и некоторая другая информация. На коммутаторах Huawei вывод достаточно скуп. Только общее число VLAN и их идентификаторы. А как быть, если нужно увидеть и vid и его имя и уж, тем более, порты? Ставим ? после display vlan и выбираем параметр all на коммутаторе Huawei.

Устройство Huawei
[LabSw]display vlan all 
VLAN ID: 1
VLAN Type: static
 Route Interface: not configured
 Description: VLAN 0001
 Name: VLAN 0001
 Tagged   Ports: none
 Untagged Ports: 
Ethernet1/0/1            Ethernet1/0/2            Ethernet1/0/3            
Ethernet1/0/4            Ethernet1/0/5            Ethernet1/0/6            
Ethernet1/0/7            Ethernet1/0/8            Ethernet1/0/9            
Ethernet1/0/10           Ethernet1/0/11           Ethernet1/0/12           
Ethernet1/0/13           Ethernet1/0/14           Ethernet1/0/15           
Ethernet1/0/16           Ethernet1/0/17           Ethernet1/0/18           
Ethernet1/0/19           Ethernet1/0/20           Ethernet1/0/21           
Ethernet1/0/22           Ethernet1/0/23           Ethernet1/0/24           
GigabitEthernet1/1/1     GigabitEthernet1/1/2     GigabitEthernet1/1/3     
GigabitEthernet1/1/4     

VLAN ID: 5
VLAN Type: static
 Route Interface: not configured
 Description: VLAN 0005
 Name: Staff
 Tagged   Ports: none
Untagged Ports: none

VLAN ID: 8
VLAN Type: static
 Route Interface: not configured
 Description: VLAN 0008
 Name: Test
 Tagged   Ports: none
 Untagged Ports: none

VLAN ID: 10
VLAN Type: static
 Route Interface: not configured
 Description: VLAN 0010
 Name: Native
 Tagged   Ports: none
UntaggedPorts: none

Теперь информации побольше. И vid, и его имя. И что самое главное – порты, которые находятся в этой VLAN. Глаз зацепился за параметр Description в выводе VLAN. Этот избыточный параметр позволяет сделать еще и дополнительное описание для VLAN, в котором можно отразить более детально ее принадлежность.

Хорошо, БД VLAN мы настроили на одном коммутаторе, но не будем же мы утруждать себя ручной настройкой этих VLAN и на другом. Попробуем распространить их и на соседнее устройство. На коммутаторах Cisco для этого есть протокол VTP. А что же есть на коммутаторах Huawei для упрощения администрирования VLAN? Для этих целей у коммутаторов Huawei есть протокол, который называется GVRP и является частным случаем протокола GARP (Generic Attribute Registration Protocol). Сам по себе GARP служит механизмом для распространения между коммутаторами информации о vlan’ах и мультикастовых группах. Частное его применение GVRP (GARP Vlan Registration Protocol) служит для распространения информации исключительно о vlan. GVRP использует 3 типа сообщения: Join, Leave и LeaveAll. Если на GVRP-устройстве добавляется новый vlan, то отправляется join-сообщение, если удаляется – отправляется leave-сообщение. LeaveAll сообщение может отправлятся в некоторых случаях, когда коммутатор хочет удалить с соседних устройств информацию о всех своих локальных vlan’ах, созданных вручную непосредственно на данном коммутаторе.

Для поддержания данных о vlan в домене на каждом устройстве работают GARP таймеры. Их 4 типа: hold, join, leave и leaveall. Таймеры измеряются в сентисекундах (100 сентисекунд соответствуют 1 секунде) и по умолчанию равны:

GARP join              20 centiseconds

GARP leave           60 centiseconds

GARP hold            10 centiseconds

GARP leaveall       20 centiseconds

Важно, чтобы внутри домена все устройства были настроены с одинаковыми таймерами.

Возвращаясь к GVRP, необходимо отметить, что протокол включается глобально и на интерфейсах (по умолчанию выключен), причем интерфейс обязательно должен работать в режиме trunk. Последовательность действий следующая:

  1. Включить GVRP глобально.
  2. *Опционально. Проверить или настроить GARP таймеры одинаково на всех коммутаторах домена.
  3. Настроить необходимые порты в режиме trunk 802.1Q.
  4. Разрешить на транках все vlan.
  5. Включить GVRP на интерфейсах.
  6. Выбрать режим работы GVRP на интерфейсе.

 GVRP на интерфейсах может работать в трех режимах:

  1. Normal. Этот режим выбирается интерфейсом по умолчанию. В таком режиме коммутатор распространяет информацию о своих vlan и автоматически добавляет информацию о vlan в свою базу от других коммутаторов домена.
  2. Fixed. В данном режиме коммутатор распространяет информацию о своих vlan, однако не добавляет в свою базу информацию о vlan соседних устройств. Данный режим подходит для коммутаторов уровня ядра и распределения, поскольку никакие устройства уровня доступа не могут повлиять на их базу vlan. Если порт коммутатора какое-то время работал в режиме normal, а затем был переведен в режим fixed, то все vlan, о которых коммутатор узнал через этот порт будут удалены.
  3. Forbidden. В данном режиме коммутатор не распространяет информацию о своих vlan и не принимает информацию о vlan от других устройств. Более того, если порт коммутатора какое-то время работал в режиме normal, а затем был переведен в режим forbidden, то все vlan, о которых коммутатор узнал через этот порт будут удалены, а также на соседнем коммутаторе будут удалены все записи о vlan, настроенных вручную на forbidden-коммутаторе.

Теперь посмотрим, как настраивать trunk-порты. Основные задачи здесь – это включить на порту режим trunk; описать vlan’ы, которые можно через него пропускать; и задать vlan, с которым ассоциировать нетегированные кадры (аналог cisco native vlan).

Перейдем к командам. Режим trunk влючается на интерфейсе командой port link-type trunk. Разрешенные vlan’ы описываются командой port trunk permit vlan vlan-id. Vlan по умолчанию настраивается командой port trunk pvid vlan vlan-id. Инкапсуляция на транках по умолчанию 802.1Q, и другого режима инкапсуляции не предусмотрено.

Пример, как настроить trunk-порт на нашем коммутаторе:

[LabSw]interface Ethernet 1/0/24
[LabSw-Ethernet1/0/24]port link-type trunk
[LabSw-Ethernet1/0/24]port trunk pvid vlan 10
[LabSw-Ethernet1/0/24]port trunk permit vlan 1 5 8 10

Результат:

На коммутаторах Huawei можно перечислить только определенные vid через пробел, либо указать их диапазон используя связку <vid_1> to <vid_n>. На коммутаторах Cisco это делается через запятую, а диапазон указывается через тире.

Вернемся к проблеме распространения БД vlan между коммутаторами. Несмотря на всю кажущуюся сложность, настроить GVRP достаточно легко. К 24 порту нашего коммутатора подключим второй коммутатор Quidway S3928P-SI, на котором по умолчанию есть только 1 vlan. Для начала настроим на нем транк и разрешим в транке все vlan’ы.

[LabSW_2]interface Ethernet 1/0/24
[LabSW_2-Ethernet1/0/24]port link-type trunk
[LabSW_2-Ethernet1/0/24]port trunk permit vlan all
 Please wait........................................... Done.

Теперь на обоих коммутаторах запустим GVRP, включим его на trunk-итерфейсах, и выберем режим на первом коммутаторе Normal, а на втором Fixed.

[LabSw]gvrp 
 GVRP is enabled globally.
[LabSw]interface Ethernet 1/0/24
[LabSw-Ethernet1/0/24]gvrp
GVRP is enabled on port Ethernet1/0/24.
[LabSw-Ethernet1/0/24]gvrp registration normal 
 Please wait... Done.
[LabSw_2]gvrp 
 GVRP is enabled globally.
[LabSW_2]interface Ethernet 1/0/24
[LabSW_2-Ethernet1/0/24]gvrp
 GVRP is enabled on port Ethernet1/0/24.
[LabSW_2-Ethernet1/0/24]gvrp registration fixed 
 Please wait........................................... Done.

Посмотрим на вывод команды display vlan на каждом коммутаторе.

[LabSw]display vlan 
 Total 4 VLAN exist(s).
 The following VLANs exist:
  1(default), 5, 8, 10 
[LabSW_2]display vlan 
 Total 1 VLAN exist(s).
 The following VLANs exist:
  1(default)

Кажется, что ничего не изменилось, и появляются сомнения, что GVRP вообще работает корректно. Однако вывод команды display garp statistics показывает, что GVRP запущен и работает между коммутаторами.

[LabSw]display garp statistics interface Ethernet 1/0/24
	GARP statistics on port Ethernet1/0/24 
	Number Of GVRP Frames Received	: 75
	Number Of GVRP Frames Transmitted	: 85
	Number Of Frames Discarded		: 0
[LabSW_2]display garp statistics interface Ethernet 1/0/24
	GARP statistics on port Ethernet1/0/24 
	Number Of GVRP Frames Received	: 89
	Number Of GVRP Frames Transmitted	: 70
	Number Of Frames Discarded		: 0

Теперь создадим на коммутаторе LabSW_2 пару дополнительных vlan’ов и посмотрим на изменения базы vlan коммутатора LabSW.

[LabSw]display vlan 
 Total 6 VLAN exist(s).
 The following VLANs exist:
  1(default), 5, 8, 10, 50, 70 
[LabSW_2]vlan 50
[LabSW_2-vlan50]vlan 70
[LabSW_2-vlan70]
[LabSW_2]display vlan 
 Total 3 VLAN exist(s).
 The following VLANs exist:
  1(default), 50, 70

Как мы видим, коммутатор LabSw добавил в свою базу новые vlan’ы (50 и 70), созданные на LabSw_2. В свою очередь, коммутатор LabSw_2 так и ведет свою локальную базу vlan независимо от соседа. Таким образом, мы не только настроили протокол GVRP на соседних коммутаторах, но и проверили сразу 2 режима работы: normal и fixed.

Теперь можно переходить к настройке портов доступа и управляющего интерфейса. Распределим их следующим образом: 10 порт поместим в 10 vlan и сделаем его управляющим на коммутаторе, порты с 11 по 15 переведем в режим доступа в 5 vlan.

Чтобы исключить macflood и обеспечить элементарную безопасность на уровне доступа, сразу разрешим только по одному mac адресу для каждого порта доступа. На коммутаторе Huawei нужно в режиме system-view включить механизм port-security, а затем настроить его на каждом порту.

Устройство Huawei Устройство Cisco
[LabSw]port-security enable 
[LabSw -Ethernet1/0/10]port-security max-mac-count 1 
[LabSw -Ethernet1/0/10]port-security port-mode autolearn
[LabSw -Ethernet1/0/10]port-security intrusion-mode blockmac
Switch(config-if)#switchport port-security maximum 1
Switch(config-if)#switchport port-security violation restrict
Switch(config-if)#switchport port-security mac-address sticky

К сожалению, на коммутаторах Huawei нельзя сразу настроить диапазон портов. Однако есть возможность скопировать настройки одного порта на другие. Сделаем это:

[LabSw]copy configuration source Ethernet 1/0/10 destination Ethernet 1/0/11 to Ethernet 1/0/15

Просмотрим полученную конфигурацию одного из портов:

Устройство Huawei Устройство Cisco
[LabSw -Ethernet1/0/10]display this
#
interface Ethernet1/0/10
 port-security max-mac-count 1 
 port-security port-mode autolearn
 port-security intrusion-mode blockmac
 #
return
Switch#sh running-config interface fa0/1
!
interface FastEthernet0/1
 switchport mode access
 switchport port-security mac-address sticky 
 switchport port-security violation restrict 
!

Теперь поместим порты в необходимые vlan’ы и настроим управляющий интерфейс:

< LabSw >
< LabSw >system-view
System View: return to User View with Ctrl+Z.
[LabSw]interface Vlan-interface 10
[LabSw-Vlan-interface10]ip address 192.168.1.10 24
[LabSw-Vlan-interface10]quit
[LabSw]interface Ethernet 1/0/10
[LabSw-Ethernet1/0/10]port link-type access
[LabSw-Ethernet1/0/10]port access vlan 10
[LabSw-Ethernet1/0/10]quit
*[LabSw]vlan 5
 [LabSw-vlan5]port ethernet1/0/11 to ethernet1/0/15
*Диапазон портов можно добавить в определенный vlan из режима настройки данного влана.

Проверим доступен ли нам управляющий интерфейс коммутатора, используя команду ping:

Современные Enterprise сети являются конвергентными, поэтому использование в них IP телефонии стало стандартом де-факто. Как известно, трафик IP телефонии необходимо отделить от трафика передачи данных, да к тому же нужно экономить порты на коммутаторах. Так как же создать голосовой VLAN на коммутаторах и подать его на нужные порты? По сути, голосовой VLAN создается точно также в БД VLAN как и VLAN для передачи данных. В качестве голосового будем использовать vlan 8.

[LabSw]vlan 8
[LabSw-vlan8]name voice_vlan
[LabSw-vlan8]quit

Vlan создан, теперь устройству необходимо сообщить, какой vlan использовать в качестве голосового. Команда voice vlan vlan-id enable настраивает определенный vlan в качестве голосового и включает его глобально на устройстве. Узнать в дальнейшем, какой vlan является голосовым на устройстве, можно с помощью display voice vlan status. Для того, чтобы коммутатор добавлял к кадрам телефонов тег голосового vlan’а необходимо еще завести на устройстве OUI list мак-адресов. Мак-адреса наших телефонов выглядят так: 000d.28xx.xxxx.  OUI list для них описывается командой [LabSw]voice vlan mac-address 000d-2800-0000 mask ffff-ff00-0000 description IPphone.

Теперь можно перейти к настройке портов.

Как стало понятно из мануалов, чтобы осуществить задуманное, нужно перевести порты в режим Hybrid. Работает он достаточно интересно. В нашем случае необходимо, чтобы коммутатор не только добавлял тег к нетегированным кадрам, поступающим от рабочих станций, но и сбрасывал тег vlan’а в обратном случае, когда кадры нужно передать с порта на рабочие станции. Что касается голосового vlan’a, то его достаточно просто включить на выбранном интерфейсе.

Настроим коммутатор таким образом, чтобы порты с 1 по 9 были настроены для поддержки телефонов на 8 vlan и для пользователей на 5 vlan.

Выполняем задуманное и настраиваем один из интерфейсов:

[LabSw]voice vlan 8 enable 
[LabSw]voice vlan mac-address 000d-2800-0000 mask ffff-ff00-0000 description IPphone
[LabSw]interface Ethernet 1/0/9
[LabSw-Ethernet1/0/9]port link-type hybrid 
[LabSw-Ethernet1/0/9]port hybrid pvid vlan 5
[LabSw-Ethernet1/0/9]port hybrid vlan 5 untagged 
[LabSw-Ethernet1/0/9]voice vlan enable
[LabSw-Ethernet1/0/9]voice vlan mode auto

Посмотрим, что получилось:

Как мы уже отмечали, на коммутаторах Huawei нельзя сразу настроить диапазон портов, зато можно скопировать настройки одного порта на другие. Сделаем это:

[LabSw]copy configuration source Ethernet 1/0/9 destination Ethernet 1/0/1 to Ethernet 1/0/8

Теперь порты с 1 по 9 настроены для работы и рядовых пользователей, и ip-телефонов.

Стремясь обеспечить надежность сети, многие сетевые инженеры и администраторы искусственно вводят избыточные связи, которые ведут к образованию петель на канальном уровне. Также петли могут образоваться и из-за ошибочных или злонамеренных действий пользователей. Чтобы их ликвидировать производители в свои коммутаторы внедряют алгоритм STP. Соединим избыточной связью коммутаторы LabSW и LabSw_2, чтобы создать петлю. Осталось только узнать, какие протоколы STP поддерживаются на коммутаторах Huawei, и как они настраиваются. Нажав символ ? после команды stp, можно увидеть эти протоколы. Будем настраивать на нашем коммутаторе протокол RSTP  (по умолчанию stp выключен глобально).

[LabSw]stp mode rstp
[LabSw]stp enable  
%Apr  1 23:56:24:990 2000 LabSw MSTP/3/STPSTART:- 1 -STP is now enabled on the device.
[LabSw_2]stp mode rstp
[LabSw_2]stp enable  
%Apr  1 23:57:20:990 2000 LabSw_2 MSTP/3/STPSTART:- 1 -STP is now enabled on the device.

Посмотрим на выводы команды display stp brief и display stp, чтобы определить какие порты заблокировал stp, и кто их коммутаторов стал root’ом :

[LabSw]display stp brief 
 MSTID     Port                      Role      STP State       Protection 
   0     Ethernet1/0/1            DESI   FORWARDING     NONE  
   0     Ethernet1/0/23          DESI   FORWARDING     NONE  
   0     Ethernet1/0/24          DESI   FORWARDING     NONE  
[LabSw]display stp
-------[CIST Global Info][Mode RSTP]-------
CIST Bridge         :32768.000f-e274-cafe
Bridge Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.000f-e274-cafe / 0
CIST RegRoot/IRPC   :32768.000f-e274-cafe / 0
CIST RootPortId     :0.0
BPDU-Protection     :disabled
TC-Protection       :enabled / Threshold=6
Bridge Config
Digest Snooping     :disabled
TC or TCN received  :208
Time since last TC  :0 days 0h:11m:18s
[LabSw_2]display stp brief 
 MSTID     Port                      Role       STP State      Protection 
   0     Ethernet1/0/1            DESI    FORWARDING     NONE  
   0     Ethernet1/0/23          ROOT  FORWARDING    NONE  
   0     Ethernet1/0/24          ALTE    DISCARDING       NONE  
[LabSw_2]display stp
-------[CIST Global Info][Mode RSTP]-------
CIST Bridge         :32768.000f-e275-98d8
Bridge Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.000f-e274-cafe / 200
CIST RegRoot/IRPC   :32768.000f-e275-98d8 / 0
CIST RootPortId     :128.23
BPDU-Protection     :disabled
TC-Protection       :enabled / Threshold=6
Bridge Config
Digest Snooping     :disabled
TC or TCN received  :8
Time since last TC  :0 days 0h:10m:48s

Как мы видим, протокол запустился. Root’ом стал LabSw, так как его BridgeID 32768.000f-e274-cafe меньше чем у соседнего LabSw_2 (BridgeID 32768.000f-e275-98d8). На это косвенно указывает и то, что все порты LabSw работают в режиме designated. На коммутаторе LabSw_2 порт Ethernet 1/0/24 попал в режим alternative, т.е. не пересылает кадры. Это нас не утраивает, потому что через этот порт работает GVRP, который мы ранее настроили. Заставим коммутатор LabSw_2 заблокировать порт Ethernet 1/0/23, а 1/0/24 перевести в режим designated. Сделать это можно, поменяв cost на интерфейсе. По умолчанию все порты коммутатора имеют cost 200. Чем меньше это значение, тем приоритетнее порт. Поменяем это значение на 20 и посмотрим на результат:

[LabSw_2]interface Ethernet 1/0/24
[LabSw_2-Ethernet1/0/24]stp cost 20 
[LabSw_2-Ethernet1/0/24]display stp brief
 MSTID     Port                        Role       STP State        Protection 
   0     Ethernet1/0/1                 DESI     FORWARDING           NONE  
   0     Ethernet1/0/23                ALTE     DISCARDING           NONE  
   0     Ethernet1/0/24                ROOT     FORWARDING           NONE  

Поставленной цели мы добились, и теперь наша связка коммутаторов работает должным образом.