Vytváření podsítí s proměnnou maskou v prostředí IPv4

Autor: M. Rohlík <rohlim1(at)fel.cvut.cz>, Pracoviště: České vysoké učení technické v Praze, FEL, Téma: Aplikace a služby, Vydáno dne: 17. 03. 2009

Problematika VLSM (Variable-Length Subnet Mask) tedy vytváření podsítí s proměnnou maskou je stále aktuální. Tento článek se zabývá vysvětlením problematiky vytváření beztřídních podsítí s proměnnou maskou a popisem e-learnigového nástroje, který slouží k procvičování a řešení konkrétních úloh VLSM.


Variable-Length Subnet Mask Creating in the IPv4 Environment - Abstract

VLSM (Variable-Length Subnet Mask) problems solving or subnets with variable mask designing are still actual question. There are not so many e-learning tools in Czech language for solving VLSM problems in IPv4 environment. This paper deals with the illustration of the design of classless variable-length subnet masks and the description of such e-learning tool, created for practicing and solving VLSM assignments.

Keywords: IP adress; subnetwork; IP mask


Adresace – pohled do historie

Na počátku vzniku dnešního Internetu, tedy celosvětového systému propojujícího obrovské množství komunikačních sítí, stojí od roku 1969 průkopnický experimentální projekt sítě s přepojováním paketů amerického ministerstva obrany Advanced Research Projects Agency Network (ARPANET) [3].

Pozn. Agentura Advanced Research Projects Agency (ARPA) vznikla v roce 1957 jako reakce na vypuštění první sovětské družice Sputnik 1 (Sputnik program). ARPA se přejmenovala na Defense Advanced Research Projects Agency (DARPA) v roce 1971, poté zpět na ARPA v roce 1993, a následně opět na DARPA v roce 1996.

Projekt ARPANET převzala v roce 1972 agentura DARPA, která představila myšlenku sítí s otevřenou architekturou. Na základě požadavku spolehlivého spojení koncových systémů paketově orientované komunikace vznikl protokol NCP (Network Control Program), který poskytoval standardní metody pro sestavení spolehlivých, obousměrných komunikačních spojení s řízením toku mezi různými procesy na odlišných stanicích či systémech. Neumožňoval však adresovat sítě ani cílové stanice a neposkytoval detekci chyb. Proto byl dne 1. 1. 1983 (tento den bývá označován jako tzv. „Flag Day“) protokol NCP nahrazen flexibilnější a výkonnější skupinou protokolů TCP/IP (Transmission Control Protocol/Internet Protocol). Tato transformace způsobila, že se původní ARPANET rozdělil na dvě části: vojenskou síť MILNET zabezpečující operační požadavky a ARPANET podporující výzkumné potřeby. S rozšířením lokálních sítí přebral ARPANET postupně funkci páteřní přenosové sítě. Tuto funkci později převzala síť National Science Foundation Network (NSFNET) a v roce 1990 ARPANET definitivně zanikl [3].

Původní verze protokolu TCP podporovala pouze spolehlivé sekvenční doručování dat (model systému s přepojováním virtuálních okruhů). To dostačovalo původní myšlence použití pro přenos souborů a vzdálené přihlašování. Pro další aplikace jako například přenos hovorového signálu byla nedostačující, takže byla nahrazena novou verzí, která uvažovala i nahodilé ztráty, poškození nebo doručení paketů v nesprávném pořadí (model známý jako datagramová služba). To ovšem znamenalo celou koncepci reorganizovat, a tak se původní TCP rozdělil na dva protokoly: IP protokol, který zabezpečoval adresaci a přeposílání jednotlivých paketů a oddělený protokol TCP, který zastával služby jako řízení toku nebo zotavení ze ztráty paketů. Pro aplikace nevyžadující služby TCP byl přidán alternativní protokol nazvaný User Datagram Protocol (UDP), aby poskytoval přímý přístup k základní službě protokolu IP. První stolní počítače ovšem neměly dostatečný výkon, aby na nich běžela původní implementace TCP. Proto ve spolupráci s firmami Xerox a IBM vznikla optimalizovaná verze [3].

Rozšíření lokálních sítí a osobní počítačů v osmdesátých létech zapříčinilo mohutné rozšíření technologie Ethernet (původně vyvinuté firmou Xerox PARC v roce 1973), která je dnes dominantní síťovou technologií. Problematika sítí byla definována v roce 1981 v doporučení RFC 796 [2].

