| 4 | == Первоначальное присваивание VLAN ID пакетам == |
| 5 | |
| 6 | Каждому принятому портом коммутатора пакету присваивается идентификатор VLAN (VLAN ID, VID). Алгоритм этого присваивания зависит от типа принятого пакета и конфигурационных настроек коммутатора. Принятые пакеты классифицируется коммутатором по различным признакам. В зависимости от того, имеет ли пакет тэг 802.1q, коммутатор относит пакет к тэгированным (tagged) или нетэгированным (untagged). Наличие тэга определяется коммутатором анализом поля !EtherType в зависимости от настройки "Port mode" (см. описание конфигурационных параметров порта ниже). Если параметр "Port mode" имеет значение "non-QinQ", и поле !EtherType пакета имеет значение 0x8100, пакет считается тэгированным. Если "Port mode" имеет значение "Core port", и поле !EtherType пакета имеет значение 0x88a8, пакет также считается тэгированным. Во всех остальных случаях принятый пакет считается нетэгированным. |
| 7 | |
| 8 | Тэгированные пакеты, в свою очередь, могут быть отнесены к тэгированным VLAN (VLAN-tagged), если VLAN ID тэга имеет ненулевое значение), или тэгированным приоритетом (priority-tagged), если VLAN ID равен нулю. |
| 9 | |
| 10 | Если коммутатором принят нетэгированный пакет, данному пакету присваевается VLAN ID в соответствии с конфигурационным параметром порта "Default VLAN ID" (см. описание конфигурационных параметров порта ниже). Если коммутатором принят тэгированный пакет, присваивание пакету VLAN ID определяется конфигурационным параметром "PVID assigniment mode": |
| 11 | - **PVID assigned to all packets** - пакет получает VID в соответствии со значением параметра "Default VLAN ID"; |
| 12 | - **PVID assigned to untagged packets** - пакет получает VID в соответствии со значением VID его тэга. |
| 13 | |
| 14 | Если конфигурационный параметр "PVID precedence" порта имеет значение "hard", назначенный пакету по описанному выше алгоритму VID является окончательным. Если же параметр имеет значение "soft", VID пакета может быть изменен другими механизмами коммутатора: присваивание VID в зависимости от протокола (protocol-based VLAN) и правилами политик (policy rules). |
| 15 | |
| 16 | Алгоритм первоначального присваивания VLAN ID принятому пакету показан на следующей диаграмме: |
| 17 | |
| 18 | {{{#!plantuml |
| 19 | @startuml |
| 20 | |
| 21 | start |
| 22 | :принят пакет; |
| 23 | if (Port mode == Access port?) then (да) |
| 24 | :VID = Default VLAN ID; |
| 25 | else (нет) |
| 26 | if(порту назначено\nприсваивать PVID\nвсем пакетам?) then (да) |
| 27 | :VID = Default VLAN ID; |
| 28 | else (нет) |
| 29 | if(пакет тегирован\nи VLAN ID != 0?) then (нет) |
| 30 | :VID = Default VLAN ID; |
| 31 | else (да) |
| 32 | :VID = VLAN ID принятого пакета; |
| 33 | endif |
| 34 | endif |
| 35 | endif |
| 36 | |
| 37 | if(PVID precedence) then (soft) |
| 38 | if(порту разрешено назначать VID в\nзависимости от протокола?) then (да) |
| 39 | if(есть совпадение протокола?) then (да) |
| 40 | :VID = протокол VID; |
| 41 | else (нет) |
| 42 | endif |
| 43 | else (нет) |
| 44 | endif |
| 45 | |
| 46 | if(порту разрешены политики?) then (да) |
| 47 | if(выполняется условие правила\nполитики с переназначением VID?) then (да) |
| 48 | :VID = протокол VID; |
| 49 | else (нет) |
| 50 | endif |
| 51 | else (нет) |
| 52 | endif |
| 53 | else (hard) |
| 54 | endif |
| 55 | stop |
| 56 | |
| 57 | @enduml |
| 58 | }}} |
107 | | === Первоначальное присваивание VLAN ID пакетам === |
108 | | |
109 | | Каждому принятому портом коммутатора пакету присваивается идентификатор VLAN (VLAN ID, VID). Алгоритм этого присваивания зависит от типа принятого пакета и конфигурационных настроек коммутатора. Принятые пакеты классифицируется коммутатором по различным признакам. В зависимости от того, имеет ли пакет тэг 802.1q, коммутатор относит пакет к тэгированным (tagged) или нетэгированным (untagged). Тэгированные пакеты, в свою очередь, могут быть отнесены к тэгированным VLAN (VLAN-tagged), если VLAN ID тэга имеет ненулевое значение), или тэгированным приоритетом (priority-tagged), если VLAN ID равен нулю. |
110 | | |
111 | | Алгоритм первоначального присваивания VLAN ID принятому пакету показан на следующей диаграмме: |
112 | | |
113 | | {{{#!plantuml |
114 | | @startuml |
115 | | |
116 | | start |
117 | | :принят пакет; |
118 | | if (Port mode == Access port?) then (да) |
119 | | :VID = Default VLAN ID; |
120 | | else (нет) |
121 | | if(порту назначено\nприсваивать PVID\nвсем пакетам?) then (да) |
122 | | :VID = Default VLAN ID; |
123 | | else (нет) |
124 | | if(пакет тегирован\nи VLAN ID != 0?) then (нет) |
125 | | :VID = Default VLAN ID; |
126 | | else (да) |
127 | | :VID = VLAN ID принятого пакета; |
128 | | endif |
129 | | endif |
130 | | endif |
131 | | |
132 | | if(порту разрешено назначать VID в\nзависимости от протокола?) then (да) |
133 | | if(есть совпадение протокола?) then (да) |
134 | | :VID = протокол VID; |
135 | | else (нет) |
136 | | endif |
137 | | else (нет) |
138 | | endif |
139 | | |
140 | | if(порту разрешены политики?) then (да) |
141 | | if(выполняется условие правила\nполитики с переназначением VID?) then (да) |
142 | | :VID = протокол VID; |
143 | | else (нет) |
144 | | endif |
145 | | else (нет) |
146 | | endif |
147 | | stop |
148 | | |
149 | | @enduml |
150 | | }}} |