Adresování s maskou podsítě proměnné délky
(Variable-Length Subnet Mask, VLSM)

Předpokládejme, že je našim úkolem vytvořit adresování sítě uvedené na obrázku 1. Síť je tvořena pěti směrovači v různých městech, projených spojovacími linkami. V jednotlivých městech jsou připojeny přepínače, na jejichž portech jsou stanice místní lokální sítě. Čísla uvedená u jednotlivých přepínačů určují, s kolika stanicemi připojenými do sítě je v dané lokalitě počítáno


Obrázek 1

Možná skutečná realizace sítě
Propojení mezi směrovači Ostrava1 a Ostrava2 je tvořeno lokální sítí Ethernet. Spoj mezi Třincem a Studénkou byl v naší síti historicky zřízen jako první a využívá virtuálního okruhu sítě Frame Relay poskytovaného telekomunikačním operátorem. Ostatní spoje mezi městy jsou tvořeny pronajatými optickými trasami (dark fiber).

Abychom mohli navrhnout adresování sítě, musíme nejprve stanovit počet IP podsítí a určit minimální počet bitů, který musí být na adresování stanic v každé podsíti vyhrazen. Oblasti tvořící jednotlivé podsítě jsou zobrazeny na obrázku 2. Je vidět, že síť obsahuje 8 podsítí (všimněte si, že přepínač mezi směrovači Ostrava1 a Ostrava2 pracuje na 2 vrstvě a tudíž je z pohledu protokolu IP nevýznamný).


Obrázek 2

Počet bitů, kterými budeme schopni adresovat všechny stanice na dané podsíti, určíme jako nejmenší možný počet bitů, do nichž lze zakódovat číslo odpovídající požadovanému počtu stanic. Jedná se tedy o nejbližší vyšší mocninu dvou větší než požadovaný počet stanic. Při tom však nesmíme zapomínat, že rozhraní směrovače do dané podsítě musí mít také svou IP adresu, takže musíme požadovaný počet stanic zvýšit o jedničku. Mimo to nesmíme zapomenout, že bitová kombinace obsahující samé jedničky je vyhrazena pro broadcast, kombinace samých nul pro označení podsítě jako takové. Proto pro lokální síť v Krnově nepostačí tři bity, jak by se mohlo zdát na první pohled, ale je potřeba čtyři bity. Na obrázku 3 jsou počty požadovaných stanic na jednotlivých segmentech upravené na nejbližší mocninu dvou se započtením nepoužitelných vyhrazených adres. Požadované počty adres jsou vyznačeny i u spojovacích (tj. dvoubodových) linek. Všimněte si, že pro adresování stanic spojovací linky je třeba dvou bitů, poskytujících 4 kombinace: adresa jednoho routeru, adresa druhého routeru, označení sítě jako takové a broadcast.


Obrázek 3

Celkový počet adres potřebných pro danou síť (se započtením rozhraní routerů i nepoužitelných adres a v jednotlivých podsítích upravený na mocninu dvou) je 128+64+32+16+4*4=256. Proto poskytovatel Internetu naši síti přidělil prefix o délce 24 bitů (jednu adresu třídy C), čímž pro podsíťování zbývá 8 bitů. Přidělená adresa je 200.1.20.0/24.

Pokusme se nyní adresovat síť s použitím konstantní masky podsítě. Podsíť s největším množstvím stanic vyžaduje 7 bitů. Z přidělených osmi tak zbývá jeden bit pro určení podsítě, můžeme tedy mít pouze dvě takto velké podsítě. Je zřejmé, že navrhnout adresování s konstantní maskou podsítě nebude při použití 24-bitového prefixu adresy možné. Všimněte si, že i kdyby poskytovatel přidělil více adres (kratší prefix), bylo by v naši síti adresování s konstantní síťovou maskou velice neefektivní: např. spojovacím linkám, vyžadujícím 4 adresy by bylo přiděleno adres 128, čímž by bylo 124 adres neužitečně vyplýtváno.

Proto přistoupíme k adresování s proměnnou maskou podsítě. Přidělený adresní prostor již nebudeme dělit do bloků o stejné velikosti, jako u konstantní masky podsítě, ale velikost bloků budeme přizpůsobovat počtu stanic na jednotlivých podsítích. Při tom se bloky adres nesmějí překrývat, každé stanici musí být přidělena jednoznačná IP adresa. Počet bitů, jejichž jednoznačnou kombinací jsou určeny bloky adres jednotlivých podsítí, se však bude podle velikosti bloku měnit


