Pull to refresh

Cisco IOS Internal VLANs

Reading time5 min
Views14K

Небольшая заметка о том, что происходит "под капотом" 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 не создается.

Tags:
Hubs:
Total votes 7: ↑6 and ↓1+5
Comments2

Articles