Pozn. První Request for Comments (RFC) vytvořil S. Crocker (později na univerzitě UCLA) v roce 1969 jako sadu poznámek. Tyto poznámky měly za úkol rychle a neformálně distribuovat a sdílet myšlenky s ostatními síťovými badateli. Původní RFC byly tištěny na papír a distribuovány poštou. Teprve později s rozvojem důmyslnějších služeb byly distribuovány pomocí protokolů jako např. File Transfer Protocol (FTP) až po dnešní podobu přístupnou pomocí služby World Wide Web (WWW) po celém světě na různých místech online.

Tato změna z několika málo sítí s řádově jednotkami stanic (originální model ARPANET) na velké množství sítí vyústila v další změny v konceptech a základní technologii jako je definice tříd síťových adres, jmenný systém (aby si uživatelé nemuseli pamatovat složité IP adresy), změnu ve směrování (vznikl hierarchický model směrování), agregace směrovacích informací (v důsledku nadměrně velkých směrovacích tabulek a šířících se směrovacích záznamů v síti) anebo beztřídního adresování (z důvodu nedostatečného dimenzování dostupného adresního prostoru) [3].

Struktura adresy IPv4

Pracuje-li v síti zařízení s protokolem IPv4, má každé jeho rozhraní přiřazenu tzv. IP adresu. Tato adresa je 32bitové číslo, formálně psané po čtvrtinách, osmicích bitů zvaných bajty (Byte), oddělených tečkami. Obecný tvar adresy zobrazuje Obr. 1 a je z něho patrné, že adresa se skládá ze dvou částí: identifikátoru sítě a identifikátoru stanice.

VLMS_01

Obr. 1: Struktura adresy protokolu IPv4

Totéž doporučení (RFC 796) dále definuje, jak rozdělit celý adresní prostor 32 bitů do pěti adresních tříd [2]:

V každé třídě lze obecně určit prostor (počet) vytvořitelných sítí:

Nsítí = 2n,

kde n je počet bitů identifikátoru sítě (network identificator, zkráceně „net id“).
Rovněž lze v každé třídě obecně určit počet stanic:

Nstanic = 2n - 2,

kde n je počet bitů identifikátoru stanice (host identificator, zkráceně „host id“). Dvojku je nutno odečíst proto, že první adresa z každého síťového rozsahu určuje adresu sítě a poslední adresa každého rozsahu tzv. „všesměrový oběžník“ (broadcast) neboli všesměrovou adresu.

Adresu sítě a broadcast nelze použít pro adresaci stanice, a tak je nutné tyto dvě adresy od celkového počtu odečíst. Je-li broadcast použit jako cílová adresa (jako zdrojová adresa použít nelze), je paket doručen všem stanicím v dané síti vymezené maskou sítě (viz kap.3).

Souhrnné informace o jednotlivých třídách, počtech všech dostupných sítí a stanic vytvořitelných v rámci daných tříd jsou přehledně uvedeny v následující Tab. 1.

Třídabinární
hodnota
počátečních
bitů
počet bitů
identifikátoru
sítě
(bez počátečních)
počet bitů
identifikátoru
stanice
počet
sítí
počet
stanic
A072412816777214
B1014161638465534
C1102182097152254
D (multicast)1110
E (rezervovaná)1111

Tab. 1: Vlastnosti jednotlivých tříd IPv4

Maska sítě

Síťová maska je opět číslo délky třicet dva bitů zapisované po osmicích oddělených tečkami. Maska sítě se používá pro určení cílové adresy sítě. Část adresy „net id“ je v síťové masce vždy v binárním vyjádření tvořena jedničkami a část „host id“ je vždy v binární reprezentaci složena z nul. Princip funkce je pro názornost vhodné vysvětlit pomocí binárního zápisu adres, jak jej ilustruje následující situace.

Nechť 147.32.198.50D je adresa nějaké stanice, které odpovídá binární zápis 10010011.00100000.11000110.00110010B. Vzhledem k tomu, že tento rozsah je z třídy B, bude mít výchozí třídní masku 255.255.0.0D (viz Tab. 2), které odpovídá binární notace 11111111.11111111.00000000.00000000B. Vynásobí-li se binárně bit po bitu adresa stanice s maskou sítě, získá se adresa sítě. Matematicky:

  10010011.00100000.11000110.00110010B
& 11111111.11111111.00000000.00000000B
--------------------------------------
  10010011.00100000.00000000.00000000B

Převede-li se výsledek logického součinu do dekadického tvaru, získá se hledaná adresa sítě: 147.32.0.0D.

Identickým postupem zpracovávají směrovače přijaté požadavky o přeposlání paketu na konkrétní cílovou adresu. Pokud má směrovač ve své směrovací tabulce uloženu informaci o cílové síti, do které by měl být paket směrován, provede binární násobení cílové adresy s příslušnou maskou sítě, zkontroluje adresu sítě a podle ní vybere rozhraní, kterým bude paket do cílové sítě přeposlán.

