Manpages

名 前

udplite − 軽 量 な ユ ー ザ ー デ ー タ グ ラ ム プ ロ ト コ ル

書 式

#include <sys/socket.h>

sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDPLITE);

説 明

こ れ は RFC 3828 に 書 か れ て い る 軽 量 な ユ ー ザ ー デ ー タ グ ラ ム プ ロ ト コ ル (Lightweight User Datagram Protocol; UDP−Lite) の 実 装 で あ る 。

UDP−Lite は UDP (RFC 768) の 拡 張 で 、 可 変 長 の チ ェ ッ ク サ ム を サ ポ ー ト し て い る 。 こ の プ ロ ト コ ル が 効 果 を 発 揮 す る の は 、 少 し だ け 壊 れ た デ ー タ グ ラ ム が あ っ た 場 合 に 、 そ の デ ー タ グ ラ ム を 下 位 レ イ ヤ ー の プ ロ ト コ ル に 廃 棄 さ せ る の で は な く 、 そ れ を 利 用 す る こ と が で き る よ う な 、 あ る 種 の マ ル チ メ デ ィ ア 転 送 に お い て で あ る 。 可 変 長 の チ ェ ッ ク サ ム の 対 象 範 囲 は setsockopt(2) オ プ シ ョ ン 経 由 で 設 定 さ れ る 。 こ の オ プ シ ョ ン が 設 定 さ れ て い な い 場 合 、 UDP と 異 な る の は 違 う IP プ ロ ト コ ル 識 別 子 (IANA 番 号 136) を 使 用 す る 点 だ け で あ る 。

UDP−Lite の 実 装 は udp(7) の 完 全 な 拡 張 、 す な わ ち API と API の 動 作 は 同 じ で あ る 。 こ れ に 加 え て 、 2 つ の ソ ケ ッ ト オ プ シ ョ ン が チ ェ ッ ク サ ム の 対 象 範 囲 を 制 御 す る た め に 提 供 さ れ て い る 。 ア ド レ ス の フ ォ ー マ ッ ト
UDP−Litev4 は ip(7) で 説 明 さ れ て い る sockaddr_in ア ド レ ス を 使 用 す る 。 UDP−Litev6 は ipv6(7) で 説 明 さ れ て い る sockaddr_in6 ア ド レ ス を 使 用 す る 。 ソ ケ ッ ト オ プ シ ョ ン
UDP−Lite の ソ ケ ッ ト オ プ シ ョ ン を 設 定 /取 得 す る に は 、 オ プ シ ョ ン レ ベ ル 引 き 数 に IPPROTO_UDPLITE を 指 定 し て 、 取 得 時 に は getsockopt(2) を 、 設 定 時 に は setsockopt(2) を 呼 び 出 す 。 さ ら に 、 全 て の IPPROTO_UDP の ソ ケ ッ ト オ プ シ ョ ン が UDP−Lite ソ ケ ッ ト で も 使 用 で き る 。 詳 細 は udp(7) を 参 照 の こ と 。 以 下 の 2 つ が UDP−Lite に 固 有 の オ プ シ ョ ン で あ る 。
UDPLITE_SEND_CSCOV
こ の オ プ シ ョ ン は 送 信 側 の チ ェ ッ ク サ ム の 対 象 範 囲 を 設 定 す る 。 int 型 を 引 き 数 と し て 取 り 、 設 定 可 能 な 値 の 範 囲 は 0 か ら 2^16−1 ま で で あ る 。 値 0 は デ ー タ グ ラ ム 全 体 が 常 に チ ェ ッ ク サ ム の 対 象 と な る こ と を 意 味 す る 。 値 1〜 7 は 不 正 で あ り (RFC 3828 の 3.1 章 )、 範 囲 の 設 定 と し て 最 小 値 で あ る 8 に 切 り 上 げ ら れ る 。

IPv6 の jumbograms (巨 大 な デ ー タ グ ラ ム ; RFC 2675) の 場 合 に は 、 UDP−Litev6 の チ ェ ッ ク サ ム の 対 象 範 囲 は 、 RFC 3828 の 3.5 章 に あ る よ う に 、 先 頭 か ら 2^16−1 オ ク テ ッ ト ま で に 限 定 さ れ る 。 そ の た め 、 そ れ よ り 大 き な 値 は 2^16−1 に 黙 っ て 切 り 詰 め ら れ る 。 現 在 の 対 象 範 囲 の 値 を 知 り た け れ ば 、 い つ で も getsockopt(2) を 使 っ て 値 を 問 い 合 わ せ る こ と が で き る 。

UDPLITE_RECV_CSCOV こ れ は 受 信 側 の チ ェ ッ ク サ ム の 対 象 範 囲 を 設 定 す る も の で 、 使 用 さ れ る 引 き 数 形 式 と 値 の 範 囲 は UDPLITE_SEND_CSCOV と 同 じ で あ る 。 こ の オ プ シ ョ ン は 、 部 分 的 な チ ェ ッ ク サ ム 対 象 範 囲 を 持 つ ト ラ フ ィ ッ ク を 有 効 に す る の に 必 要 な わ け で は な く 、 ト ラ フ ィ ッ ク フ ィ ル タ ー と し て 機 能 す る 。 こ の オ プ シ ョ ン が 有 効 に す る と 、 カ ー ネ ル は 指 定 さ れ た チ ェ ッ ク サ ム 対 象 範 囲 よ り も 「 短 か い 」 対 象 範 囲 を 持 つ パ ケ ッ ト を 全 て 廃 棄 す る よ う に な る 。

UDPLITE_RECV_CSCOV の 値 が 実 際 の パ ケ ッ ト の チ ェ ッ ク サ ム 対 象 範 囲 よ り も 大 き い 場 合 、 受 信 し た パ ケ ッ ト は 黙 っ て 廃 棄 さ れ る 。 た だ し 、 シ ス テ ム ロ グ に 対 し て 警 告 メ ッ セ ー ジ が 生 成 さ れ る か も し れ な い 。

エ ラ ー

udp(7) に つ い て 書 か れ て い る 全 て の エ ラ ー は 返 る 可 能 性 が あ る 。 UDP−Lite 自 体 は 新 た な エ ラ ー は 追 加 し て い な い 。

フ ァ イ ル

/proc/net/snmp − UDP−Litev4 の 基 本 的 な 統 計 情 報 カ ウ ン タ ー 。
/proc/net/snmp6
− UDP−Litev6 の 基 本 的 な 統 計 情 報 カ ウ ン タ ー 。

バ ー ジ ョ ン

UDP−Litev4/v6 は Linux 2.6.20 で 初 め て 登 場 し た 。

バ グ

glibc に よ る サ ポ ー ト が な い 場 合 は 、 以 下 の 定 義 を 行 う 必 要 が あ る 。

#define IPPROTO_UDPLITE 136
#define UDPLITE_SEND_CSCOV 10
#define UDPLITE_RECV_CSCOV 11

関 連 項 目

ip(7), ipv6(7), socket(7), udp(7)

RFC 3828 for the Lightweight User Datagram Protocol (UDP−Lite).

Linux カ ー ネ ル ソ ー ス 内 の Documentation/networking/udplite.txt

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。