Date: Mon, 1 Feb 2010 11:33:45 +0000 (UTC) From: Luigi Rizzo <luigi@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r203339 - user/luigi/ipfw3-head/sys/netinet/ipfw Message-ID: <201002011133.o11BXjHT032677@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: luigi Date: Mon Feb 1 11:33:45 2010 New Revision: 203339 URL: http://svn.freebsd.org/changeset/base/203339 Log: more documentation Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dummynet.txt Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dummynet.txt ============================================================================== --- user/luigi/ipfw3-head/sys/netinet/ipfw/dummynet.txt Mon Feb 1 11:05:19 2010 (r203338) +++ user/luigi/ipfw3-head/sys/netinet/ipfw/dummynet.txt Mon Feb 1 11:33:45 2010 (r203339) @@ -278,46 +278,46 @@ DN_CMD_FLUSH. DN_CMD_CONFIG is followed by objects to add/reconfigure. In general, if an object already exists it is reconfigured, otherwise it is -created in a way that keeps the structure consistent. In detail, -and starting with the simplest objects +created in a way that keeps the structure consistent. +We have the following objects in the system, normally numbered with +an identifier N between 1 and 65535. For certain objects we have +"shadow" copies numbered I+NMAX and I+ 2*NMAX which are used to +implement certain backward compatibility features. + +In general we have the following linking + + TRADITIONAL DUMMYNET QUEUES "queue N config ... pipe M ..." + corresponds to a dn_fs object numbered N + + TRADITIONAL DUMMYNET PIPES "pipe N config ..." + dn_fs N+2*NMAX --> dn_sch N+NMAX type FIFO --> dn_link N+NMAX + + GENERIC SCHEDULER "sched N config ... " + [dn_fs N+NMAX] --> dn_sch N --> dn_link N + The flowset N+NMAX is created only if the scheduler is not + of type MULTIQUEUE. + + DELAY PROFILE "pipe N config profile ..." + it is always attached to an existing dn_link N + +Because traditional dummynet pipes actually configure both a +'standalone' instance and one that can be used by queues, +we do the following: + + "pipe N config ..." configures: + dn_sched N type WF2Q+ + dn_sched N+NMAX type FIFO + dn_fs N+2NMAX attached to dn_sched N+NMAX + dn_pipe N + dn_pipe N+NMAX + + "queue N config" configures + dn_fs N + + "sched N config" configures + dn_sched N type as desired + dn_fs N+NMAX attached to dn_sched N -DN_PROFILE <--> config_profile() - attach a delay profile to a DN_LINK with the same number. - To delete, simply provide a profile with 0 points. - XXX is it preserved on link reconfigurations ? - -DN_LINK <--> config_link() - -==== XXX to be completed ==== - -DN_FS - -DN_SCH - - - - -The reconfigure routine is called by the system when the flowset ptr_sched_val -number differs from the generation number. This means that a new object is -inserted in the system or a object was deleted and no new packet belonging to -this flowset are yet arrived. - -The reconfigure routine first check if the scheduler pointed by the flowset is -the same that the scheduler located by the number. If so, and if the type are -the same, it means that the scheduler wasn't changed. Now is check if the pipe -exist, and eventually the pointer in the scheduler is updated. If scheduler -and pipe exists, the packet can be enqueued. - -If the scheduler type differs from flowset type, it means that the scheduler -has changed type so the flowset must be deleted and recreated. The pointer -are update and the packet can be enqueued. - -If the scheduler no longer exists, the flowset is remove from flowset list -and inserted in the unlinked flowset list, so that new packet are discarded -early. - -If scheduler or pipe don't exist,packet shoubl be dropped and the function -return 1 so that dummynet_io() can drop the packet. dummynet_task() ===============
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201002011133.o11BXjHT032677>