Re: ipfw dummynet - adsl link(s) simulieren

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Thu, 7 May 2009 11:43:53 +0200 (CEST)

Sebastian Mellmann wrote:
> > > Ich habe die Regeln mit 'ping' und 'scp' "getestet" und sie scheinen zu
> > > "greifen".
> > > Ich bin mir jedoch bzgl. der Queue-Größe nicht sicher, ob sie wirklich
> > > so funktioniert, wie ich mir das vorstelle.
> > > Besitzt jede 'pipe' ihre eigene Queue?
> >
> > Ja, das passt schon.
>
> Irgendwie reicht mir das nicht ;-)
>
> Ich habe jetzt nochmals etwas weiter "gegraben".
>
> So, wie meine Regeln z.Zt. sind bekommt jeder ADSL-Link seine eigene
> Queue (Grund: config mask all).
> Wenn ich nun 'config mask dst-ip 0xffffff00' bzw. 'config mask src-ip
> 0xffffff00' verwende, bekommt jeder ADSL-Link seine eigene Queue.
> Richtig?

Ah, sorry, so genau hatte ich nicht hingeschaut.

Der Punkt ist, dass Du so maskieren musste, dass die
dynamisch generierten Pipes genau die Hardware abbilden,
die Du simulieren möchtest. Da jeder Client-Rechner
einen ADSL-Link hat, brauchst Du also eine Dummynet-Pipe
pro Client.

Nun maskiert aber "mask all" nicht nur nach den Adressen
der Clients, sondern auch nach den Adressen der Gegen-
stellen und nach den Ports. Du bekommst also pro Ver-
bindung eine dynamische Pipe, nicht pro Client.

Daher musst Du stattdessen "mask src-ip 0xffffffff" bzw.
"mask dst-ip 0xffffffff" verwenden (für Output von den
Clients bzw. Input zu den Clients). Dann bekommt jeder
Client eine dynamische Pipe, also einen eigenen ADSL-
Link.

> > > Die ipfw manpage sagt:
> > >
> > > In practice, pipes can be used to set hard limits to the bandwidth
> > > that a flow can use, whereas queues can be used to determine how
> > > different flow share the available bandwidth.
> >
> > Richtig, das sagt sie, unter anderem.
>
> Das würde doch bedeuten, dass ich für das Begrenzen des Links für alle
> ADSL-Links am Schluss eine Queue verwenden sollte?

Nein, ich dachte, dass die 100 Mbit ein "hard limit"
darstellen sollen, oder habe ich Dich missverstanden?

> Mir ist einfach nicht ganz klar, wo der genaue Unterschied liegt, da es
> ja scheinbar keinen Unterschied macht, ob ich eine pipe benutze.

Queues sind nicht dazu da, ein festes Limit anzugeben;
"bw" funktioniert nur bei Pipes. Mit Queues kannst Du
regeln, wie konkurrierende Flows auf eine Pipe aufgeteilt
werden, d.h Du kannst eine Priorisierung machen.

Wie gesagt, für Deine Simulation genügen Pipes, es sei
denn, Du möchtest die ADSL-Links unterschiedlich
priorisieren.

> (Wenn ich jetzt mal von meinem rudimentären 'ping' & 'scp' Test ausgehe.)

Für Durchsatztests sind beide eher ungeeignet. In der
Ports-Collection gibt es einige Tools für sowas, aber
man kann auch mit FreeBSD-Bordmitteln einen einfachen
Test machen:

Auf einem Rechner den discard-Service starten (d.h. die
entsprechende auskommentierte Zeile in /etc/inetd.conf
aktivieren und dann den inetd starten), und vom anderen
Rechner aus mit netcat draufgehen:

$ dd if=/dev/zero bs=1400 | nc rechner discard

Dann ein paar Sekunden warten und ^T (Strg-T) drücken.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd
"Being really good at C++ is like being really good
at using rocks to sharpen sticks."
        -- Thant Tessman
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 07 May 2009 - 11:44:21 CEST

search this site