FreeBSD/DUMMYNET. Jan Szumiec. 12 grudnia 2002

Podobne dokumenty
Firewall bez adresu IP

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Instrukcje dotyczące funkcji zarządzania pasmem w urządzeniach serii ZyWALL.

pasja-informatyki.pl

Kierunek: technik informatyk 312[01] Semestr: II Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Przykłady wykorzystania polecenia netsh

7. Konfiguracja zapory (firewall)

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Router programowy z firewallem oparty o iptables

Narzędzia do diagnozowania sieci w systemie Windows

Przypisywanie adresów IP do MAC-adresów

SIECI KOMPUTEROWE Adresowanie IP

Laboratorium 6.7.1: Ping i Traceroute

Laboratorium Sieci Komputerowych - 2

Laboratorium podstaw telekomunikacji

Rys. 1. Wynik działania programu ping: n = 5, adres cyfrowy. Rys. 1a. Wynik działania programu ping: l = 64 Bajty, adres mnemoniczny

Sieci komputerowe - administracja

Instrukcja dotycząca funkcji zarządzania pasmem w urządzeniach serii Prestige 660HW.

ZADANIE.07 Różne (tryb tekstowy i graficzny) 2h

Bezpieczeństwo w M875

Systemy operacyjne i sieci komputerowe Szymon Wilk Adresowanie w sieciach Klasy adresów IP a) klasa A

Wprowadzenie 5 Rozdział 1. Lokalna sieć komputerowa 7

ZADANIE.07 Różne (tryb tekstowy i graficzny) 2h

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Translacja adresów - NAT (Network Address Translation)

Sieci Komputerowe 2 / Ćwiczenia 2

Ping. ipconfig. getmac

Ćwiczenie 5b Sieć komputerowa z wykorzystaniem rutera.

Zadanie z lokalnych sieci komputerowych. 1. Cel zajęć

Problemy techniczne SQL Server

Przekierowanie portów w routerze - podstawy

iptables/netfilter co to takiego?

Akademia CISCO. Skills Exam Wskazówki

Wykład 3 Filtracja i modyfikacja pakietów za pomocą iptables.

Sieci Komputerowe Translacja adresów sieciowych

OBSŁUGA I KONFIGURACJA SIECI W WINDOWS

SDN Narmox Spear Architektura referencyjna do zastosowania kilku połączeń WAN oraz zasada podłączania sieci NIE-SDN do sieci SDN

Spis treści. 1 Moduł RFID (APA) 3

Zadania do wykonania Firewall skrypt iptables

System operacyjny Linux

1. Sieć komputerowa - grupa komputerów lub innych urządzeń połączonych ze sobą w celu wymiany danych lub współdzielenia różnych zasobów.

Kod produktu: MP-W7100A-RS232

Podstawy działania sieci

Mosty filtrujące. Alex Dupre Zmiana: :52:45Z autorstwa hrs.

Problem kolejkowania dostępu czyli zarządzanie przepustowością sieci

