Bug 78096

Summary: Add info on setting up ATLQ
Product: Documentation Reporter: Brad Davis <so14k>
Component: Books & ArticlesAssignee: Simon L. B. Nielsen <simon>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.diff none

Description Brad Davis 2005-02-25 21:20:08 UTC
	After working with mlaier@, simon@ and trhodes@, this is what we came up with.
Comment 1 David Adam 2005-02-26 04:41:35 UTC
Hi Brad,

Just one small nit,

> +      <para><literal>options ALTQ_CBQ</literal> enables Class Based
> +        Queuing (CBQ).  CBQ allows you to divide a connections's

s/connections's/connection's/

David Adam
zanchey@
Comment 2 Tom Rhodes freebsd_committer freebsd_triage 2005-02-26 06:20:34 UTC
Hi Brad,


This is extremely useful and I agree we need it in the docs, but
I have some comments on it.

--- doc-ori/en_US.ISO8859-1/books/handbook/firewalls/chapter.sgml	Fri Feb 25 13:31:41 2005
+++ doc/en_US.ISO8859-1/books/handbook/firewalls/chapter.sgml	Fri Feb 25 14:05:54 2005
@@ -198,7 +198,7 @@
   </sect1>
 
   <sect1 id="firewalls-pf">
-    <title>The Packet Filter (PF) Firewall</title>
+    <title>The Packet Filter (PF) Firewall and ALTQ</title>
 
     <indexterm>
       <primary>firewall</primary>
@@ -211,9 +211,9 @@
       contained <acronym>PF</acronym> as an integrated part of the
       base system was &os;&nbsp;5.3 in November 2004.
       <acronym>PF</acronym> is a complete, fully featured firewall
-      that contains <acronym>ALTQ</acronym> for bandwidth usage
-      management in a way similar to what DUMMYNET provides in
-      <acronym>IPFW</acronym>.  The OpenBSD project does an
+      that contains <acronym>ALTQ</acronym> (Alternate Queuing) for
+      bandwidth usage management in a way similar to what DUMMYNET
+      provides in <acronym>IPFW</acronym>.  The OpenBSD project does an
       outstanding job of maintaining the PF users' guide that it will
       not be made part of this handbook firewall section as that would
       just be duplicated effort.</para>

Good, here is where we introduce what ALTQ stands for.  Now, I
may be out of context, but what does it do?  :)

@@ -356,6 +356,61 @@
         enable the following option as well:</para>
 
       <programlisting>gateway_enable="YES"            # Enable as Lan gateway</programlisting>
+
+    </sect2>
+    <sect2>
+      <title>Enabling ALTQ</title>
+
+      <para>ALTQ is only avaliable by compiling the options into the
+        &os; Kernel.</para>
+
+      <para>ALTQ is not supported by all of the avaliable network card
+        drivers.  Please see the &man.altq.4; manual page for a list of
+        drivers that are supported in your release of &os;.

Missing <para>, <acronym> tags here.

These two can probably be merged together, something like:

While <acronym>ALTQ</acronym> is a useful option ... explain why
... it is not yet supported by all network interface card
drivers.  Please see the &man.altq.4; manual page for an up
to date list on supported drivers.  To gain <acronym>ALTQ</acronym>
support, the following options must be compiled into the kernel:

Then list the kernel options, like you do here:


