2020-07-27

モバイル通話の仕組み・概要



携帯電話網に於ける通話は 3G による通話と VoLTE による通話に大別されます。

VoLTE が主流になりつつある現在、従来の 3G 通話との互換性も維持しなくてはなりません。


また、今後 5G になってくると VoNR(VoLTE の 5G 版)も対応する必要がありますが、 3G/4G または 4G/5G のいずれかになると思われ、3世代に渡る互換性ではないと思われます。






【 3G での通話・CS(Circuit Switched Network:交換網)方式 】









CS 接続は STM-POI を通じて行われます。

コアネットワークにある MGW を経由して通話先の事業者へ SS7(共通線信号 No.7)を通じて IP に似た Point Code で接続されます。


SS7 は宛先電話番号が管理されている交換機を特定し、そこに向けてトランクを張ります。


交換機同士は SS7 にて接続制御され、これをトランクと称しています。


一旦トランクが確立されると、エンドツーエンドの電話線を通じて通話ができる仕組みです。


これは IP 網に於ける DNS と IP 通信に似ていて、前者が「トランクを張る相手を特定する」ことに相当し、後者が「通話」そのものという感じです。


交換網の方が古いわけですから、そもそも Internet の 原型である ARPAnet が SS7 ライクな仕組みを作ったということでしょう。




このとき 番号が MNP されている場合は現在の番号管理事業者に再接続されます。


接続によりトランクが張られ、AMR-NB(Adaptive Multi-Rate Narrow Band)
 コーデックで通話できるようになります。





【 4G での通話・VoLTE 方式 】





一方 VoLTE は現在各キャリア間で相互接続の仕組みが確立されており、VoLTE 同士は IP ベースの接続で、SIP プロトコルが使われます。



発呼側が VoLTE の場合は ENUM によって接続先を判断し、接続先の IBCF に対して SIP INVITE(発呼)します。



相手端末側も VoLTE の場合はそのまま VoLTE 接続されますが、端末側が 非VoLTE の場合は、CS フォールバック によって 3G での接続に変更されます。



VoLTE 通話時は AMR-WB または AMR-WB (EVS) による広帯域・高品質通話になりますが、CS フォールバック された場合は VoLTE の広帯域・高品質通話ではなく AMR-NB での通話品質になります。







固定電話網など STM-POI を通じて発呼されてきた場合、MGW にてメディア変換して
 CS 接続または VoLTE 接続になります。


端末が 非VoLTE の場合は CS フォールバック による 3Gでの接続となり、AMR-NB での通話品質です。



端末が VoLTE 対応されていれば VoLTE 接続になりますが、通話品質は STM 回線品質に依存のため、AMR-NB 品質です。


VoLTE のプロトコル・スタックは次のようになっています。


図の中で eNodeB の Bearer 部分は「携帯電話網・4G」そのものです。











今後は STM-POI から IP-POI に移行されつつありますので、固定電話網を含めて IP 接続に一本化されていきます。



純粋に交換機インタフェースの「黒電話用」にはモデムでラスト・ワンマイルが対応される見込みです。



実際のコアネットワークでの処理はハンドオーバーや、ローミングなど、もっと複雑な処理がなされていますが、概念的にはここで記載した内容で大まかな理解の一助にしていただきたいと思います。






以上の仕組みを理解いただくと「楽天 UN-LIMIT」の姿が見えてきます。
















11 件のコメント:

電話見習い さんのコメント...

コロナの再度の増加の中、いつも興味深い記事をありがとうございます。
私はサンデー毎日な生活も3年目に入り、このサイトの記事を参考にさせていただいてスローペースで色々と実験を試みているところです。今回はasteriskについて一つ確認したく、メッセージを書かせていただきます。本来ならば元記事のところに書くべき内容ですが、3年も前なのでここで失礼しております。我が家ではフュージョン(現楽天)のIP電話を使ってイエ電化は終えているのですが、asteriskの勉強も兼ねて(そして国内電話を少し安くするため)ブラステルを使ったasteriskの実装を考えています。asteriskについては貴記事を参考に難なく私のraspberry PI互換機(Orange Pi)にインストールできました。今や自分でmake しなくても apt install asteriskを使うことが出来ました。内線テストはこれも直ぐにできましたのでいよいよブラステルの導入を考え始めました。そこで基本的な質問なのですが、複数のスマホでasteriskを使ってブラステル回線を構築する場合は VoIP(HT801等)は不要なのではと考えていますが、これでよろしいでしょうか?もしそうであればブラステルの登録だけで実験が開始できます。
質問に対して前置きが大変長くなりましたが、ご回答を宜しくおねがいします。
なお、光ケーブルの後ろにある自前のOpenWRT無線ルータの有線ポートにraspberry Pi互換サーバとHT801(楽天IP用)を接続した簡単なネットワークで運用しております。

bike86-3 さんのコメント...

電話見習いさん、こんばんは。

SMARTalk(旧 FUSION IP Phone SMART)を HT801 でイエデン化されているのですね。

