URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 90264
[ Назад ]

Исходное сообщение
"Шлюз с подключением по VPN, проблема сокорости"

Отправлено leviafanovich , 10-Ноя-10 16:25 
Суть проблемы заключается в том что при связке 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 будет по мощнее моего сервака =((( Потому скорее всего проблема в софтверном плане!

Помогите пожалуйста!!!


Содержание

Сообщения в этом обсуждении
"Шлюз с подключением по VPN, проблема сокорости"
Отправлено alb , 10-Ноя-10 17:35 
Добавить в mpd.conf
    set iface enable tcpmssfix

и заменить natd на ядерный нат.


"Шлюз с подключением по VPN, проблема сокорости"
Отправлено alb , 10-Ноя-10 18:16 
А что отъедает 20% ресурсов?

"Шлюз с подключением по VPN, проблема сокорости"
Отправлено leviafanovich , 10-Ноя-10 18:29 
> А что отъедает 20% ресурсов?

процесс NatD


"Шлюз с подключением по VPN, проблема сокорости"
Отправлено leviafanovich , 10-Ноя-10 18:30 
> Добавить в mpd.conf
>     set iface enable tcpmssfix
> и заменить natd на ядерный нат.

Что за nat такой на уровне ядра? Где покопать?
PF?


"Шлюз с подключением по VPN, проблема сокорости"
Отправлено PavelR , 10-Ноя-10 18:32 
>> Добавить в mpd.conf
>>     set iface enable tcpmssfix
>> и заменить natd на ядерный нат.
> Что за nat такой на уровне ядра? Где покопать?

man ipfw

на тему nat

поиск через /


"Шлюз с подключением по VPN, проблема сокорости"
Отправлено alb , 10-Ноя-10 19:00 
>> Добавить в mpd.conf
>>     set iface enable tcpmssfix
>> и заменить natd на ядерный нат.
> Что за nat такой на уровне ядра? Где покопать?
> PF?

Да, и не толко
pf_nat, ipfw_nat, ng_nat

Попробуйте PF и посмотрите разницу.
Еще обратите внимание как используется память.  


"Шлюз с подключением по VPN, проблема сокорости"
Отправлено leviafanovich , 10-Ноя-10 19:10 
>>> Добавить в mpd.conf
>>>     set iface enable tcpmssfix
>>> и заменить natd на ядерный нат.
>> Что за nat такой на уровне ядра? Где покопать?
>> PF?
> Да, и не толко
> pf_nat, ipfw_nat, ng_nat
> Попробуйте PF и посмотрите разницу.
> Еще обратите внимание как используется память.

Я вот только не могу понять еще че скорость то режется? Не поверю что natd такой дебильный, что режет со 100мегабит до 3х

Надеюсь с IPFW разберусь ибо PF вообще темный лес с какими то непонятными конфигами.


"Шлюз с подключением по VPN, проблема сокорости"
Отправлено alb , 10-Ноя-10 19:49 
> Я вот только не могу понять еще че скорость то режется? Не
> поверю что 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


"Шлюз с подключением по VPN, проблема сокорости"
Отправлено leviafanovich , 11-Ноя-10 17:38 
>[оверквотинг удален]
>> непонятными конфигами.
> Для проверки 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 есть


"Шлюз с подключением по VPN, проблема сокорости"
Отправлено alb , 11-Ноя-10 18:21 
pflog в данном случае не нужен.

смотреть
pfctl -si
pfctl -ss |less

tcpdump -pni ng0
tcpdump -pni vr0


"Шлюз с подключением по VPN, проблема сокорости"
Отправлено leviafanovich , 11-Ноя-10 22:36 
Вообщем такая тема:
Настроил я с горем пополам 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
Это во время закачки


"Шлюз с подключением по VPN, проблема сокорости"
Отправлено alb , 12-Ноя-10 13:22 
Нужен вывод top -S и systat -v 1

"Шлюз с подключением по VPN, проблема сокорости"
Отправлено alb , 12-Ноя-10 15:19 
В mpd добавить
set link no acfcomp protocomp
set ipcp no vjcomp

Попробовать поллинг включить.
Выкинуть из ядра все лишнее.



"Шлюз с подключением по VPN, проблема сокорости"
Отправлено leviafanovich , 12-Ноя-10 17:40 
> Нужен вывод 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 Free

  PID 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        50

Mem: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]

Трассировка завершена.
-----------------------------------------------------------------------------------


"Шлюз с подключением по VPN, проблема сокорости"
Отправлено leviafanovich , 12-Ноя-10 23:56 
вообщем проверил установив на 4х ядернике Vmware и +2 сетевые.
Да действительно проблема у меня в оборудовании.
И сразу появилось 2 вопроса:
Почему у D-link у которого частота процессора в 2 раза меньше моего сервака выдает в 2 раза быстрее скорость
И какая нужна тогда конфига что бы все работало достойно?
Или может можно его как то тюнингануть? Говорят вроде что даже на таких машинах старых 100мегабит работало норм...

"Шлюз с подключением по VPN, проблема сокорости"
Отправлено alb , 16-Ноя-10 15:05 
> И сразу появилось 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 говорили.