VoLTE交換機の加入者DB登録シーケンス

# 背景
KDDIさんの輻輳で、VoLTE交換機とDiameterに注目が集まっているので、標準をベースにシーケンスポンチ絵作成しました。
どうやって作ったのかの補足説明です。
今5Gが熱いですが、サービスが開始されて間もないので、多くのユーザーは4Gを使っていると思いますので、4Gの電話(VoLTE)のシーケンスを紹介します。

https://twitter.com/nekokane/status/1544106584959172610

# 概要
・VoLTE交換機の輻輳というと、青のSIPとオレンジのDiameterで輻輳している想定。
・位置の照合の不一致、HSS⇔IMS　なのか　PCRF⇔HSS　なのかわからず。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311625/5d3f6d66-e64f-ce12-71d6-1d4ba6a49e67.png)

スマホで電話を電話できる状態に登録するまで
　RAN：無線
　EPC：モバイルコア（データ通信・認証）
　IMS：いわゆるVoLTE交換機で、電話レベルの認証
が必要で、

下記のプロトコルを使っています
　スマホ（UE）　　　～　EPC　　　　　　　　：NASS
　スマホ（UE）　　　～　VoLTE交換機（IMS）：SIP
　EPC/VoLTE交換機　 ～　加入者DB間　　　　：Diameter

正常系のL7だけでこんな複雑なので、ルーターも含めて、障害発生時は大変だったんだろうなと思います。今回復旧に携わった方々すごい。

# 参考文献
[1]3GPP TS 23.401 v17.0.0 (E-UTRAN) access
　4GのコアネットワークEPCのこと。位置登録(Attach)のシーケンスが記載されてます。
[2]3GPP TS 24.301 v17.0.0 Non-Access-Stratum (NAS) protocol
　端末～MME間の制御プロトコル　シーケンスのメッセージの中身（パラメータが知りたければこちら）
[3]3GPP TS 23.228 v17.0.0　IMS Stage2
　VoLTE（電話）の初期登録（REGISTER）のシーケンスが記載されています。
[4]3GPP TS 29.228 v17.0.0 Diameter Cx 
　VoLTE交換機～加入者サーバHSS間のDiameterの細かいパラメータが記載されています。

# 詳細

## [1]TS 23.401 v17.0.0 (E-UTRAN) access　のお勉強

### Attach（初期の位置登録）のシーケンス
携帯の電源を入れたら、ぼくはここにいるよと加入者DBに登録します。
（電話かかってきたら、加入者DBに場所を聞いて、登録してある場所に向けて電話のパケットを送ります）
　・EPCはMME～PDN
　・HSSは加入者DB
　・VoLTE交換機はPDN GWの向こう側にいます。
5.3.2 Attach procedure
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311625/373ab659-6ba1-1ddd-8a76-f6312c4e06ea.png)

### 端末～MME
MME:データ向けの認証したり、基地局またいで移動してもデータ通信が切れないようにしたりする
今回は制御信号L7のNASSに絞って絵をかいています。
//私はL6以下よくわかりません・・・（汗
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311625/3ed87e70-bbd6-4c43-a170-1888dd7716be.png)

### User Plane
この絵の右側にVoLTE交換機がいるイメージ。VoLTE向けのプロトコル（SIP）の、REGISTERは、User PlaneのApplicationとして使われる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311625/0db56619-3180-5232-cdfa-ea9a19e48f60.png)


## [3]3GPP TS 23.228 v17.0.0　IMS Stage2　のお勉強
データ側の位置登録（attach)が終わると、VoLTE交換機（電話）側の認証シーケンスが走り出します。
Cxと書いてある太い矢印がDiameter　HSSが加入者DBです。
5.2.2	Registration flows
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311625/5e44aaa7-86eb-aac8-d990-bb20d9f4c8c9.png)

## [4]3GPP TS 29.228 v17.0.0 Diameter Cx 
[3]でなんとなくわかりましたが、なんかもやっとしませんか？
 ・Cx-QueryなんてDiameterコマンドないよね？
 ・SIP REGISTERの後に401返してチャレンジレスポンス認証するのでは？
安心してください29 seriesはプロトコルなので、コマンド名もパラメーターもばっちり書いてあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311625/1b7ee305-54bf-5918-9bdc-c617d32cca8b.png)

## AttachとRegisterのシーケンスをくっつける。
実際は、音声電話契約をしてると、EPC（データ）にAttachした後、VoLTE交換機（電話）にREGISTERすると思いますので、
上記の[2]と[3]をがっちゃんこ。
ついでに、Cx-Queryとかは、正式なDiameterのコマンド名ではないので[4]3GPP TS 29.228 v17.0.0 Diameter Cx を見ながら、
Diameterのコマンド名に置き換えていきます。


## [4]3GPP TS 29.272 EPC, MME, SGSN inerface basedo on Diameter protocol
抜けのコメントいただきました。多分これは私がMMEのHSS間のプロトコルを理解していないから。
https://twitter.com/kaz_shim/status/1544809428003999744?t=4473mNKrqIEfdoI8Qle_0w&s=19

S-GWとP-GWの間で、Create Session RequestするとP－GWとPCDRの間で、Session Establishmentの手続きをする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311625/a97a3a73-91a8-05b4-a073-9b8e6f0599c3.png)

シーケンスはTS23.203 PCC
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311625/9dc9d2f9-db3e-34fb-4556-dd355563a8c8.png)



今回のKDDIさんの資料とかを見て、そういえば私某社のVoLTE交換機のDiameter インタフェース仕様書作ったなというのを思い出しました。