Poznámka
Jednoznačnou kombinaci bitů v adrese, které následující bezprostředně za poskytovatelem přiděleným prefixem sítě a jednoznačně určují podsíť, budeme dále označovat jako prefix podsítě. Tento prefix bude mít proměnnou délku, podle počtu adres v podsíti, kterou má identifikovat.

Na bity prefixu podsítě se budeme odkazovat jako na bit 7 až bit 0 příslušného bajtu adresy s tím, že bit 7 má nejvyšší váhu (je nejvíce vlevo). Bajty adresy budeme označovat zleva jako první až čtvrtý. Jelikož v tomto příkladu pro podsíťování používáme pouze poslední (tj. čtvrtý) bajt adresy, budeme hovořit pouze o bitech 7 až 0. Označování bitů a bajtů je vidět na obrázku 4.

Označování bajtů v IP adrese
prvnídruhýtřetíčtvrtý

Označování bitů v bajtu IP adresy
76543210
1286432168421

Obrázek 4

S přidělováním adres u VLSM začneme od největší podsítě - S1. Na tu potřebujeme 7 bitů, z bitů použitelných pro podsíťování tedy zbývá pro určení podsítě jeden. Síti S1 se rozhodneme přidělit adresy v podsíti, jejíž prefix podsítě bude určen hodnotou 1 v bitu 7, tedy adresy 200.1.20.128-200.1.20.255 (adresa 200.1.20.128 je samozřejmě adresou sítě samotné a 200.1.20.255 je broadcast). Na všechny ostatní sítě tedy zbývá druhá polovina přiděleného rozsahu, tedy adresy 200.1.20.0-200.1.20.127.

Abychom si byli jisti, že jsou přidělené prefixy podsítí jednoznačné, zapíšeme pro lepší přehlednost prefix přidělený každé podsíti také binárně. Symbolem x označíme pozice v adresním rozsahu podsítě, které mohou mít libovolné hodnoty. Pro úplnost vždy také uvedeme dekadicky vyjádřený pevný prefix sítě přidělený poskytovatelem. Díky tomu, že délka přiděleného prefixu odpovídá v našem případě hranici třetího a čtvrtého bajtu, postačí nám binárně vyjadřovat poslední bajt.

Pro síť S1 tedy prefix podsítě bude:

    S1: 200.1.20.1xxx xxxx 

Poznámka:

Všimněme si, že síť s největším počtem adres bude vždy mít prefix podsítě nejkratší.


Poznámka:

Všimněte si také, že jsme přednostně použili nejvyšší možnou číselnou hodnotu prefixu, v tomto případě 1. To je výhodné pro další výpočty, protože jsme tím rozsah číselně vyšších adres již vyloučili a dále budeme počítat s menšími čísly.


Druhá největší posíť je v Třinci - S2. Pro tu potřebujeme 6 bitů, tedy prefix podsítě bude dvoubitový. Bit 7 musí být nulový (jednička již byla přidělena ostravské síti S1). Zvolíme tedy opět nejvyšší možnou a dosud nepřidělenou kombinaci, 01:

    S2: 200.1.20.01xx xxxx 
Další je na řadě síť S3 ve Studénce s pěti bity pro adresy. Prefixy 1 a 01 jsou již obsazeny, proto musí prefix podsítě začínat 00. Protože jsme S3 přidělili 5 bitů, zbývají pro prefix podsítě 3 bity. Nejvyšší možná kombinace je 001:
    S3: 200.1.20.001x xxxx 
Z lokálních sítí zbývá přidělit adresy síti S4 v Krnově. Pro adresy v S4 je třeba 4 bity, prefix tedy bude také 4-bitový. Doposud nepřidělená kombinace nejvyšších bitů je 000, takže podle námi zavedeného systému přidělování od vyšších adres přiřadíme síti S4 prefix 0001:
    S4: 200.1.20.0001 xxxx 
