The OpenNET Project / Index page

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

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

"FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от oser on 16-Мрт-12, 07:32 
Доброго времени всем!

Столкнулся с интересным поведением физического устройства при создании на нём туннелей gif/gre.

Имеем физическое устройство rl0, являющееся default gateway.
Создаем туннель gre0, который будет устанавливаться через rl0.

Здесь уже можем наблюдать занимательный эффект - mtu rl0 будет фактически установлено как и у gre0. Например rl0: mtu 1500, gre0: mtu 1476, то rl0 фактически будет работать с mtu 1476.
И даже удалив gre0 (ifconfig gre0 destroy), rl0 останется работать с mtu 1476. Сколько отсюда косяков вылазит думаю рассказывать не стоит.

Собственно вопрос это таки БАГ или ФИЧА?

PS. При использовании PPPoE (через tun) данного эффекта не наблюдается.

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

Оглавление

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


1. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от Felixz email(??) on 16-Мрт-12, 09:18 
> Доброго времени всем!
> Столкнулся с интересным поведением физического устройства при создании на нём туннелей
> gif/gre.
> Имеем физическое устройство rl0, являющееся default gateway.
> Создаем туннель gre0, который будет устанавливаться через rl0.
> Здесь уже можем наблюдать занимательный эффект - mtu rl0 будет фактически установлено
> как и у gre0. Например rl0: mtu 1500, gre0: mtu 1476,
> то rl0 фактически будет работать с mtu 1476.
> И даже удалив gre0 (ifconfig gre0 destroy), rl0 останется работать с mtu
> 1476. Сколько отсюда косяков вылазит думаю рассказывать не стоит.

Физический интерфейс работает с MTU 1500 в любом случае, установка тунелей на него не влияет. А вот gif интерфейсы работают с MTU 1500 за вычетом GRE оверхеда (1476). И как бе одно другому не мешает.

Как проверяли rl0 на предмет MTU и чем создавали GRE тунель?

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

2. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от oser on 16-Мрт-12, 09:32 
> Физический интерфейс работает с MTU 1500 в любом случае, установка тунелей на
> него не влияет. А вот gif интерфейсы работают с MTU 1500
> за вычетом GRE оверхеда (1476). И как бе одно другому не
> мешает.
> Как проверяли rl0 на предмет MTU и чем создавали GRE тунель?

Это всё теория..
По факту
- до создания туннеля
#ping -D -s 1472 ya.ru
PING ya.ru (87.250.250.203): 1472 data bytes
1480 bytes from 87.250.250.203: icmp_seq=0 ttl=57 time=154.727 ms

- создали туннель gre0, маршрут до ya.ru никоим образом не идёт через gre0, а всё также через rl0
#ping -D -s 1472 ya.ru
PING ya.ru (87.250.250.203): 1472 data bytes
ping: sendto: Message too long

Как???
Если вместо rl0 будет tun0, то отрабатывает всё как надо

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

3. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от Felixz email(??) on 16-Мрт-12, 11:30 
Занятно. А на uname -a & ifconfig & netstat -rn дадите посмотреть?

Чем создаёте тунели?

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

4. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от oser on 16-Мрт-12, 12:24 
> Занятно. А на uname -a & ifconfig & netstat -rn дадите посмотреть?

#uname -sr
FreeBSD 8.2-RELEASE-p6

#ifconfig
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
gre0: flags=9051<UP,POINTOPOINT,RUNNING,LINK0,MULTICAST> metric 0 mtu 1476

# traceroute -n ya.ru
traceroute: Warning: ya.ru has multiple addresses; using 87.250.250.3
traceroute to ya.ru (87.250.250.3), 64 hops max, 40 byte packets
1  X.X.X.X  8.520 ms  7.456 ms  6.739 ms
...
т.е. полетел именно через дефолтный маршрут rl0


> Чем создаёте тунели?

