Difference between revisions of "Jingle/test"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
(psi-media)
(psi and tcpdump logs)
Line 58: Line 58:
 
  18:42:24.588741 IP 89.250.8.14.51357 > 217.25.221.127.60529: UDP, length 92
 
  18:42:24.588741 IP 89.250.8.14.51357 > 217.25.221.127.60529: UDP, length 92
 
  51357 != 49152
 
  51357 != 49152
 +
 +
Лог (в комменте)
 +
<!-- Readying AudioIn:[oss,/dev/dsp1.0], refs=1
 +
codec=speex
 +
rate=16000,width=16,channels=1
 +
changing state...
 +
send clock is master
 +
state changed
 +
sendbin:
 +
  apprtpsink0
 +
  audioencbin:
 +
    rtpspeexpay1
 +
    speexenc1
 +
    capsfilter1
 +
    audioresample2
 +
    audioconvert2
 +
  volume1
 +
queue0
 +
bin0:
 +
  capsfilter0
 +
  audioresample1
 +
  audioconvert1
 +
  osssrc3
 +
tee0
 +
speexdsp0
 +
rtppay caps audio: [application/x-rtp, media=(string)audio, clock-rate=(int)16000, encoding-name=(string)SPEEX, encoding-params=(string)1, payload=(int)110, ssrc=(uint)588367364, clock-base=(uint)2979471036, seqnum-base=(uint)44429]
 +
rtp_started
 +
there are audio payload types
 +
types=1
 +
resolver finished
 +
starting ice for audio
 +
starting transport 89.250.8.14:8010 for component 1
 +
starting transport 89.250.8.14:8011 for component 2
 +
lt_started
 +
lt_started
 +
ice_started
 +
after_ice_started
 +
local candidate ready
 +
flushing local candidates
 +
received validated request or indication
 +
user [Y0jk:9lJb] is wrong.  it should be [Y0jk:].  skipping
 +
received validated request or indication
 +
user [Y0jk:9lJb] is wrong.  it should be [Y0jk:].  skipping
 +
incoming request: [session-accept]
 +
adding 6 remote candidates
 +
6 pairs
 +
1, 89.250.8.14:8010 -> 192.168.0.50:43521
 +
1, 89.250.8.14:8010 -> 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381
 +
2, 89.250.8.14:8011 -> 192.168.0.50:42026
 +
2, 89.250.8.14:8011 -> 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620
 +
1, 89.250.8.14:8010 -> 217.25.221.127:43521
 +
2, 89.250.8.14:8011 -> 217.25.221.127:42026
 +
6 after pruning
 +
connectivity check from 89.250.8.14:8010 to 192.168.0.50:43521
 +
connectivity check from 89.250.8.14:8010 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381
 +
connectivity check from 89.250.8.14:8011 to 192.168.0.50:42026
 +
connectivity check from 89.250.8.14:8011 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620
 +
connectivity check from 89.250.8.14:8010 to 217.25.221.127:43521
 +
connectivity check from 89.250.8.14:8011 to 217.25.221.127:42026
 +
setting up audio recv
 +
creating audioout
 +
using speexechoprobe
 +
Readying AudioOut:[oss,/dev/dsp2.0], refs=1
 +
recv pipeline slaving to send clock
 +
activating
 +
receive pipeline started
 +
connectivity check from 89.250.8.14:8010 to 192.168.0.50:43521
 +
connectivity check from 89.250.8.14:8010 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381
 +
connectivity check from 89.250.8.14:8011 to 192.168.0.50:42026
 +
connectivity check from 89.250.8.14:8011 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620
 +
connectivity check from 89.250.8.14:8010 to 217.25.221.127:43521
 +
connectivity check from 89.250.8.14:8011 to 217.25.221.127:42026
 +
connectivity check from 89.250.8.14:8010 to 192.168.0.50:43521
 +
connectivity check from 89.250.8.14:8010 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381
 +
connectivity check from 89.250.8.14:8011 to 192.168.0.50:42026
 +
connectivity check from 89.250.8.14:8011 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620
 +
connectivity check from 89.250.8.14:8010 to 217.25.221.127:43521
 +
connectivity check from 89.250.8.14:8011 to 217.25.221.127:42026
 +
connectivity check from 89.250.8.14:8010 to 192.168.0.50:43521
 +
connectivity check from 89.250.8.14:8010 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381
 +
connectivity check from 89.250.8.14:8011 to 192.168.0.50:42026
 +
connectivity check from 89.250.8.14:8011 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620
 +