Tímto jsme přidělili adresy všem lokálním sítím. Zbývá ještě přiřadit adresy spojovacím linkám - sítím S5, S6, S7 a S8. Na každou z nich potřebujeme 4 adresy (tj. 2 bity), takže prefixy podsítí budou dlouhé 6 bitů. Jediná nepřidělená kombinace nejvyšších čtyřech bitů je 0000. Spojovací sítě jsou čtyři, takže další dva bity prefixu použijeme na jejich identifikaci takto:
       S5: 200.1.20.0000 11xx
       S6: 200.1.20.0000 10xx
       S7: 200.1.20.0000 01xx
       S8: 200.1.20.0000 00xx
Adresní plán je tímto hotov. Pro přehlednost na závěr prefixy jednotlivých sítí a jim odpovídající adresní rozsahy do tabulky 1:

Adresní plán sítě
lokalitaoznačeníprefixadresa sítěmaska podsítěpoužitelné adresybroadcast
Ostrava S1 200.1.20.1xxx xxxx 200.1.20.128/25 255.255.255.128 200.1.20.129 - 200.1.20.254 200.1.20.255
Třinec S2 200.1.20.01xx xxxx 200.1.20.64/26 255.255.255.192 200.1.20.65 - 200.1.20.126 200.1.20.127
Studénka S3 200.1.20.001x xxxx 200.1.20.32/27 255.255.255.224 200.1.20.33 - 200.1.20.62 200.1.20.63
Krnov S4 200.1.20.0001 xxxx 200.1.20.16/28 255.255.255.240 200.1.20.17 - 200.1.20.30 200.1.20.31
Spoj Krnov-Ostrava1 S5 200.1.20.0000 11xx 200.1.20.12/30 255.255.255.252 200.1.20.13 - 200.1.20.14 200.1.20.15
Spoj Krnov-Studénka S6 200.1.20.0000 10xx 200.1.20.8/30 255.255.255.252 200.1.20.9 - 200.1.20.10 200.1.20.11
Spoj Studénka-Ostrava2 S7 200.1.20.0000 01xx 200.1.20.4/30 255.255.255.252 200.1.20.5 - 200.1.20.6 200.1.20.7
Spoj Studénka-Třinec S8 200.1.20.0000 00xx 200.1.20.0/30 255.255.255.252 200.1.20.1 - 200.1.20.2 200.1.20.3

Tabulka 1

Grafická reprezentace adresního prostoru

Pro lepší přehlednost můžeme bloky adres postupně přidělované jednotlivým podsítím vyjádřit také graficky. Představme si poskytovatelem přidělený adresní rozsah 256 adres jako čtverec 16 x 16, v jehož levém horním rohu je nejnižší adresa rozsahu, v pravém dolním nejvyšší (obrázek 5).

Obrázek 5

Nyní si uvědomme, že přidělením hodnoty 0 nebo 1 nejlevějšímu dosud nepoužitému bitu prefixu podsítě vždy rozdělíme rozsah zbývajících adres na poloviny. Např. přidělením prefixu 1xxx xxxx síti S1 jsme polovinu rozsahu přiřadili síti S1 (obrázek 6):

Obrázek 6

Dále pak vždy pracujeme jen se zbývající polovinou rozsahu. Prefix 01xx xxxx jsme přiřadili síti S2 (obrázek 7):

Obrázek 7

Postupné přidělování bloků adres sítím S3 až S8 dělením zbývajícího rozsahu ukazuje obrázek 8. Vyšší polovinu děleného rozsahu adres v našem schematu vždy vyjádříme spodní, resp. pravou polovinou děleného pravoúhelníka:

Obrázek 8

Z obrázků znázorňujících bloky adres je dobře vidět, že se jednotlivé bloky skutečně nepřekrývají. Také je vidět, že byl spotřebován celý přidělený rozsah adres.

Uvedený způsob grafického znázornění je mimořádně výhodný, pokud podsíťovaný adresní prostor je vymezen jedním bajtem (8 bity), což je v praxi dosti častý případ. Pokud by bylo k dispozici bitů k podsíťování méně, můžeme část rozsahu, která nám nepatří, z původního čtverce před začátkem podsíťování vyloučit (označit jako již přidělené). Naopak v připadě, kdy je počet bitů pro podsíťování větší, můžeme pracovat s více nezávislými čtverci. Například při 10 bitech bychom pracovali se čtyřmi čtverci (10=8+2 a ze dvou bitů vzniknou 4 různé kombinace, tedy 4 čtverce).


