いろ電話研究所の研究日誌

TELNYX で SIP URI を取得、運用する

2022-06-06 17:14

ここ数回、VoIPクラウドサービスの Twilio を紹介してきた。Twilio は既存の電話網(PSTN)と、VoIPクライアントをシームレスに連携するゲートウェイの機能を提供しているものの、実は VoIP to VoIPコールという機能についてはほぼ提供していない。

PSTN網を使わず、VoIP同士で通話できれば運用コストはとても安くできるので、これまでのような通話料という形でユーザに転嫁する必要はない。しかし、ユーザ同士が直接VoIP でつながってしまうと、VoIPプロバイダーとしての Twilio の稼ぎどころがなくなってしまう(Twilio はコストの掛かる PSTN網と VoIP とのゲートウェイを提供し、ユーザには通話料という形で利用料を課金、利益を出している)ためだ。

限定的には使える VoIP to VoIPコール

限定的には、VoIP to VoIP での通話ができる。条件としては、同じ SIP Domain に収容されたユーザ同士が通話する場合。例えば、SIP URI で sip:alice@example.sip.twilio.com というユーザが、sip:bob@example.sip.twilio.com というユーザと通話することができる。この場合、通話料として 0.51円/分がかかる。これは発信側だけでなく着信側にも必要なので、2人が通話するには 1.02円/分が必要ということになる。(なぜこんな料金体系なのかというと、3人以上でのカンファレンスコールも可能だからだ)

この場合、SIP Proxy として sip.tokyo.twilio.com を使えば、メディア変換などは Twilio側でよろしくやってくれる。(例えば Alice は PCMU、Bob は PCMA しか使えなくても通話できる)

しかし、 sip:alice@example.sip.twilio.com というユーザが、sip:carol@other-sip-domain.sip.twilio.com というユーザへ通話しようとして SIP INVITE を送ると、Twilio は 403 Forbidden を返してくる。

SIP Proxy を使わず、P2Pコールとして SIP URI を直接 INVITE した場合も、同様に 403 Forbidden が返されて接続させてもらえない。

Twilio を基盤に使っているユーザ同士が結託し、お互いの SIP URI をシェアするようになると通話料で利益を出すビジネスモデルが破綻するので、穴は塞いである、といったところだろうか。

そもそも SIP URI ってなに?

そもそもの前提としての、SIP URI がなにか、という点をカンタンに説明しておく。

PSTN では各回線に紐づいて、電話番号が発番され、この番号を使うことで発着信を行っている。正確には発信側には電話番号は必要なく、通話したい相手を指定するのに使うだけなので着信側だけ電話番号を持っていればよい。

電話番号は世界中でユニークになるように各国地域政府間(実際は、その実務を行う国際機関ITU-T)で調整されていて、各国地域には国番号・地域番号が払い出され、この国番号・地域番号の下は各国各地域でルールを作って番号計画を作っていくことになっている。

米国は +1、英国は +44、日本は +81 が割り当てられているので、実はふだんの日本の生活で日本人が使っている電話番号も正しくは、+81 から始まる番号が割り振られていると考えてよい。これは、日常で使う番号が 052-CDE-FGHJ だった場合、本来の番号は +8152CDEFGHJ なのだ。ただし国内での通話が 99% 以上を占めるだろう通話を行うに当たって、わざわざ毎回、+81 から入力するのは大変だということで、+81 に相当するショートカットとして 0 を使っている。(0AB~J番号の先頭の 0 は正確には電話番号の一部ではない)

米国なんかは文化が違うので、日本みたいに州内通話でエリアコードが同じなどの場合は、エリアコード以後の番号だけで通話できるが、異なるエリアコード(遠方、同じ州でも違うエリアコードを割り当てられてしまっている人へ)に通話する時は、1 から始まる番号で通話する。日本の電話における 0 の役割を、米国では 1 に割り当てており、かつ国番号も 1 を使っているので混乱が少ない。

なお、国番号は国や地域ごとにちゃんと分かれて割り当てられているわけではないので小さな国の場合は、他国のキャリアに電話網の構築をアウトソーシングしていることがあってその場合は、上位キャリアの国の国番号からエリアコードに相当する識別コードを使った番号計画になっていることもある。(例えばプエルトリコは米国に国番号 1 の下でエリアコードとして 787 を割り当て、+1787 が国番号に相当するプリフィックスになっている。英国王室領マン島は英国の国番号 44 の下でエリアコードとして 1624 を割り当てて、+441624 が国番号に相当するプリフィックスになっている)

