From owner-cvs-all@FreeBSD.ORG Tue Nov 6 23:01:43 2007 Return-Path: Delivered-To: cvs-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3F6F816A419; Tue, 6 Nov 2007 23:01:43 +0000 (UTC) (envelope-from oleg@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 322B013C4A6; Tue, 6 Nov 2007 23:01:43 +0000 (UTC) (envelope-from oleg@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id lA6N1hkL034664; Tue, 6 Nov 2007 23:01:43 GMT (envelope-from oleg@repoman.freebsd.org) Received: (from oleg@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lA6N1gRA034663; Tue, 6 Nov 2007 23:01:42 GMT (envelope-from oleg) Message-Id: <200711062301.lA6N1gRA034663@repoman.freebsd.org> From: Oleg Bulyzhin Date: Tue, 6 Nov 2007 23:01:42 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/netinet ip_dummynet.c ip_dummynet.h ip_fw_pfil.c src/sys/net if_bridge.c if_ethersubr.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Nov 2007 23:01:43 -0000 oleg 2007-11-06 23:01:42 UTC FreeBSD src repository Modified files: sys/netinet ip_dummynet.c ip_dummynet.h ip_fw_pfil.c sys/net if_bridge.c if_ethersubr.c Log: 1) dummynet_io() declaration has changed. 2) Alter packet flow inside dummynet: allow certain packets to bypass dummynet scheduler. Benefits are: - lower latency: if packet flow does not exceed pipe bandwidth, packets will not be (up to tick) delayed (due to dummynet's scheduler granularity). - lower overhead: if packet avoids dummynet scheduler it shouldn't reenter ip stack later. Such packets can be fastforwarded. - recursion (which can lead to kernel stack exhaution) eliminated. This fix long existed panic, which can be triggered this way: kldload dummynet sysctl net.inet.ip.fw.one_pass=0 ipfw pipe 1 config bw 0 for i in `jot 30`; do ipfw add 1 pipe 1 icmp from any to any; done ping -c 1 localhost 3) Three new sysctl nodes are added: net.inet.ip.dummynet.io_pkt - packets passed to dummynet net.inet.ip.dummynet.io_pkt_fast - packets avoided dummynet scheduler net.inet.ip.dummynet.io_pkt_drop - packets dropped by dummynet P.S. Above comments are true only for layer 3 packets. Layer 2 packet flow is not changed yet. MFC after: 3 month Revision Changes Path 1.107 +1 -1 src/sys/net/if_bridge.c 1.240 +1 -1 src/sys/net/if_ethersubr.c 1.112 +37 -7 src/sys/netinet/ip_dummynet.c 1.41 +1 -1 src/sys/netinet/ip_dummynet.h 1.26 +28 -26 src/sys/netinet/ip_fw_pfil.c