[solved] Проблема с pipe (OUCH! pipe should have been idle!)

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Dzirt
рядовой
Сообщения: 35
Зарегистрирован: 2008-12-05 12:26:54
Откуда: Днепропетровск
Контактная информация:

[solved] Проблема с pipe (OUCH! pipe should have been idle!)

Непрочитанное сообщение Dzirt » 2009-12-17 12:57:08

У меня есть несколько серверов где вполне нормально настроен ipfw + pipe Все режет и все нормально работает.
Установил последний сервер на FreeBSD 8.0 все поднял как и раньше но возникла проблема.

Код: Выделить всё

dummynet: OUCH! pipe should have been idle!
Эти сообщения сыпятся непрерывно в консоль когда кто то начинает работать с интернетом.
Помогите пожалуйста кто уже сталкивался с подобным.

Этот сервер от других отличается тем что у него 2 канала и они жирнее по 4 Мб. и 8 Мб.

Вот конфиги:
rc.conf

Код: Выделить всё

ifconfig_ae0="inet 192.168.17.2 netmask 255.255.255.0"
ifconfig_xl0="inet 192.168.145.126 netmask 255.255.255.0"
ifconfig_xl1="inet 172.16.0.2 netmask 255.255.255.0"

gateway_enable="YES"
named_enable="YES"
sshd_enable="YES"

natd_enable="YES"
natd_program="/sbin/natd"
natd_interface="tun0"
natd_flags="-dynamic -p 8668 -f /etc/natd.conf -punch_fw 50000:999"

natd1_enable="YES"
natd1_program="/sbin/natd"
natd1_interface="xl0"
natd1_flags="-dynamic -p 8669 -f /etc/natd.conf -punch_fw 50000:999"

firewall_enable="YES"
firewall_logging="YES"
firewall_script="/etc/ipfw.conf"
ipfw.conf

Код: Выделить всё

#! /bin/sh

### VAR
ipfw=/sbin/ipfw
wan_u=tun0
wan_m=xl0
lan_if=ae0
lan_net=192.168.17.0/24

###RULES
$ipfw add allow ip from any to any via lo0

##PIPE
#Megalink
$ipfw pipe 1 config bw 2048Kbit/s
$ipfw pipe 2 config bw 1024Kbit/s
$ipfw pipe 3 config bw 1024Kbit/s

#Ukrtel
$ipfw pipe 4 config bw 2048Kbit/s
$ipfw pipe 5 config bw 3072Kbit/s
$ipfw pipe 6 config bw 3072Kbit/s

#Megakink
$ipfw queue 1 config pipe 3 weight 80 queue 20Kbit mask src-ip 0xffffffff
$ipfw queue 11 config pipe 3 weight 80 queue 20Kbit mask dst-ip 0xffffffff
$ipfw queue 2 config pipe 3 weight 20 queue 20Kbit mask src-ip 0xffffffff
$ipfw queue 22 config pipe 3 weight 20 queue 20Kbit mask dst-ip 0xffffffff

#Ukrtel
$ipfw queue 3 config pipe 6 weight 80 queue 20Kbit mask src-ip 0xffffffff
$ipfw queue 33 config pipe 6 weight 80 queue 20Kbit mask dst-ip 0xffffffff
$ipfw queue 4 config pipe 6 weight 20 queue 20Kbit mask src-ip 0xffffffff
$ipfw queue 44 config pipe 6 weight 20 queue 20Kbit mask dst-ip 0xffffffff

## SORTING OUT
#Megakink
$ipfw add pipe 1 udp from any to any 50000-50200 out via $wan_m
$ipfw add skipto 3300 all from any to any 50000-50200 out via $wan_m
$ipfw add pipe 1 udp from any 50000-50200 to any out via $wan_m
$ipfw add skipto 3300 all from any 50000-50200 to any out via $wan_m

$ipfw add pipe 2 all from any to 80.240.216.199 out via $wan_m
$ipfw add skipto 3300 all from any to 80.240.216.199 out via $wan_m

$ipfw add queue 1 all from any to any ftp out via $wan_m
$ipfw add skipto 3300 all from any to any ftp out via $wan_m
$ipfw add queue 1 all from any ftp to any out via $wan_m
$ipfw add skipto 3300 all from any ftp to any out via $wan_m

$ipfw add queue 1 all from any to any 22,8822,9922 out via $wan_m
$ipfw add skipto 3300 all from any to any 22,8822,9922 out via $wan_m
$ipfw add queue 1 all from any 22,8822,9922 to any out via $wan_m
$ipfw add skipto 3300 all from any 22,8822,9922 to any out via $wan_m

$ipfw add queue 2 all from any to any out via $wan_m

#Ukrtele
$ipfw add pipe 4 udp from any to any 50000-50200 out via $wan_u
$ipfw add skipto 3200 all from any to any 50000-50200 out via $wan_u
$ipfw add pipe 4 udp from any 50000-50200 to any out via $wan_u
$ipfw add skipto 3200 all from any 50000-50200 to any out via $wan_u

$ipfw add pipe 5 all from 192.168.17.0/24 to 80.240.216.199 out via $wan_u
$ipfw add skipto 3200 all from any to 80.240.216.199 out via $wan_u

$ipfw add queue 3 all from any to any ftp out via $wan_u
$ipfw add skipto 3200 all from any to any ftp out via $wan_u
$ipfw add queue 3 all from any ftp to any out via $wan_u
$ipfw add skipto 3200 all from any ftp to any out via $wan_u