connectivity check from 89.250.8.14:8010 to 217.25.221.127:43521
 +
connectivity check from 89.250.8.14:8011 to 217.25.221.127:42026
 +
audio: average packet size=82, kbps=41
 +
connectivity check from 89.250.8.14:8010 to 192.168.0.50:43521
 +
connectivity check from 89.250.8.14:8010 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381
 +
connectivity check from 89.250.8.14:8011 to 192.168.0.50:42026
 +
connectivity check from 89.250.8.14:8011 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620
 +
connectivity check from 89.250.8.14:8010 to 217.25.221.127:43521
 +
connectivity check from 89.250.8.14:8011 to 217.25.221.127:42026
 +
cleaning up...
 +
recv clock reverts to auto
 +
Releasing AudioIn:[oss,/dev/dsp1.0], refs=0
 +
Releasing AudioOut:[oss,/dev/dsp2.0], refs=0
 +
cleaning done.
 +
 +
 +
18:42:24.447999 IP 217.25.221.127.60529 > 89.250.8.14.49152: UDP, length 88
 +
18:42:24.448350 IP 217.25.221.127.59057 > 89.250.8.14.49153: UDP, length 88
 +
18:42:24.586957 IP 89.250.8.14.49152 > 192.168.0.50.60529: UDP, length 92
 +
18:42:24.587776 IP 89.250.8.14.49153 > 192.168.0.50.59057: UDP, length 92
 +
18:42:24.588741 IP 89.250.8.14.51357 > 217.25.221.127.60529: UDP, length 92
 +
18:42:24.589200 IP 89.250.8.14.51358 > 217.25.221.127.59057: UDP, length 92
 +
18:42:25.052413 IP 217.25.221.127.60529 > 89.250.8.14.49152: UDP, length 88
 +
18:42:25.052504 IP 217.25.221.127.59057 > 89.250.8.14.49153: UDP, length 88
 +
18:42:25.087511 IP 89.250.8.14.51357 > 192.168.0.50.60529: UDP, length 92
 +
18:42:25.087991 IP 89.250.8.14.51358 > 192.168.0.50.59057: UDP, length 92
 +
18:42:25.088759 IP 89.250.8.14.51359 > 217.25.221.127.60529: UDP, length 92
 +
18:42:25.089194 IP 89.250.8.14.51360 > 217.25.221.127.59057: UDP, length 92
 +
18:42:26.087639 IP 89.250.8.14.51359 > 192.168.0.50.60529: UDP, length 92
 +
18:42:26.088175 IP 89.250.8.14.51360 > 192.168.0.50.59057: UDP, length 92
 +
18:42:26.088796 IP 89.250.8.14.51361 > 217.25.221.127.60529: UDP, length 92
 +
18:42:26.089204 IP 89.250.8.14.51362 > 217.25.221.127.59057: UDP, length 92
 +
18:42:26.260050 IP 217.25.221.127.60529 > 89.250.8.14.49152: UDP, length 88
 +
18:42:26.260080 IP 217.25.221.127.59057 > 89.250.8.14.49153: UDP, length 88
 +
18:42:28.088040 IP 89.250.8.14.51361 > 192.168.0.50.60529: UDP, length 92
 +
18:42:28.088480 IP 89.250.8.14.51362 > 192.168.0.50.59057: UDP, length 92
 +
18:42:28.088983 IP 89.250.8.14.51363 > 217.25.221.127.60529: UDP, length 92
 +
18:42:28.089265 IP 89.250.8.14.51364 > 217.25.221.127.59057: UDP, length 92
 +
18:42:28.653533 IP 217.25.221.127.60529 > 89.250.8.14.49152: UDP, length 88
 +
18:42:28.653726 IP 217.25.221.127.59057 > 89.250.8.14.49153: UDP, length 88
 +
18:42:32.088035 IP 89.250.8.14.51363 > 192.168.0.50.60529: UDP, length 92
 +
18:42:32.088537 IP 89.250.8.14.51364 > 192.168.0.50.59057: UDP, length 92
 +
18:42:32.089002 IP 89.250.8.14.51365 > 217.25.221.127.60529: UDP, length 92
 +
18:42:32.089313 IP 89.250.8.14.51366 > 217.25.221.127.59057: UDP, length 92
 +
18:42:32.969277 IP 77.198.33.58.8826 > 89.250.9.95.35691: UDP, length 62
 +
-->

Revision as of 17:49, 26 June 2011

