メインコンテンツまでスキップ

8. Diameter ユーザーセッション

一般に, Diameter はアプリケーションに 2 種類のサービスを提供できる. 第 1 は認証 (authentication) と認可 (authorization) を含み, 任意で課金 (accounting) を利用する. 第 2 は課金のみを利用する.

サービスがアプリケーションの認証および/または認可部分を用い, ユーザーがネットワークアクセスを要求するとき, Diameter クライアントはローカルサーバーに認可要求 (auth request) を送る. 当該要求はサービス固有の Diameter アプリケーション (例: NASREQ) で定義される. 要求には Session-Id AVP が含まれ, ユーザーセッションに関する後続メッセージ (後続の認可, 課金など) で用いられる. Session-Id AVP はクライアントとサーバーが Diameter メッセージをユーザーセッションに対応付ける手段である.

Diameter サーバーがユーザーを有限時間ネットワークリソース利用に認可し, 将来の要求で認可延長に応じる場合, 応答メッセージに Authorization-Lifetime AVP を付けなければならない (MUST). 当該 AVP は, サーバーが次の認可要求を期待するまでユーザーがリソースを利用できる最大秒数を定義する. Auth-Grace-Period AVP は Authorization-Lifetime 満了後, サーバーがユーザーセッション関連の状態情報をすべて解放するまでの秒数を示す. サービス提供レルムがユーザーのホームレルムからサービス対価を受け取る場合, Authorization-Lifetime AVP と Auth-Grace-Period AVP の組は, ホームレルムが財政上責任を負うセッションの最大長を意味する. 両 AVP 満了後に提供されるサービスはアクセスデバイスの責任である. 実際のサービスコストは本プロトコルの範囲外である.

サーバーに再認可またはセッション終了要求を送らないアクセスデバイスは, Auth-Session-State AVP に NO_STATE_MAINTAINED を設定してヒントとして含めてもよい (MAY). サーバーがヒントを受け入れた場合, ユーザーへのサービス終了後にセッション終了メッセージが届かないためセッション状態を維持できないことに合意する. サーバー応答の Auth-Session-State AVP が異なる値 (または AVP 欠落時の既定値) の場合, アクセスデバイスはサーバーの指示に従わなければならない (MUST). 以降の再認可要求と応答に NO_STATE_MAINTAINED を設定してはならない (MUST NOT).

ベースプロトコルは認可要求メッセージを含まない. これらは主にアプリケーション固有であり Diameter アプリ文書で定義される. ただしベースプロトコルはユーザーセッション終了に用いるメッセージ群を定義し, 状態を保持するサーバーがリソースを解放できるようにする.

サービスが Diameter の課金部分のみを用いる場合 (アプリケーションと併用でも), Session-Id はユーザーセッション識別に用いられるが, セッション終了メッセージは用いず, 課金停止メッセージで終了を通知する.

Diameter は認証・認可・課金に容易に分類できないサービス (例: 一部の 3GPP IMS インタフェース) にも用いられる. その場合は後続節の有限状態機械が適用されないことがあり, アプリケーション自身が状態機械を定義する必要がある (MAY). ただし Session-Id AVP の利用や STR/STA, ASR/ASA メッセージの利用など, 本書の一般的枠組みに従うべきである (SHOULD).

8.1. 認可セッション状態マシン

本節は Diameter セッションのライフサイクルを表す有限状態機械の集合であり, Diameter アプリケーションの認証および/または認可部分を用いるすべての実装が従わなければならない (MUST). 以下の「Service-Specific」は Diameter アプリケーション (例: Mobile IPv4, NASREQ) で定義されるメッセージを指す.

Diameter ベースプロトコルは 4 種類の認可セッション状態機械をサポートする. 最初の 2 つはサーバーがセッション状態を維持する場合 (Auth-Session-State AVP の値または欠落で示される) で, クライアント視点とサーバー視点がある. 残り 2 つはサーバーが状態を維持しない場合で, 同様にクライアント視点とサーバー視点がある.

セッションが Idle 状態に移ると, 当該セッションに割り当てたリソースはすべて解放しなければならない. 状態機械に列挙されていないイベントはエラーとみなし (MUST), 該当すれば発信者に応答を返さなければならない (MUST).

アプリケーションが再認証をサポートしない場合, クライアントとサーバーのセッション双方が状態を維持するときのサーバー開始再認証に関する遷移 (例: RAR 送信, Pending, RAA 受信) は無視してもよい (MAY).

