masterzep 9 Posted 2011-02-17 13:23:55 Share Posted 2011-02-17 13:23:55 Всем привет! Столкнулся с проблемой и не могу найти решения. Есть 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" но это не изменило значений Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now