話を SIP URI に戻すと、VoIP界での SIP という規格を使った際の電話番号に相当するのが SIP URI になる。電話番号の場合は、数字のみで取り扱いたいという成約があったため、国番号やエリアコードといった面倒くさい仕組みがあり、かつキャリアも無尽蔵に番号を確保できるわけではないので各ユーザに発番する際に、ある程度の制約を設けている。(発番ごとに利用料を徴収する、など)

2022年6月現在、日本だと 0AB~J番号は先頭の 0 も含めて 10桁、090/080/070 から始まる携帯電話番号、050 から始まる IP電話番号は 11桁を使っている。020 から始まる M2M用の電話番号に当初は 11桁を割り当てていたものの、今後は枯渇が予想されることから、0200 で始まる 14桁の割当に変わった。(ケタ数を増やせば割り当てられる回線数を増やせるが、通話するときのダイヤル操作が煩雑になる。M2M はもっぱら機械で使用され、人間が操作しないのでケタ数の過多は関係ない)

ちなみに米国は、1 から始まる番号に固定電話も携帯電話も収容されていて(番号だけでは区別できない)、+1-3ケタエリアコード-3ケタ局コード-4ケタユーザコードという、11ケタを使っている。例えばワシントンD.C. にある在米日本大使館の代表番号は、+1-202-238-6700 になっている。

SIP URI の場合は、主にコンピュータを使っての操作になることから電話機のように数字のみという制約はなくなり、数字とアルファベットと記号(@、. など)を使った文字列を使えるようになった。ケタ数の制約もないことから、ほぼ無尽蔵に SIP URI を発行することができる。

この SIP URI は、

sip: [ユーザ識別文字列(ユーザ名など)] @ [SIPプロバイダのドメイン名で払い出される FQDN or IPアドレス] ( : [ポート番号]) ( ; [その他オプション])

というフォーマットになっており、ITU-T への登録などの作業は必要なく、FQDN を確保できる環境であれば誰でも作ることができる。FQDN を確保できる環境とは、独自ドメイン名などを運用していれば良いので、タダではできないがほぼゼロコストで運用できると考えて良い。

この SIP URI はぱっと見たところでは電子メイルアドレスとまったく同じで、スキーマ識別用に先頭に sip: をつけなければ区別することができない。

電子メイルアドレスを使いたいと考えた場合、ISP から払い出してもらったアドレス(例えば、sqm @ bear .odn .ne. jp のようなアドレス)を使うか、独自ドメインを運用してメールサーバをセットアップして使うといった形で確保することができる。ISP に依存しない、Google の Gmail のようなサービスもあるので誰でも気軽にアドレスをもらうことができる。

一方、SIP URI も同じように SIPサーバを運用するプロバイダーから払い出してもらうことで使えるようになる。しかし、実はこの SIP URI を払い出してくれるプロバイダーというのが、ほとんど居ないのが現状だ。

ISP などが提供する IP電話サービスは、ウラでは SIP URI を使った通話をしているものの、外部との発着信には使えないローカルなものなので SIP URI をもらっているとはいえない状況だ。

例えば、NTTコミュニケーションズが提供する 050 plus で取得できる SIP情報を見ると、例えば 050-369E-FGHJ という番号を発番されたユーザには、sip:fmc369EFGHJ@050plus.com という SIP URI が割り当てられている。しかしこの SIP URI 宛に INVITE を送っても接続してもらえない。(発信時の SIP URI はオレオレなので、これを勝手に使用することは可能)

VoIPプロバイダーである Twilio の場合も、各SIPクライアントに対して一意な SIP URI を発行しているものの、先に述べた通り、同じ SIP Domain に収容されたユーザ同士以外との接続は閉じられており、050 plus の SIP URI とほぼ変わらない、外部との接続に使えないプライベートSIP URI と呼んでよい状態になっている。

TELNYX はパブリックSIP URI として使える

前置きが長くなったが、それだったらパブリックな SIP URI はどうすれば確保できるのか、という問いに対する回答が TELNYX というプロバイダの提供するサービスが使える、ということになる。TELNYX はアメリカ合衆国イリノイ州シカゴで 2009年に創業した VoIP 企業でいまのところ日本には進出していない。(日本から利用はできる)

2022年現在、日本で TELNYX を使っている人はほぼ皆無だと思われるので調べても運用している人は見つからないと思うが、実際にサインアップして使ってみたところ、かなり使いやすそうなサービスだったので紹介しようと考えて本記事を書くことにした。

TELNYX は Twilio と似たような SIPベースの VoIPサービスを提供するクラウドサービスで、Twilio と同じように通話料として利用料を取る形での PSTN との接続を売りとして、シンプルでわかりやすく作られている。

Twilio では高度な制御もできる反面、デベロッパ以外にはとっつきづらい面がある(Twilio は本来、エンドユーザが直接使うものではなく、他社がユーザ向けの提供するクラウドサービスのバックグラウンドとしての API を重視している)が、TELNYX は IP-PBX の管理者程度の知識があれば使えるようなインタフェイスになっている。