状態表においてイベント「Failure to send X」は, Diameter エージェントがコマンド X を目的へ送信できないことを意味する. ピアがダウンしているか, 対応する Answer の Result-Code AVP に一時失敗または一時プロトコルエラー DIAMETER_TOO_BUSY または DIAMETER_LOOP_DETECTED が返った場合などである. 「X successfully sent」は「Failure to send X」の補集合である.

サーバー側で状態を維持する場合のクライアントが従う状態機械は次のとおり (表は RFC 6733 英語原文に一致):

CLIENT, STATEFUL
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Client or device requests access Send service-specific Pending
auth req auth req

Idle ASR Received for unknown session Send ASA with Idle
Result-Code =
UNKNOWN_SESSION_ID

Idle RAR Received for unknown session Send RAA with Idle
Result-Code =
UNKNOWN_SESSION_ID

Pending Successful service-specific authorization Grant Access Open
answer received with default
Auth-Session-State value

Pending Successful service-specific authorization Sent STR Discon
answer received,
but service not provided

Pending Error processing successful Sent STR Discon
service-specific authorization
answer

Pending Failed service-specific authorization Clean up Idle
answer received

Open User or client device requests access Send service-specific Open
auth req auth req

Open Successful service-specific authorization Provide service Open
answer received

Open Failed service-specific authorization Discon. user/device Idle
answer received.

Open RAR received and client will perform Send RAA with Open
subsequent re-auth Result-Code =
SUCCESS

Open RAR received and client will not perform Send RAA with Idle
subsequent re-auth Result-Code !=
SUCCESS,
Discon. user/device

Open Session-Timeout expires on access device Send STR Discon

Open ASR received, client will comply with Send ASA with Discon
request to end the session Result-Code =
SUCCESS,
Send STR.

Open ASR Received, client will not comply with Send ASA with Open
request to end the session Result-Code !=
SUCCESS

Open Authorization-Lifetime + Auth-Grace-Period Send STR Discon
expires on access device

Discon ASR received Send ASA Discon

Discon STA received Discon. user/device Idle

サーバーがセッション状態を維持する場合のサーバー側状態機械:

SERVER, STATEFUL
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Service-specific authorization request Send successful Open
received, and user is authorized service-specific
answer

Idle Service-specific authorization request Send failed Idle
received, and user is not authorized service-specific
answer

Open Service-specific authorization request Send successful Open
received, and user is authorized service-specific
answer

Open Service-specific authorization request Send failed Idle
received, and user is not authorized service-specific
answer,
Clean up

Open Home server wants to confirm authentication Send RAR Pending
and/or authorization of the user

Pending Received RAA with a failed Result-Code Clean up Idle

Pending Received RAA with Result-Code = SUCCESS Update session Open

Open Home server wants to terminate the service Send ASR Discon

Open Authorization-Lifetime (and Auth-Grace-Period) Clean up Idle
expires on home server

Open Session-Timeout expires on home server Clean up Idle

Discon Failure to send ASR Wait, resend ASR Discon

Discon ASR successfully sent and ASA Received Clean up Idle
with Result-Code

Not Discon ASA Received None No Change

Discon Any STR Received Send STA, Clean up Idle

サーバーが状態を維持しない場合のクライアント側状態機械:

CLIENT, STATELESS
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Client or device requests access Send service-specific Pending
auth req auth req

Pending Successful service-specific authorization Grant access Open
answer received with Auth-Session-
State set to NO_STATE_MAINTAINED

Pending Failed service-specific authorization Clean up Idle
answer received

Open Session-Timeout expires on access device Discon. user/device Idle

Open Service to user is terminated Discon. user/device Idle

サーバーがセッション状態を維持しない場合のサーバー側状態機械:

SERVER, STATELESS
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Service-specific authorization request Send successfully Idle
received, and successfully processed processed service-
specific answer

8.2. アカウンティングセッション状態マシン

課金部分を持つアプリケーション, または課金のみを要するアプリケーションは, 以下の状態機械をサポートしなければならない (MUST). 最初の状態機械はクライアントが従う.

課金コマンドコードは第 9.7 節, 課金 AVP は第 9.8 節を参照.

課金状態機械のサーバー側は場合によりアプリケーションに依存する. Diameter ベースプロトコルは既定のサーバー側状態機械を定義し, 別の状態機械を定めていないすべてのアプリケーションが従わなければならない (MUST). 本節の 2 つ目の状態機械である.

