FreeBSD Logo               

Skąd pobrać FreeBSD? Wybierz serwer ftp:
 

 


Dokumentacja
 
manuale  
  faq 
 
handbook

Jak to zrobić?
  Instalacja
  Komendy
  Usługi
  Upgrade
  NFS
  Jądro
  SDI-PPP
  Identyfikacja
  Quota
  OpenSSH
  TelnetSSL 
  Agenci MTA
  POP3 i SMTP
  Autoryzacja
  Serwer WWW
  Serwer NEWS
  Serwer Nazw
  ProFTPD
  IPv6
  Squid
  Samba
  DHCP
  Dummynet
  Ipfilter
  PF
  Polonizacja
  VMvare
  Udostępnianie
  Mały Router
 
Terminal
  Linux2FreeBSD

Niusy
  pl.comp.os.bsd

Po polsku
  bsdzine.org
  freebsd.pl
  www.bsd4u.org
  www.bsdguru.org
  bofh.vt.pl

Po innemu
  bsdvault.net
  freebsdhowtos.com
  freebsd-howto.com

Linkownia



Studio reklamowe

Usługi informatyczne MAC



 

 

Dummynet

 

UWAGA: W tym tekście słowo pipe jest tłumaczone na "potok" nie zaś na dosłowne "rura". Tekst ten jest częściowym tłumaczeniem strony systemowego manuala dummynet(4)

Historia

Dummynet został wprowadzony jako narzędzie do testowania protokołu TCP przez Luigi Rizzo <luigi@iet.unipi.it>. Następnie został przystosowany do pracy z pakietami IP i warstwą bridge'a i zintegrowany z filtrem pakietów IPFW.

Opis

Dummynet to obszar kernela, który umożliwia kontrolowanie ruchu przechodzącego przez różne interfejsy poprzez zakładanie ograniczenia przepustowości, limitowanie rozmiaru kolejki czy wprowadzanie oraz symulowanie opóźnień i strat pakietów. W bieżącej implementacji wybór pakietów jest dokonywany poprzez systemowy filtr pakietów ipfw(8) z wykorzystaniem opcji 'pipe'. Dummynet w pipe jest opisywany przez przepustowość, opóźnienie, rozmiar kolejki, celowy poziom strat. Wszystkie te parametry mogą być konfigurowane poprzez ipfw(8). Potoki są numerowane od 1 do 65534 i pakiety mogą przechodzić przez wiele potoków w zależności od konfiguracji ipfw(8). Domyślnie dummynet operuje na poziomie pakietów IP. Po włączeniu funkcji bridge'owania pakietów jest możliwe przesyłanie owych pakietów przez dummynet za pomocą potoków (pipes). 

Użycie

Pakiety są wysyłane do potoku za pomocą komendy:

ipfw add NNN ...

zaś konfiguruje się je w następujący sposób:

ipfw pipe NNN config bw P delay O queue Q plr R

gdzie P - przepustowość w bit/s, kbit/s, Kbit/s, Mbit/s, Bytes/s, Kbytes/s, Mbytes/s; O - opóźnienie w milisekundach, Q - długość kolejki w pakietach (szt.) lub w bajtach "Bytes", R - procent losowo utraconych pakietów.

Uzyskanie działającej konfiguracji ipfw nie jest zbyt intuicyjne w szczególności gdy system pracuje jako router lub brigde. W przypadku pracy systemu jako router te same reguły odnoszą się zarówno do wchodzących jak i wychodzących pakietów, wiec musisz się upewnić, że pakiet nie przechodzi przez potok dwa razy (chyba, że chcesz to osiągnąć). W przypadku pracy systemu jako bridge'a reguły ipfw działają na bridge'owane pakiety tylko raz przy wchodzeniu ich do systemu. Przy symulowaniu za pomocą potoków trybu full-duplex, upewnij się, że pakiety wchodzące i wychodzące przechodzą przez dwa różne potoki zależnie od kierunku. Np. przykładowa konfiguracja dla symulowanego łącza asymetrycznego wygląda tak:

ipfw add pipe 1 ip from A to B out
ipfw add pipe 2 ip from B to A in
ipfw pipe 1 config bw 1Mbit/s delay 80ms
ipfw pipe 2 config bw 128Kbit/s delay 300ms

W ten sposób dane do sieci B idą z szybkością 1 Mb/s zaś wychodzą z szybkością 128 Kbit/s.

Operacje

Kod ipfw jest używany to wyboru pakietów, które musi obowiązywać ograniczenie pasma/zakolejkowanie/opóźnienie/straty. Kod ten zwraca identyfikator potoku opisującego dane ograniczenia.

Wybrane pakiety są na początku kolejkowane (queued) w podanym rozmiarze kolejki, z której są przesyłane z podaną szybkością do drugiej kolejki gdzie jest wprowadzane podane opóźnienie. Po opuszczeniu kolejki opóźniającej pakiety są wprowadzane na swoje miejsce w stosie TCP/IP - tam skąd zostały pobrane. W zależności od ustawienia zmiennej sysctl'a "net.inet.ip.fw.one_pass", pakiety wychodzące są albo kierowane do adresu docelowego (net.inet.ip.fw.one_pass=1) lub z powrotem wprowadzane pomiędzy reguły ipfw (net.inet.ip.fw.one_pass=0) w miejscu po potoku, z którego wyszły.

Opcje kernel'a

Następujące opcje są odpowiedzialne za konfigurację dummynet'u w kernelu:

IPFIREWALL - aktywacja firewalla ipfw (wymagane).
IPFIREWALL_VERBOSE - uruchamia logowanie.
IPFIREWALL_VERBOSE_LIMIT - ogranicznik logowania (zapobiega atakom DoS 
na logi systemowe).
DUMMYNET - uruchamia obsługę dummynetu
NMBCLUSTER - ustawia rozmiar bufora pakietów sieciowych
HZ - ustawia "roździelczość" opóźnienia (domyślnie 100=10ms)


Ogólnie wymagane opcje to

IPFIREWALL
DUMMYNET

dodatkowo można zwiększyć rozmiar bufora pakietów proporcjonalnie do sumy opóźnień i sumy rozmiarów kolejek wprowadzanych przez wszystkie potoki.

 

Zmienne systemowe mające wpływ na pracę dummynet

net.inet.ip.fw.one_pass - ustawiona na 0 powoduje, że po przejściu przez potok pakiet jest kierowany z powrotem do ipfw net.link.ether.bridge_ipfw - warość 1 oznacza, że chcemy aby bridge'owane pakiety przechodziły przez kod firewalla ipfw


Autor: Marcin Jurczuk
You can coping and changeing this document until You place a notice about 
copyrights. Distributed on BSD licence.


czerwiec 2001





Kontakt  

© 2001-2009 FreeBSD Projekt
Wszelkie Prawa Zastrzeżone.