Třídarozsah adres
(desítkově)
třídní maska
(desítkově)
A0.0.0.0 – 127.255.255.255255.0.0.0
B128.0.0.0 – 191.255.255.255255.255.0.0
C192.0.0.0 – 223.255.255.255255.255.255.0
D224.0.0.0 – 239.255.255.255
E240.0.0.0 – 255.255.255.255

Tab. 2: Třídy a masky v IPv4

Existují speciální typy IPv4 adres, které mají definovaný účel použití a nelze je použít jinak. Přehledně vybrané z nich zobrazuje následující Tab. 3. Další typy speciálních adres lze nalézt v [6].

Addresses CIDR notace Význam RFC
0.0.0.0 – 0.255.255.255 0.0.0.0/8 Nulové adresy (0.0.0.0 označuje tento počítač na této síti) RFC 1700
10.0.0.0 – 10.255.255.255 10.0.0.0/8 Privátní IP adresy (nesměrovatelné v Internetu) RFC 1918
127.0.0.0 – 127.255.255.255 127.0.0.0/8 Adresa zpětnovazební smyčky (nejčastěji se používá 127.0.0.1) RFC 1700
169.254.0.0 – 169.254.255.255 169.254.0.0/16 APIPA (Automatic Private IP Addressing) pokud rozhraní nedostane
IP adresu od DHCP serveru, přidělí se ji z tohoto rozsahu samo
RFC 3330
172.16.0.0 – 172.31.255.255 172.16.0.0/12 Privátní IP adresy (nesměrovatelné v Internetu) RFC 1918
192.0.2.0 – 192.0.2.255 192.0.2.0/24 Dokumentace a příklady (názorné ukázky) RFC 3330
192.168.0.0 – 192.168.255.255 192.168.0.0/16 Privátní IP adresy (nesměrovatelné v Internetu) RFC 1918

Tab. 3: Vybrané speciální adresy IPv4

Podsítě a princip podsíťování

Později se však ukázalo, že takto rozdělený prostor 232 IPv4 adres, není rozčleněn vhodně a příliš se přidělovanými adresami plýtvá. Proto vyšla v roce 1993 doporučení RFC 1517 až 1520 [4], která strategii dělení adresního prostoru radikálně upravila. Přestalo se na sítě nahlížet „třídně“ a začala se výhradně používat síťová maska. Tento přístup je v anglosaské literatuře označován jako Classless Inter-Domain Routing (CIDR), tedy mechanizmus beztřídního směrování [5]. IPv4 adresa se stále skládá s části „net id“, ale původní část „host id“ je dále rozdělena na „subnet id“ (indetifikátor podsítě) a „host id“. Z hlediska síťové masky je adresa sítě i podsítě jeden celek. Zde ovšem dochází ke kolizi termínů: síť je ta část adresy, která obsahuje v binární formě zápisu jedničky, ale rovněž je sítí myšlena část adresy, kde jsou v odpovídající masce jedničky. Aby nedošlo k nejednoznačnosti, je třeba oprostit se od třídního náhledu na sítě a vždy k adrese doplnit i příslušnou masku sítě.

Tato metoda rozdělení sítě na menší části se nazývá podsíťování (subnetting). Maska podsítě má tak více jedniček, než maska standardní pro danou třídu. Jedničky lze ale z masky rovněž odebírat (nahrazovat zprava nulami), a vytvářet tak sítě větší tzv. supersítě (supernetting). Maska podsítě má potom jedniček méně, než standardní maska třídy.

Protože je dekadický zápis velmi dlouhý, zavedl se zjednodušený zápis masky sítě tzv. prefix ve formě celého čísla uváděného za adresou sítě, za lomítkem. Toto číslo je rovno počtu jedniček v masce sítě. Kupříkladu maska sítě z předchozího příkladu 255.255.0.0 by byla zapsána /16, a celý zápis adresy sítě by pak vypadal 147.32.0.0/16.

VLMS_02

Obr. 2: Vliv podsíťování na strukturu adresy protokolu IPv4

Síťová maska s proměnnou délkou

Rozdělení dané sítě na podsítě s konstantní délkou masky sítě řeší sice otázku lepšího využití adresního prostoru, ale v praxi je obvykle potřeba danou síť rozdělit na nestejně velké části. K tomu slouží metoda síťové masky s proměnnou (variabilní) délkou Variable-Length Subnet Mask (VLSM). Tabulka jednotlivých sítí je uvedena v [7]. Praktické využití je nastíněno v následujícím příkladu.

VLMS_03

Obr. 3: Zadání příkladu, ukázka topologie

Zadání: Pro zadanou topologii sítě navrhněte kompletní IPv4 adresaci, jak pro jednotlivé sítě, tak i pro propojení mezi směrovači navzájem. Dbejte na maximální možné využití přiděleného adresního prostoru. Pro Vaši síť je přidělený IP adresní prostor (rozsah) daný zápisem: 192.168.0.0/24. Minimální požadované počty koncových systémů (dále bude uváděno jen jako PC) v jednotlivých podsítích jsou:

Síťpočet stanic
A33
B64

Řešení:

  1. Nejprve se seřadí sítě podle velikosti (počtu požadovaných stanic) od největší po nejmenší a nezapomene se připsat i propojení mezi směrovači (označí se např. jako síť C).
  2. Je třeba přičíst 2 adresy navíc: jednu pro adresu sítě a druhou pro všesměrovou adresu (broadcast) a zaokrouhlit počty stanic na nejbližší vyšší mocninu dvou.
  3. Použije se adresace od začátku daného rozsahu.
  4. Určí se maska podsítě.
Síťpočet staniczaokrouhlený
počet stanic
rozsah adres v podsítimaskaprefix
B64128192.168.0.0 – 192.168.0.127255.255.255.128/25
A3364192.168.0.128 – 192.168.0.191255.255.255.192/26
C24192.168.0.192 – 192.168.0.195255.255.255.252/30

Graficky lze řešení zobrazit pomocí Obr. 4.

VLMS_04

Obr. 4: Grafické řešení zadání úlohy

Tento příklad je jednoduchý a v praxi je obvykle potřeba řešit mnohonásobně větší a složitější sítě. Nástroj na řešení takovýchto sítí byl vytvořen autorem tohoto článku a je umístěn na [8]. Uživatel v něm může přímo zadávat parametry pro řešení, nebo si může nechat vygenerovat zadání pro testování, a poté si své řešení konfrontovat s vygenerovaným řešením.

Další mechanizmy hospodárného využití adresního prostoru IPv4

Adresní prostor nebyl v dobách třídní adresace příliš efektivně rozdělen. Dodnes je mnoho rozsahů třídy A přiděleno velkým korporacím např. 3.0.0.0/8 General Electric Company, 9.0.0.0/8 IBM; 12.0.0.0/8 AT&T Bell Laboratories, 13.0.0.0/8 Xerox Corporation, 15.0.0.0/8 Hewlett-Packard Company, 16.0.0.0/8 Digital Equipment Corporation, 17.0.0.0/8 Apple Computer Inc., 19.0.0.0/8 Ford Motor Company, 32.0.0.0/8 AT&T Global Network Services a dalším viz [9]. Uvolnění nevyužitého adresního prostoru by pomohlo oddálit nevyhnutelné vyčerpání celého adresního prostoru IPv4.

Dalším nástrojem, jak se vyčerpání adres IPv4 vyhnout, je použít metodu tzv. překladu adres NAT (Network Address Translation) [10]. NAT je funkce hraničního směrovače (označ. jako „stub router“), která přepisuje zdrojové resp. cílové IPv4 adresy směřující z resp. do lokální sítě. Hraniční směrovač má připojenu pouze jednu odchozí cestu k poskytovateli Internetu, takže pro lokální síť používá privátní adresní rozsahy a překládá je na přidělený dostupný rozsah veřejných adres.

Speciálním případem NAT je tzv. překlad portů PAT (Port Address Translation). Stub směrovač překládá na jednu veřejnou adresu několik (popř. všechny) adresy stanic v lokální síti. Pro odlišení komunikace se nepřekládají pouze adresy, ale rovněž porty transportních protokolů (TCP, UDP apod.).

Nepříliš účinnou metodou je dynamické přidělování adres pomocí protokolu DHCPv4 (Dynamic Host Configuration Protocol version Four) [11], která na vyžádání přidělí stanici IPv4 adresu z definovaného rozsahu adres. Po nastaveném čase je třeba adresu odevzdat nebo vyžádat její obnovu. Protokol DHCP má ale primárně jiné využití