ブラステルをお使いになりたいのでしたら HT801 に設定は不要ですし、Asterisk の設定も不要です。

スマホは Android ならば GS Wave というソフトフォン・アプリに設定すればスマホで使用できます。

iPhone ならば Sessiontalk Pro がおすすめです。

ソフトフォン・アプリはほかにもいくつかありますが、この2つがおすすめです。


どちらも本ブログに設定の仕方が記載されていますので参考になさってください。

GS Wave は常駐型で設定の仕方は下記 URL です。
https://bike8615.blogspot.com/2018/08/zoiper-gs-wave-mizudroid.html

SessionTalk Pro は Push 型で設定の仕方は下記 URL です。
https://bike8615.blogspot.com/2019/06/iphone-sessiontalk-softphone.html

またHT801 などのATA(Analog Telephony Adapter)も常駐型の扱いです。


ソフトフォン・アプリに設定した場合、家庭内は WiFi で、外では 4G(LTE)でそのまま使えます。
発着信ともに問題ないはずです。

わざわざ Asterisk への設定は不要です。

もっとも Asterisk でいろいろ遊んでみたいということでしたら勿論、Asterisk に設定してもかまいません。

Asterisk もまた常駐型の一種とお考えください。

一つだけ気をつけていただきたいのは、ブラステルは一つのアカウントを複数のデバイスに設定して使えるのですが、その場合は Push 型は避けて 常駐型のソフトフォン・アプリを使用してください。

Push 型同士や、Push 型と常駐型が混在の場合は、通話が無音になってしまいます。
これはバグではなくて、Push 型が 独自の Push サーバー(IP-PBX の一つ)を使うという仕組みの問題です。

電話見習い さんのコメント...

いつものように迅速・丁寧なご回答をありがとうございます。私のような古い人間はやはり固定電話に拘りがありますので、「第二・イエ電」としてasterisk方式を実証実験することにします。これを機会に「イエ電->VoIP装置が必要」という私の誤った認識を訂正することにします。当面は家庭内だけからの使用に留め、将来的には屋外からの使用実験もする予定です。ルータには5060/UDPポートを開放済みです。安易に使うとセキュリティ上の問題があるでしょうから、そのときが来ればVPN環境のことを勉強も兼ねて調べる予定です。

bike86-3 さんのコメント...

電話見習いさん、「IP 電話番号をイエデン化」するというのは、市販の電話機で IP 電話を使えるようにする、ということです。

HT801 は ATA ですから アナログ電話機をつなげて IP 電話を 普通の固定電話と同じに使うためのものです。

NTT の ひかり電話も実は「IP 電話」です。
ホームゲートウェイが ひかり電話専用の ATA を兼ねているのです。
ですから、普通の電話機をホームゲートウェイに接続して使えるようになる、というわけです。

スマホのソフトフォンアプリは IP 電話を携帯電話のように使えるソフトです。
これを使うのにポート開けは通常、必要ありません。

ATA もまたポート開けは必要ありません。

Asterisk は IP 電話交換を行うソフトウェアです。
Asterisk もまたポート開けは必要ありません。

セキュリティの観点からは無用なポート開けは避けた方がいいでしょう。

IP 電話番号のアカウント登録を定義すれば、Asterisk が IP 交換機として動作します。

交換機ですから、電話交換をおこなえるようになる、ということです、

例えば IP 電話を内線化して、その内線で発着信する、といったことが可能になりますし、内線電話の着信音を変えたりとかもできるようになるわけです。

内線化した場合でも、その内線電話を使うためにはソフトフォンアプリが必要になります。

またこの場合、内線にアクセスできるようにするためにポート開けまたは、VPN で自宅ネットワークに入れるようにする必要がありますが、VPN を使い、ポート開けは避けた方がいいでしょう。

ブラステルや SMARTalk などを使うとき、それぞれのサービスで用意された純正のソフトフォンアプリがありますが、これらは「出来」がよくないのです。

これらの IP 電話事業者の純正アプリよりも、オススメした GS Wave や Sessiontalk Pro を使われる方がいいと思います。

これらのソフトフォンアプリで ブラステルなどを使用の場合、WiFi でもポート開けは必要ありません。

勿論、モバイルデータ通信時も問題なく動作します。

最近各キャリアが使えるようにした VoLTE(Voice over LTE)もまた IP 電話です。
一般の IP 電話よりも データ通信帯域を保証する方式になっているので非常に高品質な通話が可能になっていますが、実態は VoIP なのです。

ちなみに 楽天 UN-LIMIT で使う 楽天 Link アプリもまた VoIP アプリです。
こちらは現在はまだ VoLTE のような帯域保証はされていません。


電話見習い さんのコメント...

