Jump to content
Калькуляторы

Win + Linux PPPoE BRAS - низкая скорость передачи Низкая скорость передачи данных

Всем привет!

 

Столкнулся с проблемой и не могу найти решения. Есть PPPoE (ядерный rp-pppoe.so) BRAS на базе Linux Debian. На нем крутится NAT и шейпинг.

 

1) При подключение с Win XP клиента (ДАЖЕ без шейпинга интерфейса, без ната) скорость передачи данных к клиенту не поднимается выше 30-50Мбит, соединение между ними 100base-T. Измерения скорости проводились торентами и флешевыми тестами.

2) При подключении того-же Win XP клиента через роутер (D-Link DIR-615) + оконечивание PPPoE на этом же роутере, проблема счезает. Даже флешевые тесты показывают скорость в обе стороны приближенную к канальной ~ 97 Мбит/сек.

3) При подключении Linux клиента к BRAS через PPPoE - проблема исчезает, скорость максимально возможная.

 

В настройках сервера PPPoE, параметр MTU установлен в автоматическом режиме. Полез смотреть в сторону TCP MSS. Запустил tcpdump на вэб-сервере и зашел на страницу:

 

 

При подключении из Win XP - MTU на обеих сторонах 1480, рассогласований нет:

 

13:50:00.195943 IP CLIENT_IP.3536 > WEB_SERV_IP.www: S 1746232114:1746232114(0) win 65535 <mss 1440,nop,wscale 2,nop,nop,sackOK>

13:50:00.195981 IP WEB_SERV_IP.www > CLIENT_IP.3536: S 4040982219:4040982219(0) ack 1746232115 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 7>

13:50:00.207458 IP CLIENT_IP.3536 > WEB_SERV_IP.www: . ack 1 win 65340

13:50:00.207664 IP CLIENT_IP.3536 > WEB_SERV_IP.www: P 1:458(457) ack 1 win 65340

13:50:00.207695 IP WEB_SERV_IP.www > CLIENT_IP.3536: . ack 458 win 54

13:50:00.233633 IP WEB_SERV_IP.www > CLIENT_IP.3536: P 1:492(491) ack 458 win 54

13:50:00.233698 IP WEB_SERV_IP.www > CLIENT_IP.3536: F 492:492(0) ack 458 win 54

13:50:00.238783 IP CLIENT_IP.3536 > WEB_SERV_IP.www: . ack 493 win 65217

13:50:00.239080 IP CLIENT_IP.3536 > WEB_SERV_IP.www: F 458:458(0) ack 493 win 65217

13:50:00.239096 IP WEB_SERV_IP.www > CLIENT_IP.3536: . ack 459 win 54

 

При подключении Win XP через DIR-615 - MTU на обеих сторонах 1492, рассогласований нет.

 

13:58:45.950662 IP CLIENT_IP.3048 > WEB_SERV_IP.www: S 3816467849:3816467849(0) win 65535 <mss 1452,nop,wscale 3,nop,nop,timestamp 0 0,nop,nop,sackOK>

13:58:45.950695 IP WEB_SERV_IP.www > CLIENT_IP.3048: S 3692826051:3692826051(0) ack 3816467850 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 7>

13:58:45.951712 IP CLIENT_IP.3048 > WEB_SERV_IP.www: . ack 1 win 32768

13:58:45.952016 IP CLIENT_IP.3048 > WEB_SERV_IP.www: P 1:274(273) ack 1 win 32768

13:58:45.952043 IP WEB_SERV_IP.www > CLIENT_IP.3048: . ack 274 win 54

13:58:45.953054 IP WEB_SERV_IP.www > CLIENT_IP.3048: P 1:1395(1394) ack 274 win 54

13:58:45.953127 IP WEB_SERV_IP.www > CLIENT_IP.3048: F 1395:1395(0) ack 274 win 54

13:58:45.954486 IP CLIENT_IP.3048 > WEB_SERV_IP.www: . ack 1396 win 32593

13:58:45.958107 IP CLIENT_IP.3048 > WEB_SERV_IP.www: F 274:274(0) ack 1396 win 32593

13:58:45.958122 IP WEB_SERV_IP.www > CLIENT_IP.3048: . ack 275 win 54

 

Немного теории:

 

Параметр MTU (Maximum Transmit Unit) отвечает за максимальный размер передаваемого пакета. Если размер пакета будет больше, чем может пропустить маршрутизатор, то он будет разделен, что сразу скажется на скорости и пропускной способности. Если параметр не указать принудительно, значение будет выставлено автоматически и, увы, не всегда рационально. Рассчитывать его следует так. Максимальный размер фрейма Ethernet – 1518 байт, из них 14 – заголовок и 4 – контроль (то есть полезная нагрузка равна 1500 байт). Далее PPPoE отбирает еще 6 байт, а PPP – 2. В итоге значение MTU для PPPoE должно составлять не более 1492.

 

При установлении TCP соединения каждая сторона выставляет параметр Maximum Segment Size (MSS), определяющий максимальный размер TCP сегмента на всем пути. По умолчанию его значение берется, как MTU для исходящего интерфейса минус размер заголовков TCP и IP (40). Исходя из этого, максимальное значение MSS для Ethernet будет равняться 1460, а для PPPoE – 1452.

 

