kern/105330: ipfw (dummynet) do not allow to set queue length > 100 packets

Alexey Kouznetsov kuznec at hcn-strela.ru
Thu Nov 9 10:31:21 UTC 2006


>Number:         105330
>Category:       kern
>Synopsis:       ipfw (dummynet) do not allow to set queue length > 100 packets
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Nov 09 10:30:24 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Alexey Kouznetsov
>Release:        6.2-PRERELEASE cvsuped 2006.11.07
>Organization:
HCN Strela
>Environment:
FreeBSD lg02.hcn-strela.ru 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #1: Wed Nov  8 20:13:14 MSK 2006     root at lg02.hcn-strela.ru:/usr/obj/usr/src/sys/STRELA20060511  i386
>Description:
If we have fast connection and want to use longer queue for faster pipes we may want to set up longer queue. But we do not able to set the queue length more then 100 packets
# /sbin/ipfw pipe  107 config mask dst-ip 0xffffffff bw 10Mbit/s queue 600 gred 0.002/100/300/0.1
ipfw: 2 <= queue size <= 100

>How-To-Repeat:
Try to set queue length > 100 packets
# /sbin/ipfw pipe  107 config mask dst-ip 0xffffffff bw 10Mbit/s queue 600 gred 0.002/100/300/0.1
ipfw: 2 <= queue size <= 100

>Fix:
Change sbin/ipfw/ipfw2.c and sys/netinet/ip_dummynet.c and increase check value to bigger value
as far as this value is 
int qsize, then we can use values up to 65000 what give us queue about 100 MB (for 1500 mtu)

*** sys/netinet/ip_dummynet.c.orig      Thu Nov  9 13:14:11 2006
--- sys/netinet/ip_dummynet.c   Thu Nov  9 13:14:24 2006
***************
*** 1588,1594 ****
      } else {
        if (x->qsize == 0)
            x->qsize = 50 ;
!       if (x->qsize > 100)
            x->qsize = 50 ;
      }
      /* configuring RED */
--- 1588,1594 ----
      } else {
        if (x->qsize == 0)
            x->qsize = 50 ;
!       if (x->qsize > 65000)
            x->qsize = 50 ;
      }
      /* configuring RED */


*** sbin/ipfw/ipfw2.c.orig      Thu Nov  9 13:13:21 2006
--- sbin/ipfw/ipfw2.c   Thu Nov  9 13:13:54 2006
***************
*** 3477,3484 ****
                if (p.fs.qsize > 1024*1024)
                        errx(EX_DATAERR, "queue size must be < 1MB");
        } else {
!               if (p.fs.qsize > 100)
!                       errx(EX_DATAERR, "2 <= queue size <= 100");
        }
        if (p.fs.flags_fs & DN_IS_RED) {
                size_t len;
--- 3477,3484 ----
                if (p.fs.qsize > 1024*1024)
                        errx(EX_DATAERR, "queue size must be < 1MB");
        } else {
!               if (p.fs.qsize > 65000)
!                       errx(EX_DATAERR, "2 <= queue size <= 65000");
        }
        if (p.fs.flags_fs & DN_IS_RED) {
                size_t len;

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list