+
+      <programlisting>options         ALTQ
+options         ALTQ_CBQ        # Class Bases Queuing
+options         ALTQ_RED        # Random Early Detection
+options         ALTQ_RIO        # RED In/Out
+options         ALTQ_HFSC       # Hierarchical Packet Scheduler
+options         ALTQ_PRIQ       # Priority Queuing
+options         ALTQ_NOPCC      # Required for SMP build</programlisting>
+
+      <para><literal>options ALTQ</literal> enables the ALTQ framework.</para>
+
+      <para><literal>options ALTQ_CBQ</literal> enables Class Based
+        Queuing (CBQ).  CBQ allows you to divide a connections's
+        bandwidth into different classes or queues.</para>
+
+      <para><literal>options ALTQ_RED</literal> enables Random Early
+        Detection (RED).  RED is used to avoid network congestion.  RED
+        does this by measuring the length of the queue and comparing
+        it to the minimum and maximum thresholds for the queue.  If the
+        queue is over the maximum all new packets will be dropped.  True
+        to its name, RED drops packets from different connections
+        randomly.</para>
+
+      <para><literal>options ALTQ_RIO</literal> enables Random Early
+        Detection In and Out.</para>
+
+      <para><literal>options ALTQ_HFSC</literal> enables Hierarchical
+        Fair Service Curve Packet Scheduler.  See <ulink
+        url="http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html"></ulink>
+        for more info.</para>
+
+      <para><literal>options ALTQ_PRIQ</literal> enables Priority
+        Queuing (PRIQ).  PRIQ will always pass traffic that is in a
+        higher queue first.</para>
+
+      <para><literal>options ALTQ_NOPCC</literal> enables SMP support
+        for ALTQ.  This option is required on SMP systems.</para>
 

This will give you better content in a single section in place
of scattered information.

And don't forget the other comment in the PR trail.  :)

-- 
Tom Rhodes
Comment 3 Brad Davis 2005-02-26 12:01:06 UTC
Ok... How about this...


--- doc-ori/en_US.ISO8859-1/books/handbook/firewalls/chapter.sgml	Fri Feb 25 13:31:41 2005
+++ doc/en_US.ISO8859-1/books/handbook/firewalls/chapter.sgml	Sat Feb 26 04:13:55 2005
@@ -198,7 +198,7 @@
   </sect1>
 
   <sect1 id="firewalls-pf">
-    <title>The Packet Filter (PF) Firewall</title>
+    <title>The Packet Filter (PF) Firewall and ALTQ</title>
 
     <indexterm>
       <primary>firewall</primary>
@@ -211,12 +211,12 @@
       contained <acronym>PF</acronym> as an integrated part of the
       base system was &os;&nbsp;5.3 in November 2004.
       <acronym>PF</acronym> is a complete, fully featured firewall
-      that contains <acronym>ALTQ</acronym> for bandwidth usage
-      management in a way similar to what DUMMYNET provides in
-      <acronym>IPFW</acronym>.  The OpenBSD project does an
-      outstanding job of maintaining the PF users' guide that it will
-      not be made part of this handbook firewall section as that would
-      just be duplicated effort.</para>
+      that contains <acronym>ALTQ</acronym> (Alternate Queuing).  ALTQ
+      provides Quality of Service (QoS) bandwidth shaping that allows
+      guaranteeing bandwidth to different services based on filtering
+      rules.  The OpenBSD project does an outstanding job of maintaining
+      the PF users' guide that it will not be made part of this handbook
+      firewall section as that would just be duplicated effort.</para>
 
     <para>The availability of PF for the various &os; releases and versions is
       summarized below:</para>
@@ -356,6 +356,55 @@
         enable the following option as well:</para>
 
       <programlisting>gateway_enable="YES"            # Enable as Lan gateway</programlisting>