既定のサーバー側状態機械は, 課金レコードを任意の順序・任意の時刻に受信することを要求し, 処理に関する標準要件は課さない. 実装は検査, 並べ替え, 相関, 不正検出などを行ってよく, その一部で AVP 検査が必要になることがある. 受信直後または後処理で実行してよい. これらはアプリケーションやポリシーに依存するため Diameter 仕様では標準化しない. アプリケーションは Accounting-Realtime-Required AVP の値や与信枠チェックなどに基づき, 課金レコードをいつ受け入れるかを定めてもよい (MAY).

さらに Diameter ベースプロトコルは, 課金サーバーでセッション状態を追跡する必要があるアプリケーションが従ってもよい (MAY) 任意のサーバー側状態機械を 1 つ定義する. その追跡は長時間の接続障害への耐性と両立しない. したがって Accounting-Realtime-Required AVP が DELIVER_AND_GRANT であるアプリケーション (課金接続障害で利用ユーザーを切断しなければならない) にのみ推奨される. そうでなければクライアントが生成したレコードは, 再接続後にサーバーが受け付けなくなることで失われうる. 本状態機械は本節の 3 つ目である. 監督セッションタイマ Ts が監督し, Ts は Acct_Interim_Interval より十分大きくすべきである. Ts を Acct_Interim_Interval の 2 倍にしてもよく (MAY), 短い一過性障害で Diameter サーバーの課金セッションが Idle になるのを避ける.

状態機械にないイベントはエラーとみなし (MUST), 該当すれば発信者に対応する応答を返さなければならない (MUST).

状態表の「Failure to send」は, Diameter クライアントが目的と通信できないことを意味する. ピアがダウンしているか, Accounting Answer の Result-Code に DIAMETER_OUT_OF_SPACE, DIAMETER_TOO_BUSY, DIAMETER_LOOP_DETECTED などの一時失敗または一時プロトコルエラーが返った場合などである.

「Failed answer」は, Accounting Answer に非一時的失敗通知が含まれたことを意味する.

「Disconnect user/dev」動作は, アプリケーションが認証/認可と課金の両方を持つ場合, 認可セッション状態表にも影響しなければならず (MUST), 例えば STR 送信を引き起こす.

PendingS, PendingI, PendingL, PendingE, PendingB は, それぞれ Start, Interim, Stop, Event, バッファレコードに関する課金要求の応答待ちの保留状態を表す (表は RFC 6733 英語原文に一致).

CLIENT, ACCOUNTING
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Client or device requests access Send accounting PendingS
accounting start req. start req.

Idle Client or device requests a one-time service Send accounting PendingE
accounting event req event req

Idle Records in storage Send record PendingB
record

PendingS Successful accounting start answer received Open

PendingS Failure to send and buffer space available Store Start Open
and real time not equal to Record
DELIVER_AND_GRANT

PendingS Failure to send and no buffer space available Open
and real time equal to GRANT_AND_LOSE

PendingS Failure to send and no buffer space available Disconnect user/dev Idle
and real time not equal to
GRANT_AND_LOSE

PendingS Failed accounting start answer received and Open
real time equal to GRANT_AND_LOSE

PendingS Failed accounting start answer received and Disconnect user/dev Idle
real time not equal to GRANT_AND_LOSE

PendingS User service terminated stop Store stop PendingS
record

Open Interim interval elapses Send accounting PendingI
interim
record

Open User service terminated Send accounting PendingL
stop req.

PendingI Successful accounting interim answer received Open

PendingI Failure to send and (buffer space available Store interim Open
or old interim record can be overwritten) record
and real time not equal to
DELIVER_AND_GRANT

PendingI Failure to send and no buffer space available Open
and real time equal to GRANT_AND_LOSE

PendingI Failure to send and no buffer space available Disconnect user/dev Idle
and real time not equal to GRANT_AND_LOSE

PendingI Failed accounting interim answer received and Open
real time equal to GRANT_AND_LOSE

PendingI Failed accounting interim answer received and Disconnect user/dev Idle
real time not equal to GRANT_AND_LOSE

PendingI User service terminated stop Store stop PendingI
record

PendingE Successful accounting event answer received Idle

PendingE Failure to send and buffer space available Store event Idle
record

PendingE Failure to send and no buffer space available Idle

PendingE Failed accounting event answer received Idle

PendingB Successful accounting answer received Delete record Idle

PendingB Failure to send Idle

PendingB Failed accounting answer received Delete record Idle

PendingL Successful accounting stop answer received Idle

PendingL Failure to send and buffer space available Store stop Idle
record

PendingL Failure to send and no buffer space available Idle

PendingL Failed accounting stop answer received Idle
SERVER, STATELESS ACCOUNTING
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Accounting start request received and Send accounting Idle
successfully processed. start answer

Idle Accounting event request received and Send accounting Idle
successfully processed. event answer

Idle Interim record received and successfully Send accounting Idle
processed. interim answer

Idle Accounting stop request received and Send accounting Idle
successfully processed stop answer

Idle Accounting request received; no space left Send accounting Idle
to store records answer;
Result-Code =
OUT_OF_SPACE
SERVER, STATEFUL ACCOUNTING
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Accounting start request received and Send accounting Open
successfully processed. start answer;
Start Ts

Idle Accounting event request received and Send accounting Idle
successfully processed. event answer

Idle Accounting request received; no space left Send accounting Idle
to store records answer;
Result-Code =
OUT_OF_SPACE

Open Interim record received and successfully Send accounting Open
processed. interim answer;
Restart Ts

Open Accounting stop request received and Send accounting Idle
successfully processed stop answer;
Stop Ts

Open Accounting request received; no space left Send accounting Idle
to store records answer;
Result-Code =
OUT_OF_SPACE;
Stop Ts

Open Session supervision timer Ts expired Stop Ts Idle

8.3. サーバー開始の再認証

Diameter サーバーは Re-Auth-Request (RAR) を発行して, 特定セッションの再認証および/または再認可を開始してよい.

例えばプリペイドでは, 当初セッションを認可したサーバーがユーザーがまだサービスを利用しているかの確認を要することがある.

Session-Id が現在アクティブなセッションと一致する RAR を受け取ったアクセスデバイスは, 機能がサポートされていればユーザーに対する再認証を開始しなければならない (MUST). 各 Diameter アプリケーションはサーバー開始再認証の可否を明記しなければならない (MUST). 一部のアプリケーションはアクセスデバイスによるユーザーへの再認証プロンプトを許さない.

8.3.1. Re-Auth-Request

Re-Auth-Request (RAR) はコマンドコード 258 かつメッセージフラグの「R」ビットがセットされたものとして示される. 任意のサーバーからセッションサービスを提供するアクセスデバイスへ送ってよく, ユーザーの再認証および/または再認可を要求する.

メッセージ形式

::= < Diameter Header: 258, REQ, PXY >
< Session-Id >
{ Origin-Host }
{ Origin-Realm }
{ Destination-Realm }
{ Destination-Host }
{ Auth-Application-Id }
{ Re-Auth-Request-Type }
[ User-Name ]
[ Origin-State-Id ]
* [ Proxy-Info ]
* [ Route-Record ]
* [ AVP ]

8.3.2. Re-Auth-Answer

Re-Auth-Answer (RAA) はコマンドコード 258 で「R」ビットがクリアされたものとして示され, RAR への応答として送られる. Result-Code AVP は存在しなければならず (MUST), 要求の処理結果を示す.

成功した RAA の後には, アプリケーション固有の認証および/または認可メッセージが続かなければならない (MUST).

メッセージ形式

::= < Diameter Header: 258, PXY >
< Session-Id >
{ Result-Code }
{ Origin-Host }
{ Origin-Realm }
[ User-Name ]
[ Origin-State-Id ]
[ Error-Message ]
[ Error-Reporting-Host ]
[ Failed-AVP ]
* [ Redirect-Host ]
[ Redirect-Host-Usage ]
[ Redirect-Max-Cache-Time ]
* [ Proxy-Info ]
* [ AVP ]

8.4. セッション終了

セッションを認可し状態を維持している Diameter サーバーは, セッションが非アクティブになったことを追跡目的およびステートフルエージェントがユーザーセッション用に提供したリソースを解放するために通知を受ける必要がある. 状態を維持しないセッションには本節は用いない.

Diameter 認可を要したユーザーセッションが終了するとき, サービスを提供したアクセスデバイスは当該サービスを認可した Diameter サーバーに Session-Termination-Request (STR) を発行しなければならない (MUST). ユーザーログオフ, Session-Timeout 満了, 管理操作, Abort-Session-Request 受信後の終了 (下記), アクセスデバイスの順序停止など, 理由のいかんにかかわらず STR を発行しなければならない (MUST).

認可されたが実際には開始されなかったセッションについても STR を発行しなければならない. 例: アクセスデバイスの急なリソース不足, 認可で要求されたサービス種別を提供しない, 認可で返された必須 AVP をサポートしない, など.

プロキシの動作により認可済みセッションが開始されない場合もある. 例: プロキシが認可応答を変更し成功を失敗に変えてからアクセスデバイスへ転送する. 応答に NO_STATE_MAINTAINED の Auth-Session-State AVP が含まれていない場合, 認可済みセッションを開始させないプロキシは認可サーバーに STR を発行しなければならない (MUST). アクセスデバイスはセッションが認可されたことを知る手段がないためである.

STR を受信した Diameter サーバーは STR の Session-Id に関連するリソース (セッション状態など) を整理し, Session-Termination-Answer (STA) を返さなければならない (MUST).

Session-Timeout が満了したとき, または再認可要求なしに Authorization-Lifetime と Auth-Grace-Period AVP が満了したときも, 当該セッションの STR の有無にかかわらずリソースを整理しなければならない (MUST). これらのタイマ満了後もサービスを提供することは期待されない. いずれかの満了はアクセスデバイスが予期せず停止した可能性を示す.

8.4.1. Session-Termination-Request

Session-Termination-Request (STR) はコマンドコード 275 かつ Command Flags の「R」ビットがセットされたものとして示され, Diameter クライアントまたは Diameter プロキシから送られ, 認証および/または認可済みセッションが終了していることを Diameter サーバーに通知する.

メッセージ形式

::= < Diameter Header: 275, REQ, PXY >
< Session-Id >
{ Origin-Host }
{ Origin-Realm }
{ Destination-Realm }
{ Auth-Application-Id }
{ Termination-Cause }
[ User-Name ]
[ Destination-Host ]
* [ Class ]
[ Origin-State-Id ]
* [ Proxy-Info ]
* [ Route-Record ]
* [ AVP ]

8.4.2. Session-Termination-Answer

Session-Termination-Answer (STA) はコマンドコード 275 で「R」ビットがクリアされたものとして示され, Diameter サーバーから送られ, セッション終了通知を確認する. Result-Code AVP は存在しなければならず (MUST), STR 処理中のエラーを示してもよい (MAY).

STA の送信または受信後, Diameter サーバーは Session-Id AVP のセッションに関するすべてのリソースを解放しなければならない (MUST). プロキシチェーン上の中間サーバーも必要ならリソースを解放してよい (MAY).

メッセージ形式

::= < Diameter Header: 275, PXY >
< Session-Id >
{ Result-Code }
{ Origin-Host }
{ Origin-Realm }
[ User-Name ]
* [ Class ]
[ Error-Message ]
[ Error-Reporting-Host ]
[ Failed-AVP ]
[ Origin-State-Id ]
* [ Redirect-Host ]
[ Redirect-Host-Usage ]
[ Redirect-Max-Cache-Time ]
* [ Proxy-Info ]
* [ AVP ]

8.5. セッションの中止

Diameter サーバーは Abort-Session-Request (ASR) を発行して, アクセスデバイスに特定セッションのサービス提供停止を要求してよい.

例: 当初セッションを認可したサーバーが, 残高不足や当初認可時に想定しなかった理由でセッション停止を要することがある.

Session-ID が現在アクティブなセッションと一致する ASR を受け取ったアクセスデバイスはセッションを停止してもよい (MAY). 停止するかは実装および/または設定依存である. 例: 特定エージェントからの ASR のみ受け入れる. いずれにせよ Abort-Session-Answer で応答し, Result-Code AVP で実行した動作を示さなければならない (MUST).

8.5.1. Abort-Session-Request

Abort-Session-Request (ASR) はコマンドコード 274 かつ「R」ビットがセットされたものとして示され, 任意の Diameter サーバーまたはプロキシからセッションサービスを提供するアクセスデバイスへ送ってよく, Session-Id で識別されるセッションの停止を要求する.

メッセージ形式

::= < Diameter Header: 274, REQ, PXY >
< Session-Id >
{ Origin-Host }
{ Origin-Realm }
{ Destination-Realm }
{ Destination-Host }
{ Auth-Application-Id }
[ User-Name ]
[ Origin-State-Id ]
* [ Proxy-Info ]
* [ Route-Record ]
* [ AVP ]

8.5.2. Abort-Session-Answer

Abort-Session-Answer (ASA) はコマンドコード 274 で「R」ビットがクリアされたものとして示され, ASR への応答として送られる. Result-Code AVP は存在し, 要求の処理結果を示す.

ASR の Session-Id のセッションが正常終了した場合は DIAMETER_SUCCESS. 現在アクティブでない場合は DIAMETER_UNKNOWN_SESSION_ID. その他の理由でセッションを停止しなかった場合は DIAMETER_UNABLE_TO_COMPLY.

メッセージ形式

::= < Diameter Header: 274, PXY >
< Session-Id >
{ Result-Code }
{ Origin-Host }
{ Origin-Realm }
[ User-Name ]
[ Origin-State-Id ]
[ Error-Message ]
[ Error-Reporting-Host ]
[ Failed-AVP ]
* [ Redirect-Host ]
[ Redirect-Host-Usage ]
[ Redirect-Max-Cache-Time ]
* [ Proxy-Info ]
* [ AVP ]

8.6. Origin-State-Id からのセッション終了の推測

Origin-State-Id は, アクセスデバイスの予期しない停止により STR が発行されなかった終了セッションを検出するために用いられる.

Diameter クライアントまたはアクセスデバイスは起動または電源投入のたびに Origin-State-Id を増加させ, サーバー接続直後に CER/CEA で新しい値を送る. サーバーは当該クライアントについて保持していた旧値が新値より小さいか, 当該クライアント発の未終了セッションがあるかを比較し, 送信クライアントが異常終了したかを判断できる.

アクセスデバイスとサーバーの間にリレーまたはプロキシがある場合, CER 以外の要求にも Origin-State-Id を含めてよい. ただしサーバーは新しい要求を受け取るまでデバイス再起動に気付けないため, プロキシとリレーではより機会的である.

Diameter サーバーはクライアント再起動検出前にアクティブだったセッションはすべて終了したとみなしてよい. そのような消失セッションの状態をすべて整理してもよく (MAY), アップストリームサーバーで認可されたそれらに対して STR を発行しグローバルに状態を整理してもよい (MAY).

8.7. Auth-Request-Type AVP

Auth-Request-Type AVP (AVP コード 274) は Enumerated 型で, アプリケーション固有の認可要求に含まれ, ユーザーが認証のみ, 認可のみ, または両方かをピアに通知する. 「両方」以外の値は RADIUS 相互運用に問題を起こすことがある (MAY). 定義値は次のとおり:

AUTHENTICATE_ONLY 1

認証のみを目的とし, Diameter サーバーがユーザーを認証するために必要なアプリケーション固有認証 AVP を含めなければならない (MUST).

AUTHORIZE_ONLY 2

認可のみを目的とし, 要求/提供されるサービスを識別するために必要なアプリケーション固有認可 AVP を含めなければならない (MUST).

AUTHORIZE_AUTHENTICATE 3

認証と認可の両方を要求し, 関連するアプリケーション固有認証情報とサービス識別に必要な認可情報の両方を含めなければならない (MUST).

8.8. Session-Id AVP

Session-Id AVP (AVP コード 263) は UTF8String 型で特定セッションを識別する (第 8 節). 特定セッションに関するメッセージは Session-Id AVP を 1 つのみ含めなければならず (MUST), セッション存続期間中は同一値を用いなければならない (MUST). 存在する場合, Session-Id は Diameter ヘッダ直後に置くべきである (SHOULD, 第 3 節).

Session-Id はグローバルかつ永続的に一意でなければならず (MUST), 他情報なしでユーザーセッションを一意に識別し, 履歴認証情報と課金情報を相関するために必要になることがある. 必須部分と実装定義部分があり, 後者の推奨形式を以下に示す.

Session-Id は DiameterIdentity 型で符号化された送信者識別で始めなければならない (MUST, 第 4.3.1 節). 残りは「;」で区切り, クライアントが永続的一意性を保証できる任意列としてよいが (MAY), 次の形式を推奨する ([] は任意要素):

<high>;<low>[;<optional>]

<high><low> は単調増加 64 ビット値の上位/下位 32 ビットの十進表現である. 32 ビット処理のため 2 分割する. 起動時, 上位 32 ビットを NTP 形式時刻 [RFC5905] に, 下位をゼロに初期化してもよい (MAY). 再起動が 1 秒超かかる前提で実質的に Session-Id 重複を防ぐ. 非揮発メモリで増分を保持してもよい (MAY).

<optional> は実装依存で, モデム装置 ID, レイヤ 2 アドレス, タイムスタンプなどを含みうる.

任意値なしの例:

accesspoint7.example.com;1876543210;523

任意値ありの例:

accesspoint7.example.com;1876543210;523;[email protected]

Session-Id はセッションを開始する Diameter アプリケーション (多くはクライアント) が生成する. 同一アプリケーションの認証, 認可, 課金コマンドで Session-Id を共用してもよい (MAY).

8.9. Authorization-Lifetime AVP

Authorization-Lifetime AVP (AVP コード 291) は Unsigned32 型で, 再認証/再認可前にユーザーへ提供するサービスの最大秒数を示す. 小さな非ゼロ値は Diameter トラフィックを増大させネットワークとエージェントを輻輳させうるため注意する.

ゼロ (0) はアクセスデバイスによる即時再認証が必要であることを意味する. AVP 欠落, または全ビット 1 は再認証を期待しない.

本 AVP と Session-Timeout AVP が共存する場合, 後者は Authorization-Lifetime 未満であってはならない (MUST NOT).

再認可メッセージに Authorization-Lifetime AVP を含めてもよく (MAY), アクセスデバイスが再認可応答を受信した時点からユーザーがサービスを受けられる秒数を示す.

クライアントは受容可能最大生存期のヒントとして本 AVP を送ってもよい (MAY). サーバーはクライアント提示値以下を返さなければならない (MUST).

8.10. Auth-Grace-Period AVP

Auth-Grace-Period AVP (AVP コード 276) は Unsigned32 型で, Authorization-Lifetime AVP 満了後, セッションリソースを整理する前に Diameter サーバーが待つ秒数を示す.

8.11. Auth-Session-State AVP

Auth-Session-State AVP (AVP コード 277) は Enumerated 型で, セッション状態を維持するかを指定する. クライアントは要求にヒントとして含めてもよいが (MAY), サーバー応答の値が拘束力を持つ. サポート値:

STATE_MAINTAINED 0

セッション状態を維持し, ユーザーへのサービス終了時にセッション終了メッセージを発行しなければならない (MUST). 既定値.

NO_STATE_MAINTAINED 1

Authorization-Lifetime 満了時にアクセスデバイスからセッション終了メッセージを送らない.

8.12. Re-Auth-Request-Type AVP

Re-Auth-Request-Type AVP (AVP コード 285) は Enumerated 型で, アプリケーション固有認可応答に含まれ, Authorization-Lifetime 満了時に期待される動作をクライアントに通知する.

応答に正の Authorization-Lifetime AVP がある場合, Re-Auth-Request-Type AVP を応答に含めなければならない (MUST). 定義値:

AUTHORIZE_ONLY 0

Authorization-Lifetime 満了時は認可のみの再認証が期待される. Authorization-Lifetime を含む応答で本 AVP がない場合の既定.

AUTHORIZE_AUTHENTICATE 1

満了時は認証と認可の再認証が期待される.

8.13. Session-Timeout AVP

Session-Timeout AVP (AVP コード 27) [RFC2865] は Unsigned32 型で, セッション終了前に提供するサービスの最大秒数を示す. 応答に両方ある場合, Session-Timeout は Authorization-Lifetime 以上でなければならない (MUST).

Session-Timeout 満了でアクセスデバイス上でセッションが終了した場合 STR を発行しなければならない (MUST). ただしアクセスデバイスとホームサーバーが事前にセッション終了メッセージを送らないことに合意した場合を除く (第 8 節).

再認可応答に Session-Timeout AVP を含めてもよく (MAY), 再認証開始からの残り秒数を示す.

ゼロまたは AVP 欠落は終了まで無制限の秒数を意味する.

クライアントは最大タイムアウトのヒントとして送ってもよい (MAY). サーバーは提示値以下を返してもよい (MAY).

8.14. User-Name AVP

User-Name AVP (AVP コード 1) [RFC2865] は UTF8String 型で User-Name を含み, NAI 仕様 [RFC4282] に整合する形式とする.

8.15. Termination-Cause AVP

Termination-Cause AVP (AVP コード 295) は Enumerated 型で, アクセスデバイス上でセッションが終了した理由を示す. 現在の割当値は IANA の Termination-Cause AVP Values レジストリ [IANATCV] を参照.

8.16. Origin-State-Id AVP

Origin-State-Id AVP (AVP コード 278) は Unsigned32 型の単調増加値で, 再起動など先行状態喪失で Diameter 実体が再起動するたびに進む. 任意の Diameter メッセージ (CER を含む) に含めてよい (MAY).

本 AVP を出す実体は状態リセットのたびにより大きな値を生成しなければならない (MUST). 起動時刻を設定してもよく (MAY), 非揮発メモリの増分カウンタを用いてもよい (MAY).

存在する場合, Origin-Host が示す実体の状態を反映しなければならない (MUST). プロキシが Origin-Host を変更した場合, Origin-State-Id を削除するか適切に変更しなければならない (MUST). 通常, アクセスデバイスは起動時アクティブセッションなし (再起動前のセッションは失われる) であり, メッセージに Origin-State-Id を含めるとより小さい値に関連付けられたセッションは非アクティブと推論できる. その推論を望まないデバイスは Origin-State-Id を含めないか 0 にしなければならない (MUST).

8.17. Session-Binding AVP

Session-Binding AVP (AVP コード 270) は Unsigned32 型で, アプリケーション固有認可応答に存在してもよい (MAY). 存在する場合, 当該セッションの今後のアプリケーション固有再認証および Session-Termination-Request は同一認可サーバーへ送らなければならない (MUST) とクライアントに通知してもよい (MAY).

ビットマスクであり, 次のビットが定義される:

RE_AUTH 1

セット時は今後の再認証に Destination-Host AVP を含めてはならない (MUST NOT). クリア (既定) 時はすべての再認証に含めなければならない (MUST).

STR 2

セット時は STR に Destination-Host を含めてはならない. クリア時は STR に含めなければならない (MUST).

ACCOUNTING 4

セット時は課金メッセージに Destination-Host を含めてはならない. クリア時は既知ならすべての課金メッセージに含めなければならない (MUST).

8.18. Session-Server-Failover AVP

Session-Server-Failover AVP (AVP コード 271) は Enumerated 型で, Session-Binding AVP がないか, いずれかのビットがゼロのアプリケーション固有認可応答に存在してもよい (MAY). 存在する場合, 再認証または STR が配送問題で失敗したとき Destination-Host なしの後続メッセージを送るべきである (SHOULD) と通知してもよい (MAY). 欠落時の既定は REFUSE_SERVICE.

サポート値:

REFUSE_SERVICE 0

再認証または STR の配送が失敗したらユーザーサービスを終了し, 再試行しない.

TRY_AGAIN 1

いずれかが失敗したら Destination-Host なしで失敗メッセージを再送する.

ALLOW_SERVICE 2

再認証配送失敗時は再認可成功とみなす. STR 配送失敗時はセッション終了.

TRY_AGAIN_ALLOW_SERVICE 3

いずれか失敗時は Destination-Host なしで再送. 再認証の 2 回目も失敗なら再認可成功とみなす. STR の 2 回目失敗ならセッション終了.

8.19. Multi-Round-Time-Out AVP

Multi-Round-Time-Out AVP (AVP コード 272) は Unsigned32 型で, Result-Code AVP が DIAMETER_MULTI_ROUND_AUTH のアプリケーション固有認可応答に含めるべきである (SHOULD). 認証要求に応答するためユーザーに与える最大秒数を示し, アクセスデバイスはこれを提供しなければならない (MUST).

8.20. Class AVP

Class AVP (AVP コード 25) は OctetString 型で, Diameter サーバーがアクセスデバイスへ状態情報を返すために用いる. アプリケーション固有認可応答に 1 つ以上ある場合, 後続の再認可, セッション終了, 課金メッセージにも含めなければならない (MUST). 再認可応答の Class AVP は以前の認可応答のものを上書きする. サーバー実装はクライアント上 4096 バイト超の保存を要する Class AVP を返すべきではない (SHOULD NOT). ローカル可用ストレージを超える Class AVP を受け取ったクライアントはセッションを終了しなければならない (MUST).

8.21. Event-Timestamp AVP

Event-Timestamp (AVP コード 55) は Time 型で, Accounting-Request および Accounting-Answer に含めてもよく (MAY), 報告イベント発生時刻を 1900-01-01 00:00 UTC からの秒で記録する.