Dr Michał Tanaś(

Jednostka Sterująca - Menu

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat usługi DHCP.

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Narzędzia diagnostyczne protokołów TCP/IP

Ćwiczenie 5a Sieć komputerowa z wykorzystaniem rutera.

PLAN KONSPEKT. do przeprowadzenia zajęć z przedmiotu. Konfigurowanie systemu Linux do pracy w sieci IP

Routing - wstęp... 2 Routing statyczny... 3 Konfiguracja routingu statycznego IPv Konfiguracja routingu statycznego IPv6...

Co w sieci siedzi. Warstwa 2 - konfiguracja sieci VLAN. Routing między sieciami VLAN.

Konfiguracja zapory Firewall w systemie Debian.

ZADANIE.10 DHCP (Router, ASA) 1,5h

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Zarządzanie bezpieczeństwem w sieciach

SPRAWOZDANIE SIECI KOMPUTEROWE I BAZY DANYCH LABORATORIUM NR2 BADANIE SIECI KAMIL BOGDANOWSKI

Projektowanie bezpieczeństwa sieci i serwerów

Problemy techniczne SQL Server. Jak odblokować porty na komputerze-serwerze, aby umożliwić pracę w sieci?

Co to jest iptables?

1 Moduł Diagnostyki Sieci

TELEFONIA INTERNETOWA

MONITOROWANIE WINDOWS Z NETCRUNCHEM 7 P A G E 1

Przesyłania danych przez protokół TCP/IP

PORADNIKI. Routery i Sieci

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Serwer DHCP (dhcpd). Linux OpenSuse.

Kod produktu: MP-W7100A-RS485

Protokoły sieciowe - TCP/IP

Brinet sp. z o.o. wyłączny przedstawiciel DrayTek w Polsce

Wszystkie parametry pracy serwera konfigurujemy w poszczególnych zakładkach aplikacji, podzielonych wg zakresu funkcjonalnego.

Wojskowa Akademia Techniczna im. Jarosława Dąbrowskiego

Laboratorium 2.8.2: Zaawansowana konfiguracja tras statycznych

T: Konfiguracja interfejsu sieciowego. Odwzorowanie nazwy na adres.

Zakresy prywatnych adresów IPv4: / / /24

Sieć TCP/IP. Konfiguracja sieci TCP/IP - Windows 2000/XP/2003

Sprawozdanie z zajęć laboratoryjnych: Technologie sieciowe 1

BRINET Sp. z o. o.

Windows W celu dostępu do i konfiguracji firewall idź do Panelu sterowania -> System i zabezpieczenia -> Zapora systemu Windows.

Wykład Nr Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

Zapora systemu Windows Vista

Sieci komputerowe laboratorium

SIECI KOMPUTEROWE LABORATORIUM ĆWICZENIE 5. Analiza ruchu sieciowego z wykorzystaniem programu WIRESHARK Cz. I podstawy.

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat zapory sieciowej (firewall) oraz oprogramowania iptables.

Kształtowanie ruch w sieciach Linux

ZADANIE.10 Cisco.&.Juniper DHCP (Router, Firewall)

Pytanie 1 Z jakich protokołów korzysta usługa WWW? (Wybierz prawidłowe odpowiedzi)

Urządzenie InelNET-01 służy do sterowania radiowym systemem SSN-04R firmy INEL poprzez internet.

Tworzenie maszyny wirtualnej

Laboratorium - Używanie programu Wireshark do obserwacji mechanizmu uzgodnienia trójetapowego TCP

ABA-X3 PXES v Podręczna instrukcja administratora. FUNKCJE SIECIOWE Licencja FDL (bez prawa wprowadzania zmian)

Protokół HTTP (2) I) Wprowadzenie. II) Użyte narzędzia: III) Kolejność działań

Opis instalacji i konfiguracji programu HW Virtual Serial Port z kasą PS3000Net

Zdalna obsługa transcievera. H A M R A D I O D E L U X E R e m o t e S e r v e r C o n f i g u r a t i o n

Filtrowanie pakietów IP minihowto

Konfiguracja poczty IMO dla urządzeń mobilnych z systemem ios oraz Android.

Podstawowe protokoły transportowe stosowane w sieciach IP cz.1

PROFFICE/ MultiCash PRO Zmiana parametrów komunikacji VPN do połączenia z Bankiem Pekao S.A.

Transkrypt:

