|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Sergey Korolew 2:6053/1.2 21 Jan 2004 14:13:16 To : All Subject : mpd и потерянные пакеты (no buffer space available) -------------------------------------------------------------------------------- Прошу у всех прощения за задержку - приболел слегка :-( В этом письме предистория, в следующем - патч. В pptpgre-ноде измеряется время от передачи пакета до получения подтверждения gre-ack на него, накапливается статистика и корректируется размер окна передачи. Что это означает - нода передает бурстом (в пачке) только n-ое количество пакетов, остальные притормаживаются до получения подтверждения на уже отосланные, в это время при попытке отослать еще нода возвращает NOMBUFS (то самое no buffer space available). В моем случае засада возникает из-за чрезмерно умного железа (радиокарты), которые имеют тенденцию накапливать мелкие пакеты в буфере и потом передавать их за один раз. При просмотре tcpdumpом я наблюдал до 32 (!) gre-ack пакетов за один раз с запаздыванием до секунды (!!!). Hо максимальный размер окна передачи 16, плюс с того конца линка работает тот же самый адаптивный алгоритм, в результате имеем следующую ситуацию - у обоих передатчиков размер окна становится 1. Самостоятельно разрулиться это в случае с WinXP не может (mpt-mpd линк теоретически способен, при определенной настройке). Сервер на poptop работает неплохо - он просто тупо шлет пакеты, без излишнего интеллекта. Теперь об грустном. Hа этом же линке у нас повреждаются gre-пакеты :-( Как ни странно - ни tcp ни udp пакеты не повреждаются (либо нормально работают контрольные суммы - у gre контрольных сумм нет). Поэтому немалая часть изменений была сделана для попыток отбраковки битых пакетов и разрешения пересинхронизации последовательности (в публичном патче все это выкинуто). Увы, я понял, что бороться подобным образом с битыми пакетами - примерно то же самое что вычерпывать море ложкой :-( То есть в принципе оно получается (с кучей изменений в ng_pptpgre и ng_mppc), но все равно остается вторая сторона - XP.. Сейчас этот вариант работает на нескольких production-серверах, проблем нет. Всего наилучшего, Sergey aka DS --- GoldED+/W32 snapshot-2001.03.04 * Origin: Hету. Придумывать лень. (2:6053/1.2) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/2220400e514f.html, оценка из 5, голосов 10
|