Opened 3 years ago
Closed 3 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 )
- Создаю на плате VE-02 окончание, например FXS.
- SIP-телефон Yealink T21 подключаю к порту LAN и регистрирую как SIP-пользователя платы VE-02
- Совершаю вызов FXS-> Yealink
Во время разговора наблюдается односторонняя слышимость, нет звука в направлении FXS->Sip и из LAN порта RTP пакетов от окончания FXS я не вижу совсем.
Воспроизводится в ПО VE-02 ревизии 33 и 34.
Стенд для проверки собрал у alx и продемонстрировал ему воспроизведение проблемы.
Change History (4)
comment:1 by , 3 years ago
Component: | any → VE-02 |
---|
comment:2 by , 3 years ago
Description: | modified (diff) |
---|
comment:3 by , 3 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 29 29 set -e 30 30 out -n "starting $DESC: $NAME... " 31 31 sysctl -w net.unix.max_dgram_qlen=256 32 sysctl -w net.ipv4.conf.eth1.accept_local=1 32 33 config_load system 33 34 config_foreach config_args system 34 35 start-stop-daemon -b -S -n $NAME -a $PROG -p $PIDFILE -- $ARGS
comment:4 by , 3 years ago
Resolution: | → готово |
---|---|
Status: | new → closed |
Обновление в репозитории (ревизия прошивки 35).
В номере версии ПО была опечатка.