FreeBSD/DUMMYNET Jan Szumiec 12 grudnia 2002 Dummynet to wspaniałe narzędzie pozwalające nam, na kształtowanie ruchu w systemie FreeBSD. Jeśli zajmujesz się badaniami w dziedzinie sieci komputerowych, na pewno ten pakiet przypadnie ci do gustu. Również, jeśli posiadasz niedużą sieć i chcesz aby każdy zużywał tyle samo pasma, na pewno też ten pakiet będzie pomocny. 0.1 Instalacja Aby zainstalować dummynet należy stosownie skonfigurować jądro. Zazwyczaj w pliku konfiguracyjnym jądra wystarczy dodać te trzy opcje: options IPFIREWALL options IPFIREWALL_DEFAULT_TO_ACCEPT options DUMMYNET Druga opcja nie jest konieczna, ale gdy posiadamy inny pakiet, który odpowiada za firewall (na przykład ipfilter), to opcja ta jest pomocna, ponieważ domyślnie nie blokuje nam żadnych pakietów. Nic nie stoi na przeszkodzie, aby blokowaniem pakietów zajmował się ipfilter, a profilowaniem ruchu, ipfw/dummynet. Aby system po starcie automatycznie ładował regułki, należy dodać poniższą linijkę do /etc/rc.conf. Należy pamiętać, że plik /etc/ipfw.rules różni się nieco składnią, od składni poleceń użytych w tym dokumencie, mianowicie, nie posiada polecenia ipfw na początku każdej linijki. firewall_enable="yes" firewall_rules="/etc/ipfw.rules" 0.2 Elementy sterujące ruchem Na elementy sterujące ruchem składają się tzw. rury i kolejki, lub jeśli ktoś woli, potoki. Każdy z tych elementów składowych może być skonfigurowany tak, aby automatycznie wrzucał do takiej kolejki lub rury ruch, który zostanie mu przydzielony. Ponadto, można wprowadzić dodatkowy element losowego wyboru danej rury/kolejki. Aby zacząć profilować ruch, należy najpierw dodać kolejkę lub rurę, a potem ją skonfigurować. Wszystkiego dokonujemy komendą ipfw. 0.3 Rury Rura, to kanał wydzielonego ruchu, który ma z góry zadaną przepustowość (bw), długość kolejki (queue), opóźnienie (delay) oraz losową utratę pakietów (plr). Aby dodać i skonfigurować przykładową rurę, wydajemy polecenie: ipfw add pipe 1 ip from any to any ipfw pipe 1 config bw 1Mbit/s plr 0.9 delay 100ms 1

