🎃

End to EndでのTURNのテスト方法

2022/04/25に公開

はじめに

coturnに付属しているturnutils_uclientとturnutils_peerをつかったE2Eのテストの簡易メモとなります。

この2個はセットと考えてよくturnutils_uclientは指定のTURNサーバへの接続の後で、End To Endの動作確認にturnutils_peerとの疎通を確認する動きになっている。

E2Eでの確認が不要の場合

End to Endの確認が不要で、TURNへの接続のみ確認する場合は次のURLで可能です。

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

turnutils_uclient

./turnutils_uclient -t -e xxx.xxx.xxx.xxx -r 3578 -v -p 3478 -u 'user' -w 'password' turn.my-domain.biz
  • turn.my-domain.bizがTURNのホスト名
  • xxx.xxx.xxx.xxxは、turnutils_peerを起動したサーバのIP
  • 3578はturnutils_peerを起動した際の引数で、通信先
  • 3478はTURNのポート番号
  • -tでTURNまでをTCPで通信、-uだとTURNまでをUDPで通信
  • TURNまではTCPを想定
  • turnutils_peerやTURNとは別のサーバで稼働させるのが望ましい

turnutils_peer

./turnutils_peer -v -p 3578 -L 0.0.0.0
  • turnutils_uclientより前に起動させておく。
  • turnutils_uclientはTURNサーバとの接続後に、指定されてるturnutils_peerと通信を実施する。
  • IPを限定する場合は0.0.0.0を編集
  • 3578が稼働するポートだが、実際には指定ポートと+1番のポートで2個のポートを使用する。
  • これらのポートはfirewalld/iptables/パケットフィルタ等で許可する。
  • turnutils_uclientやTURNとは別のサーバで稼働させるのが望ましい

成功時

1: start_mclient: msz=2, tot_send_msgs=0, tot_recv_msgs=0, tot_send_bytes ~ 0, tot_recv_bytes ~ 0
2: start_mclient: msz=2, tot_send_msgs=0, tot_recv_msgs=0, tot_send_bytes ~ 0, tot_recv_bytes ~ 0
3: start_mclient: msz=2, tot_send_msgs=0, tot_recv_msgs=0, tot_send_bytes ~ 0, tot_recv_bytes ~ 0
4: start_mclient: msz=2, tot_send_msgs=5, tot_recv_msgs=5, tot_send_bytes ~ 500, tot_recv_bytes ~ 500
5: start_mclient: msz=2, tot_send_msgs=5, tot_recv_msgs=5, tot_send_bytes ~ 500, tot_recv_bytes ~ 500
6: start_mclient: msz=2, tot_send_msgs=5, tot_recv_msgs=5, tot_send_bytes ~ 500, tot_recv_bytes ~ 500
6: start_mclient: tot_send_msgs=10, tot_recv_msgs=10
6: start_mclient: tot_send_bytes ~ 1000, tot_recv_bytes ~ 1000
6: Total transmit time is 6
6: Total lost packets 0 (0.000000%), total send dropped 0 (0.000000%)
6: Average round trip delay 2.300000 ms; min = 2 ms, max = 4 ms
6: Average jitter 0.800000 ms; min = 0 ms, max = 5 ms

turnutils_peerが起動していない場合は、Total lost packetsが100%となる。

今後の課題

turnutils_uclientでTURNまでをTLSで接続する方法の調査

Discussion