Poznámky


Podsíťování s maskou podsítě mimo hranice bajtů IP adresy

Ukažme si nyní, jak by adresováni vypadalo, kdyby vznikla potřeba přidat novou spojovací linku mezi směrovači Třinec a Ostrava2, jak ukazuje obrázek 9:


Obrázek 9

Značení podsítí ponecháme shodné jako v předchozím případě, subsíť nové spojovací linky označíme S9 (obrázek 10):


Obrázek 10

Ukažme si nyní, jak lze vytvořit adresování této sítě s použitím 23-bitového prefixu 200.1.20.0/23 přiděleného poskytovatelem. Protože rozsah adres je oproti předchozímu případu dvojnásobný, ponecháme rezervu jak na možnost vytváření dalších podsítí, tak na možné připojení většího počtu stanic v jednotlivých podsítích. Rozšíříme tedy počet použitelných adres v menších podsítích, konkrétně v Krnově a Studénce, aby počet připojitelných stanic byl 64. Adresní prostor podsítě S1 v Ostravě rozšiřovat nebudeme, protože budoucí rozšíření broadcastové domény (segmentu) nad 128 stanic se nejeví z pohledu zátěže segmentu příliš rozumné. Počty stanic a bitů nyní uvažovaných pro jednotlivé podsíte jsou shrnuty v tabulce 2:

Požadavky na počty stanic v podsítích (verze 2)
PodsíťPočet stanicbitů
S1 128 7
S2 64 6
S3 64 6
S4 64 6
S5 4 2
S6 4 2
S7 4 2
S8 4 2
S9 4 2

Tabulka 2

Přiřazování prefixů započneme opět od nejvyšších adres:

S1: 200.1.00010101.1xxx xxxx
S2: 200.1.00010101.01xx xxxx
S3: 200.1.00010101.00xx xxxx

S4: 200.1.00010100.11xx xxxx
Pro adresy spojovacích linek vyhradíme čtyři podsítě prefixu 200.1.00010100.1011 xxxx a jednu podsíť prefixu 200.1.00010100.1011 xxxx:
S5: 200.1.00010100.1011 11xx
S6: 200.1.00010100.1011 10xx
S7: 200.1.00010100.1011 01xx
S8: 200.1.00010100.1011 00xx
S9: 200.1.00010100.1010 11xx
Celý adresní plán je shrnut v tabulce 3:

Adresní plán sítě
lokalitaoznačeníprefixadresa sítěmaska podsítěpoužitelné adresybroadcast
Ostrava S1 200.1.00010101.1xxx xxxx 200.1.21.128/25 255.255.255.128 200.1.21.129 - 200.1.21.254 200.1.21.255
Třinec S2 200.1.00010101.01xx xxxx 200.1.21.64/26 255.255.255.192 200.1.21.65 - 200.1.21.126 200.1.21.127
Studénka S3 200.1.00010101.00xx xxxx 200.1.21.0/26 255.255.255.192 200.1.21.1 - 200.1.21.62 200.1.21.63
Krnov S4 200.1.00010100.11xx xxxx 200.1.20.192/26 255.255.255.192 200.1.20.193 - 200.1.20.254 200.1.20.255
Spoj Krnov-Ostrava1 S5 200.1.00010100.1011 11xx 200.1.20.188/30 255.255.255.252 200.1.20.189 - 200.1.20.190 200.1.20.191
Spoj Krnov-Studénka S6 200.1.00010100.1011 10xx 200.1.20.184/30 255.255.255.252 200.1.20.185 - 200.1.20.186 200.1.20.187
Spoj Studénka-Ostrava2 S7 200.1.00010100.1011 01xx 200.1.20.180/30 255.255.255.252 200.1.20.181 - 200.1.20.182 200.1.20.183
Spoj Studénka-Třinec S8 200.1.00010100.1011 00xx 200.1.20.176/30 255.255.255.252 200.1.20.177 - 200.1.20.178 200.1.20.179
Spoj Ostrava2-Třinec S9 200.1.00010100.1010 11xx 200.1.20.172/30 255.255.255.252 200.1.20.173 - 200.1.20.174 200.1.20.175

Tabulka 3

Pro názornou představu je spotřebovaná část přiděleného adresního prostoru graficky znázorněna na obrázku 11:

Obrázek 11