サインアップについては特筆すべきところはないので割愛し、SIP URI の発行と、SIPクライアントへの設定を紹介する。別の記事で SIP URI を使った VoIP to VoIPコールを紹介する。

SIPアカウントの発行は、SIP CONNECTIONS

画像

TELNYX の管理画面、TELNYX Portal にログインし、左のメニューから SIP CONNECTIONS をクリック。

画像

Add SIP Connection をクリック。

画像

Name を入力し、Create SIP Connection をクリック。Name は内部での識別のために使うだけで外部との接続には使われない(つまり、SIP URI にはならない)のでわかりやすければなんでもよい。

画像

SIP Connection TypeCredentials を選択。

UsernamePassword は自動で発行される。この Username が以後、SIP Authorization で使うユーザID となり、同時に SIP URI に使われる。SIP URI にも使うことから、TELNYX内でユニークである必要があり、文字列によっては他のユーザに先に使われていて取得できないこともある。なお、4文字以上必要。

デフォルトのままでよければ、Save & Finish Editing をクリック。

画像

SIP Connections の一覧に、いま追加したアカウントが表示される。パスワードなどは Basic Options から何度でも確認できる。

MicroSIP からレジスト

Windows などで使える SIPクライアントソフト、MicroSIP にアカウントを登録する。

MicroSIP のメニューのアカウント追加から、以下のように入力する。

画像

SIPサーバsip.telnyx.com:5061。:5061 はトランスポートに tls を使うため。SIPサーバ名は全ユーザで共通。

SIPプロキシsip.telnyx.com。SIPプロキシを使うことで、メディア変換などを TELNYX側でよろしくやってくれる。

ユーザ名パスワードは先ほど TELNYX Portal で発行したもの。

ドメインsip.telnyx.com。これも全ユーザで共通。

トランスポートTLS を選択。

画像

保存ボタンをクリックし、しばらく待つと左下のステータスがオンラインに変わる。

画像

TELNYX PortalCheck Registration Status から確認すると、SIP Register できてることがわかる。

SIP URI はユーザ名 + ドメインになるので、この場合は、sip:test40566@sip.telnyx.com になる。これを電子メイルアドレスのように、他人に宛先として使ってもらうことで VoIP to VoIPコールとして使うことができる。TELNYX の場合、SIP URI を使った通話は、発着信とも無料で使える。

Grandstream GS Wave からレジスト

次に、スマホアプリの Grandstream GS Wave からレジストしてみる。先程と別のユーザ、alice で作業する。(あとで、VoIP to VoIPコールをテストするため)

画像

GS Wave の SettingsAccount Settings と進み、右上の + をタップする。

画像

SIP Account をタップする。

画像

Account Name は GS Wave 内での識別用なのでお好きな文字列で。

SIP Serversip.telnyx.com:5061

SIP User IDSIP Authentication ID は TELNYX Portal で作成した Username、Password はパスワードを入れる。

右上の をタップして一旦、保存する。

画像

この状態ではまだ SIP Registration できていないので、右のポッチが赤になっている。

画像

Preferred Vocoder で WiFi、2G/3G/4G それぞれ設定する。

TELNYX は Opus が使えるのでヴォコーダーの優先度の高いところに Opus を入れておく。PCMU を入れておくことで、ほぼすべての通話に対応できる。

4G回線を使う場合、安定して 100kbps が確保できないと PCMU を使っていると通話が途切れることがあるので、Opus に加えて G729 もチェックしておくと、Opus を使えないときに G729 にフェイルオーバーする可能性がある。G729 は 20kbps 程度でも通話できるかわりに、遅延が大きくなり、音質も最低限になる。

画像

SRTP Mode は Enabled But Not Force にする。SRTP非対応の相手と通話する時は非SRTP、SRTP対応の相手とは SRTP を使っての通話になる。(メディアパケットは TELNYX を通しているので、SRTP で使えるはず)

画像

その他設定するところは、Transmission ProtocolTLS に、Register Expiration(m)10 に、Only Accept SIP Requests from Known ServersCheck SIP User ID for Incoming INVITE にチェックを入れる。

Outbound Proxysip.telnyx.com を入力。

設定を変更したら戻る。

画像

ここまで設定すれば、TELNYX に SIP Registration できているはずだ。

画像

TELNYX Portal から Check Registration Status を確認すると、Grandstream Wave 1.0.3.34 からレジストされていることを確認できる。

次回は、今回作成した SIP URI を使って、VoIP to VoIPコールで通話してみる


COPYRIGHT (C) いろ電話研究所
This HTML file generated by pug.