Size: a a a

2019 January 21

VG

Vadim Goncharov in freebsd_ru
еще даже во времена PCBSD 9
источник

MZ

Michael マイケル Zhilin ジリン in freebsd_ru
Экспонента
какой интерфейс приоритетнее - проводной или беспроводной? при условии, что я их никак не настраивал, лишь пара строк в rc.conf:
wlans_iwn0="wlan0"
ifconfig_em0="DHCP"
ifconfig_wlan0="WPA DHCP"
Если оба интерфейса подключены к одному роутеру, то Андрей правильно ответил - приоритет у обоих одинаковый. Ибо DHCP выдаст тебе одинаковые маршруты и один и тот же default route
источник

DE

Dima Endo in freebsd_ru
Коллеги, всем привет. Может кто знает или сможет направить.
Имеется 12.0-STABLE r343098 , сетевая ixl  X710 10G

На машине в джейле живет сервис long-polling, который обслуживает от 300 до 500 тыс HTTP-соединений (как на вход, так и на выход, это сервер-прокси).
Джейлу присвоено множество серых IP, nginx при проксировании делает proxy_bind к этим IP по заданному алгоритму, вобщем перегрузки по отдельно каждому IP нет по исходящим портам (это для устранения проблемы с нестатком исходящих портов на машине).

Собственно сервис работает, если используется bind() вызов для установки соединения с этого джейла наружу.
Проблема в том, что если не делать bind() , то соединения исходящие не работают.
Как выглядит:
telnet ya.ru 80
Trying 87.250.250.242...
telnet: connect to address 87.250.250.242: Can't assign requested address

Но если указать bind первого же IP у джейла  - все ок
telnet -s 10.10.30.76 ya.ru 80
Trying 87.250.250.242...
Connected to YA.ru.
Escape character is '^]'.

Смотря под truss, вызов connect()  выполняется за дичайшее время 260+мс, если не выполнять bind()
0.273159720 connect(3,{ AF_INET 87.250.250.242:80 },16) ERR#49 'Can't assign requested address'
telnet: 0.000031149 write(2,"telnet: ",8)                = 8 (0x8)

Если выполнять bind() то все шикарно и быстро
0.000024584 bind(3,{ AF_INET 10.10.30.76:0 },16) = 0 (0x0)
0.000161753 connect(3,{ AF_INET 10.10.10.90:80 },16) = 0 (0x0)

Есть ли известные проблемы с выбором исходящего IP/порта, байндингом, работой в джейле при большом кол-ве установленных соединений?
(п.с. проблема начинает проявляться при большом кол-ве соединений, )

procstat -kk на процесс в момент попытки установки соединения
 PID    TID COMM                TDNAME              KSTACK
28437 101677 telnet              -                   in_pcb_lport+0x1d4 in_pcbbind_setup+0x1f6 in_pcbbind+0x58 tcp_connect+0x1e8 tcp_usr_connect+0xc4 soconnect+0xad kern_connectat+0x106 sys_connect+0x77 amd64_syscall+0x352 fast_syscall_common+0x101
источник

DE

Dima Endo in freebsd_ru
много текста, прошу простить
источник

KV

Kirill Varnakov in freebsd_ru
может файрволл или нат не настроен для всех IP...
источник

DE

Dima Endo in freebsd_ru
Пробовал и без нат, Коннект во внутрисеть - аналогично проблема есть. Нат проверил перебрав все серые и сделав байнд на каждый для исход соединения. Не похоже.
источник

AE

Andrey Elsukov in freebsd_ru
in_pcb_lport возвращает EADDRNOTAVAIL, когда не смогла найти свободных портов
источник

DE

Dima Endo in freebsd_ru
Верно. Но вот почему не смогла. Ведь на первом IP в этом джейле - порты точно есть, а на сколько вижу берется всегда первый IP
источник

AE

Andrey Elsukov in freebsd_ru
in_pcb_lport вызывается в конце всей процедуры настройки адреса порта при коннекте
источник

AE

Andrey Elsukov in freebsd_ru
адрес уже выбран, выбирается порт
источник

AE

Andrey Elsukov in freebsd_ru
откат назад к выбору другого адреса не предусмотрен
источник

AE

Andrey Elsukov in freebsd_ru
реализуйте это в приложении
источник

DE

Dima Endo in freebsd_ru
В приложении проблем то и нет, это проблема со всем, что есть в системе  и что не использует bind()  , типа fetch telnet и т.п.
источник

DE

Dima Endo in freebsd_ru
т.е. пользоваться джейлм невозможно, это система что-то не предусматривает
источник

DE

Dima Endo in freebsd_ru
Забавная тема с этим еще в том, что если из джейла выполнять попытки сделать telnet , то на всей машине, на всем интерфейсе - появляются задержки и дропы, типа
   packets  errs idrops      bytes    packets  errs      bytes colls drops
      48k     0     0       6.7M        51k     0       8.1M     0     0
      37k     0   192       5.6M        45k     0       6.6M     0     0
      39k     0    40       5.5M        42k     0       6.6M     0     0

т.е. этот поиск порта выполняет что-то большое и тяжелое, что лочит весь интерфейс
источник

AF

Andrey F in freebsd_ru
vmm(4) Sponsored by:   Dell EMC Isilon страсти какие
источник

M

MK in freebsd_ru
OpenBSD'шный vmm втащили что ли?
источник

M

MK in freebsd_ru
А vmd? Иначе на кой оно...
источник

AF

Andrey F in freebsd_ru
чё бы, просто оно везде так обзывается vmm.ko - bhyve virtual machine monitor
источник

M

MK in freebsd_ru
Ааа
источник