Rețele Private VLAN (PVLAN) – part I

Recentele ore de teorie și laborator dedicate rețelelor Private VLAN m-au cam lăsat cu o groază de notiție pe care ca să nu le pierd în timp cred că am să le expun aici într-un nou articol. Acesta va include o introducere în rețele PVLAN, exemple de utilizare, condiții pentru switch-urile ce tranzitează VLAN-uri private și alte subiecte. Informațiile de aici vor prinde bine pentru un următor articol în care planific să descriu acțiunile din laboratorul dedicat rețelelor PVLAN realizat cu studenții claselor VMware.

Introducere în rețele Private VLAN (PVLAN)

Odată cu apariția VLAN-urilor a devenit posibilă segmentarea unui switch fizic pe mai multe switch-uri logice. Prin interconectarea switch-urilor fizice prin porturi de tip trunk aceleași VLAN-uri (switch-urile logice) pot deja acoperi mai multe switch-uri fizice. Un port trunk, la ieșire, va marca fiecare frame cu numărul VLAN-ului din care a pornit pachetul și la intrare va interpreta numărul VLAN-ului pentru a comuta corect frame-ul pe porturile din respectivul VLAN. Frame-urile pe un trunk 802.1q sunt marcate cu numărul VLAN-ului prin inserarea în header-ul de Ethernet a 4 octeți noi, din care 12 biți sunt rezervați pentru numărul VLAN-ului (VLAN ID). Cu 12 biți dedicați ID-ul VLAN-ului se pot defini până la 4094 de VLAN-uri (de fapt disponibile mai puține datorită câtorva VLAN-uri rezervate: 1,1001-1005). Fiecare VLAN reprezintă un domeniu de broadcast aparte și de regulă se asociază cu un singur subnet de rețea. VLAN-urile sunt complet izolate între ele. Comunicațiile între VLAN-uri pot fi asigurate prin dispozitive L3 cu interfețe în acele VLAN-uri. Introducerea VLAN-urilor simplifică mult topologia fizică a rețelei garantând funcționarea mai multor rețele logice pe același dispozitive fizice (switch) – e ca și cum ai consolida mai multe servere virtuale pe un host fizic doar că aici vorbim de mai multe rețele logice pe un singur switch fizic. Folosirea VLAN-urilor îmbunătățește scalabilitatea rețelei prin localizarea broadcast-ului în domenii de broadcast mai mici și ne oferă o izolare între acestea prin blocarea traficului L2 între VLAN-uri.

Cu toate beneficiile aduse de VLAN-urile tradiționale acestea suferă totuși de câteva neajunsuri:

  • scalabilitate redusă ca număr de VLAN-uri posibile (4094 din care mai trebuie de scos VLAN-urile rezervate).
  • complexitate rețea L3 – fiecare VLAN are nevoie pentru routing de câte o interfață pe un dispozitiv L3 fie el router, firewall sau interfață virtuală pe un switch L3.
  • risipă de adrese IP – pe fiecare subnet asociat cu un VLAN se vor pierde câte două adrese IP una pentru numărul și alta pentru broadcast-ul rețelei. Pe deasupra o adresa IP va fi rezervată pentru default gateway-ul subnet-ului.

Imaginați-vă un scenariu cu hosting de servere virtuale (VPS) în care fiecare client primește un VLAN separat pentru comunicații de rețea. E de înțeles că într-un așa caz numărul maxim de clienți va fi limitat la numărul de VLAN-uri disponibile (din cele 4094 minus câteva ID-uri rezervate mai trebuie scoase VLAN-urile pe care însuși hoster-ul și le-a rezervat, de exemplu pentru networking-ul de management, vMotion, FT ș.a.m.d așa ca numărul la drept vorbind e și mai mic). Sigur, există o problemă de scalabilitate în această abordare.