$ipfw add queue 3 all from any to any 22,8822,9922 out via $wan_u
$ipfw add skipto 3200 all from any to any 22,8822,9922 out via $wan_u
$ipfw add queue 3 all from any 22,8822,9922 to any out via $wan_u
$ipfw add skipto 3200 all from any 22,8822,9922 to any out via $wan_u

$ipfw add queue 4 all from any  to any out via $wan_u

##NAT
$ipfw add divert 8668 ip from any to any via $wan_u
$ipfw add divert 8669 ip from any to any via $wan_m

### SORTING IN
#Megakink
$ipfw add pipe 1 udp from any 50000-50200 to any in via $wan_m
$ipfw add skipto 6400 all from any 50000-50200 to any in via $wan_m
$ipfw add pipe 1 udp from any to any 50000-50200 in via $wan_m
$ipfw add skipto 6400 all from any to any 50000-50200 in via $wan_m

$ipfw add pipe 2 all from 80.240.216.199 to any in via $wan_m
$ipfw add skipto 6400 all from 80.240.216.199 to any in via $wan_m

$ipfw add queue 11 all from any ftp to any in via $wan_m
$ipfw add skipto 6400 all from any ftp to any in via $wan_m
$ipfw add queue 11 all from any to any ftp in via $wan_m
$ipfw add skipto 6400 all from any to any ftp in via $wan_m

$ipfw add queue 11 all from any 22,8822,9922 to any in via $wan_m
$ipfw add skipto 6400 all from any 22,8822,992 to any in via $wan_m
$ipfw add queue 11 all from any to any 22,8822,9922 in via $wan_m
$ipfw add skipto 6400 all from any to any 22,8822,9922 in via $wan_m

$ipfw add queue 22 all from any to any in via $wan_m

#Ukrtele
$ipfw add pipe 4 udp from any 50000-50200 to any in via $wan_u
$ipfw add skipto 6400 all from any 50000-50200 to any in via $wan_u
$ipfw add pipe 4 udp from any to any 50000-50200 in via $wan_u
$ipfw add skipto 6400 all from any to any 50000-50200 in via $wan_u

$ipfw add pipe 5 all from 80.240.216.199 to any in via $wan_u
$ipfw add skipto 6400 all from 80.240.216.199 to any in via $wan_u

$ipfw add queue 33 all from any ftp to any in via $wan_u
$ipfw add skipto 6400 all from any ftp to any in via $wan_u
$ipfw add queue 33 all from any to any ftp in via $wan_u
$ipfw add skipto 6400 all from any to any ftp in via $wan_u

$ipfw add queue 33 all from any 22,8822,9922 to any in via $wan_u
$ipfw add skipto 6400 all from any 22,8822,992 to any in via $wan_u
$ipfw add queue 33 all from any to any 22,8822,9922 in via $wan_u
$ipfw add skipto 6400 all from any to any 22,8822,9922 in via $wan_u

$ipfw add queue 44 all from any to any in via $wan_u

## ALLOW ALL
$ipfw add allow all from any to any
sysctl.conf

Код: Выделить всё

net.inet.tcp.keepidle=15000
net.inet.tcp.keepintvl=1000

net.inet.ip.fw.one_pass=0
Заранее всем спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Проблема с pipe

Непрочитанное сообщение terminus » 2009-12-17 13:26:03

А погуглить?
http://lists.freebsd.org/pipermail/free ... 13935.html
http://lists.freebsd.org/pipermail/free ... 13943.html
Kevin Smith wrote:
> Oleg Bulyzhin wrote:
>> On Mon, Nov 30, 2009 at 11:58:55PM -0500, Ben Kelly wrote:
>>> I actually have not measured my bandwidth to validate dummynet. I have simply observed these messages repeating in my log:
>>>
>>> dummynet: OUCH! pipe should have been idle!
>>>
>>> Under normal conditions I don't really need the dummynet rules to shape traffic for my configuration to work, so it has not been a high priority for me yet. Do you see the log messages?
>>>
>>> Thanks.
>>>
>>> - Ben
>> It seems i've found the problem. Please test attached patch (it's for R8.0
>> sources and include r198845). I'm interested in some feedback:
>> 1) does it solve 'OUCH' messages problem?
>> 2) does it solve bandwidth problem (if there was any)?
>>
>>
> The patch fixes the problem: now it seems all ok, no more "OUCH"
> messages and pipe bandwidth limiting works again.
> Thank you very much, Oleg!!
> Best regards,
>

this should be made an errata item for 8.0
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Проблема с pipe

Непрочитанное сообщение terminus » 2009-12-17 13:31:28

Вот из-за таких ситуаций, я считаю, что сидеть на RELEASE не стоит - по любому есть резон использовать ветку STABLE.
Для релиза теперь вот не известно выпустят патч в виде advisory или нет. А в CVS ветки STABLE его уже наверняка перенесли.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Dzirt
рядовой
Сообщения: 35
Зарегистрирован: 2008-12-05 12:26:54
Откуда: Днепропетровск
Контактная информация:

Re: Проблема с pipe

Непрочитанное сообщение Dzirt » 2009-12-17 13:52:37

Так вроде это не релиз кандидат!

uname -a

Код: Выделить всё

FreeBSD router.office.com 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Wed Dec  9 12:28:33 EET 2009     dzirt@router.office.com:/usr/obj/usr/src/sys/IPFW  i386
качал вот отсюда
ftp://ftp.freebsd.org/pub/FreeBSD/relea ... MAGES/8.0/
http://modernworld.com.ua
IT - решения для бизнеса.

Аватара пользователя
Dzirt
рядовой
Сообщения: 35
Зарегистрирован: 2008-12-05 12:26:54
Откуда: Днепропетровск
Контактная информация:

Re: Проблема с pipe

Непрочитанное сообщение Dzirt » 2009-12-17 13:58:52

