2.4.3 複数メッセージの一括送受信機能

複数のメッセージを結合し,一つの論理メッセージとすることで,論理メッセージ単位での送達確認を行います。これを,複数メッセージの一括送受信機能といいます。複数のメッセージを一括して送受信することで,送達確認の頻度が減るため,通信時間を短縮できます。

通常のメッセージ送受信時の送達確認と,複数メッセージの一括送受信機能を使用した場合の送達確認との比較を次の図に示します。

図2-22 通常のメッセージ送受信時の送達確認

[図データ]

図2-23 複数メッセージの一括送受信機能を使用した場合の送達確認

[図データ]

なお,一つの論理メッセージの最大サイズは,最大で9メガバイトです。メッセージの合計サイズが9メガバイトを超える場合は,複数の論理メッセージになります。一つのメッセージが複数の論理メッセージに分割されることはありません。

この機能は,次のときに使用できます。

<この項の構成>
(1) 論理メッセージの送達確認範囲
(2) 単メッセージの送達確認範囲の変更機能

(1) 論理メッセージの送達確認範囲

論理メッセージの送達確認は,一定の範囲ごとに行われます。ここでは,送達確認範囲およびその見積もり方法について説明します。

論理メッセージの送達確認は,送達確認パケット数ごとに行われます。ただし,送達確認後の残りパケット数が,送達確認パケット数の20%未満となる場合は,残りのすべてのパケットに対して送達確認を行います。論理メッセージのパケット数が,送達確認パケット数以下の場合は,すべてのパケットに対して一度の送達確認を行います。

送達確認パケット数は,RPC関連定義のrpc_udp_lmsg_deliverychk_sizeオペランドの指定値(省略時解釈値:512キロバイト)をrpc_udp_packet_sizeオペランドの指定値(省略時解釈値:1472バイト)で除算した値です。

送達確認が完了した時点で,送達確認範囲で完成(最終パケットのパケット送信完了)しているメッセージは,送受信完了となります。輻輳状態となった場合は,送達確認範囲単位に輻輳制御を行います。

送達確認範囲が小さい場合は,送達確認が多発するため,通信遅延の原因となります。一方,送達確認範囲が大きい場合は,パケットロスなどによる通信障害時に,再送による通信量が増加します。そのため,送信側のUDPグループ情報関連定義のmyudpsnddef定義コマンドの-bオプションの指定値と,受信側のmyudprcvdefまたはclgrpdef定義コマンドの-Bオプションの指定値のうち,小さい方の値以下に指定することをお勧めします。

論理メッセージサイズが送達確認サイズを超過している場合の送達確認範囲を次の図に示します。

図2-24 論理メッセージサイズが送達確認サイズを超過している場合

[図データ]

この図では,論理メッセージを構成するパケットを送達確認パケット数で区切った場合に,1パケット(D15)が余ります。しかし,送達確認の最小パケット数は2であるため,D15は送達確認範囲2に含めます。

次に,論理メッセージサイズが送達確認サイズ以下の場合の送達確認範囲を次の図に示します。

図2-25 論理メッセージサイズが送達確認サイズ以下の場合

[図データ]

この図では,論理メッセージが送達確認パケット数以下であるため,一度に送達確認できます。

(2) 単メッセージの送達確認範囲の変更機能

単メッセージとは,一つのメッセージから成る論理メッセージです。

通常,送達確認はパケットの送信後に行われます。しかし,メッセージサイズより送信先のソケット受信バッファサイズが小さい場合,送信先のUDPソケット受信バッファ不足が発生し,パケットロスするおそれがあります。ロストしたパケットは,再送処理によって保証されます。しかし,送信するパケット数が増加するため,通信遅延が発生したり,CPUやネットワークの負荷が増大したりします。そのため,XTCでは,単メッセージの場合の送達確認範囲を変更できます。

送達確認範囲を変更する場合,RPC関連定義のrpc_udp_msg_deliverychk_sizeオペランドの指定値(省略時解釈値:2メガバイト)をRPC関連定義のrpc_udp_packet_sizeオペランドの指定値(省略時解釈値:1472バイト)で除算した値を送達確認パケット数として,送達確認パケット数ごとに送達確認を行います。ただし,送達確認後の残パケット数が,送達確認パケット数の20%未満となる場合は,残りのすべてのパケットに対して送達確認を行います。メッセージのパケット数が,送達確認パケット数以下の場合は,すべてのパケットに対して一度に送達確認を行います。これによって,連続送信するパケット数が減少し,パケットのロスト頻度も減少します。輻輳状態となった場合は,送達確認範囲単位に輻輳制御を行います。

送達確認範囲が小さい場合は,送達確認が多発するため通信遅延の原因となります。一方,送達確認範囲が大きい場合は,パケットロスなどによる通信障害時に,再送による通信量が増加します。そのため,送信元のUDPグループ情報関連定義のmyudpsnddef定義コマンドの-bオプションの指定値,および送信先のmyudprcvdef定義コマンド,またはclgrpdef定義コマンドの-Bオプションの指定値のうち,小さい方の値以下に指定することをお勧めします。

メッセージサイズが送達確認サイズを超過している場合の送達確認範囲を次の図に示します。

図2-26 メッセージサイズが送達確認サイズを超過している場合

[図データ]

この図では,メッセージを構成するパケットを送達確認パケット数で区切った場合に,1パケット(D15)が余ります。しかし,送達確認の最小パケット数は2であるため,D15は送達確認範囲2に含めます。

次に,メッセージサイズが送達確認サイズ以下の場合の送達確認範囲を次の図に示します。

図2-27 メッセージサイズが送達確認サイズ以下の場合

[図データ]

この図では,メッセージが送達確認サイズ以下であるため,一度に送達確認できます。