Diskutované mechanizmy více či méně napomáhají oddálit totální vyčerpání dostupných volných adres IPv4, ale problém jako takový neřeší. Řešení nabízí nová verze protokolu IP verze 6 (IPv6) [12], která poskytuje vylepšenou správu paketů, rozšiřuje adresní prostor (128bitová IPv6 adresa složená ze skupin hexadecimálních číslic), obsahuje integrovaný mechanizmus kvality služby (QoS), zajišťuje bezpečnost (podpora IPsec), zjednodušil se formát záhlaví, učiněna opatření pro podporu mobilních zařízení a další vylepšení. Pro snazší přechod z IPv4 na IPv6 byly definovány tzv. mechanizmy přechodu umožňující IPv6 stanicím využít IPv4 služeb a izolovaným IPv6 stanicím a sítím dosáhnout IPv6 Internetu skrze infrastrukturu vybudovanou na IPv4 [13].

Závěr

Problematika návrhu sítí v prostředí IPv4 je stále aktuální. Optimální návrh adresace sítě a rozdělení na podsítě má velký vliv na výsledné vlastnosti a chování sítě. Postup adresace je ideální začít od největší sítě po nejmenší. Tím je zajištěno, že se žádné podsítě nebudou překrývat a adresní prostor bude maximálně efektivně využit. Pro procvičení této problematiky byl vytvořen e-learningový nástroj, který je dostupný online na adrese uvedené v [8]. Nástroj uživateli umožňuje procvičovat se v návrhu adresace sítí nebo přímo zadat vložit a nechat si řešení vygenerovat.

Program a příspěvek vznikly za podpory grantu FRVŠ G1 178/2009.

Literatura

[1] DOSTÁLEK, L., KABELOVÁ, A. Velký průvodce protokoly TCP/IP a systémem DNS. Praha: Computer Press, 2000. 426 s. ISBN 80-7226-323-4.
[2] POSTEL, J. Address mappings (RFC 796) [online]. 1981 [cit. 2009-02-04]. Dostupný z WWW: <http://tools.ietf.org/html/rfc796>.
[3] LEINER, B. M., CERF, V. G., CLARK, D. D., KAHN, R. E., KLEINROCK, L., LYNCH, D. C., POSTEL, J., ROBERTS, L. G., WOLFF, S. A Brief History of the Internet [online]. 2003 [cit. 2009-02-04]. Dostupný z WWW: <http://www.isoc.org/internet/history/brief.shtml>.
[4] REKHTER, Y., LI, T. An Architecture for IP Address Allocation with CIDR (RFC 1518) [online]. 1993 [cit. 2009-02-04]. Dostupný z WWW: <http://tools.ietf.org/html/rfc1518>.
[5] FULLER, V., LI, T., YU, J., VARADHAN, K. Classless Inter-Domain Routing (CIDR): an Address Assignment and Aggregation Strategy (RFC 1519) [online]. 1993 [cit. 2009-02-04]. Dostupný z WWW: <http://tools.ietf.org/html/rfc1519>.
[6] IANA Special-Use IPv4 Addresses (RFC 3330) [online]. 2002 [cit. 2009-02-04]. Dostupný z WWW: <http://tools.ietf.org/html/rfc3330>.
[7] PUMMILL, T., MANNING, B. Variable Length Subnet Table For IPv4 (RFC 1878) [online]. 1995 [cit. 2009-02-04]. Dostupný z WWW: <http://tools.ietf.org/html/rfc1878>.
[8] ROHLÍK, M. Univerzální nástroj pro návrh sítě v prostředí IPv4 [online]. 2009 [cit. 2009-02-04]. Dostupný z WWW: <http://matlab.feld.cvut.cz/view.php?cisloclanku=2009020002>.
[9] IANA IPv4 Address Space Registry [online]. 2009 [cit. 2009-03-16]. Dostupný z WWW: <http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml>.
[10] SRISURESH, P., EGEVANG, K. Traditional IP Network Address Translator (Traditional NAT) (RFC 3022) [online]. 2001 [cit. 2009-03-16]. Dostupný z WWW: <http://tools.ietf.org/html/rfc3022>.
[11] LEMON, T., SOMMERFIELD, B. Node-specific Client Identifiers forDynamic Host Configuration Protocol Version Four (DHCPv4) (RFC 4361) [online]. 2006 [cit. 2009-03-16]. Dostupný z WWW: <http://tools.ietf.org/html/rfc4361>.
[12] DEERING, S., HINDEN, R. Internet Protocol, Version 6 (IPv6)Specification (RFC 2460) [online]. 1998 [cit. 2009-03-16]. Dostupný z WWW: <http://tools.ietf.org/html/rfc2460>.
[13] NORDMARK, E., GILLIAN, R. Basic Transition Mechanisms for IPv6 Hosts and Routers (RFC 4213) [online]. 2005 [cit. 2009-03-16]. Dostupný z WWW: <http://tools.ietf.org/html/rfc4213>.