819-86さん、
再度の照会に対し、一回分の記事程度のご回答を頂き、感謝致しております。ほぼ全て理解しておりますが、私と同じ程度の初心者の方には参考になる部分も有るかと思い、本件について締めくくりの書き込みをさせていただいております。
スマホでのアプリについてはGS Waveを使っております。最初にSMARTalkを入れた時、純正アプリが起動してしばらくすると受信不能のスリープ状態になって困った(今は改善されているかも知れません)時にインターネットで解決策を探してこのサイトを見つけ、GS Waveを入れました。それ以来、このサイトの購読を続けております。イエ電についてはもう一つSMARTalkのIP電話番号を取得し、HT801を購入して構成しました。その時もこのサイトの記事を参考にしました。そしてAsteriskのことを知るに及び今回の実験を始めた次第です。内線テストはすぐに出来ましたが、その時にGS Waveに2番めのSIPアカウントとして付加して実験をしました。お陰様でGS Waveで複数アカウントを使うやり方が分かりました。この2番目のアカウントにブラステルの設定をすればAsteriskのことなど考える必要は無いことも理解できましたが、PBXを持つという経験をしたく準備している次第です。5060/UDPポートはご回答に従って直ぐに閉じました。ブラステルについてはオンライン申し込みを終え、1週間以内にIP電話番号が届くと思いますので、その時にPBXの実験を再開したいと思います。これが上手くいけば、Wireguardの実験をゆっくり開始したいと思います。Wireguardは内容が私には高度すぎて自分の手を動かしながらでないととても理解できません。このサイトの記事でまたまた良い課題が出来ました。ありがとうございました。

bike86-3 さんのコメント...

電話見習いさん、おはようございます。

記事がお役に立っているのなら嬉しく思います。

IP-PBX(Asterisk)を始めたのはひかり電話を外でも発着信できるようにしたかったためです。
そのために内線化し、これを外で使うために OpenVPN を使いました。

いまはブラステルがイエデンになっていますので、Asterisk は不要になりました。

VPN も Wireguard にしてからは非常に楽になりました。

VPN はフリーWiFi を利用時に、一旦自宅ネットに入って、そこからインターネットにアクセスする、というやり方で使っていましたが、楽天 UN-LIMIT に変えてからはこれも使わなくなりました(モバイルデータ通信無制限なので)。

これまでの設備やサーバー構築・設定はいったい何だったのだろうか、という状況です(笑)。

Asterisk はいろいろ遊べて楽しいかも知れません。

Wireguard はサーバーl・クライアントではなく、暗号化ハンドシェイクによる通信です。

そのためにカーネルへの組み込みになっていて、非常に軽く動作します。

考えた人は発想がスゴイ人です。

電話見習い さんのコメント...

819-86さん
もうお時間を頂くのはよそうと遠慮が働きますが、本件についてもう一つ(今度こそ最後にします、笑)
wireguardは思ったより単純で、時間がいくらでもある私は午前中にスマホを接続することに成功しました。サーバ側でwgのステータスを見ても問題ありませんし、スマホからwebブラウザを使っても、遅延することもほとんどなく鍵マークでアクセスできています。一つだけわからないのが肝心のAsteriskです。wireguardをONにするとAsteriskにアクセスできなくなってしまいます。Asteriskが動いているのもwireguardが動いているのも同じサーバです。このような場合、5060ポートを締めていてもスマホ側からAsteriskにアクセスできるものなのでしょうか?この点だけ不明で色々つついても解決できません。wireguardからサーバの内部に入り込む方法だけで結構です、宜しくおねがいします。

bike86-3 さんのコメント...

電話見習いさんへ

Wireguard がスマホに払い出した IP アドレスは 10.0.0.0/24 とかになっていると思いますが、そのアドレスでのアクセスが Asterisk サーバーに許可されていないのが原因と思います。

ルーターでのプライベートアドレスは 192.168.x.0/24 になっていると思います。

192.168.x.0/24 と 10.0.0.0/24 の間のアクセス許可(in/out ともに)を設定してください。

bike86-3 さんのコメント...

https://bike8615.blogspot.com/2019/04/vpn-wireguard_8.html のファイヤウォール設定を参考にしてください。

電話見習い さんのコメント...

819-86さん、
今回はお礼のみです。成功したように見えます。
方法は ネットマスクを 32 から 24 に変更したことと、クライアント側(スマホ側)に、
AllowedIPs = 192.168.1.0/24, 10.0.0.0/24
を入れたことです。前者はそのほうがwgが安定しているように見えるため、後者は私の理解の範囲でやってみました。
数々の助言をありがとうございました。

bike86-3 さんのコメント...

電話見習いさん、うまくいったようですね。

ネットマスクはアドレスが一意に決まる場合に /32 とします。
範囲を指定の場合に /24 のようにします。

192.168.1.0/24 というのは 192.168.1.0 〜 192.168.1.255 の範囲のアドレスを意味します。

この中のどのアドレスでもよければ /24 に、一意に決まるアドレス、たとえば 192.168.1.2 ならば /32 です。

なるべく範囲で指定するよりも一意のアドレスで指定する方が誰かが特定するのが少し困難になります。

使い分けされるといいと思います。