Podział sieci ============= .. image:: _static/buildings.png Problem: * Firma dysponuje jednym adresem IP (adres sieci). * Firma posiada kilka budynków -- w każdym znajduje się sieć LAN. * Jak zaplanować adresację w firmie? Podział sieci IP na równe podsieci ---------------------------------- Mając dany adres IP: * część sieciowa ma długość :math:`s` bitów (maska wynosi ``/s``) * część komputera ma długość :math:`k` bitów .. image:: _static/podzial1.svg Podział sieci na :math:`p` podsieci, wyznaczanie adresów podsieci: * "pożyczamy" z początku części komputerowej tyle bitów, żeby móc ponumerować :math:`p` podsieci: :math:`\lceil \log_2(p) \rceil` * używamy "pożyczonych" bitów żeby ponumerować podsieci * powiększamy maskę o :math:`\lceil \log_2(p) \rceil` .. image:: _static/podzial2.svg Uzyskujemy :math:`\lceil \log_2(p) \rceil` podsieci, gdzie każda podsieć ma prawidłowy adres IP: * każda podsieć ma własny adres sieci i rozgłoszeniowy * w każdej sieci można zaadresować :math:`2^{k - \lceil \log_2(p) \rceil} - 2` komputerów * maska podsieci jest dłuższa niż maska oryginalnej sieci (:math:`s + \lceil \log_2(p) \rceil`) Przykład """""""" Dzielenie sieci ``150.10.0.0/16`` na cztery podsieci. .. image:: _static/podzial3.svg * żeby zaadresować cztery podsieci potrzeba :math:`\lceil \log_2(4) \rceil = 2` bity .. image:: _static/podzial5.svg * numeracja podsieci: - ``00`` -- podsieć pierwsza - ``01`` -- podsieć druga - ``10`` -- podsieć trzecia - ``11`` -- podsieć czwarta Pierwsza podsieć '''''''''''''''' * pierwszych 16 bitów bez zmian * w zapożyczonej części numer pierwszej podsieci: ``00`` * 14 bitów części komputerowej wyzerowane * adres pierwszej podsieci: ``150.10.0.0`` .. image:: _static/podzial4.svg * nowa maska musi uwzględniać zapożyczone bity więc ma długość :math:`16+2 = 18` * maska pierwszej podsieci: ``255.255.192.0`` -- ``/18`` .. image:: _static/podzial6.svg * adres pierwszej podsieci: ``150.10.0.0/18`` * zakres komputerów w pierwszej podsieci: ========================================== ============================= ====================================== ``10010110 10010110 00000000 00000000`` ``150.150.0.0`` adres sieci ``10010110 10010110 00000000 00000001`` ``150.150.0.1`` adres pierwszego komputera w sieci ``10010110 10010110 00000000 00000010`` ``150.150.0.2`` adres drugiego komputera w sieci ... ... ``10010110 10010110 00111111 11111110`` ``150.150.63.254`` adres ostatniego komputera w sieci ``10010110 10010110 00111111 11111111`` ``150.150.63.255`` adres rozgłoszeniowy ========================================== ============================= ====================================== * Zakres adresów: ``150.150.0.1``--``150.150.63.254`` * Liczba komputerów w sieci: :math:`2^{14} - 2` * adres rozłoszeniowy: ``150.150.63.255`` Pozostałe podsieci '''''''''''''''''' ================== ================== =================== ================ ====================================== ===================== Numer podsieci Adres podsieci Maska podsieci Maska podsieci Zakres adresów komputerów Adres rozgłoszeniowy ------------------ ------------------ ------------------- ---------------- -------------------------------------- --------------------- ``00`` ``150.10.0.0`` ``255.255.192.0`` ``/18`` ``150.10.0.1``--``150.10.63.254`` ``150.10.63.255`` ``01`` ``150.10.64.0`` ``255.255.192.0`` ``/18`` ``150.10.64.1``--``150.10.127.254`` ``150.10.127.255`` ``10`` ``150.10.128.0`` ``255.255.192.0`` ``/18`` ``150.10.128.1``--``150.10.191.254`` ``150.10.191.255`` ``11`` ``150.10.192.0`` ``255.255.192.0`` ``/18`` ``150.10.192.1``--``150.10.255.254`` ``150.10.255.255`` ================== ================== =================== ================ ====================================== ===================== Plan adresacji '''''''''''''' .. image:: _static/plan1.png Podział sieci IP na podsieci różnej wielkości --------------------------------------------- .. image:: _static/buildings2.png Problem: * firma posiada kilka budynków znacznie różniących się liczbą komputerów *Variable Length Subnet Masking* (VLSM): * podział sieci na podsieci o różnych maskach zakresach * zasada postępowania: * podział sieci na równe podsieci * podział podsieci na jeszcze mniejsze podsieci Przykład """""""" Dzielenie sieci ``150.10.0.0/16`` na: * 3 sieci po 15 000 komputerów oraz * 4 sieci po 4000 komputerów Podział sieci ``150.10.0.0/16`` na 4 podsieci ``/18`` ''''''''''''''''''''''''''''''''''''''''''''''''''''' ================== ================== =================== ================ ====================================== ===================== Numer podsieci Adres podsieci Maska podsieci Maska podsieci Zakres adresów komputerów Adres rozgłoszeniowy ------------------ ------------------ ------------------- ---------------- -------------------------------------- --------------------- ``00`` ``150.10.0.0`` ``255.255.192.0`` ``/18`` ``150.10.0.1``--``150.10.63.254`` ``150.10.63.255`` ``01`` ``150.10.64.0`` ``255.255.192.0`` ``/18`` ``150.10.64.1``--``150.10.127.254`` ``150.10.127.255`` ``10`` ``150.10.128.0`` ``255.255.192.0`` ``/18`` ``150.10.128.1``--``150.10.191.254`` ``150.10.191.255`` ``11`` ``150.10.192.0`` ``255.255.192.0`` ``/18`` ``150.10.192.1``--``150.10.255.254`` ``150.10.255.255`` ================== ================== =================== ================ ====================================== ===================== Podział sieci ``150.10.64.0/18`` na 4 podsieci ``/20`` '''''''''''''''''''''''''''''''''''''''''''''''''''''' ================== ================== =================== ================ ====================================== ===================== Numer podsieci Adres podsieci Maska podsieci Maska podsieci Zakres adresów komputerów Adres rozgłoszeniowy ------------------ ------------------ ------------------- ---------------- -------------------------------------- --------------------- ``00`` ``150.10.64.0`` ``255.255.240.0`` ``/20`` ``150.10.64.1``--``150.10.79.254`` ``150.10.79.255`` ``01`` ``150.10.80.0`` ``255.255.240.0`` ``/20`` ``150.10.80.1``--``150.10.95.254`` ``150.10.95.255`` ``10`` ``150.10.96.0`` ``255.255.240.0`` ``/20`` ``150.10.96.1``--``150.10.111.254`` ``150.10.111.255`` ``11`` ``150.10.112.0`` ``255.255.240.0`` ``/20`` ``150.10.112.1``--``150.10.127.254`` ``150.10.127.255`` ================== ================== =================== ================ ====================================== ===================== Podsieci '''''''' Wszystkie podsieci: * ``150.10.0.0/18`` * ``150.10.128.0/18`` * ``150.10.192.0/18`` * ``150.10.64.0/20`` * ``150.10.80.0/20`` * ``150.10.96.0/20`` * ``150.10.112.0/20`` * Rutery znajdujące się poza siecią ``150.10.0.0/16`` mogą utrzymywać tylko jeden wiersz w swoich tablicach tras, zawierający wyłącznie sieć ``150.10.0.0/16`` * Trasy do podsieci muszą być zapamiętane w ruterach wewnątrz sieci ``150.10.0.0/16`` Warunek stosowalności """"""""""""""""""""" Dana jest sieć ``100.0.0.0/8`` w której znajdują się rutery ``R1`` i ``R2`` ustalające trasy protokołem dynamocznego wyboru tras (np. RIP) .. image:: _static/vlsm.png Problem: * ruter ``R2`` wysyła do ``R1`` informację o sieci ``100.192.0.0``; jaką maskę R1 ma przyjąć dla tej sieci? * rozwiązanie (**warunek stosowalności**) -- w komunikatach protokołu należy obok informacji o sieci przesyłać również maskę Wsparcie dla VLSM """"""""""""""""" Protokoły nie wspierające VLSM: * RIP v1 (IETF) * IGRP (Cisco) Protokoły wspierające VLSM: * RIP v2 (IETF) * OSPF (IETF) * EIGRP (Cisco) Classless Inter-Domain Routing ------------------------------ Classless Inter-Domain Routing: * porzucenie podejścia klasowego (**maska może być krótsza niż najkrótsza w podejściu klasowym**) * **pozwala zmniejszyć rozmiary tablic tras w ruterach** -- agregacja adresów sieci * narzuca **przydział adresów odpowiadający potrzebom** -- pojęcie "sieci danej klasy" zastąpione pojęciem "blok adresów CIDR," w którym istotna jest tylko długość maski * technologia stosowana razem z VLSM * technologia, zgodnie z którą dostawcy usług internetowych (*Internet Service Provider*, w skrócie ISP) przydzielają dziś adresy IP Przydzielanie adresów w podejściu klasowym i CIDR """"""""""""""""""""""""""""""""""""""""""""""""" * w technologii CIDR przydział jest bliższy rzeczywistym potrzebom * liczba adresów w bloku CIDR jest dowolną (w ustalonym zakresie) potęgą liczby 2 Podejście klasowe ''''''''''''''''' ================= ============================== ==================== Klasa sieci Maska Liczba adresów ----------------- ------------------------------ -------------------- A ``255.0.0.0`` (``/8``) 16 777 216 B ``255.255.0.0`` (``/16``) 65 536 C ``255.255.255.0`` (``/24``) 256 ================= ============================== ==================== Podejście CIDR '''''''''''''' ================= ============================== ==================== Prefiks CIDR Maska Liczba adresów ----------------- ------------------------------ -------------------- ``/32`` ``255.255.255.255`` - ``/31`` ``255.255.255.254`` 2 ``/30`` ``255.255.255.252`` 4 ... ... ... ``/13`` ``255.255.248.0`` 524 288 ... ... ... ``/1`` ``128.0.0.0`` 2 147 483 648 ================= ============================== ==================== Agregacja adresów sieci ----------------------- .. image:: _static/cidr.png Tablica tras rutera **R2**: ================= ============= ============ cel maska brama ----------------- ------------- ------------ ``200.1.0.0`` ``/24`` **R1** ``200.1.1.0`` ``/24`` **R1** ``200.1.2.0`` ``/24`` **R1** ... ... ... ``200.1.15.0`` ``/24`` **R1** \ \ \ ``200.1.16.0`` ``/24`` **R3** ``200.1.17.0`` ``/24`` **R3** ``200.1.18.0`` ``/24`` **R3** ... ... ... ``200.1.31.0`` ``/24`` **R3** ================= ============= ============ Zasada agregacji """""""""""""""" Mając dany zakres adresów IP: * znaleźć najdłuższy wspólny prefiks ich części sieciowych * skracamy część sieciową (maskę) i tworzymy uogólniony adres IP sieci (tzw. adres nadsieci lub CIDR -- *supernet address* lub *CIDR address*) * **uwaga:** nadsieć nie może zawierać adresów spoza danego zakresu adresów IP Przykład """""""" Przykład -- obliczenie adresu CIDR dla rutera **R2**: ================== ================================================ ``200.1.0.0/24`` **11001000.00000001.0000**-0000.00000000 ``200.1.1.0/24`` **11001000.00000001.0000**-0001.00000000 ``200.1.2.0/24`` **11001000.00000001.0000**-0010.00000000 ``200.1.3.0/24`` **11001000.00000001.0000**-0011.00000000 ``200.1.15.0/24`` **11001000.00000001.0000**-1111.00000000 \ \ ``200.1.0.0/24`` **11001000.00000001.0001**-0000.00000000 ``200.1.1.0/24`` **11001000.00000001.0001**-0001.00000000 ``200.1.2.0/24`` **11001000.00000001.0001**-0010.00000000 ``200.1.3.0/24`` **11001000.00000001.0001**-0011.00000000 ``200.1.15.0/24`` **11001000.00000001.0001**-1111.00000000 ================== ================================================ Adresy nadsieci: * ``11001000.00000001.00000000.00000000`` czyli ``200.1.0.0/20``. * ``11001000.00000001.00010000.00000000`` czyli ``200.1.0.0/20``. Agregacja """"""""" Nowa tablica tras rutera **R2**: ================= ============= ============ cel maska brama ----------------- ------------- ------------ ``200.1.0.0`` ``/20`` **R1** ``200.1.16.0`` ``/20`` **R3** ================= ============= ============ Korzyść: zmniejszenie rozmiaru tablicy tras (szybsze przeszukiwanie) Niemożliwa agregacja """""""""""""""""""" Często nie można dokonać agregacji do jednego adresu nadrzędnego. Przykład: obliczanie adresu CIDR dla poniższych adresów sieci: * ``200.1.48.0/24`` * ``200.1.49.0/24`` * ... * ``200.1.79.0/24`` ================== ================================================ ``200.1.48.0/24`` **11001000.00000001.0**-0110000.00000000 ``200.1.49.0/24`` **11001000.00000001.0**-0110001.00000000 ... ... ``200.1.63.0/24`` **11001000.00000001.0**-0111111.00000000 \ \ ``200.1.64.0/24`` **11001000.00000001.0**-1000000.00000000 ``200.1.65.0/24`` **11001000.00000001.0**-1000001.00000000 ... ... ``200.1.79.0/24`` **11001000.00000001.0**-1001111.00000000 ================== ================================================ Agregacja do jednego adresu ``200.1.0.0/17`` ujęłaby **nieistniejące adresy sieci**, np: ``200.0.127.0/24``. Wykonujemy dwie osobne agregacje: ================== ================================================ ``200.1.48.0/24`` **11001000.00000001.0011**-0000.00000000 ``200.1.49.0/24`` **11001000.00000001.0011**-0001.00000000 ... ... ``200.1.63.0/24`` **11001000.00000001.0011**-1111.00000000 ================== ================================================ Nadsieć: ``200.1.48.0/20`` ================== ================================================ ``200.1.64.0/24`` **11001000.00000001.0100**-0000.00000000 ``200.1.65.0/24`` **11001000.00000001.0100**-0001.00000000 ... ... ``200.1.79.0/24`` **11001000.00000001.0100**-1111.00000000 ================== ================================================ Nadsieć: ``200.1.64.0/20`` Zadania ------- #. Dokonaj podziału sieci o adresie ``200.10.20.0/24`` na 8 podsieci. #. Podziel jedną z podsieci z przykładu powyżej na cztery podsieci. #. Dokonaj agregacji adresów sieci z zakresu a. ``202.1.0.0/24``, ``202.1.1.0/24``, ..., ``202.1.63.0/24`` #. ``202.1.24.0/24``, ``202.1.25.0/24``, ..., ``202.1.39.0/24`` #. Dla poniższego rysunku załóżmy następującą sytuację: Dostawca usług R1 (jego nazwa bierze się od nazwy rutera **R1**) dysponuje adresem CIDR ``200.200.50.0/23``. Część tej przestrzeni przeznacza dla własnych sieci IP, a resztę oddaje swoim poddostawcom **R2** i **R4**. Ci ostatni postępują według podobnego schematu. Zakładając rozmiary sieci takie, jak przedstawiono, zaproponuj schemat adresacji IP dla wszystkich sieci. .. image:: _static/adrIPz4.png Materiały --------- * `Skrypt, M. Kalewski `_ * Klasy adresów: http://www.vlsm-calc.net/ipclasses.php * Serwis internetowy firmy Cisco: http://www.cisco.com * Chuck Semeria, *Understanding IP Addressing: Everything You Ever Wanted To Know* (dokument dostępny w sieci)