Конфигурация сети

  • Binary: Primary: Indepndent Mapping, Port Dependent Filter, preserves ports, no hairpin
  • Leksey: Primary: Indepndent Mapping, Port Dependent Filter, random port, no hairpin (nat на базе pf с nat on $ext_if from $int_net to any -> $ext_addr)
  • leksey@дома: Primary: Port Restricted Nat, preserves ports, no hairpin (natd, FreeBSD 7.0 natd_enable="YES")
  • b108: Primary: Indepndent Mapping, Port Dependent Filter, preserves ports, no hairpin (Return value is 0x000017)

Версии ПО

  • Empathy версия 2.30.2 из Ubuntu 10.04.1 LTS (lsb_release -a) - настройки STUN в этом клиенте нету. Может брать из SRV? Но надо тогда чтобы у обоих JID был прописан у сервера?

Результаты

  • Empathy leksey => Gmail leksey' pal в браузере под MS Windows (ставится плагин бинарный в браузер, чтоб можно было звонить) = голос слышали на стороне MS Windows, изображения не было (не умеет? или не сработало?)
  • Empathy leksey => Gajim binary - не получилось установить соединение, кроме того, встретился баг Gajim с тем что клиент после первой попытки соединения полагает что оно уже установлено и отвергает последующие
  • Empathy leksey <=> Empathy leksey' soworker - все работало - кроме звука в одну сторону. Но машины были в одной локалке при этом.
  • Empathy leksey <=> Empathy b108 (21 April 2011) - не установилось даже соединение
  • HabaHaba leksey <=> Empathy b108 (21 April 2011) - голос в обе стороны работал. но проблема что после минуты-другой падал флэш хабовский.

Клиенты которые следует проверить

  • Psi c Psimedia (в генте есть пакет psimedia, который вроде ставится и на обычную пси)
  • Psi+ c Psimedia
  • Gajim
  • Jitsi
  • Habahaba

  • В дебиане кривая сборка Psi+ - падает.
  • Jitsi нет в репозитариях Ubuntu

Которые нет смысла проверять

  • Gajim для MS Windows - тот фреймворк что они используют для виндоза отсутствует

Определение конфигурации

Берется из вывода stun-клиента, запущенного следующим образом. Версия для MS Windows, FreeBSD, Ubuntu (sudo apt-get install stun)

stun_client stun.xten.com
MS Windows
client.exe stunserver.org

Описание NAT

Random port означает, что данная реализация NAT не заботится о том, чтобы номер порта источника в исходящем наружу пакете оставался таким же, каким он был получен от хоста локальной сети, и заменяет его на случайное значение в диапазоне от 1024 до 65535. Можно предположить, что по замыслу автора идеи «random ports» такая замена уменьшает вероятность конфликта между записями, если несколько хостов локальной сети одновременно попытаются отправить наружу пакеты с совпадающим номером порта источника.

Поскольку номер порта источника в исходящих пакетах формируется хостами локальной сети также случайным образом, преимущества такой замены сомнительны, из недостатков же можно назвать хотя бы потенциальную проблему с протоколом RPC, да и не только.

Как видно из примера, наш маршрутизатор старается сохранять номер порта неизменным (11.22.33.44:1053 и 192.168.0.141:1053), из чего следует, что запущенный в его локальной сети STUN-клиент сообщил бы о нем preserves ports.

К слову, на FreeBSD этот результат достигается ключом «-same_ports» или «-s» в строчке запуска или конфигурационном файле демона natd. Есть возможность поставить ключ и проверить?


FreeBSD, Psi 0.14 + Psi-media

Внешний IP с единственной настройкой в rc.conf ifconfig_age0="dhcp"

Проблема - случайно выбирается порт для установления соединения, что не позволяет работать когда на одной из сторон NAT. Видимо, psi не делает специального указания, с какого порта слать

  • Сменен порт в настройках Psi (в поле Data transfer base port) с 8010 на 49152 (в соответствие с The Ephemeral Port Range). Поле Data transfer externak adress для указания "внешнего" адреса при работе со STUN и поэтому оно должно быть пустым.

Не помогло.

  • Выключена рандомизация (Ports are allocated at random within the specified port range in order to increase the difficulty of random spoofing attacks) sysctl net.inet.ip.portrange.randomized=0

После этого вместо рандовного выбора - стало последовательно наращивать адреса, но тоже выбирая рандомно их диапазон.

18:42:24.588741 IP 89.250.8.14.51357 > 217.25.221.127.60529: UDP, length 92
51357 != 49152

Лог (в комменте)