+
+    </sect2>
+    <sect2>
+      <title>Enabling ALTQ</title>
+
+      <para><acronym>ALTQ</acronym> is only avaliable by compiling the
+        options into the &os; Kernel.  <acronym>ALTQ</acronym> is not
+        supported by all of the avaliable network card drivers.  Please
+        see the &man.altq.4; manual page for a list of drivers that are
+        supported in your release of &os;.  The following options will
+        enable <acronym>ALTQ</acronym> and add additional functionality.
+        </para>
+
+      <programlisting>options         ALTQ
+options         ALTQ_CBQ        # Class Bases Queuing
+options         ALTQ_RED        # Random Early Detection
+options         ALTQ_RIO        # RED In/Out
+options         ALTQ_HFSC       # Hierarchical Packet Scheduler
+options         ALTQ_PRIQ       # Priority Queuing
+options         ALTQ_NOPCC      # Required for SMP build</programlisting>
+
+      <para><literal>options ALTQ</literal> enables the ALTQ framework.</para>
+
+      <para><literal>options ALTQ_CBQ</literal> enables Class Based
+        Queuing (CBQ).  CBQ allows you to divide a connection's
+        bandwidth into different classes or queues.</para>
+
+      <para><literal>options ALTQ_RED</literal> enables Random Early
+        Detection (RED).  RED is used to avoid network congestion.  RED
+        does this by measuring the length of the queue and comparing
+        it to the minimum and maximum thresholds for the queue.  If the
+        queue is over the maximum all new packets will be dropped.  True
+        to its name, RED drops packets from different connections
+        randomly.</para>
+
+      <para><literal>options ALTQ_RIO</literal> enables Random Early
+        Detection In and Out.</para>
+
+      <para><literal>options ALTQ_HFSC</literal> enables Hierarchical
+        Fair Service Curve Packet Scheduler.  See <ulink
+        url="http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html"></ulink>
+        for more info.</para>
+
+      <para><literal>options ALTQ_PRIQ</literal> enables Priority
+        Queuing (PRIQ).  PRIQ will always pass traffic that is in a
+        higher queue first.</para>
+
+      <para><literal>options ALTQ_NOPCC</literal> enables SMP support
+        for ALTQ.  This option is required on SMP systems.</para>
 
     </sect2>
   </sect1>
Comment 4 Brad Davis 2005-02-26 16:04:55 UTC
After going over it again with remko@, here is a new diff.


Brad


--- doc-ori/en_US.ISO8859-1/books/handbook/firewalls/chapter.sgml	Fri Feb 25 13:31:41 2005
+++ doc/en_US.ISO8859-1/books/handbook/firewalls/chapter.sgml	Sat Feb 26 08:54:37 2005
@@ -198,7 +198,7 @@
   </sect1>
 
   <sect1 id="firewalls-pf">
-    <title>The Packet Filter (PF) Firewall</title>
+    <title>The OpenBSD Packet Filter (PF) and ALTQ</title>
 
     <indexterm>
       <primary>firewall</primary>
@@ -211,12 +211,13 @@
       contained <acronym>PF</acronym> as an integrated part of the
       base system was &os;&nbsp;5.3 in November 2004.
       <acronym>PF</acronym> is a complete, fully featured firewall
-      that contains <acronym>ALTQ</acronym> for bandwidth usage
-      management in a way similar to what DUMMYNET provides in
-      <acronym>IPFW</acronym>.  The OpenBSD project does an
-      outstanding job of maintaining the PF users' guide that it will
-      not be made part of this handbook firewall section as that would
-      just be duplicated effort.</para>
+      that has optional support for <acronym>ALTQ</acronym> (Alternate
+      Queuing).  <acronym>ALTQ</acronym> provides Quality of Service
+      (QoS) bandwidth shaping that allows guaranteeing bandwidth to
+      different services based on filtering rules.  The OpenBSD
+      project does an outstanding job of maintaining the PF User's
+      Guide that it will not be made part of this handbook firewall
+      section as that would just be duplicated effort.</para>
 
     <para>The availability of PF for the various &os; releases and versions is
       summarized below:</para>
@@ -356,6 +357,57 @@
         enable the following option as well:</para>
 
       <programlisting>gateway_enable="YES"            # Enable as Lan gateway</programlisting>
