Суть проблемы заключается в том что при связке IPFW+NATD+MPD5 и канале интернета 100мегабит, сервер раздает клиенским компам только 3-4мегабита максимум! Скорость проверял с помощью torrent и большим кол-вом сидов. Рядом валяется D-link 824vup+ в котором идет сокрость 20мегабит, и то больше не тянет ибо роутер сам слабый.Исходные данные
--FreeBSD 8.1
--IP внешний 10.10.3.210
--IP внутренний 10.10.30.1
--IP VPN сервера провайдера 10.10.0.4
--IP Шлюза провайдера 10.10.63.1Настроил я MPD5
----------------------------------------------------------
startup:
default:
load pptp_client
pptp_client:
create bundle static B1
set iface route default
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
create link static L1 pptp
set link action bundle B1
set auth authname XXXXXXX
set auth password XXXXXXX
set ccp no mpp-e40
set ccp no mpp-e128
set ccp no mpp-stateless
set link max-redial 0
set link mtu 1460
set link keep-alive 20 75
set pptp peer 10.10.0.4
set pptp disable windowing
open
----------------------------------------------------------Настроил IPFW
----------------------------------------------------------
#!/bin/sh
FwCMD="/sbin/ipfw"
LanOut="ng0"
LanIn="rl1"
IpOut="195.114.7.67"
IpIn="10.10.30.1"
NetMask="24"
NetIn="10.10.30.0"
${FwCMD} -f flush
#${FwCMD} add check-state
${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} any via ${LanOut}
----------------------------------------------------------Собрал ядро с такими опциями
----------------------------------------------------------
options NETGRAPH
options NETGRAPH_ETHER
options NETGRAPH_SOCKET
options NETGRAPH_TEE
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE =10
options DUMMYNET
options IPFIREWALL_DEFAULT_TO_ACCEPT
----------------------------------------------------------Прописал в rc.conf такое
----------------------------------------------------------
hostname="server.sata.pp.ua"
ifconfig_rl0="inet 10.10.30.1 netmask 255.255.255.0"
ifconfig_vr0="inet 10.10.3.210 netmask 255.255.252.0"
mpd_enable="YES"
#DNS NAT IPFW
inetd_enable="YES"
natd_enable="YES"
natd_interface="ng0"
natd_flags="-m -u"
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/firewall.conf"
----------------------------------------------------------Как видно из конфига ничего не режется.
Железка старая, но в процессе закачки загрузка проца не больше 20% (766Mhz Celeron +128mb ОЗУ) Что может резать скорость? Витая пара исключается - только 5 метров, аккуратно проложенных. Да и я не думаю что D-link 824vup будет по мощнее моего сервака =((( Потому скорее всего проблема в софтверном плане!Помогите пожалуйста!!!
Добавить в mpd.conf
set iface enable tcpmssfixи заменить natd на ядерный нат.
А что отъедает 20% ресурсов?
> А что отъедает 20% ресурсов?процесс NatD
> Добавить в mpd.conf
> set iface enable tcpmssfix
> и заменить natd на ядерный нат.Что за nat такой на уровне ядра? Где покопать?
PF?
>> Добавить в mpd.conf
>> set iface enable tcpmssfix
>> и заменить natd на ядерный нат.
> Что за nat такой на уровне ядра? Где покопать?man ipfw
на тему nat
поиск через /
>> Добавить в mpd.conf
>> set iface enable tcpmssfix
>> и заменить natd на ядерный нат.
> Что за nat такой на уровне ядра? Где покопать?
> PF?Да, и не толко
pf_nat, ipfw_nat, ng_natПопробуйте PF и посмотрите разницу.
Еще обратите внимание как используется память.
>>> Добавить в mpd.conf
>>> set iface enable tcpmssfix
>>> и заменить natd на ядерный нат.
>> Что за nat такой на уровне ядра? Где покопать?
>> PF?
> Да, и не толко
> pf_nat, ipfw_nat, ng_nat
> Попробуйте PF и посмотрите разницу.
> Еще обратите внимание как используется память.Я вот только не могу понять еще че скорость то режется? Не поверю что natd такой дебильный, что режет со 100мегабит до 3х
Надеюсь с IPFW разберусь ибо PF вообще темный лес с какими то непонятными конфигами.
> Я вот только не могу понять еще че скорость то режется? Не
> поверю что natd такой дебильный, что режет со 100мегабит до 3хnatd не быстр, и может еще в чем то другом проблема.
> Надеюсь с IPFW разберусь ибо PF вообще темный лес с какими то
> непонятными конфигами.Для проверки PF nat не чего сложного нет.
разреши первым правилом в ipfw все
ipfw add 1 pass ip from any to any/etc/pf.conf пропиши вот такую строчку
nat pass on ng0 from 10.10.30.0/24 to any -> ng0
/etc/rc.conf добавьpf_enable="YES"
и запусти PF
/etc/rc.d/pf start
>[оверквотинг удален]
>> непонятными конфигами.
> Для проверки PF nat не чего сложного нет.
> разреши первым правилом в ipfw все
> ipfw add 1 pass ip from any to any
> /etc/pf.conf пропиши вот такую строчку
> nat pass on ng0 from 10.10.30.0/24 to any -> ng0
> /etc/rc.conf добавь
> pf_enable="YES"
> и запусти PF
> /etc/rc.d/pf startЧто не получается раздать компам инет.
На серваке поднимается MPD и врубается инет.
Прописал в /etc/pf.conf
nat pass on ng0 from 10.10.30.0/24 to any -> ng0Но не помогает.
Собирал ядро с такими опциями
-------------------------------------------------
options NETGRAPH
options NETGRAPH_ETHER
options NETGRAPH_SOCKET
options NETGRAPH_TEE
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (R
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Sched
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
device pf
device pflog
device pfsync
-------------------------------------------------В rc.conf прописал
---------------------------------------------------
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_program="/sbin/pfctl"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
pflog_program="/sbin/pflogd"
pflog_flags=""
pfsync_enable="NO"
pfsync_syncdev=""
pfsync_ifconfig=""
-------------------------------------------------Лог прочитать PF не могу вот так пишу
tcpdump -n -e -ttt -r /var/log/pf.log
Выдает
reading from file /var/log/pf.log, link-type PFLOG (OpenBSD pflog file)Не пойму работает PF или не работает вообще?? В top процесс syslogd есть
pflog в данном случае не нужен.смотреть
pfctl -si
pfctl -ss |lesstcpdump -pni ng0
tcpdump -pni vr0
Вообщем такая тема:
Настроил я с горем пополам Pf и нат на нем вот конфиг с которым на компах подключенных к серваку инет работает
-------------------------------------------------
server# cat /etc/pf.conf_new
int_if="vr1"
ext_if="ng0"
localnet="10.10.30.0/24"
set skip on lo0
set skip on $int_if
scrub in all
nat on $ext_if from $localnet to any -> ($ext_if)
antispoof quick for $ext_if
pass out on $ext_if proto tcp to any keep state
pass out on $ext_if proto udp to any keep state
pass inet proto icmp all
-------------------------------------------------Но все таки эта зараза режет скорость!!! Причем так ровненько - на 1мбайт в сек (~8мегабит) И не туды и не сюды, не меньше не больше! Я уже не знаю за что хвататься. Вот top говорит что
CPU: 0.8% user, 0.0% nice, 54.2% system, 36.2% interrupt, 8.8 idle
Это во время закачки
Нужен вывод top -S и systat -v 1
В mpd добавить
set link no acfcomp protocomp
set ipcp no vjcompПопробовать поллинг включить.
Выкинуть из ядра все лишнее.
> Нужен вывод top -S и systat -v 1Вот вывод во время загрузки файла по торренту.
top -S
-----------------------------------------------------------------------------------
last pid: 7574; load averages: 0.70, 0.20, 0.07 up 0+19:55:53 09:49:14
73 processes: 3 running, 54 sleeping, 16 waiting
CPU: 0.9% user, 0.0% nice, 62.9% system, 31.0% interrupt, 5.2% idle
Mem: 15M Active, 58M Inact, 30M Wired, 460K Cache, 21M Buf, 4852K Free
Swap: 223M Total, 223M FreePID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMAND
13 root 1 108 - 0K 8K RUN 11:01 55.96% ng_queue
12 root 16 -60 - 0K 128K WAIT 9:12 32.81% intr
11 root 1 171 ki31 0K 8K RUN 19.4H 5.18% idle
7574 root 1 45 0 3684K 1676K RUN 0:01 2.20% top
6638 admin 1 44 0 9428K 3564K select 0:01 0.29% sshd
0 root 7 8 0 0K 48K - 1:32 0.00% kernel
14 root 1 -16 - 0K 8K - 0:59 0.00% yarrow
4 root 1 -8 - 0K 8K - 0:35 0.00% g_down
3 root 1 -8 - 0K 8K - 0:18 0.00% g_up
20 root 1 44 - 0K 8K syncer 0:18 0.00% syncer
1330 root 1 44 0 6080K 2556K select 0:05 0.00% sendmail
2 root 1 -8 - 0K 8K - 0:04 0.00% g_event
537 _pflogd 1 44 0 3532K 1184K bpf 0:04 0.00% pflogd
19 root 1 44 - 0K 8K vlruwt 0:03 0.00% vnlru
21 root 1 -16 - 0K 8K sdflus 0:02 0.00% softdepflush
941 root 1 44 0 3348K 1120K select 0:02 0.00% syslogd
7 root 1 44 - 0K 8K pftm 0:02 0.00% pfpurge
15 root 4 -64 - 0K 32K - 0:01 0.00% usb
9 root 1 44 - 0K 8K psleep 0:01 0.00% pagedaemon
1362 root 1 44 0 3376K 1140K nanslp 0:01 0.00% cron
18 root 1 44 - 0K 8K psleep 0:01 0.00% bufdaemon
5 root 1 -16 - 0K 8K - 0:01 0.00% fdc0
6653 root 1 44 0 4696K 2180K ttyin 0:00 0.00% csh
7496 root 1 44 0 9496K 3912K select 0:00 0.00% mpd5
6633 root 1 44 0 9428K 3592K sbwait 0:00 0.00% sshd
22 root 1 -32 - 0K 8K flowcl 0:00 0.00% flowcleaner
1 root 1 44 0 2912K 320K wait 0:00 0.00% init
1352 smmsp 1 44 0 6080K 2380K pause 0:00 0.00% sendmail
6645 root 1 44 0 4696K 2176K pause 0:00 0.00% csh
771 root 1 76 0 1888K 420K select 0:00 0.00% devd
530 root 1 76 0 3532K 1160K sbwait 0:00 0.00% pflogd
6650 admin 1 45 0 4696K 2184K pause 0:00 0.00% csh
1302 root 1 44 0 6704K 2712K select 0:00 0.00% sshd
6640 admin 1 47 0 4696K 2184K pause 0:00 0.00% csh
1428 root 1 76 0 3348K 964K ttyin 0:00 0.00% getty
1429 root 1 76 0 3348K 964K ttyin 0:00 0.00% getty
1430 root 1 73 0 3348K 964K ttyin 0:00 0.00% getty
1434 root 1 76 0 3348K 964K ttyin 0:00 0.00% getty
1431 root 1 76 0 3348K 964K ttyin 0:00 0.00% getty
1433 root 1 76 0 3348K 964K ttyin 0:00 0.00% getty
1435 root 1 76 0 3348K 964K ttyin 0:00 0.00% getty
1432 root 1 76 0 3348K 964K ttyin 0:00 0.00% getty
6644 admin 1 51 0 3808K 1480K wait 0:00 0.00% su
6652 admin 1 50 0 3808K 1480K wait 0:00 0.00% su
17 root 1 76 ki-6 0K 8K pgzero 0:00 0.00% pagezero
6 root 1 -32 - 0K 8K waitin 0:00 0.00% sctp_iterator
16 root 1 76 - 0K 8K psleep 0:00 0.00% vmdaemon
10 root 1 -16 - 0K 8K audit_ 0:00 0.00% audit
8 root 1 -32 - 0K 8K ccb_sc 0:00 0.00% xpt_thrd
-----------------------------------------------------------------------------------systat -v 1
-----------------------------------------------------------------------------------
2 users Load 0,82 0,34 0,12 12 50Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 16996 4008 105340 5336 4976 count
All 38348 5624 2218864 11168 pages
Proc: Interrupts
r p d s w Csw Trp Sys Int Sof Flt cow 3102 total
25 4614 7 385 3107 180 zfod 997 clk irq0
ozfod fdc0 irq6
53,7%Sys 38,2%Intr 2,2%User 0,0%Nice 5,9%Idle %ozfod 127 rtc irq8
| | | | | | | | | | | daefr 1016 vr0 irq10
===========================+++++++++++++++++++> prcfr 962 vr1 irq12
13 dtbuf totfr ata0 irq14
Namei Name-cache Dir-cache 7869 desvn react
Calls hits % hits % 6612 numvn pdwak
1953 frevn pdpgs
intrn
Disks ad1 30608 wire
KB/t 0,00 15988 act
tps 0 59652 inact
MB/s 0,00 460 cache
%busy 0 4516 free
21328 buf
-----------------------------------------------------------------------------------Что бы это все значило =)))
Да и хочу заметить что если подключатся через сервак что через роутер маршрутизация одинакова. НАпример
-----------------------------------------------------------------------------------
C:\Users\leviafan>tracert 0day.kiev.uaТрассировка маршрута к 0day.kiev.ua [195.140.178.83]
с максимальным числом прыжков 30:1 <1 мс <1 мс <1 мс 10.10.20.1
2 1 ms 1 ms 1 ms 10.10.63.1
3 1 ms 1 ms 1 ms main-gw.realweb.net.ua [195.114.6.1]
4 18 ms 18 ms 18 ms ge1-2-116.dataline.net.ua [91.204.214.101]
5 17 ms 17 ms 19 ms inetcom-10G-gw.ix.net.ua [195.35.65.83]
6 17 ms 18 ms 17 ms route02-ua.fasty.net [86.111.224.21]
7 17 ms 17 ms 17 ms 0day.kiev.ua [195.140.178.83]Трассировка завершена.
-----------------------------------------------------------------------------------
вообщем проверил установив на 4х ядернике Vmware и +2 сетевые.
Да действительно проблема у меня в оборудовании.
И сразу появилось 2 вопроса:
Почему у D-link у которого частота процессора в 2 раза меньше моего сервака выдает в 2 раза быстрее скорость
И какая нужна тогда конфига что бы все работало достойно?
Или может можно его как то тюнингануть? Говорят вроде что даже на таких машинах старых 100мегабит работало норм...
> И сразу появилось 2 вопроса:
> Почему у D-link у которого частота процессора в 2 раза меньше моего
> сервака выдает в 2 раза быстрее скоростьВозможно у них разные архитектуры и удалено лишнее из ядра, так-же конфиги
заточены под железо.
> И какая нужна тогда конфига что бы все работало достойно?По статистики видно, что ресурсы тратятся на нетграф и на прерывания сетевых карт.
По прерываниям в данном случае только поллинг.
По нетграфу:
добавляли ли в конфиг
set link no acfcomp protocomp
set ipcp no vjcomp
?
Если да, то были ли изменения?Из ядра убрать все лишнее(ipv6, altq и т.д.)
Если nat на PF так-же убрать из ядра ipfw.Есть еще вариант. Так как в MPD есть возможность использовать ng_nat, можно использовать его и отказаться от PF.
> Или может можно его как то тюнингануть? Говорят вроде что даже на
> таких машинах старых 100мегабит работало норм...Возможно, но 100 мегабит бывают разные, точнее pps. Скорее всего это не про pptp говорили.