Вопрос по результатам:

 

Почему MSS ack не равен MSS syn ? Хотя в случае через роутер по идее тоже должны быть проблемы, но их нет....

В чем может быть проблема?

 

П.С. Пробовал выставить на BRASe "iptables -A FORWARD -i ppp{NUM} -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1430" но это не изменило значений

Edited by zep

Share this post


Link to post
Share on other sites
Поставьте на сервере MTU 1400 и не мучьтесь.

Стояло. Куча проблем. Во многих абонентских устройствах MTU выставлено по-умолчанию не в автоматическом режиме. Начинает "плавится" телефон у тех. поддержки.

Share this post


Link to post
Share on other sites

Вот мои настройки:Тоже дебиан.

Проблем со скоростью нет. Ни на роутерах ни на винде.

 

# PPP options for the PPPoE server

# LIC: GPL

lcp-echo-interval 10

lcp-echo-failure 2

 

mtu 1480

mru 1480

 

auth

+mschap-v2

+mschap

+chap

nomppe

 

#Fit MSS to PMTU (Actual for routers)

$IPTABLES -t filter -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Share this post


Link to post
Share on other sites

Проблема нашлась имеено в Win XP. Поставил драйвер PPPoE стороннего производителя ( http://www.raspppoe.com ) И... Торрент, флешевые тесты ожили!

Пошел проверил работу на штатном PPP адаптере в Win 7, плясок с бубном непотребовалось. Тест флешем и торентом показал такой-же замечательный результат. Вообщем - привет мелкомягким.

 

Всем спасибо за внимание!

 

2 Ivan Rostovikov:

Устанавливать жестко MTU на BRASe я бы все-таки не стал на вашем месте. Будут жалобы в духе - Mail.ru не открывается и т.д.

Share this post


Link to post
Share on other sites

mssfix юзайте на сервере своём, со скоростью не поможет, скорее всего, зато всё открываться будет.

Share this post


Link to post
Share on other sites
Устанавливать жестко MTU на BRASe я бы все-таки не стал на вашем месте. Будут жалобы в духе - Mail.ru не открывается и т.д.
Жестко ставим 1400 и для пппое и для пптп. Никаких жалоб.

А вот если не ставить - то винда с перепугу порой 1500 назначает (хотя это актуально для пптп, если память не подводит, штатный пппое вроде как не пучит).

 

P.S. В свое время clamp-mss-to-pmtu на брасе привел к падению скорости и прочим лагам, от того - убрал нах.

Edited by NiTr0

Share this post


Link to post
Share on other sites
mssfix юзайте на сервере своём, со скоростью не поможет, скорее всего, зато всё открываться будет.
Специально для Вас:

 

 

Пока стояло наявно указано MTU на BRASe, были рассогласования с абонентскими устройствами. Сейчас все отлично, никаких MTU 1500. Даже не переубеждайте. Проверено временем.

 

И кстати, MTU 1500 на PPP - это скорее всего результаты эксперементов пользователя, всякие тюнеры сетевого стека.

 

П.С. Проверил clamp-mss-to-pmtu - мне тоже показалось, что скорость стала еще хуже, особенно в торентах

Edited by zep

Share this post


Link to post
Share on other sites

>Будут жалобы в духе - Mail.ru не открывается и т.д.

Жалобы - это если не делать clamp-mss-to-pmtu. А с ним у меня все отлично.

 

Share this post


Link to post
Share on other sites
Жалобы - это если не делать clamp-mss-to-pmtu. А с ним у меня все отлично

Надоело повторять: жалобы на неправильную фрагментацию будут, тогда, когда МТУ будет несогласовано сторонами. Вы наверно не понимаете о чем говорите и поэтому решаете проблему костылем clamp-mss-to-pmtu.

Edited by zep

Share this post


Link to post
Share on other sites
Жалобы - это если не делать clamp-mss-to-pmtu. А с ним у меня все отлично

Надоело повторять: жалобы на неправильную фрагментацию будут, тогда, когда МТУ будет несогласовано сторонами. Вы наверно не понимаете о чем говорите и поэтому решаете проблему костылем clamp-mss-to-pmtu.

Окей, у меня и у клиента-пира, скажем, 1000. Все согласовано, всё чин чином.

А вот PayPal например упорно шлет TCP с MSS 1400. Что делать - clamp'ить mss или сказать клиенту не ходить на пейпал, потому что у них Web-сервер кривой?

Share this post


Link to post
Share on other sites
Надоело повторять: жалобы на неправильную фрагментацию будут, тогда, когда МТУ будет несогласовано сторонами. Вы наверно не понимаете о чем говорите и поэтому решаете проблему костылем clamp-mss-to-pmtu.
И как они будут согласовывать, если мегасервероадмин какого нибудь сервера зарежет ICMP по самые пинги?

И Вы всем клиентам с роутерами предлагаете: "пофиксить MTU на сетевом интерфейсе"?

 

На фряхе оно работает оч быстро в ядре: контрольную сумму не пересчитывает полностью а только изменённого, пакеты матчатся тоже парой сравнений.

Share this post


Link to post
Share on other sites

>Вы наверно не понимаете.

Все мы чего то не понимаем. Однако clamp - работает и этого достаточно.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this