+
+    </sect2>
+    <sect2>
+      <title>Enabling ALTQ</title>
+
+      <para><acronym>ALTQ</acronym> is only available by compiling the
+        options into the &os; Kernel.  <acronym>ALTQ</acronym> is not
+        supported by all of the available network card drivers.  Please
+        see the &man.altq.4; manual page for a list of drivers that are
+        supported in your release of &os;.  The following options will
+        enable <acronym>ALTQ</acronym> and add additional functionality.
+        </para>
+
+      <programlisting>options         ALTQ
+options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
+options         ALTQ_RED        # Random Early Detection (RED)
+options         ALTQ_RIO        # RED In/Out
+options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
+options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
+options         ALTQ_NOPCC      # Required for SMP build</programlisting>
+
+      <para><literal>options ALTQ</literal> enables the ALTQ framework.</para>
+
+      <para><literal>options ALTQ_CBQ</literal> enables Class Based
+        Queuing (CBQ).  CBQ allows you to divide a connection's
+        bandwidth into different classes or queues to prioritize
+        traffic based on filter rules.</para>
+
+      <para><literal>options ALTQ_RED</literal> enables Random Early
+        Detection (RED).  RED is used to avoid network congestion.  RED
+        does this by measuring the length of the queue and comparing
+        it to the minimum and maximum thresholds for the queue.  If the
+        queue is over the maximum all new packets will be dropped.  True
+        to its name, RED drops packets from different connections
+        randomly.</para>
+
+      <para><literal>options ALTQ_RIO</literal> enables Random Early
+        Detection In and Out.</para>
+
+      <para><literal>options ALTQ_HFSC</literal> enables the
+        Hierarchical Fair Service Curve Packet Scheduler.  For more
+        information about HFSC see: <ulink
+        url="http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html"></ulink>.
+        </para>
+
+      <para><literal>options ALTQ_PRIQ</literal> enables Priority
+        Queuing (PRIQ).  PRIQ will always pass traffic that is in a
+        higher queue first.</para>
+
+      <para><literal>options ALTQ_NOPCC</literal> enables SMP support
+        for ALTQ.  This option is required on SMP systems.</para>
 
     </sect2>
   </sect1>
Comment 5 Brad Davis 2005-02-26 19:47:15 UTC
More changes prodded by simon@...


-Brad


--- doc-ori/en_US.ISO8859-1/books/handbook/firewalls/chapter.sgml	Fri Feb 25 13:31:41 2005
+++ doc/en_US.ISO8859-1/books/handbook/firewalls/chapter.sgml	Sat Feb 26 12:42:54 2005
@@ -198,7 +198,7 @@
   </sect1>
 
   <sect1 id="firewalls-pf">
-    <title>The Packet Filter (PF) Firewall</title>
+    <title>The OpenBSD Packet Filter (PF) and ALTQ</title>
 
     <indexterm>
       <primary>firewall</primary>
@@ -211,12 +211,13 @@
       contained <acronym>PF</acronym> as an integrated part of the
       base system was &os;&nbsp;5.3 in November 2004.
       <acronym>PF</acronym> is a complete, fully featured firewall
-      that contains <acronym>ALTQ</acronym> for bandwidth usage
-      management in a way similar to what DUMMYNET provides in
-      <acronym>IPFW</acronym>.  The OpenBSD project does an
-      outstanding job of maintaining the PF users' guide that it will
-      not be made part of this handbook firewall section as that would
-      just be duplicated effort.</para>
+      that has optional support for <acronym>ALTQ</acronym> (Alternate
+      Queuing).  <acronym>ALTQ</acronym> provides Quality of Service
+      (<acronym>QoS</acronym>) bandwidth shaping that allows
+      guaranteeing bandwidth to different services based on filtering
+      rules.  The OpenBSD Project does an outstanding job of maintaining
+      the PF User's Guide that it will not be made part of this handbook
+      firewall section as that would just be duplicated effort.</para>
 
     <para>The availability of PF for the various &os; releases and versions is
       summarized below:</para>
@@ -356,6 +357,57 @@
         enable the following option as well:</para>
 
       <programlisting>gateway_enable="YES"            # Enable as Lan gateway</programlisting>
