Opened 2 years ago

Closed 2 years ago

#389 closed баг (готово)

Нет RTP-трафика окончание -> SIP-телефон (LAN)

Reported by: san Owned by: alx
Priority: высокий Milestone: 1 очередь
Component: VE-02 Keywords:
Cc:

Description (last modified by san)

  1. Создаю на плате VE-02 окончание, например FXS.
  2. SIP-телефон Yealink T21 подключаю к порту LAN и регистрирую как SIP-пользователя платы VE-02
  3. Совершаю вызов FXS-> Yealink

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

Воспроизводится в ПО VE-02 ревизии 33 и 34.
Стенд для проверки собрал у alx и продемонстрировал ему воспроизведение проблемы.

Change History (4)

comment:1 by san, 2 years ago

Component: anyVE-02

comment:2 by san, 2 years ago

Description: modified (diff)

В номере версии ПО была опечатка.

comment:3 by alx, 2 years ago

При генерации трафика RTP в направлении сети LAN (eth2) пакеты сначала передаются из MSP в CSP (через интерфейс eth1), после чего CSP должен их форвардить в интерфейс eth2 согласно таблице маршрутизации.

В ядре имеется ряд проверок валидности подлежащих форвардингу пакетов. Среди них проверяется, что адрес отправителя - пакета - внешний юникастовый. Так как пакеты RTP, генерируемые MSP, имеют адрес отправителя такой же, как у интерфейса eth0, эти пакеты данную проверку не проходили, и CSP их дропал.

Чтобы этого не происходило, в наше ядро сначала была портирована (из более поздних ядре) sysctl-настройка accept_local, разрешающая прием таких пакетов. Это было сделано давно, когда я экспериментировал с форвардингом RTP в LAN. Позже вместо нее на ядро стал накладываться более тривиальный патч, разрешающий форвардить такие пакеты всегда без всякой настройки.

Как показала проверка, в результате какой-то досадной ошибки в пакет ve-02-csp попал не самый последний вариант ядра, то есть с настройкой accept_local. Так как эту настройку никто не включает, ядро ведет себя так, как и без нее - то есть дропает пакеты RTP, приходящие от MSP.

Сейчас я выпущу обновление пакета ve-02-csp, содержащее правильное ядро. В качестве временного workaround могу предложить добавить в файл /etc/init.d/sip_ua.sh такую строчку:

  • sip_ua.sh

    old new  
    2929    set -e
    3030    out -n "starting $DESC: $NAME... "
    3131    sysctl -w net.unix.max_dgram_qlen=256
     32    sysctl -w net.ipv4.conf.eth1.accept_local=1
    3233    config_load system
    3334    config_foreach config_args system
    3435    start-stop-daemon -b -S -n $NAME -a $PROG -p $PIDFILE -- $ARGS

comment:4 by alx, 2 years ago

Resolution: готово
Status: newclosed

Обновление в репозитории (ревизия прошивки 35).

Note: See TracTickets for help on using tickets.