L2 switching and VLANs: различия между версиями
(Новая страница: «=Зачем используем вланы= *уменьшение кол-ва трафика и как следствие увеличение скорости…») |
м |
||
(не показано 7 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
{{#description2: Основы L2. Bridging process. Зачем используем вланы. Tagging. Режимы порта. Роутинг между вланами. Информация для подготовки к экзаменам Juniper.}} | |||
=Краткое overview= | |||
'''Ethernet''' = shared network: sharing collision domain. '''HUB''' - тот же shared collision domain, только хосты подключены не через шину, а через хаб (тупой свитч). | |||
'''CSMA/CD''': Хост хочет передать фрейм. Сначала он слушает: не вещает ли кто-то в домене. Начинает передавать свой фрейм, если не услышал шевелений от других. После передачи хост слушает - возникла ли коллизия. Если произошла коллизия, то хост замирает на время '''backoff delay'''. Если до начала отправки фрейма хост понимает, что кто-то тоже вещает в это время, он также замирает на '''backoff delay'''. | |||
'''Bridge''' делит хосты на несколько collision domains. И изучает маки хостов. | |||
'''Switch''' - каждый хост в своем порту. Каждый хост в своем collision domain. Изучает маки хостов. | |||
Juniper switch разделяет ''Control Plane'' (routing engine [RE] = мозги, ядро свитча) и ''Forwarding Plane'' (packet forwarding engine [PFE]). | |||
*'''Routing engine''': RPD - создает routing table и из неё forwarding table. L2-learning - создает bridging table. | |||
*'''Packet forwarding engine''': содержит forwarding table, полученную от RE. Согласно таблице форвардит трафик. | |||
Если через свитч бегает трафик между уже изученными хостами, то дальше PFE такой трафик не поднимается. | |||
Если появляется новых хост, то PFE доставляет полученный пакет RE. RE проверяет всё ли ок (firewalls, policy, mac-add limits, ...). Если ok, то обновляет bridging table и передает обновленную bridging table на PFE. Дальше пакет форвардится на egress порт или флудится во все порты (если dst mac неизвестен). | |||
Enterprise Devices: | |||
*SRX series - statefull firewall | |||
*EX series - свитче, работают на ELS software | |||
*QFX series - производительные коммутаторы, больше подходящие для DC - жирные порты, virtual chassis и т.д. | |||
Типы портов на большинстве свитчей EX series: | |||
*aceess [10/100/1000 Mb] RJ45 + POE - для подключение хостов | |||
*uplink [1/10 Gb] SFP+ - для uplink или chassis cluster | |||
*MGMT - аналог fxp на роутерах Juniper - out of band mgmt Me0 | |||
*console - RJ45 + mini-USB | |||
=Bridging process= | |||
Стандартные процедуры, которые происходят во время bridging: | |||
*'''Изучение (learning).''' Изначально switch не в курсе где какие хосты включены. Как только к LAN/VLAN подключился хост и отправил пакет, свитч изучает mac-address этого хоста. Записывает с таблицу коммутации: port + mac + age (время, когда mac был изучен). | |||
*'''Передача (Forwarding).''' Использую таблицу коммутации, свитч делает передачу фреймов между портам хостов. Если требуется передать фрейм на неизученный ранее mac-address, то запускается процесс flooding. | |||
*'''Флуд (Flooding).''' Флуд производистя внутри LAN/VLAN. Флудится неизученный mac-address. Когда хост получит фрейм со своим адресом, он посылает в ответ ACK. Mac-addrees изучается и добавляется в таблицу коммутации. | |||
*'''Фильтрация (Filtering).''' Трафик в рамках одного VLAN будет фильтроваться и не передаваться в другой VLAN. | |||
*'''Устаревание (Aging).''' Каждый раз когда свитч детектит трафик от MAC, обновляется временная метка. Если трафик перестал поступать - обновляться время жизни более не будет. Когда временная метка станет больше заданного значения, запись о данном mac-address удалится из таблицы. default = 300sec. | |||
=Зачем используем вланы= | =Зачем используем вланы= | ||
*уменьшение кол-ва трафика и как следствие увеличение скорости передачи | *уменьшение кол-ва трафика и как следствие увеличение скорости передачи | ||
Строка 6: | Строка 44: | ||
*быстрая реакция на перемещение хоста | *быстрая реакция на перемещение хоста | ||
*используя вланы, можно сгруппировать хосты, находящиеся на разных концах страны в один домен. | *используя вланы, можно сгруппировать хосты, находящиеся на разных концах страны в один домен. | ||
=Tagging= | =Tagging= | ||
Строка 19: | Строка 49: | ||
Точно определить кол-во вланов, подерживаемое на железке: | Точно определить кол-во вланов, подерживаемое на железке: | ||
set vlans vlan-name vlan-id ? | set vlans ''vlan-name'' vlan-id ? | ||
Во фрейме есть поле: TPID (tag protocol identifier). | Во фрейме есть поле: TPID (tag protocol identifier). | ||
Когда | |||
Когда хост генерирует фрейм во влане, он заполняет поле TPID значением 0x8100, что означает - теггированный пакет. | |||
Также во фрейме есть поле: VLAN ID, которое заполняется присвоенным уникальным 802.1Q ID. | Также во фрейме есть поле: VLAN ID, которое заполняется присвоенным уникальным 802.1Q ID. | ||
Строка 32: | Строка 63: | ||
Как создать и назначать влан на порт: | Как создать и назначать влан на порт: | ||
set vlans v356 vlan-id 356 | set vlans ''v356'' vlan-id 356 | ||
set interfaces ge-2/0/ | set interfaces ge-2/0/0 unit 0 family ethernet-switching vlan members ''v356'' | ||
=Interface-mode= | =Interface-mode= | ||
Строка 45: | Строка 76: | ||
set interfaces ae0 unit 0 family ethernet-switching interface-mode trunk | set interfaces ae0 unit 0 family ethernet-switching interface-mode trunk | ||
set interfaces ae0 unit 0 family ethernet-switching vlan members [ v355 v356 ] | set interfaces ae0 unit 0 family ethernet-switching vlan members [ v355 v356 ] | ||
*'''Trunk Mode and Native VLAN.''' Принимает tagged трафик + untagged трафик того влана, который будет настроен как native. | *'''Trunk Mode and Native VLAN.''' Принимает tagged трафик + untagged трафик того влана, который будет настроен как native. Если добавить vlan-id только как native (без добавления в vlan-members), принцип обработки будет таким: | ||
set interfaces ge-0/0/34 native-vlan-id 391 | set interfaces ge-0/0/34 native-vlan-id 391 | ||
set interfaces ge-0/0/34 unit 0 family ethernet-switching interface-mode trunk | set interfaces ge-0/0/34 unit 0 family ethernet-switching interface-mode trunk | ||
Строка 64: | Строка 95: | ||
*'''Tagged-access mode.''' Используется для подключения серверов с виртуалками. Отсюда от access-mode взят тип подключения - host. Но по факту для если для каждой виртуалки используется свой влан, то порт должен пропускать tagged трафик. Это он и делает - это особенность от trunk-mode. Также поддерживается native vlan. | *'''Tagged-access mode.''' Используется для подключения серверов с виртуалками. Отсюда от access-mode взят тип подключения - host. Но по факту для если для каждой виртуалки используется свой влан, то порт должен пропускать tagged трафик. Это он и делает - это особенность от trunk-mode. Также поддерживается native vlan. | ||
Также есть инетерсные фичи, благодаря которым равнозначеные порты, требующие одинаковых настроек можно группировать: | |||
set interfaces interface-range Uplinks member-range ge-1/0/40 to ge-1/0/43 | |||
set interfaces interface-range Uplinks unit 0 family ethernet-switching vlan members all | |||
=Inter-VLAN routing= | =Inter-VLAN routing= | ||
Чтобы появилась возможность коннектиться хостам из разных доменов - настраиваем Inter-VLAN routing. | Чтобы появилась возможность коннектиться хостам из разных доменов - настраиваем Inter-VLAN routing. | ||
По сути это просто создание l3-интерфейса [routed VLAN interface (RVI) или IRB] | По сути это просто создание l3-интерфейса внутри влана [routed VLAN interface (RVI) или IRB]. | ||
Внутри влана трафик будет бриджеваться, а между вланами - роутиться. | Внутри влана трафик будет бриджеваться, а между вланами - роутиться. | ||
Строка 81: | Строка 116: | ||
irb.356 up up inet 10.170.19.1/24 | irb.356 up up inet 10.170.19.1/24 | ||
L3 интерфейс | L3 интерфейс станет up как только vlan v356 будет назначен (trunk или access) на какой-нибудь физический интерфейс в состоянии up. | ||
В случае с RVI будет всё тоже самое только | В случае с RVI будет всё тоже самое, только изменится тип интерфейса: irb.356 > vlan.356. | ||
=Дополнительная информация= | |||
*[[Provider bridging]] | |||
*[[ERP (Ethernet Ring Protection)]] | |||
*[[Spanning-Tree protocol (STP)]] |
Текущая версия на 18:13, 15 июля 2021
Краткое overview
Ethernet = shared network: sharing collision domain. HUB - тот же shared collision domain, только хосты подключены не через шину, а через хаб (тупой свитч).
CSMA/CD: Хост хочет передать фрейм. Сначала он слушает: не вещает ли кто-то в домене. Начинает передавать свой фрейм, если не услышал шевелений от других. После передачи хост слушает - возникла ли коллизия. Если произошла коллизия, то хост замирает на время backoff delay. Если до начала отправки фрейма хост понимает, что кто-то тоже вещает в это время, он также замирает на backoff delay.
Bridge делит хосты на несколько collision domains. И изучает маки хостов.
Switch - каждый хост в своем порту. Каждый хост в своем collision domain. Изучает маки хостов.
Juniper switch разделяет Control Plane (routing engine [RE] = мозги, ядро свитча) и Forwarding Plane (packet forwarding engine [PFE]).
- Routing engine: RPD - создает routing table и из неё forwarding table. L2-learning - создает bridging table.
- Packet forwarding engine: содержит forwarding table, полученную от RE. Согласно таблице форвардит трафик.
Если через свитч бегает трафик между уже изученными хостами, то дальше PFE такой трафик не поднимается.
Если появляется новых хост, то PFE доставляет полученный пакет RE. RE проверяет всё ли ок (firewalls, policy, mac-add limits, ...). Если ok, то обновляет bridging table и передает обновленную bridging table на PFE. Дальше пакет форвардится на egress порт или флудится во все порты (если dst mac неизвестен).
Enterprise Devices:
- SRX series - statefull firewall
- EX series - свитче, работают на ELS software
- QFX series - производительные коммутаторы, больше подходящие для DC - жирные порты, virtual chassis и т.д.
Типы портов на большинстве свитчей EX series:
- aceess [10/100/1000 Mb] RJ45 + POE - для подключение хостов
- uplink [1/10 Gb] SFP+ - для uplink или chassis cluster
- MGMT - аналог fxp на роутерах Juniper - out of band mgmt Me0
- console - RJ45 + mini-USB
Bridging process
Стандартные процедуры, которые происходят во время bridging:
- Изучение (learning). Изначально switch не в курсе где какие хосты включены. Как только к LAN/VLAN подключился хост и отправил пакет, свитч изучает mac-address этого хоста. Записывает с таблицу коммутации: port + mac + age (время, когда mac был изучен).
- Передача (Forwarding). Использую таблицу коммутации, свитч делает передачу фреймов между портам хостов. Если требуется передать фрейм на неизученный ранее mac-address, то запускается процесс flooding.
- Флуд (Flooding). Флуд производистя внутри LAN/VLAN. Флудится неизученный mac-address. Когда хост получит фрейм со своим адресом, он посылает в ответ ACK. Mac-addrees изучается и добавляется в таблицу коммутации.
- Фильтрация (Filtering). Трафик в рамках одного VLAN будет фильтроваться и не передаваться в другой VLAN.
- Устаревание (Aging). Каждый раз когда свитч детектит трафик от MAC, обновляется временная метка. Если трафик перестал поступать - обновляться время жизни более не будет. Когда временная метка станет больше заданного значения, запись о данном mac-address удалится из таблицы. default = 300sec.
Зачем используем вланы
- уменьшение кол-ва трафика и как следствие увеличение скорости передачи
- вместо сегментироавния сети посредством маршрутизации, делаем сегментирование vlan'ами
- четкая сортировка и идентефикация пакетов по доменам
- секурность - управление меньшими бродкаст-доменами
- быстрая реакция на перемещение хоста
- используя вланы, можно сгруппировать хосты, находящиеся на разных концах страны в один домен.
Tagging
VLAN-id диапазон: 1-4094. 0,4095 - зарезервированы под служебные нужды Junos.
Точно определить кол-во вланов, подерживаемое на железке:
set vlans vlan-name vlan-id ?
Во фрейме есть поле: TPID (tag protocol identifier).
Когда хост генерирует фрейм во влане, он заполняет поле TPID значением 0x8100, что означает - теггированный пакет.
Также во фрейме есть поле: VLAN ID, которое заполняется присвоенным уникальным 802.1Q ID.
TPID 0x8100 = tagged TPID 0x9100 = qinq TPID 0x88a8 = Provider Bridging and Shortest Path Bridging
По дефолту используется vlan-id 1, как нетеггированный.
Как создать и назначать влан на порт:
set vlans v356 vlan-id 356 set interfaces ge-2/0/0 unit 0 family ethernet-switching vlan members v356
Interface-mode
- Access. Принимает только untagged трафик. Дефолтное поведение чистого свитча: все порты в access default vlan (vlan-id 1 [можно при желании сменить vlan-id])
set interfaces ge-2/0/1 unit 0 family ethernet-switching interface-mode access set interfaces ge-2/0/1 unit 0 family ethernet-switching vlan members v356
- Trunk. Принимает только tagged трафик. Можно настроить прохождение дофига vlan-id через один trunk-порт. Не пропускает untagged data-трафик. Но воспринимает untagged служебный трафик (например LACP, LLDP и прочее)
set interfaces ae0 unit 0 family ethernet-switching interface-mode trunk set interfaces ae0 unit 0 family ethernet-switching vlan members [ v355 v356 ]
- Trunk Mode and Native VLAN. Принимает tagged трафик + untagged трафик того влана, который будет настроен как native. Если добавить vlan-id только как native (без добавления в vlan-members), принцип обработки будет таким:
set interfaces ge-0/0/34 native-vlan-id 391 set interfaces ge-0/0/34 unit 0 family ethernet-switching interface-mode trunk set interfaces ge-0/0/34 unit 0 family ethernet-switching vlan members v356
Transmit = untagged 391 (pass)
Receive = untagged 391 (pass)
Receive = tagged to 391 (drop)
Если настроить native vlan-id + добавить этот vlan-id в trunk: когда свитч получит untagged трафик, он пометит его данным vlan-id, а также будет принимать и отправлять tagged трафик этого же vlan-id.
set interfaces ge-0/0/34 native-vlan-id 391 set interfaces ge-0/0/34 unit 0 family ethernet-switching interface-mode trunk set interfaces ge-0/0/34 unit 0 family ethernet-switching vlan members v356 set interfaces ge-0/0/34 unit 0 family ethernet-switching vlan members v391
Transmit = tagged 391 (pass)
Receive = untagged 391 (pass - mapped to 391)
Receive = tagged 391 (pass)
- Tagged-access mode. Используется для подключения серверов с виртуалками. Отсюда от access-mode взят тип подключения - host. Но по факту для если для каждой виртуалки используется свой влан, то порт должен пропускать tagged трафик. Это он и делает - это особенность от trunk-mode. Также поддерживается native vlan.
Также есть инетерсные фичи, благодаря которым равнозначеные порты, требующие одинаковых настроек можно группировать:
set interfaces interface-range Uplinks member-range ge-1/0/40 to ge-1/0/43 set interfaces interface-range Uplinks unit 0 family ethernet-switching vlan members all
Inter-VLAN routing
Чтобы появилась возможность коннектиться хостам из разных доменов - настраиваем Inter-VLAN routing.
По сути это просто создание l3-интерфейса внутри влана [routed VLAN interface (RVI) или IRB].
Внутри влана трафик будет бриджеваться, а между вланами - роутиться.
set interfaces irb unit 356 family inet address 10.170.19.1/24 set vlans v356 vlan-id 356 l3-interface irb.356
set interfaces ge-2/0/46 unit 0 family ethernet-switching vlan members v356 set interfaces ae0 unit 0 family ethernet-switching vlan members v356
show interfaces terse irb.356 Interface Admin Link Proto Local Remote irb.356 up up inet 10.170.19.1/24
L3 интерфейс станет up как только vlan v356 будет назначен (trunk или access) на какой-нибудь физический интерфейс в состоянии up.
В случае с RVI будет всё тоже самое, только изменится тип интерфейса: irb.356 > vlan.356.