+
+    </sect2>
+    <sect2>
+      <title>Enabling ALTQ</title>
+
+      <para><acronym>ALTQ</acronym> is only available by compiling the
+        options into the &os; Kernel.  <acronym>ALTQ</acronym> is not
+        supported by all of the available network card drivers.  Please
+        see the &man.altq.4; manual page for a list of drivers that are
+        supported in your release of &os;.  The following options will
+        enable <acronym>ALTQ</acronym> and add additional functionality.
+        </para>
+
+      <programlisting>options         ALTQ
+options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
+options         ALTQ_RED        # Random Early Detection (RED)
+options         ALTQ_RIO        # RED In/Out
+options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
+options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
+options         ALTQ_NOPCC      # Required for SMP build</programlisting>
+
+      <para><literal>options ALTQ</literal> enables the ALTQ framework.</para>
+
+      <para><literal>options ALTQ_CBQ</literal> enables Class Based
+        Queuing (CBQ).  CBQ allows you to divide a connection's
+        bandwidth into different classes or queues to prioritize
+        traffic based on filter rules.</para>
+
+      <para><literal>options ALTQ_RED</literal> enables Random Early
+        Detection (<acronym>RED</acronym>).  <acronym>RED</acronym> is
+        used to avoid network congestion.  <acronym>RED</acronym> does
+        this by measuring the length of the queue and comparing it to
+        the minimum and maximum thresholds for the queue.  If the queue
+        is over the maximum all new packets will be dropped.  True to
+        its name, RED drops packets from different connections randomly.</para>
+
+      <para><literal>options ALTQ_RIO</literal> enables Random Early
+        Detection In and Out.</para>
+
+      <para><literal>options ALTQ_HFSC</literal> enables the
+        Hierarchical Fair Service Curve Packet Scheduler.  For more
+        information about HFSC see: <ulink
+          url="http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html"></ulink>.
+        </para>
+
+      <para><literal>options ALTQ_PRIQ</literal> enables Priority
+        Queuing (PRIQ).  PRIQ will always pass traffic that is in a
+        higher queue first.</para>
+
+      <para><literal>options ALTQ_NOPCC</literal> enables SMP support
+        for ALTQ.  This option is required on SMP systems.</para>
 
     </sect2>
   </sect1>
Comment 6 Tom Rhodes freebsd_committer freebsd_triage 2005-02-26 21:20:44 UTC
On Sat, 26 Feb 2005 12:47:15 -0700
Brad Davis <so14k@so14k.com> wrote:

> More changes prodded by simon@...

Wow, this reminds me of when I was a submitter.  I'll review in
a bit, thanks!!

-- 
Tom Rhodes
Comment 7 Simon L. B. Nielsen freebsd_committer freebsd_triage 2005-02-27 11:37:42 UTC
On 2005.02.26 12:47:15 -0700, Brad Davis wrote:
> More changes prodded by simon@...


[snip patch]

This one does not apply for me... "Hunk #3 failed at 357.".. Could you
recheck that it's good, and/or put it somewhere where it does not get
mangled?


-- 
Simon L. Nielsen
Comment 8 Brad Davis 2005-02-28 10:20:07 UTC
Hi Simon,


The latest version is here too:
http://freebsd.so14k.com/firewall/altq-2005-02-26-12-43-22.patch

Let me know if you have problems with this one.


Regards,
Brad Davis
Comment 9 Simon L. B. Nielsen freebsd_committer freebsd_triage 2005-02-28 21:03:32 UTC
On 2005.02.28 03:20:07 -0700, Brad Davis wrote:

> The latest version is here too:
> http://freebsd.so14k.com/firewall/altq-2005-02-26-12-43-22.patch
> 
> Let me know if you have problems with this one.


It still fails, are you sure it's generated against the latest CVS
version? (1.46)

-- 
Simon L. Nielsen
Comment 10 Simon L. B. Nielsen freebsd_committer freebsd_triage 2005-03-01 21:13:32 UTC
Responsible Changed
From-To: freebsd-doc->simon

I will get this committed.
Comment 11 Simon L. B. Nielsen freebsd_committer freebsd_triage 2005-03-01 21:46:39 UTC
State Changed
From-To: open->closed

Committed, thanks!