ifconfig gre0 create
ifconfig gre0 inet L.L.L.b/30 L.L.L.a tunnel X.X.X.X Y.Y.Y.Y

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

5. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от Felixz email(??) on 16-Мрт-12, 14:21 
Очень похоже на баг (ИМХО), т.к. судя по исходникам if_tun и if_gre процедуры инициализации практически идентичны:

tun
        case SIOCSIFMTU:
                ifp->if_mtu = ifr->ifr_mtu;
                TUNDEBUG(ifp, "mtu set\n");
                break;
gre
        case SIOCSIFMTU:
                /*
                 * XXXRW: Isn't this priv_check() redundant to the ifnet
                 * layer check?
                 */
                if ((error = priv_check(curthread, PRIV_NET_SETIFMTU)) != 0)
                        break;
                if (ifr->ifr_mtu < 576) {
                        error = EINVAL;
                        break;
                }
                ifp->if_mtu = ifr->ifr_mtu;
                break;

Остаётся интересен момент, после создании gre0 какой максимальной величины пакеты пролезают?

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

6. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от oser on 16-Мрт-12, 14:29 
> Очень похоже на баг (ИМХО), т.к. судя по исходникам if_tun и if_gre
> процедуры инициализации практически идентичны:
>...

Исходничек я тоже глянул, с тем же результатом.

> Остаётся интересен момент, после создании gre0 какой максимальной величины пакеты пролезают?

Логично, что 1476 - 28, т.е. максимально ping -D -s 1448, при этом, если я удалил все туннели, то это значение так и остается максимальным.

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

7. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от Felixz email(??) on 16-Мрт-12, 14:43 
> Логично, что 1476 - 28, т.е. максимально ping -D -s 1448, при
> этом, если я удалил все туннели, то это значение так и
> остается максимальным.

Если принудительно выставить мту на rl0 обратно в 1500 эффект есть?
З.Ы. Надеюсь, нетграф в этот момент не задействован?

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

8. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от oser on 16-Мрт-12, 14:55 
> Если принудительно выставить мту на rl0 обратно в 1500 эффект есть?

При понижении mtu до 1476 на rl0 и обратно - всё остаётся по прежнему. Пробовать опустить mtu на rl0 ниже 1476 (при отсутствии gre) нет желания - сервачки боевые.

> З.Ы. Надеюсь, нетграф в этот момент не задействован?

netgraph не пользуется, вообще левого ничего не пользуется, кроме кваги (ospf) и pf

P.S. Сам жду выходных, чтоб таки выяснить что же это за фигня такая..

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

9. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от Felixz email(??) on 16-Мрт-12, 15:12 
> P.S. Сам жду выходных, чтоб таки выяснить что же это за фигня
> такая..

Удачи! Если получится победить - хочется узать как.

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

10. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от oser on 17-Мрт-12, 07:38 
Виновником сего буйства оказался ospfd из пакета quagga

# pkg_info -x quag
Information for quagga-0.99.20_3

Причем, после останова кваги, интерфейс не восстанавливается (down up, настройка mtu - не помогают), единственным надежным выходом остается перезагрузка.

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

11. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от lavr email on 17-Мрт-12, 23:55 
> Виновником сего буйства оказался ospfd из пакета quagga
> # pkg_info -x quag
> Information for quagga-0.99.20_3
> Причем, после останова кваги, интерфейс не восстанавливается (down up, настройка mtu -
> не помогают), единственным надежным выходом остается перезагрузка.

send-pr обязательно

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

12. "FreeBSD баг или фича при использовании gif/gre ?"  +/
Сообщение от oser on 19-Мрт-12, 15:39 
> send-pr обязательно

Как-то не приходилось оформлять PR, и особого желания разбираться чего там и как нет..

Проверял на 8.1 и 8.2 GENERIC (+модуль if_gre/if_gif) - проблема себя проявляет.
На 8.3-RC1 всё работает как и полагается, без неожиданных эффектов, на том же самом пакете quagga.

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

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

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




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

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