Rețelele Private VLAN vin să acopere o parte din aceste neajunsuri. Conceptul de Private VLAN se bazează pe ideea restricționării comunicațiilor la nivel de switch între porturi sau grupuri de porturi asociate cu unul din VLAN-urile existente dar care pot în același timp accesa nerestricționat un oarecare grup de porturi dedicat. În porturile restricționate se vor conecta nodurile protejate iar în cele nerestricționate se vor conecta interfețele unor dispozitive partajate în rețea, ca de exemplu interfața router-ului default gateway. Toate nodurile vor fi configurate ca făcând parte din același subnet IP. În așa fel, prin Private VLAN e posibilă o izolare la nivel L2 a dispozitivelor aflate în același subnet IP.

Funcționarea PVLAN-urilor se bazează pe segmentarea unui VLAN standard numit Primary Private VLAN în sub-VLAN-uri auxiliare Secondary Private VLANs. Acestea din urmă sunt posibile de două tipuri: Secondary Isolated Private VLAN și Secondary Community Private VLAN. Într-un Private VLAN pot exista doar un singur Isolated Private VLAN și unul sau mai multe Community Private VLANs. Porturile de acces sunt configurate fie direct în Primary VLAN fie în unul din sub-VLAN-urile secundare. Funcție de VLAN-ul asociat, un port acces în PVLAN poate fi: (a) promiscous port – configurat în Primary Private VLAN (b) isolated port – configurat în Isolated Private VLAN și (c) community port – configurat în unul din Community Private VLANs. Nodurile din VLAN-urile secundare pot comunica liber cu cele din VLAN-ul primar și sunt restricționate să comunice fie în grupuri (Community VLANs) fie  complet izolate între ele (Isolated VLAN).

Note: În documentația VMware, Primary Private VLAN mai este numit Promiscous Private VLAN.

Să analizăm un exemplu de rețea a cărei topologie este ilustrată mai jos: 

private VLANs - sample topology

Într-o rețea pe două switch-uri avem configurat un Private VLAN cu (a) Primary VLAN 5 (b) Isolated VLAN 155 și (c) un Community VLAN 17. Switch-urile au configurate porturi de acces pentru: (a) Primary VLAN – în care sunt conectate router-ul și serverul de backup (b) Isolated VLAN – ce are conectate 3x servere și (c) Community VLAN  17 – cu alte 3x servere. Fâșiile hașurate pot fi interpretate ca domenii de broadcast create de VLAN-urile secundare. Switch-urile sunt interconectate printr-un trunk 802.1q standard (în continuare vor urma mai multe detalii despre tranzitul de Private VLANs).

Pentru topologia și configurația descrisă mai sus:

  • router-ul și server-ul de backup din Primary VLAN 5 vor putea comunica cu toate serverele din VLAN-urile secundare (VLAN 17, 155).
  • serverele din Community VLAN  17 vor putea comunica între ele precum și cu router-ul și serverul de backup din Primary VLAN 5. Acestea nu vor putea însă accesa serverele conectate in Isolated VLAN 155.
  • serverele din Isolated VLAN 155 sunt restricționate să comunice doar cu router-ul și server-ul de backup.

Pe switch-uri pot fi create mai multe Private VLAN-uri. Un număr de sub-VLAN asociat cu un VLAN primar nu poate fi re-utilizat pe un alt VLAN primar. Comunicațiile în interiorul VLAN-ului primar rămân izolate de celelalte VLAN-uri definite pe switch.

Ca și altădată (vezi de ex. Explicație pentru vSwitch Security Policies) am încercat și acum să inventez un model prin care sa-mi explic cumva mai simplu fenomenele ce au loc într-un Private VLAN. Vedeți mai jos o ilustrație pentru modelul meu de Private VLANs. Avem aici drumuri și porți. Drumurile reprezintă căile pe care circulă frame-urile în interiorul switch-ului iar porțile sunt porturile pe switch. Fiecare drum reprezintă un VLAN dintr-un Private VLAN (VLAN-ul primar și cele secundare). Nu toate drumurile sunt la fel, unele sunt pe dublu sens – VLAN-ul primar și VLAN-ul community cu excepția segmentelor până la porțile promiscous, altele pe un singur sens – VLAN-ul izolat. În desen, drumul pentru VLAN-ul primar (5) este marcat cu albastru, cel pentru VLAN-ul izolat (155) marcat cu verde și cel pentru VLAN-ul community (17) marcat roșu. Drumurile au desenate marcaje care indică sensul mișcării, pe alocuri mai sunt și indicatoarele de circulație (observați la stânga pe segmentul de la portul community la portul promiscous). Porțile la rândul lor pot fi de unul din următoarele trei tipuri: community, isolated sau promiscous, corespunzător configurațiilor pentru porturile pe switch. În desen mai avem porți ce corespund porturilor trunk pe switch. Printre altele, schema din model transpune topologia din rețeaua discutată în exemplu de mai sus, aceleași tipuri și număr de porturi (porți).

private VLANs - PVLAN model

Modelul este guvernat de câteva reguli ce stabilesc modul de deplasare a frame-urilor:

  • fiecare tip de poartă folosește drumul lui pentru deplasarea dinspre port a frame-urilor. Astfel frame-urile dintr-un port community vor pleca întotdeauna pe drumul roșu (Community VLAN), frame-urile dintr-un port isolated vor pleca pe drumul verde (Isolated VLAN) și cele din promiscous pe drumul albastru (Primary VLAN).
  • porțile promiscous accepta intrarea frame-urile de pe toate trei drumuri
  • porțile community accepta intrarea frame-urilor de pe drumurile promiscous și isolated
  • porțile isolated accepta intrarea frame-urilor doar de pe drumul promiscous.
  • prin porțile trunk trec toate trei drumuri și toate sunt dublu-sens.

Să încercăm acum să deducem din model traseele parcurse de frame-uri pentru câteva conversații de rețea în cadrul respectivul Private VLAN:

  • dintre un nod conectat într-un port community pe un switch la un nod într-un port promiscous pe alt switch. Pe direcția dinspre community spre promiscous frame-urile își vor începe traseul pe drumul roșu marcate fiind cu Community VLAN 17 după care vor trece prin porturile trunk de pe un switch pe alt switch după care în final vor ajunge pe portul promiscous. Pe direcția opusă, frame-urile vor părăsi portul promiscous pe drumul albastru marcate cu Promiscous VLAN 5, după care vor trece prin porturile trunk de pe un switch pe alt switch, după care vor ajunge pe portul community.
  • dintre un nod conectat într-un port community pe un switch pe  un nod conectat pe un port în același community. Pe ambele direcții, frame-urile vor circula pe același drum roșu, marcate fiind cu Community VLAN 17, își vor începe traseul de la un port community după care vor trece peste porturile trunk și se vor încheia într-un alt port community.
  • dintre un nod conectat într-un port isolated pe un switch la un nod conectat pe alt switch într-un port promiscous. Pe direcția dinspre isolated spre promiscous frame-ul va porni pe drumul verde, marcat cu Isolated VLAN 155 după care va trece peste porturile trunk pe celălalt switch și își va încheia traseul în portul promiscous destinație. Pe calea întoarsă, frame-ul va porni pe drumul albastru, macat cu Primary VLAN 5 după care va trece peste porturile trunk și își va încheia traseul pe portul isolated destinație.
  • nu sunt posibile căile între porturi community și porturi isolated și nici între porturi din același VLAN isolated, pur si simplu traseul și sensul drumurilor nu permit (vezi în desen).

Pun aici punct că mi se primește prea lung textul. În următoarele părți vom analiza exemple tipice de utilizare PVLAN, condiții impuse switch-urilor ce tranzitează VLAN private, tipuri de porturi PVLAN trunk.