## Recognize the BSD utilities that shape traffic or control bandwidth ##

[Author](authors.html): _name_ _[[contact]]_ _[[BSD_flavour]]_

[Reviewer](technical_reviewers.html): _name_ _[[contact]]_ _[[BSD_flavour]]_

[Reviewer](technical_reviewers.html): _name_ _[[contact]]_ _[[BSD_flavour]]_

----



### Concept ###

Understand when it is advantageous to create policies
controlling the amount of bandwidth available to specified services.

TODO: can someone answer the above?

In addition, recognize the utilities available on
BSD systems to create bandwidth policies.

TODO: do not teach how to use these tools; just say what is available, basically what they do and where to get more information.
TODO: because this is beyond BSDA "associate"

Note: This topic only briefly introduces the technologies, but doesn't cover implementation.

### Introduction ###

The technologies available on BSD systems to create bandwidth policies include:

- dummynet for FreeBSD and DragonFly

- ALTQ for NetBSD, FreeBSD, OpenBSD and DragonFly

The dummynet facility can manage bandwidth and shape traffic (plus emulate delays and packet losses).
The "ipfw" tool is used to configure the dummynet bandwidth and queueing policies.
Details about dummynet can be found in the dummynet(4) and ipfw(8) manual pages.

TODO: dummynet not in default kernels? loadable vi kernel module?

TODO: how could a novice admin detect if dummynet is in use?

The ALTQ framework provides queueing of packets with disciplines such as
Class Based Queuing, Random Early Detection, Random Early Drop,
Hierarchical Packet Scheduler, and Priority Queuing.
This can be configured using the "pfctl" tool.
On NetBSD, the "altqd" daemon can also be used to configure ALTQ.

TODO: point to documentation

TODO: distinguish better about altqd on NetBSD?

TODO: how could a novice detect if altq is in use with pfctl? with altqstat?

TODO: altq man pages say "output queues" but RED is for input too. Is altq for in and out?

### Examples ###


### Practice Exercises ###


### More information ###

ipfw(8), altq(4), dummynet(4), altq(9), altqd(8), altq.conf(5)


