こんにちは!ネットワークやガジェットの裏側を覗くのが大好きなライターの皆さん、日々のインフラ探求お疲れ様です。
スマホで動画を見るとき、私たちは当たり前のように「5G」という超高速な電波の恩恵を受けていますよね。「4Gよりも圧倒的に速いし、遅延も少ない!」というのは、もう皆さんも肌で感じていることと思います。
でも、ちょっと待ってください。電空を飛ぶ電波がいくら速くなっても、その裏側でデータをさばく「コアネットワーク(中核の頭脳)」が昔のままのトロい仕組みだったら、スマホの真価は発揮できませんよね。
実は、最新の5Gの頭脳である「5Gコアネットワーク(5GC)」の内部では、ITの世界ではおなじみの「Webの技術」がゴリゴリに使われているんです。今回は、その心臓部であるSBA(Service Based Architecture:サービスベースアーキテクチャ)と、そこで大活躍しているHTTP/2の世界へ、一歩ずつ優しくご案内していきますね!
—
従来の通信網は「頑固な職人たちの縦社会」だった
まず、これまでの通信の歴史をちょっとだけ振り返ってみましょう。4G(LTE)までのモバイルネットワークは、いわば「昔気質の職人たちがガチガチに固めた縦社会」でした。
基地局から送られてきたデータは、専用の通信プロトコル(下位層の独自のルール)でガチガチに固められ、決まったルートを通って処理されていました。
例えるなら、「この荷物は〇〇専用の頑丈なパイプラインを通さないと絶対に運べない!」という世界です。
このやり方は確かに確実で安定していましたが、新しい機能を追加しようとすると、すべての機器のルール(プロトコル)を書き換えたり、高価な専用装置を買い足したりしなきゃいけないという、非常に融通の利かないデメリットがありました。
「もっと今のWebサービスみたいに、柔軟に機能を組み合わせて拡張できるようにしたい……!」
そんな通信業界の切実な願いから生まれたのが、今回の主役であるSBA(Service Based Architecture)なんです。
—
郵便配達のルートから、スマホの「アプリ連携」の世界へ
SBAの考え方を、私たちの身近な世界に置き換えてみましょう。
昔の通信網が「専用の地下チューブで荷物を送る仕組み」だとすれば、SBAは「街中のカフェやお店が、お互いにAPI(窓口)を公開して、必要なときだけUber EatsやLINEで連絡を取り合う世界」です。
5Gコアネットワークの中には、さまざまな「専門家(ネットワーク機能)」がいます。
- ユーザーの位置情報を管理する人(
AMF) - 通信のセッション(道筋)を管理する人(
SMF) - データの課金を計算する人(
CHF) などなど。
これまでは、それぞれの専門家が専用の連絡網で繋がっていました。しかしSBAでは、彼らが全員「私はこういうことができますよ!」というWebのAPI(窓口)をオープンにしているのです。
例えば、スマホの電源を入れたとき、位置情報管理の AMF は、データベースを持っている別の機能(UDM)に対して、HTTPの仕組みを使って「このユーザーのプロファイルをちょーだい!」とリクエストを投げます。
この「Webの共通言語」を使っているおかげで、新しい機能を追加したくなったら、新しいAPIをポコッとネットワーク上に追加するだけで済むようになります。めちゃくちゃモダンで、クラウドネイティブな世界ですよね!
—
なぜHTTP/2なのか?パケットの裏側を覗いてみよう
さて、このSBAの裏側で、通信のやり取りの主役として動いているのがHTTP/2です。
「えっ、HTTPってWebサイトを見るためのあのプロトコル?」と思いましたよね。その通りです! 私たちが普段ブラウザでYouTubeやAmazonを見るときに使っている技術が、なんと通信キャリアの心臓部でもそのまま使われているんです。
HTTP/2が選ばれたのには、ネットワークエンジニアも納得の明確な理由があります。それは「マルチプレキシング(多重化)」と「JSONによる柔軟なデータ表現」です。
1本のTCPコネクションで、同時にたくさんの会話をする
従来のHTTP/1.1だと、1回リクエストを投げたら、その返事が返ってくるまで次のリクエストが待たされていました(これをヘッド・オブ・ライン・ブロッキングと言ったりします)。
しかしHTTP/2であれば、1本の太いパイプライン(TCPコネクション)の中で、複数のリクエストとレスポンスを同時にシャカシャカ混ぜ合わせてやり取りできます。5Gのように大量の制御信号が飛び交う世界では、この効率の良さが命取りになるほど重要なのです。
JSONでやり取りするスマートなメッセージ
通信の世界では、昔はビット単位でパパッと詰め込んだ難解なバイナリデータが主流でした。しかしSBAでは、人間にも読みやすいJSON形式がよく使われます。
実際の5Gコア(例えば AMF と UDM の間)でやり取りされるHTTP/2リクエストのイメージを、ちょっと覗いてみましょう。
// UDM(データベース)に対して加入者データを要求するHTTP/2リクエストのイメージ
GET /nsrf-disc/v1/nf-instances?target-nf-type=UDM&requester-nf-type=AMF HTTP/2
Host: 5gc-control-plane.local
User-Agent: Open5GS-AMF/2.4.0
Accept: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...
ね? まさに私たちが普段Web開発で目にするような、親しみやすいRESTful APIの形をしていますよね。
このリクエストに対して、データベース側(UDM)からは次のようなJSONが返ってきます。
{
"suci": "suci-0-00-0-0-0-0-0-0-0-0-0-2b",
"authStatus": "SUCCESS",
"servingPlmnId": {
"mcc": "440",
"mnc": "10"
},
"subscribedDnnList": [
"internet",
"ims"
]
}
「このユーザーはどの通信プラン(subscribedDnnList)に入っているか」「どの事業者の電波を掴んでいるか(servingPlmnId)」といった情報が、きれいに整理されてJSONで返ってきます。パケット解析ソフトで覗いたときも、何が起きているのかが手に取るようにわかるのが、このアーキテクチャの素晴らしいところです。
—
実際に手を動かして体験してみよう!オープンソースの5GC
「なるほど、Webの技術がそのままキャリアの裏側で動いているのは分かったけど、実際に触ることはできるの?」
そう思った向上心あふれるあなたへ朗報です!
実は、オープンソースの5Gコアネットワーク実装であるOpen5GSなどを使えば、ご自身のPC(Linux環境やDocker)上で、このSBAの世界を簡単に再現して遊ぶことができます。
例えば、Docker環境で動かすための設定ファイル(docker-compose.yml の一部抜粋)を覗いてみましょう。各ネットワーク機能が、まるでマイクロサービスのコンテナ群のように連携しているのが一目でわかります。
version: '3.8'
services:
# 位置情報や認証を司る中核「AMF」
open5gs-amf:
image: open5gs/mcn:latest
container_name: open5gs-amf
command: open5gs-amfd -c /etc/open5gs/amf.yaml
volumes:
- ./config/amf.yaml:/etc/open5gs/amf.yaml
networks:
- 5g-net
# 加入者データを保持するデータベース「UDM」
open5gs-udm:
image: open5gs/mcn:latest
container_name: open5gs-udm
command: open5gs-udmd -c /etc/open5gs/udm.yaml
volumes:
- ./config/udm.yaml:/etc/open5gs/udm.yaml
networks:
- 5g-net
networks:
5g-net:
driver: bridge
このように、それぞれの機能が独立したコンテナとして立ち上がり、内部のHTTP/2ベースのSBAバス(RESTful API)を通じて会話を交わしています。クラウドエンジニアやWebエンジニア出身の人であれば、「あ、これって普段Kubernetesでやってるマイクロサービス arquitectura(アーキテクチャ)と同じじゃん!」と直感的に理解できるはずです。
—
まとめ:ネットワークとWebの境界線が溶け合う未来へ
今回は、5Gコアネットワーク(5GC)のSBAとHTTP/2について、身近な例えや実際のデータ構造を交えて解説してきました。
一見すると難解に思える通信インフラの世界ですが、中身を紐解いてみると、私たちが普段Webアプリやクラウドの開発で使っている「REST API」「JSON」「HTTP/2」といった技術が、そのままスケールアップして使われていることが分かりますよね。
通信キャリアのエンジニアリングと、Web/クラウドのエンジニアリングの境界線は、いま急速に溶け合い始めています。
「ネットワークは専門外だから……」と敬遠せず、こうしたWeb技術の延長線として5Gの仕組みを捉えていくと、インフラを触るのがもっともっと楽しくなりますよ!
それでは、また次回のネットワーク探求の旅でお会いしましょう。パケットの良き旅を!
コメント