Rura, którą skonfigurowaliśmy, ma szerokość 1 megabita, losową utratę pakietów 90%, oraz opóźnienie 100 milisekund 1. Przydatność takiej rury jest raczej wątpliwa, chyba że symulujemy jakąś wyjątkowo oporną sieć. Aby usunąć tą rurę, należy wydać polecenie: ipfw pipe 1 delete lub ipfw flush Druga komenda czyści wszystkie reguły ipfw. Wracając do naszej rury: czasami zachodzi potrzeba zasymulowania różnych warunków transmisji na drodze od- i do- hosta. Sytuację taką można łatwo zaimplementować stosując następujące polecenia definiujące dwie rury, jedną dla ruchu przychodzącego i jedną dla wychodzącego: ipfw add pipe 1 ip from any to 10.0.0.1 in ipfw add pipe 2 ip from any to 10.0.0.1 out ipfw pipe 1 config bw 640Kbit/s ipfw pipe 2 config bw 128Kbit/s W tym wypadku słowo kluczowe in aplikuje się do adresu 10.0.0.1, tak więc, parametr bw 640Kbit/s aplikuje się do ruchu wchodzącego do tego adresu. Druga rura obsługuje ruch wychodzący. Jeśli mamy potrzebę zasymulować wielościeżkowość, wystarczy skorzystać ze słowa kluczowego prob. Przykład poniżej: ipfw add prob 0.2 pipe 1 ip from any to any ipfw add prob 0.5 pipe 2 ip from any to any ipfw pipe 1 config delay 10ms ipfw pipe 2 config delay 200ms W tym wypadku, pierwsza rura jest wybierana w 20% przypadków, podczas gdy druga, w 0.5 0.8 czyli 40% przypadków. Rury lub kolejki można również przypisywać po protokole lub po porcie. Robimy to w następujący sposób: ipfw add pipe 1 tcp from any to any 80 ipfw add pipe 2 udp from any to any 53 ipfw add pipe 3 icmp from any to any ipfw pipe 1 config bw 1Mbit/s ipfw pipe 2 config bw 50Kbit/s ipfw pipe 3 config bw 50Kbit/s Powyższy zestaw reguł pozwala nam na zagwarantowanie obustronnego pasma w protokole TCP na porcie 80 (www) o szerokości jednego megabita, oraz po 50 kilobitów na DNS (UDP,53), oraz ICMP (ping, traceroute, wiadomości o błędach niedostępności, etc.). Przedostatnim słowem kluczowym, które chciałbym omówić jest queue. Domyślna wartość tego parametru to 50. Parametr ten określa porcję danych (w pakietach lub kilobajtach), które mają zostać urzymane w kolejce do przetworzenia w danej rurze. Jeśli ta ilość zostanie przekroczona, pakiet zostaje odrzucony. Ma to znaczenie przy połączeniach na których pasmo jest bardzo wąskie. Gdy na takim połączeniu ustawimy ten parametr przesadnie wysoko, będziemy się musieli liczyć z dużym opóźnieniem (system musi przetworzyć na takim wąskim łączu wszystkie pakiety oczekujące w kolejce). Ustawianie tego parametru zbyt nisko, będzie miało swoje konsekwencje w postaci utraconych pakietów (szczególnie, gdy z danym hostem wymianę informacji prowadzi kilka innych hostów). Ostatni parametr to mask. Pozwala on nam na tworzenie kilku identycznych rur, z których każda będzie obsługiwać ruch tego samego rodzaju. Opcja ta jest szczególnie użyteczna, gdy chcemy kilku komputerom przydzielić taki sam ruch w sieci LAN. Tworzy ona dynamicznie kilka rur o identycznych parametrach. 1 opóźnienie narzucane przez dummynet, należy powiększyć o jakiekolwiek opóźnienie propagacji, aby otrzymać efektywne opóźnienie dla dwóch maszyn pracujących w sieci. Co więcej, należy wziąć pod uwagę podwójną propagację, ponieważ w tym konkretnym wypadku, zarówno ruch wchodzący jak i wychodzący jest przepuszczany przez tą samą regułę. 2

