開発/設計/議論

議論の目的

パケットをどのようにNormalize化するかを議論します。 - 議論を委譲しました。

メッセージ変換部の位置付け

ここでは、下記の機能を提供します。 - メッセージのNormalize化 - メッセージのテンプレートによる出力 - トランスポート層(API含む)の制御

メッセージのNormalize化

メッセージ変換部 から スクリプト へ 送信される「FlatSIP」メッセージとな り、パケットを抽象化したメッセージに変換することを想定しているものです。

ただし、コントロールメッセージも必要になると思いますので、[[トランスポ ート層の制御>]]と合わせて、ご覧ください。

具体的な内容としては、パケットとして構成されるべきであろう最小公倍数的に ヘッダーなどを定義します。
対象としては、下記のようなものとなります。 - IP、TCP、UDPのヘッダー - SIPのヘッダー - SDPなど上記Bodyとして使用されるもの

例えば、下記のようなSIPメッセージがあった場合

UDP x.x.x.x y.y.y.y
INVITE yyy@yyy SIP/2.0\r\n
To: xxx@xxx;tag=xxx
From: yyy@yyy

メッセージ変換部のメッセージのNormalize化処理を行うと

proto:UDP
srcIP:x.x.x.x
dstIP:y.y.y.y
METHOD:INVITE
FROM:xxx@xxx
TO:yyy@yyy

というようなものになります。

※SIPropの現バージョンにおいては、SIPのみの対応となるため、Stringを渡す のみという単純な構造とすることも検討しても良いかと思います。
これをどうするかを議論したいと思います。
※Velocityを用いるか、ただのクラスとするかも検討したいです。

より柔軟性を持たせるために

パケットの層構造に合わせて、数層構造に分けて、Normalize化処理をすること も視野に入れていますが、今回の実装では見送るかもしれません。
上記の例で言えば、IP層NormalizerとSIP層Normalizerを作成して、2段階でNormalize化処理を行うことを想定しています。

メッセージのテンプレートによる出力

上記のNormalize化されたメッセージを、具体的なパケット(SIP)に変換するもの となります。
ただし、コントロールメッセージも必要になると思いますので、[[トランスポ ート層の制御>]]と合わせて、ご覧ください。

上記のNormalize化されたメッセージに対して、下記のようなものを用意してお くと - 出力テンプレート

INVITE {dstIP} SIP/2.0\r\n
From: {FROM}
To: {TO};tag=xxx

↓のように出力されるものとなります - 出力イメージ

INVITE y.y.y.y SIP/2.0\r\n
From: xxx.@xxx
To: yyy@yyy;tag=yyy

※Velocityを使用する場合は、もっと違う形となりますので、そのVelocityのテ ンプレートの形を議論したいと思います。

トランスポート層(API含む)の制御

外界との接続部分と通信をさせるためにコントロールするための部分となります。

具体的には、TCP/UDPを生成したりする部分となり、それをメッセージ内にある パラメータのみで制御させることを目的としています。
ここに関しては、まだ、具体的に考慮していない部分です。すみません。

※この制御用のメッセージの種類を議論したいと思います。

議論の論点

「FlatSIP」メッセージ(Normalizeメッセージ)の内容

出力テンプレートの内容

トランスポート層(API含む)の制御種類

結論