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