Ув. terminus Попытался прочитать но не совсем понял что нужно сделать.

По правде совсем не понял.
Нашел вот это http://groups.google.ru/group/lucky.fre ... 78d42a57dd

Плиз можешь расписать вкратце что нужно делать.
http://modernworld.com.ua
IT - решения для бизнеса.

Аватара пользователя
Dzirt
рядовой
Сообщения: 35
Зарегистрирован: 2008-12-05 12:26:54
Откуда: Днепропетровск
Контактная информация:

Re: Проблема с pipe

Непрочитанное сообщение Dzirt » 2009-12-17 14:26:25

Вроде понял что нужно изменить файлик.
Я его отредактировал как написано в статье

Код: Выделить всё

Index: sys/netinet/ipfw/ip_dummynet.c 
=================================================================== 
--- sys/netinet/ipfw/ip_dummynet.c      (revision 252) 
+++ sys/netinet/ipfw/ip_dummynet.c      (working copy) 
@@ -1426,7 +1426,9 @@ 
                                q->numbytes += pipe->bandwidth; 
                } 
        } else {                        /* WF2Q. */ 
-               if (pipe->idle_time < curr_time) { 
+               if (pipe->idle_time < curr_time && 
+                   pipe->scheduler_heap.elements == 0 && 
+                   pipe->not_eligible_heap.elements == 0) { 
                        /* Calculate available burst size. */ 
                        pipe->numbytes += 
                            (curr_time - pipe->idle_time - 1) * pipe->bandwidth;
Вот только что теперь ядро пересобрать?
http://modernworld.com.ua
IT - решения для бизнеса.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Проблема с pipe

Непрочитанное сообщение hizel » 2009-12-17 14:33:05

вас агитирую cvsup-нуться до RELENG_8 и пересобрать мир с ядром
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Dzirt
рядовой
Сообщения: 35
Зарегистрирован: 2008-12-05 12:26:54
Откуда: Днепропетровск
Контактная информация:

Re: Проблема с pipe

Непрочитанное сообщение Dzirt » 2009-12-17 14:49:36

hizel писал(а):вас агитирую cvsup-нуться до RELENG_8 и пересобрать мир с ядром
Буду очень признателен если подскажешь как!
Сейчас буду гуглить но если есть возможность напиши вкратце.
http://modernworld.com.ua
IT - решения для бизнеса.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Проблема с pipe

Непрочитанное сообщение terminus » 2009-12-17 14:53:53

http://lists.freebsd.org/pipermail/free ... ix.r80.bin

Код: Выделить всё

Index: sys/netinet/ipfw/ip_dummynet.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/ipfw/ip_dummynet.c,v
retrieving revision 1.5.2.1.2.1
diff -u -r1.5.2.1.2.1 ip_dummynet.c
--- sys/netinet/ipfw/ip_dummynet.c	25 Oct 2009 01:10:29 -0000	1.5.2.1.2.1
+++ sys/netinet/ipfw/ip_dummynet.c	1 Dec 2009 17:23:45 -0000
@@ -244,6 +244,17 @@
 static int	dummynet_io(struct mbuf **, int , struct ip_fw_args *);
 
 /*
+ * Flow queue is idle if:
+ *   1) it's empty for at least 1 tick
+ *   2) it has invalid timestamp (WF2Q case)
+ *   3) parent pipe has no 'exhausted' burst.
+ */
+#define QUEUE_IS_IDLE(q) ((q)->head == NULL && (q)->S == (q)->F + 1 && \
+	curr_time > (q)->idle_time + 1 && \
+	((q)->numbytes + (curr_time - (q)->idle_time - 1) * \
+	(q)->fs->pipe->bandwidth >= (q)->fs->pipe->burst))
+
+/*
  * Heap management functions.
  *
  * In the heap, first node is element 0. Children of i are 2i+1 and 2i+2.
@@ -1004,7 +1015,7 @@
     fs->last_expired = time_uptime ;
     for (i = 0 ; i <= fs->rq_size ; i++) /* last one is overflow */
 	for (prev=NULL, q = fs->rq[i] ; q != NULL ; )
-	    if (q->head != NULL || q->S != q->F+1) {
+	    if (!QUEUE_IS_IDLE(q)) {
   		prev = q ;
   	        q = q->next ;
   	    } else { /* entry is idle, expire it */
@@ -1134,7 +1145,7 @@
 		break ; /* found */
 
 	    /* No match. Check if we can expire the entry */
-	    if (pipe_expire && q->head == NULL && q->S == q->F+1 ) {
+	    if (pipe_expire && QUEUE_IS_IDLE(q)) {
 		/* entry is idle and not in any heap, expire it */
 		struct dn_flow_queue *old_q = q ;
 
@@ -1408,18 +1419,20 @@
 		if (q->idle_time < curr_time) {
 			/* Calculate available burst size. */
 			q->numbytes +=
-			    (curr_time - q->idle_time) * pipe->bandwidth;
+			    (curr_time - q->idle_time - 1) * pipe->bandwidth;
 			if (q->numbytes > pipe->burst)
 				q->numbytes = pipe->burst;
 			if (io_fast)
 				q->numbytes += pipe->bandwidth;
 		}
 	} else {			/* WF2Q. */
-		if (pipe->idle_time < curr_time) {
+		if (pipe->idle_time < curr_time &&
+		    pipe->scheduler_heap.elements == 0 &&
+		    pipe->not_eligible_heap.elements == 0) {
 			/* Calculate available burst size. */
 			pipe->numbytes +=
-			    (curr_time - pipe->idle_time) * pipe->bandwidth;
-			if (pipe->numbytes > pipe->burst)
+			    (curr_time - pipe->idle_time - 1) * pipe->bandwidth;
+			if (pipe->numbytes > 0 && pipe->numbytes > pipe->burst)
 				pipe->numbytes = pipe->burst;
 			if (io_fast)
 				pipe->numbytes += pipe->bandwidth;

Код: Выделить всё

cd /root
fetch http://lists.freebsd.org/pipermail/freebsd-current/attachments/20091201/e05469c6/wf2q-fix.r80.bin
cd /usr/src/sys/netinet/ipfw/
patch < /root/wf2q-fix.r80.bin
cd /usr/src
make buildkernel
make installkernel
reboot
:drinks:

или перейдите на использование STABLE - этот патч уже в нем
http://svnweb.freebsd.org/viewvc/base/s ... iew=markup

Переход на STABLE (если не боитесь и готовы отказаться от freebsd-update в пользу пересборки из сырцов):
http://www.freebsd.org/doc/en_US.ISO885 ... table.html
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Проблема с pipe

Непрочитанное сообщение hizel » 2009-12-17 15:07:17

Dzirt писал(а):
hizel писал(а):вас агитирую cvsup-нуться до RELENG_8 и пересобрать мир с ядром
Буду очень признателен если подскажешь как!
Сейчас буду гуглить но если есть возможность напиши вкратце.
Хэндбук пролистайте, там все есть, йоклмн. :unknown:
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Dzirt
рядовой
Сообщения: 35
Зарегистрирован: 2008-12-05 12:26:54
Откуда: Днепропетровск
Контактная информация:

Re: Проблема с pipe

Непрочитанное сообщение Dzirt » 2009-12-18 12:33:31

terminus Огромное спасибо. :drinks:

Патч помог все работает просто на ура. :Yahoo!:
http://modernworld.com.ua
IT - решения для бизнеса.

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: [solved] Проблема с pipe (OUCH! pipe should have been idle!)

Непрочитанное сообщение hranitel_y2k » 2010-01-18 17:48:28

У меня та же проблема, даже после обновления до STABLE... (До этого была 7.2 обновил ее до 8.0 RELEASE, потом после возникновения проблемы с dummynet поднял до 8 STABLE).
В STABLE используется ip_dummynet.с версии 1.5.2.2, сравнил c 1.5.2.1.2.1 (тот что в RELEASE) и с ip_dummynet.c после применения патча из темы. В 1.5.2.2 нехватает:

Код: Выделить всё

 	} else {			/* WF2Q. */
-		if (pipe->idle_time < curr_time) {
+		if (pipe->idle_time < curr_time &&
+		    pipe->scheduler_heap.elements == 0 &&
+		    pipe->not_eligible_heap.elements == 0) {
Видимо из-за них сообщения продолжали сыпаться. Откатился до 8 RELEASE, установил патч из темы и все работает на ура.
Все гениальное - просто!

Ck-NoSFeRaTU
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-10-09 21:06:18

Re: [solved] Проблема с pipe (OUCH! pipe should have been id

Непрочитанное сообщение Ck-NoSFeRaTU » 2010-03-08 18:37:16

Немного не в тему, но у всех нормально работают пайпы на 8ке? У меня шейпят, но вносят совсем дикие задержки в 3-4мс на пайп при нулевой нагрузке. На 6.4 такого бреда не было. Ставил патч, сыпать в dmesg перестало, но с задержками ситуация не улучшилась.

Аватара пользователя
Dzirt
рядовой
Сообщения: 35
Зарегистрирован: 2008-12-05 12:26:54
Откуда: Днепропетровск
Контактная информация:

Re: [solved] Проблема с pipe (OUCH! pipe should have been id

Непрочитанное сообщение Dzirt » 2010-03-09 10:19:57

Ck-NoSFeRaTU писал(а):Немного не в тему, но у всех нормально работают пайпы на 8ке? У меня шейпят, но вносят совсем дикие задержки в 3-4мс на пайп при нулевой нагрузке. На 6.4 такого бреда не было. Ставил патч, сыпать в dmesg перестало, но с задержками ситуация не улучшилась.
С 6.4 конфиг немного изменился ))
Выложи правила фаервола и ipfw pipe show.
Тогда можно будет что то сказать.
http://modernworld.com.ua
IT - решения для бизнеса.

Ck-NoSFeRaTU
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-10-09 21:06:18

Re: [solved] Проблема с pipe (OUCH! pipe should have been id

Непрочитанное сообщение Ck-NoSFeRaTU » 2010-03-10 5:33:33

Dzirt писал(а):С 6.4 конфиг немного изменился ))
Выложи правила фаервола и ipfw pipe show.
Тогда можно будет что то сказать.
А что там показывать? Ну, пайпы заводятся скриптом примерно так:

Код: Выделить всё

/sbin/ipfw add 906 pipe 906 ip from 10.1.100.3 to 10.1.100.0/24 via ng3 in
/sbin/ipfw pipe 906 config bw 4096Kbit/s queue 10Kbytes
/sbin/ipfw add 907 pipe 907 ip from 10.1.100.0/24 to 10.1.100.3 via ng3 out
/sbin/ipfw pipe 907 config bw 4096Kbit/s queue 10Kbytes
Получаем:

Код: Выделить всё

00907:   4.096 Mbit/s    0 ms  10 KB 1 queues (1 buckets) droptail
         burst: 0 Byte
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 icmp    10.1.100.100/0          10.1.100.3/0        6      504  0    0   0
00906:   4.096 Mbit/s    0 ms  10 KB 1 queues (1 buckets) droptail
         burst: 0 Byte
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 icmp      10.1.100.3/0        10.1.100.100/0        6      504  0    0   0
Пингуем клиента:

Код: Выделить всё

C:\Documents and Settings\Administrator>ping -t 10.1.100.3

Pinging 10.1.100.3 with 32 bytes of data:

Reply from 10.1.100.3: bytes=32 time=4ms TTL=128
Reply from 10.1.100.3: bytes=32 time=5ms TTL=128
Reply from 10.1.100.3: bytes=32 time=4ms TTL=128
Удаляем пайпы, пингуем клиента:

Код: Выделить всё

^C
C:\Documents and Settings\Administrator>ping -t 10.1.100.3

Pinging 10.1.100.3 with 32 bytes of data:

Reply from 10.1.100.3: bytes=32 time=1ms TTL=128
Reply from 10.1.100.3: bytes=32 time<1ms TTL=128
Reply from 10.1.100.3: bytes=32 time=1ms TTL=128
Т.е. каждый пайп грубо говоря прибавляет минимум 2мс, на клиента по два пайпа (входящий и исходящий) вносят задержку в 4мс, т.е. когда пингует клиент клиента получаем уже задержку в 7-8мс просто за прохождение через пайпы (размер значения не имеет, я пробовал даже гигабит ставить - та же картина). Причём queue, через которые я балансирую нагрузку, этих аномальных задержек не вносят. Только пайпы.
Уже крутил и так и эдак. Пока вижу единственный вариант - переходить на ng_car.

Код: Выделить всё

cat /etc/sysctl.conf

security.bsd.see_other_uids=0
kern.fallback_elf_brand=3
net.inet.ip.fw.one_pass=0
net.inet6.ip6.v6only=0
security.bsd.unprivileged_read_msgbuf=1
security.jail.allow_raw_sockets=0
net.inet.ip.stealth=0
debug.debugger_on_panic=0
debug.ddb.capture.bufsize=5242880
/boot/loader.conf пустой.

Конфиг ядра сделан из GENERIC, в который добавлены те же нестандартные опции, что были на 6.4:

Код: Выделить всё

# GENERIC -- Generic kernel configuration file for FreeBSD/amd64
#
# For more information on this file, please read the config(5) manual page,
# and/or the handbook section on Kernel Configuration Files:
#
#    http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ../../conf/NOTES and NOTES files.
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.531.2.4.2.2 2009/11/09 23:48:01 kensmith Exp $

cpu             HAMMER
ident           GENERIC

# To statically compile in device wiring instead of /boot/device.hints
#hints          "GENERIC.hints"         # Default places to look for devices.

# Use the following to compile in values accessible to the kernel
# through getenv() (or kenv(1) in userland). The format of the file
# is 'variable=value', see kenv(1)
#
# env           "GENERIC.env"

makeoptions     DEBUG=-g                # Build kernel with gdb(1) debug symbols

options         SCHED_ULE               # ULE scheduler
options         PREEMPTION              # Enable kernel thread preemption
options         INET                    # InterNETworking
options         INET6                   # IPv6 communications protocols
options         SCTP                    # Stream Control Transmission Protocol
options         FFS                     # Berkeley Fast Filesystem
options         SOFTUPDATES             # Enable FFS soft updates support
options         UFS_ACL                 # Support for access control lists
options         UFS_DIRHASH             # Improve performance on big directories
options         UFS_GJOURNAL            # Enable gjournal-based UFS journaling
options         MD_ROOT                 # MD is a potential root device
options         NFSCLIENT               # Network Filesystem Client
options         NFSSERVER               # Network Filesystem Server
options         NFSLOCKD                # Network Lock Manager
options         NFS_ROOT                # NFS usable as /, requires NFSCLIENT
options         MSDOSFS                 # MSDOS Filesystem
options         CD9660                  # ISO 9660 Filesystem
options         PROCFS                  # Process filesystem (requires PSEUDOFS)
options         PSEUDOFS                # Pseudo-filesystem framework
options         GEOM_PART_GPT           # GUID Partition Tables.
options         GEOM_LABEL              # Provides labelization
options         COMPAT_43TTY            # BSD 4.3 TTY compat (sgtty)
options         COMPAT_IA32             # Compatible with i386 binaries
options         COMPAT_FREEBSD4         # Compatible with FreeBSD4
options         COMPAT_FREEBSD5         # Compatible with FreeBSD5
options         COMPAT_FREEBSD6         # Compatible with FreeBSD6
options         COMPAT_FREEBSD7         # Compatible with FreeBSD7
options         SCSI_DELAY=5000         # Delay (in ms) before probing SCSI
options         KTRACE                  # ktrace(1) support
options         STACK                   # stack(9) support
options         SYSVSHM                 # SYSV-style shared memory
options         SYSVMSG                 # SYSV-style message queues
options         SYSVSEM                 # SYSV-style semaphores
options         P1003_1B_SEMAPHORES     # POSIX-style semaphores
options         _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options         PRINTF_BUFR_SIZE=128    # Prevent printf output being interspersed.
options         KBD_INSTALL_CDEV        # install a CDEV entry in /dev
options         HWPMC_HOOKS             # Necessary kernel hooks for hwpmc(4)
options         AUDIT                   # Security event auditing
options         MAC                     # TrustedBSD MAC Framework
options         FLOWTABLE               # per-cpu routing cache
#options        KDTRACE_FRAME           # Ensure frames are compiled in
#options        KDTRACE_HOOKS           # Kernel DTrace hooks

# Make an SMP-capable kernel by default
options         SMP                     # Symmetric MultiProcessor Kernel

#My Options
options         NETGRAPH
options         NETGRAPH_ETHER
options         NETGRAPH_SOCKET
options         NETGRAPH_TEE

options         NETGRAPH_ASYNC
options         NETGRAPH_BPF
options         NETGRAPH_CISCO
options         NETGRAPH_ECHO
options         NETGRAPH_FRAME_RELAY
options         NETGRAPH_HOLE
options         NETGRAPH_IFACE
options         NETGRAPH_KSOCKET
options         NETGRAPH_L2TP
options         NETGRAPH_LMI

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPFIREWALL_FORWARD
options         IPDIVERT
options         DUMMYNET
#options         TCP_DROP_SYNFIN

#25.04.2008
#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)
#device         pf
#device         pflog
#device         pfsync

#04.05.2008
#options                IPSEC
#options                IPSEC_ESP
#options                IPSEC_DEBUG

options         IPFILTER
options         IPFILTER_LOG

#pseudo-device  gif 4
#pseudo-device  bpf 4

#26.06.2008
options         HZ=1000
options         DEVICE_POLLING
options         QUOTA

#27.06.2008
#options                ALTQ_CDNR
#options                ALTQ_DEBUG

#22.10.2008
options NETGRAPH_BRIDGE
options NETGRAPH_GIF
options NETGRAPH_GIF_DEMUX
options NETGRAPH_IP_INPUT
options NETGRAPH_KSOCKET

options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_ONE2MANY
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_RFC1490
options NETGRAPH_SOCKET
options NETGRAPH_TCPMSS
options NETGRAPH_TTY
options NETGRAPH_UI
options NETGRAPH_VJC

#31.08.2009
options IPSTEALTH

#08.09.2009
options NETGRAPH_CAR

#02.03.2009
options MROUTING


# CPU frequency control
device          cpufreq

# Bus support.
device          acpi
device          pci

# Floppy drives
device          fdc

# ATA and ATAPI devices
device          ata
device          atadisk         # ATA disk drives
device          ataraid         # ATA RAID drives
device          atapicd         # ATAPI CDROM drives
device          atapifd         # ATAPI floppy drives
device          atapist         # ATAPI tape drives
options         ATA_STATIC_ID   # Static device numbering

# SCSI Controllers
device          ahc             # AHA2940 and onboard AIC7xxx devices
options         AHC_REG_PRETTY_PRINT    # Print register bitfields in debug
                                        # output.  Adds ~128k to driver.
device          ahd             # AHA39320/29320 and onboard AIC79xx devices
options         AHD_REG_PRETTY_PRINT    # Print register bitfields in debug
                                        # output.  Adds ~215k to driver.
device          amd             # AMD 53C974 (Tekram DC-390(T))
device          hptiop          # Highpoint RocketRaid 3xxx series
device          isp             # Qlogic family
#device         ispfw           # Firmware for QLogic HBAs- normally a module
device          mpt             # LSI-Logic MPT-Fusion
#device         ncr             # NCR/Symbios Logic
device          sym             # NCR/Symbios Logic (newer chipsets + those of `ncr')
device          trm             # Tekram DC395U/UW/F DC315U adapters

device          adv             # Advansys SCSI adapters
device          adw             # Advansys wide SCSI adapters
device          aic             # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device          bt              # Buslogic/Mylex MultiMaster SCSI adapters

# SCSI peripherals
device          scbus           # SCSI bus (required for SCSI)
device          ch              # SCSI media changers
device          da              # Direct Access (disks)
device          sa              # Sequential Access (tape etc)
device          cd              # CD
device          pass            # Passthrough device (direct SCSI access)
device          ses             # SCSI Environmental Services (and SAF-TE)

# RAID controllers interfaced to the SCSI subsystem
device          amr             # AMI MegaRAID
device          arcmsr          # Areca SATA II RAID
#XXX it is not 64-bit clean, -scottl
#device         asr             # DPT SmartRAID V, VI and Adaptec SCSI RAID
device          ciss            # Compaq Smart RAID 5*
device          dpt             # DPT Smartcache III, IV - See NOTES for options
device          hptmv           # Highpoint RocketRAID 182x
device          hptrr           # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
device          iir             # Intel Integrated RAID
device          ips             # IBM (Adaptec) ServeRAID
device          mly             # Mylex AcceleRAID/eXtremeRAID
device          twa             # 3ware 9000 series PATA/SATA RAID

# RAID controllers
device          aac             # Adaptec FSA RAID
device          aacp            # SCSI passthrough for aac (requires CAM)
device          ida             # Compaq Smart RAID
device          mfi             # LSI MegaRAID SAS
device          mlx             # Mylex DAC960 family
#XXX pointer/int warnings
#device         pst             # Promise Supertrak SX6000
device          twe             # 3ware ATA RAID

# atkbdc0 controls both the keyboard and the PS/2 mouse
device          atkbdc          # AT keyboard controller
device          atkbd           # AT keyboard
device          psm             # PS/2 mouse

device          kbdmux          # keyboard multiplexer

device          vga             # VGA video card driver

device          splash          # Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device          sc

device          agp             # support several AGP chipsets

# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
device          cbb             # cardbus (yenta) bridge
device          pccard          # PC Card (16-bit) bus
device          cardbus         # CardBus (32-bit) bus

# Serial (COM) ports
device          uart            # Generic UART driver

# Parallel port
device          ppc
device          ppbus           # Parallel port bus (required)
device          lpt             # Printer
device          plip            # TCP/IP over parallel
device          ppi             # Parallel port interface device
#device         vpo             # Requires scbus and da

# If you've got a "dumb" serial or parallel PCI card that is
# supported by the puc(4) glue driver, uncomment the following
# line to enable it (connects to sio, uart and/or ppc drivers):
#device         puc

# PCI Ethernet NICs.
device          de              # DEC/Intel DC21x4x (``Tulip'')
device          em              # Intel PRO/1000 Gigabit Ethernet Family
device          igb             # Intel PRO/1000 PCIE Server Gigabit Family
device          ixgbe           # Intel PRO/10GbE PCIE Ethernet Family
device          le              # AMD Am7900 LANCE and Am79C9xx PCnet
device          ti              # Alteon Networks Tigon I/II gigabit Ethernet
device          txp             # 3Com 3cR990 (``Typhoon'')
device          vx              # 3Com 3c590, 3c595 (``Vortex'')

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device          miibus          # MII bus support
device          ae              # Attansic/Atheros L2 FastEthernet
device          age             # Attansic/Atheros L1 Gigabit Ethernet
device          alc             # Atheros AR8131/AR8132 Ethernet
device          ale             # Atheros AR8121/AR8113/AR8114 Ethernet
device          bce             # Broadcom BCM5706/BCM5708 Gigabit Ethernet
device          bfe             # Broadcom BCM440x 10/100 Ethernet
device          bge             # Broadcom BCM570xx Gigabit Ethernet
device          dc              # DEC/Intel 21143 and various workalikes
device          et              # Agere ET1310 10/100/Gigabit Ethernet
device          fxp             # Intel EtherExpress PRO/100B (82557, 82558)
device          jme             # JMicron JMC250 Gigabit/JMC260 Fast Ethernet
device          lge             # Level 1 LXT1001 gigabit Ethernet
device          msk             # Marvell/SysKonnect Yukon II Gigabit Ethernet
device          nfe             # nVidia nForce MCP on-board Ethernet
device          nge             # NatSemi DP83820 gigabit Ethernet
#device         nve             # nVidia nForce MCP on-board Ethernet Networking
device          pcn             # AMD Am79C97x PCI 10/100 (precedence over 'le')
device          re              # RealTek 8139C+/8169/8169S/8110S
device          rl              # RealTek 8129/8139
device          sf              # Adaptec AIC-6915 (``Starfire'')
device          sis             # Silicon Integrated Systems SiS 900/SiS 7016
device          sk              # SysKonnect SK-984x & SK-982x gigabit Ethernet
device          ste             # Sundance ST201 (D-Link DFE-550TX)
device          stge            # Sundance/Tamarack TC9021 gigabit Ethernet
device          tl              # Texas Instruments ThunderLAN
device          tx              # SMC EtherPower II (83c170 ``EPIC'')
device          vge             # VIA VT612x gigabit Ethernet
device          vr              # VIA Rhine, Rhine II
device          wb              # Winbond W89C840F
device          xl              # 3Com 3c90x (``Boomerang'', ``Cyclone'')

# ISA Ethernet NICs.  pccard NICs included.
device          cs              # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device          ed              # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device          ex              # Intel EtherExpress Pro/10 and Pro/10+
device          ep              # Etherlink III based cards
device          fe              # Fujitsu MB8696x based cards
device          sn              # SMC's 9000 series of Ethernet chips
device          xe              # Xircom pccard Ethernet

# Wireless NIC cards
device          wlan            # 802.11 support
options         IEEE80211_DEBUG # enable debug msgs
options         IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's
options         IEEE80211_SUPPORT_MESH  # enable 802.11s draft support
device          wlan_wep        # 802.11 WEP support
device          wlan_ccmp       # 802.11 CCMP support
device          wlan_tkip       # 802.11 TKIP support
device          wlan_amrr       # AMRR transmit rate control algorithm
device          an              # Aironet 4500/4800 802.11 wireless NICs.
device          ath             # Atheros pci/cardbus NIC's
device          ath_hal         # pci/cardbus chip support
options         AH_SUPPORT_AR5416       # enable AR5416 tx/rx descriptors
device          ath_rate_sample # SampleRate tx rate control for ath
device          ral             # Ralink Technology RT2500 wireless NICs.
device          wi              # WaveLAN/Intersil/Symbol 802.11 wireless NICs.

# Pseudo devices.
device          loop            # Network loopback
device          random          # Entropy device
device          ether           # Ethernet support
device          tun             # Packet tunnel.
device          pty             # BSD-style compatibility pseudo ttys
device          md              # Memory "disks"
device          gif             # IPv6 and IPv4 tunneling
device          faith           # IPv6-to-IPv4 relaying (translation)
device          firmware        # firmware assist module

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device          bpf             # Berkeley packet filter

# USB support
device          uhci            # UHCI PCI->USB interface
device          ohci            # OHCI PCI->USB interface
device          ehci            # EHCI PCI->USB interface (USB 2.0)
device          usb             # USB Bus (required)
#device         udbp            # USB Double Bulk Pipe devices
device          uhid            # "Human Interface Devices"
device          ukbd            # Keyboard
device          ulpt            # Printer
device          umass           # Disks/Mass storage - Requires scbus and da
device          ums             # Mouse
device          rum             # Ralink Technology RT2501USB wireless NICs
device          uath            # Atheros AR5523 wireless NICs
device          ural            # Ralink Technology RT2500USB wireless NICs
device          zyd             # ZyDAS zb1211/zb1211b wireless NICs
device          urio            # Diamond Rio 500 MP3 player
# USB Serial devices
device          uark            # Technologies ARK3116 based serial adapters
device          ubsa            # Belkin F5U103 and compatible serial adapters
device          uftdi           # For FTDI usb serial adapters
device          uipaq           # Some WinCE based devices
device          uplcom          # Prolific PL-2303 serial adapters
device          uslcom          # SI Labs CP2101/CP2102 serial adapters
device          uvisor          # Visor and Palm devices
device          uvscom          # USB serial support for DDI pocket's PHS
# USB Ethernet, requires miibus
device          aue             # ADMtek USB Ethernet
device          axe             # ASIX Electronics USB Ethernet
device          cdce            # Generic USB over Ethernet
device          cue             # CATC USB Ethernet
device          kue             # Kawasaki LSI USB Ethernet
device          rue             # RealTek RTL8150 USB Ethernet
device          udav            # Davicom DM9601E USB

# FireWire support
device          firewire        # FireWire bus code
#device         sbp             # SCSI over FireWire (Requires scbus and da)
device          fwe             # Ethernet over FireWire (non-standard!)
device          fwip            # IP over FireWire (RFC 2734,3146)
device          dcons           # Dumb console driver
device          dcons_crom      # Configuration ROM for dcons

Гость
проходил мимо

Re: [solved] Проблема с pipe (OUCH! pipe should have been id

Непрочитанное сообщение Гость » 2010-03-12 11:58:26

Код: Выделить всё

/sbin/ipfw add 906 pipe 906 ip from 10.1.100.3 to 10.1.100.0/24 via ng3 in
/sbin/ipfw pipe 906 config bw 4096Kbit/s queue 10Kbytes
/sbin/ipfw add 907 pipe 907 ip from 10.1.100.0/24 to 10.1.100.3 via ng3 out
/sbin/ipfw pipe 907 config bw 4096Kbit/s queue 10Kbytes
попробуйте убрать отсюда queue 10Kbytes и проверьте.
Кстати, если не секрет, откуда взялось и как подсчитывалось это значение?

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: [solved] Проблема с pipe (OUCH! pipe should have been id

Непрочитанное сообщение terminus » 2010-03-12 12:09:43

Гость писал(а): Кстати, если не секрет, откуда взялось и как подсчитывалось это значение?
KOI-8 R
http://freebsd-r16.narod.ru/freebsd/shaper.html
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Гость
проходил мимо

Re: [solved] Проблема с pipe (OUCH! pipe should have been id

Непрочитанное сообщение Гость » 2010-03-12 19:41:20

terminus писал(а):
Гость писал(а): Кстати, если не секрет, откуда взялось и как подсчитывалось это значение?
KOI-8 R
http://freebsd-r16.narod.ru/freebsd/shaper.html
Читал, делал настройки по данной статье, вроде сначала все нормально,а потом когда врубается торрент - перекос канала в сторону качающего. А у остальных скорость маленькая и файлы битые скачиваются:(

Потом прочитал это: ftp://ftp.ee.lbl.gov/papers/early.pdf и пересчитал значения,вроде сейчас все работает как надо. Но должен сказать что тема расчета параметров dummynet очень плохо описана.

Ck-NoSFeRaTU
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-10-09 21:06:18

Re: [solved] Проблема с pipe (OUCH! pipe should have been id

Непрочитанное сообщение Ck-NoSFeRaTU » 2010-03-14 18:13:16

Гость писал(а):попробуйте убрать отсюда queue 10Kbytes и проверьте.
Никакой разницы, я же писал, что даже пробовал выставлять заоблачные значения полосы, чтобы точно все пакеты пропускались - пофиг, пробовал ради интереса даже параметр delay, задержка увеличивается на значение delay+этот искусственный лаг.

Гость
проходил мимо

Re: [solved] Проблема с pipe (OUCH! pipe should have been id

Непрочитанное сообщение Гость » 2010-03-15 11:41:44

Ck-NoSFeRaTU писал(а):
Гость писал(а):попробуйте убрать отсюда queue 10Kbytes и проверьте.
Никакой разницы, я же писал, что даже пробовал выставлять заоблачные значения полосы, чтобы точно все пакеты пропускались - пофиг, пробовал ради интереса даже параметр delay, задержка увеличивается на значение delay+этот искусственный лаг.
Еще как вариант: sysctl net.inet.ip.dummynet.io_fast=1

Код: Выделить всё

There are two modes of dummynet operation: ``normal'' and ``fast''.  The
     ``normal'' mode tries to emulate a real link: the dummynet scheduler
     ensures that the packet will not leave the pipe faster than it would on
     the real link with a given bandwidth.  The ``fast'' mode allows certain
     packets to bypass the dummynet scheduler (if packet flow does not exceed
     pipe's bandwidth).  This is the reason why the ``fast'' mode requires
     less CPU cycles per packet (on average) and packet latency can be signif-
     icantly lower in comparison to a real link with the same bandwidth.  The
     default mode is ``normal''.  The ``fast'' mode can be enabled by setting
     the net.inet.ip.dummynet.io_fast sysctl(8) variable to a non-zero value.

Гость
проходил мимо

Re: [solved] Проблема с pipe (OUCH! pipe should have been id

Непрочитанное сообщение Гость » 2010-03-15 12:00:21

только что проверил вашу конфу на одно из серваков.
С sysctl net.inet.ip.dummynet.io_fast=0

Код: Выделить всё

Reply from 192.168.10.2: bytes=32 time=3ms TTL=64
Reply from 192.168.10.2: bytes=32 time=2ms TTL=64
Reply from 192.168.10.2: bytes=32 time=4ms TTL=64
Reply from 192.168.10.2: bytes=32 time=4ms TTL=64
С sysctl net.inet.ip.dummynet.io_fast=1

Код: Выделить всё

Reply from 192.168.10.2: bytes=32 time<1ms TTL=64
Reply from 192.168.10.2: bytes=32 time<1ms TTL=64
Reply from 192.168.10.2: bytes=32 time<1ms TTL=64
Reply from 192.168.10.2: bytes=32 time<1ms TTL=64