Небольшая заметка о том, что происходит "под капотом" MLS (Multi Layer Switch) Cisco при создании routed интерфейсов.
В MLS интерфейс может находиться в одном из двух режимов:
- "switchport"
- "routed interface" или "no switchport"
При переводе интерфейса в последний, коммутатор позволяет присвоить ip address непосредственно порту и использовать его как интерфейс маршрутизатора.
Однако это всего лишь абстракция. Вот что происходит "под капотом" MLS при переводе интерфейса в режим "no switchport":
- коммутатор создает VLAN
- коммутатор добавляет интерфейс в этот VLAN в режиме access. Это будет единственный интерфейс, принадлежащий данному VLAN
- коммутатор создает SVI (Switch Virtual Interface) для выбранного VLAN и присваивает указанный ip address данному SVI
Фактически следующие две конфигурации почти идентичны*:
interface Ethernet0/0
no switchport
ip address 10.0.0.1 255.255.255.0
interface Ethernet0/0
switchport mode access
switchport access vlan 100
interface Vlan 100
ip address 10.0.0.1 255.255.255.0
*если у коммутатора больше нет ни одного access интерфейса, принадлежащего VLAN 100, и VLAN 100 не разрешен ни на одном из trunk интерфейсов.
Возьмем в качестве примера коммутатор с минимальной стартовой конфигурацией. Все интерфейсы находятся в режиме switchport и принадлежат VLAN 1:
SW1#sh interfaces status
Port Name Status Vlan Duplex Speed Type
Et0/0 connected 1 auto auto unknown
Et0/1 connected 1 auto auto unknown
Et0/2 connected 1 auto auto unknown
Et0/3 connected 1 auto auto unknown
SW1#sho vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/0, Et0/1, Et0/2, Et0/3
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
Переведем интерфейс Ethernet 0/0 в routed режим:
SW1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)#interface ethernet 0/0
SW1(config-if)#no switchport
SW1(config-if)#end
SW1#show running-config interface ethernet 0/0
Building configuration...
Current configuration : 59 bytes
!
interface Ethernet0/0
no switchport
no ip address
end
VLAN, который создается при переводе интерфейса в routed режим не виден в обычной БД VLAN:
SW1#sho vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/0, Et0/1, Et0/2, Et0/3
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
Но его можно увидеть среди "Internal VLANs":
SW1#show vlan internal usage
VLAN Usage
---- --------------------
1006 Ethernet0/0
Потенциальная проблема такого поведения коммутатора
Поскольку теперь VLAN ID 1006 занят под Internal VLAN для интерфейса Ethernet0/0, не получится создать VLAN с таким же ID, а значит SW1 не сможет коммутировать трафик в этом VLAN:
SW1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)#vlan 1006
SW1(config-vlan)#
SW1(config-vlan)#exit
% Failed to create VLANs 1006
VLAN(s) not available in Port Manager.
%Failed to commit extended VLAN(s) changes.
*Jan 5 17:34:31.407: %PM-4-EXT_VLAN_INUSE: VLAN 1006 currently in use by Ethernet0/0
*Jan 5 17:34:31.407: %SW_VLAN-4-VLAN_CREATE_FAIL: Failed to create VLANs 1006: VLAN(s) not available in Port Manager
Однако у этой проблемы есть довольно простое решение:
- нужно выключить L3-интерфейс (shutdown), при этом Internal VLAN ID освободится
- далее создаем VLAN с нужным ID
- включаем L3-интерфейс ( no shutdown), коммутатор займет следующий свободный VLAN ID из Extended диапазона
SW1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)#inter ethernet 0/0
SW1(config-if)#shutdown <- выключаем интерфейс, чтобы освободить VLAN ID 1006
SW1(config-if)#do show vlan internal usage
VLAN Usage
---- --------------------
SW1(config-if)#
SW1(config-if)#vlan 1006 <- создаем обычный VLAN с ID 1006
SW1(config-vlan)#exit
SW1(config)#interface ethernet 0/0
SW1(config-if)#no shutdown <- снова включаем routed интерфейс
SW1(config-if)#end
SW1#sho vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
1006 VLAN1006 active
SW1#show vlan internal usage
VLAN Usage
---- --------------------
1007 Ethernet0/0
Как выбирается VLAN ID для L3 интерфейса
В стартовой конфигурации любого коммутатора есть следующая строка:
!
vlan internal allocation policy ascending
!
Это означает, что коммутатор использует первый свободный VLAN ID из Extended диапазона: 1006 — 4094.
Поскольку в нашем примере VLAN ID 1006 занят, а VLAN 1007 используется для L3 интерфейса Ethernet0/0, то если перевести еще один интерфейс в режим routed, коммутатор выделит для него VLAN ID 1008:
SW1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)#inter ethernet 0/3
SW1(config-if)#no switchport
SW1(config-if)#end
SW1#show vlan internal usage
VLAN Usage
---- --------------------
1007 Ethernet0/0
1008 Ethernet0/3
Теперь создадим VLAN 1009, и после этого переведем еще один интерфейс в routed режим, поскольку VLAN 1009 занят, коммутатор использует следующий свободный VLAN для L3 интерфейса — 1010:
SW1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)#vlan 1009
SW1(config-vlan)#end
W1#sho vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Et0/2
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
1006 VLAN1006 active
1009 VLAN1009 active
SW1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
SW1(config)#inter ethernet 0/2
SW1(config-if)#no sw
SW1(config-if)#no switchport
SW1(config-if)#end
SW1#sho vlan internal usage
VLAN Usage
---- --------------------
1007 Ethernet0/0
1008 Ethernet0/3
1010 Ethernet0/2
Некоторые платформы позволяют изменить политику выбора номеров для Internal VLAN, хотя большинство устройств поддерживают только один вариант — ascending:
SW1(config)#vlan internal allocation policy ?
ascending Allocate internal VLAN in ascending order <- начиная с 1006 и по возрастающей
descending Allocate internal VLAN in descending order <- начиная с 4094 и по убывающей
Что происходит при создании L3 Port-channel
Для каждого member интерфейса выделяется свой Internal VLAN ID, для самого Port-channel интерфейса выделяется еще один Internal VLAN ID:
Вернем коммутатор в стартовую конфигурацию:
SW1#sho inter status
Port Name Status Vlan Duplex Speed Type
Et0/0 connected 1 auto auto unknown
Et0/1 connected 1 auto auto unknown
Et0/2 connected 1 auto auto unknown
Et0/3 connected 1 auto auto unknown
SW1#sho vlan inter
SW1#sho vlan internal usa
SW1#sho vlan internal usage
VLAN Usage
---- --------------------
SW1#
SW1(config)#inter range ethernet 0/0 - 1
SW1(config-if-range)#no switchport
SW1(config-if-range)#do show vlan internal usage
VLAN Usage
---- --------------------
1006 Ethernet0/0
1007 Ethernet0/1
SW1(config-if-range)#channel-group 1 mode active
Creating a port-channel interface Port-channel 1
SW1(config-if-range)#do show vlan internal usage
VLAN Usage
---- --------------------
1006 Ethernet0/0
1007 Ethernet0/1
1008 Port-channel1
Если после этого выключить и заново включить Port-channel интерфейс (при этом то же самое происходит и со всеми member интерфейсами), то соответствие интерфейсов и Internal VLAN ID может измениться:
SW1(config-if-range)#inter po1
SW1(config-if)#shutdown
SW1(config-if)#do show vlan internal usage
VLAN Usage
---- --------------------
SW1(config-if)#no shutdown
SW1(config-if)#do show vlan internal usage
VLAN Usage
---- --------------------
1006 Port-channel1
1007 Ethernet0/0
1008 Ethernet0/1
P.S.
При создании Loopback интерфейсов Internal VLAN не создается.
alecv
Внутренние VLAN-ы не расползаются по VTP.
kekoz
Слово “internal” как бы намекает :)