The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"pptpclient и mtu/mru"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Сеть. проблемы, диагностика / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"pptpclient и mtu/mru"  +/
Сообщение от Slonic email(ok) on 09-Май-06, 18:45 
Добрый день, помогите разобраться с непонятками.
Проблема в следующем: подключаюсь с помощью pptpclient`а к провайдеру. Соединение проходит нормально, аутентификация, выдача адреса и т.д. Инет пингую и вижу, начинаю юзать инет (ходить по сайтам и т.д.)начинают сыпаться ошибки типа этой

pptp[209]: anon log[decaps_gre:pptp_gre.c:407]: buffering packet 1103 (expecting 1101, lost or reordered)

Увеличив размер пакета пинга выяснил, что при 1432 байтах пинги уже не проходят. Решил уменьшить значение mtu для канала до прова, вот тут-то и возникла загвоздка :( Дописываю  set mtu 1000 в ppp.conf, но канал поднимается с mtu 1500 :( В чем проблема? Может его не туда дописывать надо??? Или я не правильно понял проблему?

PS: FreeBSD 4.11, pptpclient-1.7.0

ppp.conf
THEOFFICE:
set log Phase Chat LCP IPCP CCP tun command
set authname login
set authkey password
set mtu 1400
set mru 1400
set timeout 0
set ifaddr 0 0
alias enable yes
add default HISADDR

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "pptpclient и mtu/mru"  +/
Сообщение от Заноза on 09-Май-06, 19:15 
>Добрый день, помогите разобраться с непонятками.
>Проблема в следующем: подключаюсь с помощью pptpclient`а к провайдеру. Соединение проходит нормально,
>аутентификация, выдача адреса и т.д. Инет пингую и вижу, начинаю юзать
>инет (ходить по сайтам и т.д.)начинают сыпаться ошибки типа этой
>
>pptp[209]: anon log[decaps_gre:pptp_gre.c:407]: buffering packet 1103 (expecting 1101, lost or reordered)
>
>Увеличив размер пакета пинга выяснил, что при 1432 байтах пинги уже не
>проходят. Решил уменьшить значение mtu для канала до прова, вот тут-то
>и возникла загвоздка :( Дописываю  set mtu 1000 в ppp.conf,
>но канал поднимается с mtu 1500 :( В чем проблема? Может
>его не туда дописывать надо??? Или я не правильно понял проблему?
>
>
>PS: FreeBSD 4.11, pptpclient-1.7.0
>
>ppp.conf
>THEOFFICE:
> set log Phase Chat LCP IPCP CCP tun command
> set authname login
> set authkey password
> set mtu 1400
> set mru 1400
> set timeout 0
> set ifaddr 0 0
> alias enable yes
> add default HISADDR


по идеи значение mtu - это значения для физического интерфейса, почему пинг при размере 1432 не проходит, то тут видимо привышает допустимую отметку, пакеты по идеи сперва gre икапсулируются, а потом дальше по езернету, думаю еще если там НАТ ему это тоже может в частности работе gre

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "pptpclient и mtu/mru"  +/
Сообщение от satelit on 09-Май-06, 19:35 
>Добрый день, помогите разобраться с непонятками.
>Проблема в следующем: подключаюсь с помощью pptpclient`а к провайдеру. Соединение проходит нормально,
>аутентификация, выдача адреса и т.д. Инет пингую и вижу, начинаю юзать
>инет (ходить по сайтам и т.д.)начинают сыпаться ошибки типа этой
>
>pptp[209]: anon log[decaps_gre:pptp_gre.c:407]: buffering packet 1103 (expecting 1101, lost or reordered)
>
>Увеличив размер пакета пинга выяснил, что при 1432 байтах пинги уже не
>проходят. Решил уменьшить значение mtu для канала до прова, вот тут-то
>и возникла загвоздка :( Дописываю  set mtu 1000 в ppp.conf,
>но канал поднимается с mtu 1500 :( В чем проблема? Может
>его не туда дописывать надо??? Или я не правильно понял проблему?
>
>
>PS: FreeBSD 4.11, pptpclient-1.7.0
>
>ppp.conf
>THEOFFICE:
> set log Phase Chat LCP IPCP CCP tun command
> set authname login
> set authkey password
> set mtu 1400
> set mru 1400
> set timeout 0
> set ifaddr 0 0
> alias enable yes
> add default HISADDR

Тут не у интерфейса прописывать надо, по крайней мере у меня в файре есть специальное правило, которое выставляет send-mss в нужный размер, седня уже позно, а завтра с утра посмотрю и напишу здесь это правило, а вообще, подругому проблему решить не удалось.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "pptpclient и mtu/mru"  +/
Сообщение от Slonic email(ok) on 09-Май-06, 19:52 
>Тут не у интерфейса прописывать надо, по крайней мере у меня в
>файре есть специальное правило, которое выставляет send-mss в нужный размер, седня
>уже позно, а завтра с утра посмотрю и напишу здесь это
>правило, а вообще, подругому проблему решить не удалось.

Нашел в описании ppp следующую опцию:
             [tcp]mssfixup
         Default: Enabled.    This option tells ppp to adjust TCP SYN pack-
         ets so that the maximum receive segment size is not greater than
         the amount allowed by the interface MTU.

Может дело в этом? Не из-за этого ли игнорируются настройки mtu для канала и выставляются неправильные праметры (ведь канал внутри езернета по определению не может иметь mtu=1500)?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "pptpclient и mtu/mru"  +/
Сообщение от Заноза on 09-Май-06, 20:39 
(ведь канал внутри езернета по определению
>не может иметь mtu=1500)?

>Нашел в описании ppp следующую опцию:
>            


1500 это максимальный размер, а почему не может то?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "pptpclient и mtu/mru"  +/
Сообщение от Slonic email(ok) on 09-Май-06, 21:03 
>1500 это максимальный размер, а почему не может то?

Ну так инкапсуляция-же. Пакет внутри пакета. "Размер пакета внутри" = "максимальный размер пакета снаружи (1500)" - "заголовок пакета снаружи". Так как, размер заголовка всегда больше нуля, максимальный размер инкапсулированного пакета не может быть равен 1500. Ну что-то типа того...

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "pptpclient и mtu/mru"  +/
Сообщение от ru (??) on 10-Май-06, 03:27 
ppp2      Link encap:Point-to-Point Protocol
          inet addr:192.168.2.1  P-t-P:192.168.2.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1400  Metric:1
          RX packets:3504 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3885 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:552142 (539.2 Kb)  TX bytes:2713565 (2.5 Mb)

Вот вам пптп интерфейс секите какой у него мту 1400
У PPPoE будет 1490 если память не изменяет
А вот пинги через сей итрерфейс
ping 192.168.2.2 -s 1500
PING 192.168.2.2 (192.168.2.2) 1500(1528) bytes of data.
1508 bytes from 192.168.2.2: icmp_seq=1 ttl=128 time=1.11 ms
1508 bytes from 192.168.2.2: icmp_seq=2 ttl=128 time=1.09 ms
1508 bytes from 192.168.2.2: icmp_seq=3 ttl=128 time=1.14 ms

Как это видно идут и должны идти

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "pptpclient и mtu/mru"  +/
Сообщение от Slonic email(ok) on 10-Май-06, 06:37 
>Вот вам пптп интерфейс секите какой у него мту 1400
>У PPPoE будет 1490 если память не изменяет
>А вот пинги через сей итрерфейс
>ping 192.168.2.2 -s 1500
>Как это видно идут и должны идти

Не совсем понял смысл поста... Ну и? У вас мту стоит ниже или равное мту у провайдера. Соответственно каждый пинг, больше 1400 минус заголовок Ip, посылается не одним пакетом, а двумя. Если же увеличить мту (чтобы оно стало больше мту со стороны провайдера), то соответственно и пинги, размер которых будет больше мту прова и меньше мту у вас, перестанут ходить...
В общем-то это все понятно, вопрос в том, как управлять размером мту?

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "pptpclient и mtu/mru"  +/
Сообщение от ru (??) on 10-Май-06, 08:06 

>В общем-то это все понятно, вопрос в том, как управлять размером мту?
>


ifconfig есть такая команда !!!!!!!!!!!

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "pptpclient и mtu/mru"  +/
Сообщение от Slonic email(ok) on 10-Май-06, 09:27 
>ifconfig есть такая команда !!!!!!!!!!!

хммм, странности продолжаются... уменьшил mtu, результат тотже :( Пинги до 1432 идут, потом нет. Пробовал mtu 1400,1432 и 1440...

tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1400
        inet 192.168.1.1 --> 172.16.0.2 netmask 0xffffffff

PING ya.ru (213.180.204.8): 1500 data bytes
--- ya.ru ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss

PING ya.ru (213.180.204.8): 1432 data bytes
1440 bytes from 213.180.204.8: icmp_seq=0 ttl=60 time=57.852 ms
1440 bytes from 213.180.204.8: icmp_seq=1 ttl=60 time=58.031 ms

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "pptpclient и mtu/mru"  +/
Сообщение от ru (??) on 10-Май-06, 10:24 
А у тебя случайно не асинхронный канал ???
У меня такая тема была с провом
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "pptpclient и mtu/mru"  +/
Сообщение от Slonic email(ok) on 10-Май-06, 11:59 
>А у тебя случайно не асинхронный канал ???
>У меня такая тема была с провом
Честно, не знаю. Провайдер состоит из пары человек, поэтому выудить из них какую-то информацию крайне трудно...
Имеется ввиду какой канал? Физический или тот что pptpшный?
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

7. "pptpclient и mtu/mru"  +/
Сообщение от satelit on 10-Май-06, 03:31 
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1350
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "pptpclient и mtu/mru"  +/
Сообщение от Slonic email(ok) on 10-Май-06, 06:31 
>iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS
>--set-mss 1350

А через ipfw как?

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

17. "pptpclient и mtu/mru"  +/
Сообщение от sw on 09-Ноя-08, 11:55 
>iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS
>--set-mss 1350

если не добавлять это правило, то соединения с некоторыми серверами не устанавливаются вообще, например с mail.ru

с этим правилом соединения устанавливаются но сообщение "anon log[decaps_gre:pptp_gre.c:407]: buffering packet 5636 (expecting 5632, lost or reordered)
" все равно сыпятся и заметно меньше скорость соединений, замерял на speedtest.net на винде pptp-соединение в 10 раз быстрее чем на linux (

вот исходники этой части в pptp, может что-то здесь можно поправить...
decaps_gre:pptp_gre.c


/*** decaps_gre ***************************************************************/
int decaps_gre (int fd, callback_t callback, int cl)
{
    unsigned char buffer[PACKET_MAX + 64 /*ip header*/];
    struct pptp_gre_header *header;
    int status, ip_len = 0;
    static int first = 1;
    unsigned int headersize;
    unsigned int payload_len;
    u_int32_t seq;

    if ((status = read (fd, buffer, sizeof(buffer))) <= 0) {
        warn("short read (%d): %s", status, strerror(errno));
        stats.rx_errors++;
        return -1;
    }
    /* strip off IP header, if present */
    if ((buffer[0] & 0xF0) == 0x40)
        ip_len = (buffer[0] & 0xF) * 4;
    header = (struct pptp_gre_header *)(buffer + ip_len);
    /* verify packet (else discard) */
    if (    /* version should be 1 */
            ((ntoh8(header->ver) & 0x7F) != PPTP_GRE_VER) ||
            /* PPTP-GRE protocol for PPTP */
            (ntoh16(header->protocol) != PPTP_GRE_PROTO)||
            /* flag C should be clear   */
            PPTP_GRE_IS_C(ntoh8(header->flags)) ||
            /* flag R should be clear   */
            PPTP_GRE_IS_R(ntoh8(header->flags)) ||
            /* flag K should be set     */
            (!PPTP_GRE_IS_K(ntoh8(header->flags))) ||
            /* routing and recursion ctrl = 0  */
            ((ntoh8(header->flags)&0xF) != 0)) {
        /* if invalid, discard this packet */
        warn("Discarding GRE: %X %X %X %X %X %X",
                ntoh8(header->ver)&0x7F, ntoh16(header->protocol),
                PPTP_GRE_IS_C(ntoh8(header->flags)),
                PPTP_GRE_IS_R(ntoh8(header->flags)),
                PPTP_GRE_IS_K(ntoh8(header->flags)),
                ntoh8(header->flags) & 0xF);
        stats.rx_invalid++;
        return 0;
    }
    /* silently discard packets not for this call */
    if (ntoh16(header->call_id) != pptp_gre_call_id) return 0;
    /* test if acknowledgement present */
    if (PPTP_GRE_IS_A(ntoh8(header->ver))) {
        u_int32_t ack = (PPTP_GRE_IS_S(ntoh8(header->flags)))?
            header->ack:header->seq; /* ack in different place if S = 0 */
        ack = ntoh32( ack);
        if (ack > ack_recv) ack_recv = ack;
        /* also handle sequence number wrap-around  */
        if (WRAPPED(ack,ack_recv)) ack_recv = ack;
        if (ack_recv == stats.pt.seq) {
            int rtt = time_now_usecs() - stats.pt.time;
            stats.rtt = (stats.rtt + rtt) / 2;
        }
    }
    /* test if payload present */
    if (!PPTP_GRE_IS_S(ntoh8(header->flags)))
        return 0; /* ack, but no payload */
    headersize  = sizeof(*header);
    payload_len = ntoh16(header->payload_len);
    seq         = ntoh32(header->seq);
    /* no ack present? */
    if (!PPTP_GRE_IS_A(ntoh8(header->ver))) headersize -= sizeof(header->ack);
    /* check for incomplete packet (length smaller than expected) */
    if (status - headersize < payload_len) {
        warn("discarding truncated packet (expected %d, got %d bytes)",
                payload_len, status - headersize);
        stats.rx_truncated++;
        return 0;
    }
    /* check for expected sequence number */
    if ( first || (seq == seq_recv + 1)) { /* wrap-around safe */
        if ( log_level >= 2 )
            log("accepting packet %d", seq);
        stats.rx_accepted++;
        first = 0;
        seq_recv = seq;
        return callback(cl, buffer + ip_len + headersize, payload_len);
    /* out of order, check if the number is too low and discard the packet.
     * (handle sequence number wrap-around, and try to do it right) */
    } else if ( seq < seq_recv + 1 || WRAPPED(seq_recv, seq) ) {
        if ( log_level >= 1 )
            log("discarding duplicate or old packet %d (expecting %d)",
                seq, seq_recv + 1);
        stats.rx_underwin++;
    /* sequence number too high, is it reasonably close? */
    } else if ( seq < seq_recv + MISSING_WINDOW ||
                WRAPPED(seq, seq_recv + MISSING_WINDOW) ) {
        stats.rx_buffered++;
        if ( log_level >= 1 )
            log("%s packet %d (expecting %d, lost or reordered)",
                disable_buffer ? "accepting" : "buffering",
                seq, seq_recv+1);
        if ( disable_buffer ) {
            seq_recv = seq;
            stats.rx_lost += seq - seq_recv - 1;
            return callback(cl, buffer + ip_len + headersize, payload_len);
        } else {
            pqueue_add(seq, buffer + ip_len + headersize, payload_len);
        }
    /* no, packet must be discarded */
    } else {
        if ( log_level >= 1 )
            warn("discarding bogus packet %d (expecting %d)",
                 seq, seq_recv + 1);
        stats.rx_overwin++;
    }
    return 0;
}

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

14. "pptpclient и mtu/mru"  +/
Сообщение от Евгений (??) on 29-Авг-07, 12:46 
>pptp[209]: anon log[decaps_gre:pptp_gre.c:407]: buffering packet 1103 (expecting 1101, lost or reordered)

эту ошибку решили?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "pptpclient и mtu/mru"  +/
Сообщение от Мо имя on 24-Апр-08, 12:11 
Всё ещё не решили??
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "pptpclient и mtu/mru"  +/
Сообщение от чичако on 28-Июн-08, 04:04 
>Всё ещё не решили??

Видимо нет, потому как поиск ничего не дает, у мя тож самое

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

18. "pptpclient и mtu/mru"  +/
Сообщение от Yaten (??) on 05-Дек-08, 15:44 
>>Всё ещё не решили??
>
>Видимо нет, потому как поиск ничего не дает, у мя тож самое
>

У меня такая же проблема. Только вот у меня в составе канала есть ADSL. Как лечить то? кто может всетаки знает??

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

19. "pptpclient и mtu/mru"  +/
Сообщение от AdviZzzor email on 12-Май-09, 19:11 
>>>Всё ещё не решили??
>>
>>Видимо нет, потому как поиск ничего не дает, у мя тож самое
>>
>
>У меня такая же проблема. Только вот у меня в составе канала
>есть ADSL. Как лечить то? кто может всетаки знает??

Вот опции, отключите логи и все. у меня все работает. До этого срало в логи безбожно, просто мегатоннами, ротэйтица не успевало.

config_ppp0=( "ppp" )
link_ppp0=( "pty 'pptp 10.7.15.253 --nolaunchpppd --nobuffer --loglevel 0'" )

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "pptpclient и mtu/mru"  +/
Сообщение от v on 01-Сен-09, 01:15 
>[оверквотинг удален]
>>>
>>
>>У меня такая же проблема. Только вот у меня в составе канала
>>есть ADSL. Как лечить то? кто может всетаки знает??
>
>Вот опции, отключите логи и все. у меня все работает. До этого
>срало в логи безбожно, просто мегатоннами, ротэйтица не успевало.
>
>config_ppp0=( "ppp" )
>link_ppp0=( "pty 'pptp 10.7.15.253 --nolaunchpppd --nobuffer --loglevel 0'" )

набрел на это
http://www.gentoo.ru/node/9394#comment-74993
мне помогло

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

21. "pptpclient и mtu/mru"  +/
Сообщение от EsTaF (??) on 17-Фев-10, 00:09 
>[оверквотинг удален]
>>
>>Вот опции, отключите логи и все. у меня все работает. До этого
>>срало в логи безбожно, просто мегатоннами, ротэйтица не успевало.
>>
>>config_ppp0=( "ppp" )
>>link_ppp0=( "pty 'pptp 10.7.15.253 --nolaunchpppd --nobuffer --loglevel 0'" )
>
>набрел на это
>http://www.gentoo.ru/node/9394#comment-74993
>мне помогло

а какая разница между правкой файла туннеля и пересборкой пакета?
поправить файл туннеля легче же. да и гибче это.

другое дело - аудит можно отключить, но если скорость превысит мегабит 15, клиент туннеля мерзнет, пока его не передернешь, все равно.

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

22. "pptpclient и mtu/mru"  +/
Сообщение от netmaster aka Грозный Ламер email on 01-Дек-10, 07:20 
> и возникла загвоздка :( Дописываю  set mtu 1000 в ppp.conf,
> но канал поднимается с mtu 1500 :( В чем проблема? Может
> его не туда дописывать надо??? Или я не правильно понял проблему?

Попробуйте set mtu maximum 1400

Если я правильно понял, set mtu 1400 запрашивает (или устанавливает) mtu 1400, если сервер предлагает меньше. А set mtu max 1400 устанавливает максимально допустимый mtu, с которым серверу приходится согласиться.

У pppd, который как я полагаю вы используете, есть диагностический сервер, в котором команды доступны с интерактивной подсказкой (set mtu ?). Пример включения сервера на прослушивание локального сокета:
default:
set socket /var/run/ppp/ctl ppp

Подключение по pppctl /var/run/ppp/ctl с паролем ppp

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

23. "pptpclient и mtu/mru"  +/
Сообщение от netmaster aka Грозный Ламер email on 01-Дек-10, 07:25 
> У pppd, который как я полагаю вы используете, есть диагностический сервер, в

Т. е. извиняюсь, у ppp

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру