4.3.1. Common Derived AVP Data Formats
以下は、一般的に使用される派生 AVP データ形式です。
Address
Address 形式は OctetString 基本 AVP 形式から派生しています。これは、例えば、32 ビット (IPv4) [RFC0791] または 128 ビット (IPv6) [RFC4291] アドレスを表す識別共用体で、最上位オクテットが最初に来ます。Address AVP の最初の 2 オクテットは AddressType を表し、[IANAADFAM] で定義されているアドレスファミリーが含まれています。AddressType は、残りのオクテットの内容と形式を識別するために使用されます。
Time
Time 形式は OctetString 基本 AVP 形式から派生しています。文字列は 4 オクテットを含まなければならず (MUST)、NTP タイムスタンプ形式の最初の 4 バイトと同じ形式です。NTP タイムスタンプ形式は [RFC5905] のセクション 3 で定義されています。
これは、協定世界時 (UTC) に対して 1900 年 1 月 1 日 0 時からの秒数を表します。
2036 年 2 月 7 日 6 時 28 分 16 秒 UTC に、時刻値はオーバーフローします。簡易ネットワークタイムプロトコル (SNTP) [RFC5905] は、時刻を 2104 年まで延長する手順を記述しています。この手順は、すべての Diameter ノードでサポートしなければなりません (MUST)。
UTF8String
UTF8String 形式は OctetString 基本 AVP 形式から派生しています。これは、ISO/IEC IS 10646-1 文字セットを使用して表現された人間が読める文字列で、UTF-8 変換形式 [RFC3629] を使用して OctetString としてエンコードされています。
10646 標準には時折修正によって追加のコードポイントが追加されるため、実装は 0x00000001 から 0x7fffffff までの任意のコードポイントに遭遇する準備をしなければなりません (MUST)。コードポイントを UTF-8 文字セットへの有効なエンコーディングに対応しないバイトシーケンス、またはこの範囲外のバイトシーケンスは禁止されています。
制御コードの使用は避けるべきです (SHOULD)。改行を表す必要がある場合は、制御コードシーケンス CR LF を使用すべきです (SHOULD)。
先頭または末尾の空白の使用は避けるべきです (SHOULD)。
ユーザーインターフェースのハードウェアまたはソフトウェアで直接サポートされていないコードポイントについては、16 進数などの代替入力および表示手段を提供してもかまいません (MAY)。
7 ビット US-ASCII でエンコードされた情報の場合、UTF-8 文字セットは US-ASCII 文字セットと同一です。
UTF-8 は単一の文字/コードポイントを表すために複数のバイトを必要とする場合があります。したがって、UTF8String のオクテット長は、エンコードされた文字数とは異なる場合があります。
UTF8String の AVP Length フィールドは、文字ではなくオクテットで測定されることに注意してください。
DiameterIdentity
DiameterIdentity 形式は OctetString 基本 AVP 形式から派生しています。
DiameterIdentity = FQDN/Realm
DiameterIdentity 値は、次のいずれかを一意に識別するために使用されます:
-
重複接続およびルーティングループ検出の目的での Diameter ノード。
-
メッセージをローカルで満たすことができるか、ルーティングまたはリダイレクトする必要があるかを判断するための Realm。
DiameterIdentity 値が Diameter ノードを識別するために使用される場合、文字列の内容は Diameter ノードの完全修飾ドメイン名 (FQDN) でなければなりません (MUST)。同じホスト上で複数の Diameter ノードが実行される場合、各 Diameter ノードには一意の DiameterIdentity を割り当てなければなりません (MUST)。Diameter ノードが複数の FQDN で識別できる場合は、起動時に単一の FQDN を選択し、送信される接続に関係なく、そのノードの唯一の DiameterIdentity として使用すべきです。このドキュメントでは、DiameterIdentity は既存の DNS インフラストラクチャと互換性を持たせるために ASCII 形式であることに注意してください。Diameter プロトコルと国際化ドメイン名 (IDN) 間の相互作用については、付録 D を参照してください。
DiameterURI
DiameterURI は、統一リソース識別子 (RFC3986) 構文 [RFC3986] で指定された以下のルールに従わなければなりません (MUST):
"aaa://" FQDN [ port ] [ transport ] [ protocol ]
; トランスポートセキュリティなし
"aaas://" FQDN [ port ] [ transport ] [ protocol ]
; トランスポートセキュリティ使用
FQDN = < 完全修飾ドメイン名 >
port = ":" 1*DIGIT
; 着信接続をリッスンするために使用される
; ポートの 1 つ。
; 存在しない場合、トランスポートセキュリティが
; 使用されていない場合はデフォルトの Diameter
; ポート (3868) が想定され、トランスポート
; セキュリティ (TLS/TCP および DTLS/SCTP) が
; 使用される場合はポート 5658 が想定されます。
transport = ";transport=" transport-protocol
; 着信接続をリッスンするために使用される
; トランスポートの 1 つ。存在しない場合、
; デフォルトのプロトコルは TCP と想定されます。
; aaa-protocol フィールドが diameter に
; 設定されている場合、UDP を使用してはなりません。
transport-protocol = ( "tcp" / "sctp" / "udp" )
protocol = ";protocol=" aaa-protocol
; 存在しない場合、デフォルトの AAA プロトコル
; は Diameter です。
aaa-protocol = ( "diameter" / "radius" / "tacacs+" )
以下は、有効な Diameter ホスト識別子の例です:
aaa://host.example.com;transport=tcp
aaa://host.example.com:6666;transport=tcp
aaa://host.example.com;protocol=diameter
aaa://host.example.com:6666;protocol=diameter
aaa://host.example.com:6666;transport=tcp;protocol=diameter
aaa://host.example.com:1813;transport=udp;protocol=radius
Enumerated
Enumerated 形式は Integer32 基本 AVP 形式から派生しています。定義には有効な値とその解釈のリストが含まれており、AVP を導入する Diameter アプリケーションで記述されています。
IPFilterRule
IPFilterRule 形式は OctetString 基本 AVP 形式から派生し、ASCII 文字セットを使用します。ルール構文は、FreeBSD の ipfw(8) の変更されたサブセットです。パケットは、それに関連付けられた以下の情報に基づいてフィルタリングできます:
Direction (入または出)
Source and destination IP address (マスク可能)
Protocol
Source and destination port (リストまたは範囲)
TCP flags
IP fragment flag
IP options
ICMP types
適切な方向のルールは順番に評価され、最初に一致したルールで評価が終了します。各パケットは 1 回評価されます。ルールが一致しない場合、最後に評価されたルールが permit であればパケットは破棄され、最後のルールが deny であればパケットは通過します。
IPFilterRule フィルターは次の形式に従わなければなりません (MUST):
action dir proto from src to dst [options]
action permit - ルールに一致するパケットを許可します。
deny - ルールに一致するパケットを破棄します。
dir "in" は端末から、"out" は端末へ。
proto 番号で指定された IP プロトコル。"ip"
キーワードは任意のプロトコルが一致することを
意味します。
src and dst <address/mask> [ports]
<address/mask> は次のように指定できます:
ipno ドット付き 4 組または正規 IPv6 形式の
IPv4 または IPv6 番号。この正確な IP
番号のみがルールに一致します。
ipno/bits 上記の IP 番号に、192.0.2.10/24 の
形式のマスク幅を付けたもの。この場合、
192.0.2.0 から 192.0.2.255 までの
すべての IP 番号が一致します。ビット幅は
IP バージョンに対して有効でなければならず、
IP 番号はマスクを超えてビットを設定して
はなりません。一致が発生するには、IP
アドレスを記述するときに使用されたものと
同じ IP バージョンがパケットに存在する
必要があります。特定の IP バージョンを
テストするには、ビット部分をゼロに設定
できます。キーワード "any" は 0.0.0.0/0
または IPv6 相当です。キーワード "assigned"
は、端末に割り当てられたアドレスまたは
アドレスセットです。IPv4 の場合、典型的な
最初のルールは多くの場合 "deny in ip!
assigned" です。
一致の意味は、アドレスの前に not 修飾子 (!)
を付けることで反転でき、他のすべてのアドレスが
代わりに一致します。これはポート番号の選択には
影響しません。
TCP、UDP、および SCTP プロトコルでは、オプションの
ポートを次のように指定できます:
{port/port-port}[,ports[,...]]
'-' 表記は、ポートの範囲 (境界を含む) を
指定します。
非ゼロオフセットを持つ断片化されたパケット
(つまり、最初の断片ではない) は、1 つ以上の
ポート仕様を持つルールに一致しません。断片化
されたパケットの一致に関する詳細については、
frag オプションを参照してください。
options:
frag パケットが断片であり、これがデータグラムの
最初の断片でない場合に一致します。frag は
tcpflags または TCP/UDP ポート仕様と
組み合わせて使用できません。
ipoptions spec
IP ヘッダーに spec で指定されたカンマ区切りの
オプションリストが含まれている場合に一致します。
サポートされている IP オプションは次のとおりです:
ssrr (厳密な送信元ルート), lsrr (緩い送信元
ルート), rr (パケットルートの記録), および ts
(タイムスタンプ)。特定のオプションがないことは
'!' で示すことができます。
tcpoptions spec
TCP ヘッダーに spec で指定されたカンマ区切りの
オプションリストが含まれている場合に一致します。
サポートされている TCP オプションは次のとおりです:
mss (最大セグメントサイズ), window (tcp ウィンドウ
アドバタイズメント), sack (選択的確認応答), ts
(rfc1323 タイムスタンプ), および cc (rfc1644
t/tcp 接続カウント)。特定のオプションがないことは
'!' で示すことができます。
established
TCP パケットのみ。RST または ACK ビットが
設定されているパケットに一致します。
setup TCP パケットのみ。SYN ビットが設定されているが
ACK ビットがないパケットに一致します。
tcpflags spec
TCP パケットのみ。TCP ヘッダーに spec で指定
されたカンマ区切りのフラグリストが含まれている
場合に一致します。サポートされている TCP フラグは
次のとおりです:
fin, syn, rst, psh, ack, および urg。特定の
フラグがないことは '!' で示すことができます。
tcpflags 仕様を含むルールは、非ゼロオフセットを
持つ断片化されたパケットに一致することはありません。
断片化されたパケットの一致に関する詳細については、
frag オプションを参照してください。
icmptypes types
ICMP パケットのみ。ICMP タイプが types リストに
ある場合に一致します。リストは、カンマで区切られた
範囲または個別のタイプの任意の組み合わせとして
指定できます。数値と以下にリストされている記号値の
両方を使用できます。サポートされている ICMP タイプは
次のとおりです:
echo reply (0), destination unreachable (3),
source quench (4), redirect (5), echo request
(8), router advertisement (9), router
solicitation (10), time-to-live exceeded (11), IP
header bad (12), timestamp request (13),
timestamp reply (14), information request (15),
information reply (16), address mask request (17),
および address mask reply (18)。
アクセスデバイスが常に破棄しなければならない (MUST) パケットが 1 種類あります。それは、断片オフセットが 1 の IP 断片です。これは有効なパケットですが、ファイアウォールを回避しようとする唯一の用途があります。
deny ルールを解釈または適用できないアクセスデバイスは、セッションを終了しなければなりません (MUST)。permit ルールを解釈または適用できないアクセスデバイスは、より制限的なルールを適用してもかまいません (MAY)。アクセスデバイスは、提供されたルールの前に独自の deny ルールを適用してもかまいません (MAY)。例えば、アクセスデバイス所有者のインフラストラクチャを保護するためです。