ipfw add pipe 1 ip from any to 10.0.0.0/24 ipfw pipe 1 config bw 56Kbit/s queue 10 mask dst-ip 0x000000ff Powyższa konfiguracja ogranicza ruch w obie strony do każdego komputera do 56 kilobitów, zmniejsza kolejkę do 10 pakietów. Słowo kluczowe dst-ip pokazuje nam która część adresu IP ma być zamaskowana aby wydzielić ruchy należące do innych dynamicznie tworzonych rur. Ruch można dzielić według adresu źródłowego i docelowego, źródłowego i docelowego portu, oraz protokołu. Składnia wygląda następująco: ipfw add pipe 1 ip from any to 10.0.0.0/24 ipfw pipe 1 config bw 100Kbit/s proto PROTO src-ip ŹRÓDŁOIP dst-ip CELIP src-port ŹRÓDŁOPORT dst-port CELPORT 0.4 Kolejki Kolejka to inny element sterujący ruchem. W znacznym uproszczeniu, kolejka pozwala nam na przydzielenie odpowiedniej szerokości pasma użytkownikowi, stosownie do jego potrzeb. Zazwyczaj kolejka jest podłączana do rury w następujący sposób: ipfw add pipe 2 ip from any to any ipfw add queue 1 ip from 10.0.0.2 to 10.0.0.1 ipfw queue 1 config weight 5 pipe 2 ipfw pipe 2 config bw 300Kbit/s Tak zdefiniowany zestaw reguł, określa kolejkę wewnątrz rury numer 2, która posiada wagę 5 (Im wyższa waga, tym kolejka ma wyższy priorytet). Kolejki służą zazwyczaj do dynamicznego dzielenia pasma pomiędzy kilka połączeń. Parametry kolejek to pipe czyli rura, do której podpięta jest kolejka, weight, czyli priorytet obsługi ruchu, queue, czyli rozmiar kolejki,plr, czyli losowa utrata pakietów w kolejce, oraz mask, czyli opcja służąca do dynamicznego definiowania kolejek w zależności od klasyfikacji ruchu. Jak działają wagi kolejek? Aby łatwiej zilustrować to zagadnienie, posłużę się przykładem. Załóżmy, że w sieci mamy trzy hosty, z czego na 10.0.0.1 zainstalowany jest dummynet i jego konfiguracja wygląda następująco: ipfw add pipe 1 ip from any to any ipfw add queue 1 ip from 10.0.0.2 to 10.0.0.1 ipfw add queue 2 ip from 10.0.0.3 to 10.0.0.1 ipfw queue 1 config weight 1 pipe 1 ipfw queue 1 config weight 99 pipe 1 ipfw pipe 1 config bw 1Mbit/s Przy drobnej zmianie opóźnień oraz długości kolejki, osiąg przesyłu przy kolejce pierwszej będzie się wahał w okolicach 50 kbit, podczas gdy w przypadku drugiej kolejki, będzie to około 950 kbit. Kolejki o różnych wagach przepuszczają dane w różnych porcjach, tj. na każdy pakiet przesłany kolejką pierwszą może przypadać 30 pakietów wysyłanych kolejką drugą. Aby dynamicznie podzielić dane nam pasmo przez liczbę użytkowników, należy skorzystać z opcji mask. ipfw add queue 1 all from any to 10.0.0.0/24 ipfw queue 1 config weight 5 pipe 2 buckets 253 mask dst-ip 0x000000ff Taka konfiguracja dynamicznie stworzy nam tyle kolejek ile jest różnych, aktywnych adresów IP w tej podsieci. Opcja buckets mówi ile takich kolejek może być maksymalnie stworzonych. Nie należy przesadzać przy podawaniu tej wielkości, ponieważ zbyt duża wartość może niepotrzebnie zapełnić bufory sieciowe. 3

0.5 Ciekawe przykłady zastosowań Scenariusz 1 Symulacja połączenia satelitarnego. ipfw add pipe 1 all from any to any in ipfw add pipe 2 all from any to any out ipfw pipe 1 config delay 440ms bw 64Kbit/s queue 10 ipfw pipe 2 config delay 440ms bw 1Mbit/s queue 5 Przy wysokich opóźnieniach będziemy obserwować stopniowe przyspieszanie połączenia 2. Zmiana wielkości kolejki nie powinna mieć znaczenia, chyba że mamy do czynienia z transmisją do kilku komputerów. Jest to uwarunkowane tym, jak skonstruowany jest protokół TCP: na każdy pakiet wysłany, musi zostać odebrany pakiet potwierdzający odbiór. Scenariusz 2 Bardzo zajęty serwer WWW. ipfw add queue 1 tcp from any to 10.0.0.1 80 ipfw queue 1 config weight 5 pipe 1 mask src-ip 0xffffffff Przy takiej konfiguracji, każdy numer IP ma wydzielone identyczne pasmo do serwera www. Zwróć uwagę na maskę src-ip. Zwróćmy też uwagę na to, że chcąc ustalić numer portu musimy określić protokół jako TCP. ipfw add queue 1 tcp from 10.1.0.0/8 to 10.0.0.1 80 ipfw add queue 2 tcp from any to 10.0.0.1 80 ipfw queue 1 config weight 90 pipe 1 mask src-ip 0x00ffffff ipfw queue 2 config weight 5 pipe 1 mask src-ip 0xffffffff Przy takiej konfiguracji, serwer WWW będzie obsługiwał pewną grupę użytkowników z wyższym priorytetem niż resztę. Każdemu klientowi zostanie przydzielone to samo pasmo. ipfw add pipe 1 tcp from 10.1.0.0/8 to 10.0.0.1 80 ipfw add pipe 2 tcp fron any to 10.0.0.1 80 ipfw queue 1 config weight 5 pipe 1 mask src-ip 0x00ffffff ipfw queue 2 config weight 5 pipe 2 mask src-ip 0xffffffff ipfw pipe 1 config 7Mbit/s ipfw pipe 2 config 3Mbit/s Przy powyższej konfiguracji, łącze najpierw jest podzielone dwoma rurami, odpowiednio po 7 i 3 Megabity, a potem dzielone pomiędzy klientów w poszczególnych rurach tak, aby klient należący do każdej z rur dzielił ruch z innymi klientami z tej samej rury dostając równą ilość pasma. Scenariusz 3 Sieć osiedlowa. ipfw add queue 50 tcp from 10.0.0.0/24 to any 80 ipfw add queue 60 tcp from 10.0.0.0/24 to any 22,23,25 ipfw add queue 70 tcp from 10.0.0.0/24 to any 110 ipfw add queue 80 tcp from 10.0.0.0/24 to any ipfw add queue 90 all from 10.0.0.0/24 to any ipfw queue config 50 weight 5 pipe 50 buckets 255 mask src-ip 0x000000ff 2 Okazuje się, że opoźnienia całkowite poniżej 19 milisekund, nie mają znacznego wpływu na transmisję danych na pełnodupleksowym ethernecie, po protokole TCP. Od 20 milisekund, opóźnienia zaczynają mieć wpływ na transmisję, a prędkość transmisji (w kilobajtach na sekundę) można uzykać z następującego wzoru: transfer T CP = 32000 delay ms 4

ipfw queue config 60 weight 5 pipe 60 buckets 255 mask src-ip 0x000000ff ipfw queue config 70 weight 5 pipe 70 buckets 255 mask src-ip 0x000000ff ipfw queue config 80 weight 5 pipe 80 buckets 255 mask src-ip 0x000000ff ipfw pipe 50 config bw 1Mbit/s ipfw pipe 60 config bw 128Kbit/s ipfw pipe 70 config bw 128Kbit/s ipfw pipe 80 config bw 1Mbit/s delay 30ms queue 10 ipfw pipe 90 config bw 384Kbit/s Pierwsze pięć linijek, dzieli nam ruch wychodzący na pięć kategorii; przedostatnia to ruch p2p 3, ostatnia to ruch UDP/ICMP. Kolejne cztery linijki określają nam zasady dynamicznego tworzenia kolejek ruchu, i ostatnie pięć linijek określa nam maksymalne szerokości pasma, które chcemy zaalokować na poszczególne klasy ruchu. 0.6 Na zakończenie Mam nadzieję, że ten dokument pomógł ci zrozumieć zasadę działania pakietu DUMMYNET pod systemem FreeBSD. Jednocześnie, chciałbym podkreślić, że dokument ten został przygotowany w oparciu o doświadczenia własne autora i może zawierać błędy. Autor nie odpowiada za konsekwencje wynikłe z użytkowania tego dokumentu. Jeżeli masz jakieś sugestie lub chcesz mnie poinformować o błędzie, zawsze jestem otwarty na słowa konstruktywnej krytyki. Mój e-mail to jps@zero.iti.pk.edu.pl. Jeżeli nadal czujesz niedosyt informacji, przeczytaj ten dokument: http://info.iet.unipi.it/ luigi/ip dummynet/ c 2002 Jan Szumiec. Dokument ten może być rozprowadzany i powielany pod warunkiem, że jego treść nie ulegnie modyfikacji, oraz że wiadomość o autorze pozostanie w dokumencie. Najnowsza wersja zawsze dostępna z http://ftyczka.org/dummynet.pdf 3 na przykład Kazaa lub Gnutella 5