修士論文 2010 年度 ( 平成 22 年度 )
アプリケーション層における
複数パスの同時利用による高速通信機構
An Application-level Multipath Transfer Mechanism for Fast and Reliable
Communication
慶應義塾大学大学院 政策・メディア研究科 野澤 高弘
修士論文要旨 2010 年度 ( 平成 22 年度 )
アプリケーション層における複数パスの同時利用による高速 通信機構
近 年 ,複 数 の ネ ッ ト ワ ー ク イ ン タ フ ェ ー ス を 搭 載 し た モ バ イ ル 端 末 が 普 及 し て い る .し か し 現 状 で は ,単 一 の ネ ッ ト ワ ー ク イ ン タ フ ェ ー ス を 用 い た 通 信 が 一 般 的 で あ り ,複 数 の ネ ッ ト ワ ー ク イ ン タ フ ェ ー ス は 効 率 的 に 活 用 さ れ て い な い .本 研 究 で は ,複 数 の ネ ッ ト ワ ー ク イ ン タ フ ェ ー ス を 同 時 に 活 用 し ,異 な る キ ャ リ ア が 提 供 す る ネ ッ ト ワ ー ク リ ソ ー ス を 効 率 的 に 利 用 す る こ と に よ り 広 帯 域 か つ 安 定 し た 通 信 を 実 現 す る 手 法 ,ARMS (An Application-level Multipath Transfer Mechanism for Fast and Reliable Communication)を 提 案 す る .ARMS は ア プ リ ケ ー シ ョ ン 層 に お い て ネ ッ ト ワ ー ク リ ソ ー ス の 統 合 を 行 な う た め ,既 存 の オ ペ レ ー テ ィ ン グ シ ス テ ム 及 び ネ ッ ト ワ ー ク プ ロ ト コ ル ス タ ッ ク に 変 更 を 加 え る 必 要 が な く , ア プ リ ケ ー シ ョ ン 開 発 者 自 身 に よ る マ ル チ パ ス 転 送 を 実 現 可 能 で あ る . ARMSで は ト ラ ン ス ポ ー ト プ ロ ト コ ル にSCTPを 用 い る こ と で ,通 信 相 手 の ア ド レ ス や 各 パ ス の 情 報 を 取 得 し ,ま た 異 な る パ ス を 流 れ る 複 数 の フ ロ ー 間 に お け る デ ー タ の 同 期 を 行 う .本 研 究 で は プ ロ ト タ イ プ 実 装 に よ る2つ の イ ン タ フ ェ ー ス を 利 用 し た 評 価 を 行 い ,単 一 イ ン タ フ ェ ー ス を 利 用 し た 通 信 と 比 べ て 最 大 で1.97 倍 の 帯 域 向 上 を 実 現 し た .ま た ,2 つ の 帯 域 幅 の 差 が5 倍 あ る 環 境 下 に お い て も ,ほ ぼ 理 想 通 り の 帯 域 向 上 を 実 現 し た .
キ ー ワ ー ド:
帯 域 統 合 ,マ ル チ ホ ー ム ,マ ル チ パ ス 転 送 ,小 型 移 動 体 端 末 ,SCTP
慶 應 義 塾 大 学 大 学 院 政 策・メ デ ィ ア 研 究 科 野 澤 高 弘
Abstract of Master’s Thesis Academic Year 2010 An Application-level Multipath Transfer Mechanism for
Fast and Reliable Communication
In this paper, we present a new transport scheme that simultaneously transmits applica- tion data over multiple paths between a source and a destination host. Multi-homed hosts are becoming common, hence if communication protocols transmit data to multiple paths, available network bandwidth can be increased. Several such protocols have been proposed, however, they do not get deployed, because they enforce protocol modification with the new standardization. Our proposed An Application-level Multipath Transfer Mechanism for Fast and Reliable Communication (ARMS) is designed as a part of the application, which does not require any change of transport protocols and operating systems, resulting in the maxi- mized chance to benefit for the multi-homed hosts. ARMS allows applications to communicate over a reliable and ordered end-to-end connection along multiple paths, using SCTP. ARMS can effectively utilize multiple distinct paths, because it transmits data along independently congestion controlled paths by SCTP. Our experimental results show that applications which implements ARMS significantly improve the throughput by using spare bandwidth of multiple paths effectively.
キ ー ワ ー ド:
bandwidth aggregation, multi-homed mobile node, SCTP
Keio University Graduate School of Media and Governance Takahiro Nozawa
目次
第1章 序 論 1
1.1 本 研 究 の 背 景 . . . 2
1.2 本 研 究 の 概 要 . . . 4
1.3 本 論 文 の 構 成 . . . 4
第2章 関 連 研 究 5 2.1 関 連 研 究 . . . 6
2.2 ア プ リ ケ ー シ ョ ン ア プ ロ ー チ . . . 6
2.3 ソ ケ ッ ト 改 良 ア プ ロ ー チ . . . 6
2.4 TCP ア プ ロ ー チ . . . 7
2.5 SCTP ア プ ロ ー チ . . . 8
2.6 新 た な ト ラ ン ス ポ ー ト プ ロ ト コ ル を 用 い た ア プ ロ ー チ. . . 9
2.7 ま と め . . . 10
第3章 ARMS 12 3.1 ARMS 概 要 . . . 13
3.2 ARMS に お け る マ ル チ パ ス 転 送 の 定 義 . . . 13
3.3 ARMS 設 計 . . . 14
3.3.1 ト ラ ン ス ポ ー ト プ ロ ト コ ル の 選 択 . . . 15
3.3.2 複 数 宛 先 へ の デ ー タ 送 信 . . . 17
3.3.3 送 信 比 率 決 定. . . 18
第4章 ARMS 実 装 21 4.1 ARMS ア プ リ ケ ー シ ョ ン の 流 れ . . . 22
4.2 socket()関 数 に よ り ソ ケ ッ ト の 作 成 . . . 22
4.3 通 信 に 用 い る ア ソ シ エ ー シ ョ ン 情 報 の 取 得 . . . 23
4.4 通 信 相 手 の ア ド レ ス を 取 得 . . . 25
4.5 状 況 に 応 じ た デ ー タ 転 送 比 率 の 決 定 . . . 26
4.6 複 数 の ア ド レ ス へ の デ ー タ 転 送 と デ ー タ 受 信 . . . 26
4.7 ア プ リ ケ ー シ ョ ン 内 の 関 数 の 相 関 関 係 . . . 28
第5章 複 数 宛 先 へ の 動 的 な 振 り 分 け 手 法 30 5.1 複 数 宛 先 へ の 動 的 な 振 り 分 け の 検 討 方 法 . . . 31
5.2 事 前 実 験 . . . 32
5.2.1 各 パ ス へ 同 じ 比 率 で 送 信 . . . 33
5.2.2 静 的 に 帯 域 比 率 で 転 送 . . . 33
5.2.3 事 前 実 験 ま と め . . . 34
5.3 cwnd を 用 い た 転 送 比 率 に て 送 信. . . 35
5.4 帯 域 幅 を 用 い た 転 送 比 率 に て 送 信 . . . 38
5.5 複 数 宛 先 へ の 振 り 分 け ア ル ゴ リ ズ ム の 考 察 . . . 42
第6章 ARMS 評 価 43 6.1 複 数 宛 先 へ の 振 り 分 け ア ル ゴ リ ズ ム の 評 価 . . . 44
6.2 既 存 研 究 と の 性 能 比 較. . . 47
6.3 考 察 . . . 49
第7章 ま と め 51 7.1 ま と め . . . 52
7.2 今 後 の 展 望 . . . 53
7.3 結 論 . . . 53
図目次
1.1 想 定 環 境 . . . 2
1.2 イ ン タ ー ネ ッ ト 上 の ト ラ フ ィ ッ ク 量 の 推 移 . . . 3
1.3 イ ン タ ー ネ ッ ト の 利 用 方 法 . . . 4
2.1 マ ル チ パ ス の 種 類 . . . 10
3.1 マ ル チ パ ス の 種 類 . . . 14
3.2 ARMS シ ス テ ム 概 要 . . . 15
3.3 SCTP の マ ル チ パ ス 転 送 の 比 較 . . . 18
3.4 異 な る 性 質 の パ ス に お け る マ ル チ パ ス 転 送 . . . 19
5.1 事 前 実 験 環 境 . . . 32
5.2 各 パ ス へ 同 じ 比 率 で マ ル チ パ ス 転 送 し た 際 の 転 送 量 . . . 35
5.3 静 的 に 設 定 し た 帯 域 比 率 に て マ ル チ パ ス 転 送 を 行 っ た 際 の 転 送 量 . . . 37
5.4 平 均 ス ル ー プ ッ ト 比 較. . . 38
5.5 正 常 に cwndが 機 能 し て い る 場 合 . . . 39
5.6 パ ス の 帯 域 幅 に 2倍 の 差 が あ る 際 のcwnd の 動 き . . . 39
5.7 実 デ ー タ 転 送 時 と 帯 域 計 測 時 の パ ケ ッ ト の 経 路 の 違 い. . . 41
5.8 動 的 に 計 測 し た 帯 域 比 率 に 基 づ い た マ ル チ パ ス 転 送 を 行 っ た 際 の 転 送 量 . 42 6.1 ARMS を 用 い て 20MByteを マ ル チ パ ス 転 送 し た 際 の 時 間 あ た り の 転 送 量 46 6.2 ARMS を 用 い て 200MByteを マ ル チ パ ス 転 送 し た 際 の 時 間 あ た り の 転 送 量 46 6.3 ARMS を 用 い た 帯 域 幅 計 測 中 の 時 間 あ た り の 転 送 量 . . . 48
6.4 CMT とARMS 転 送 速 度 の 比 較 . . . 50
表目次
2.1 既 存 研 究 ま と め . . . 11
3.1 ト ラ ン ス ポ ー ト プ ロ ト コ ル 比 較 表 . . . 17
5.1 同 比 率 に て マ ル チ パ ス 転 送 を 行 っ た 際 の 各 パ ス の 組 み 合 わ せ に お け る 20MByte の 転 送 時 間(秒) . . . 34
5.2 静 的 に 比 率 を 指 定 し て マ ル チ パ ス 転 送 行 っ た 際 の 各 パ ス の 組 み 合 わ せ に お け る 20MByte の 転 送 時 間(秒) . . . 36
6.1 ARMS を 用 い た 20MByteの 転 送 時 間(秒) . . . 45
6.2 ARMS を 用 い た 200MByteの 転 送 時 間(秒) . . . 47
6.3 ARMS と CMTの 転 送 速 度 比 較 表(Mbps) . . . 49
ソースコード目次
4.1 sctp socket.c . . . 23
4.2 get asoc info.c . . . 23
4.3 get peer addrs.c . . . 25
4.4 ARMS send data.c . . . 27
第 1 章
序論
本章では,始めに本研究の背景を述べ,次に本研究の概要を述べ,最後に本
論文の構成を記述する.
1.1 本研究の背景
無 線 技 術 の 発 展 と 普 及 に よ り ,公 共 空 間 の 多 く でWiFiの よ う な 無 線LAN に よ る イ ン ターネットアクセスが提供されている.さらに,WiMAXのような無線MANや,HSPAな ど の 無 線WANな ど と い っ た ,よ り 広 範 囲 に て 接 続 可 能 な ネ ッ ト ワ ー ク 接 続 環 境 が 提 供 さ れている.HSPA にいたっては日本国内の人口カバー率100% であり,場所を選ばずにイン タ ー ネ ッ ト へ の 接 続 が 可 能 で あ る .こ の よ う に 様 々 な 無 線 技 術 の 実 用 化 に 伴 い ,複 数 の 無 線 ネ ッ ト ワ ー ク イ ン タ ー フ ェ イ ス を 搭 載 し た モ バ イ ル 端 末 が 登 場 し て い る .複 数 の 無 線 ネットワークインターフェイスを搭載した一例が無線LANの WiFiと無線 WANのHSPA の2つ の ネ ッ ト ワ ー ク イ ン タ ー フ ェ イ ス を 搭 載 し て い る ,一 般 に 超 小 型 計 算 機 や 高 性 能 携 帯電話などである.図1.1にマルチホーム環境の例を示す.図1.1においてモバイルノード は 最 初Wireless WANの み を 用 い て 通 信 を 行 っ て い る が ,移 動 後 接 続 さ れ て い た Wireless
WANの他にWireless LANにも接続し,両方のネットワークを利用した通信が可能となる.
こ の よ う に 複 数 の ネ ッ ト ワ ー ク を 同 時 に 利 用 可 能 な 場 所 が 増 加 し て い る
また ,図1.2が 示す ようにインターネット上を流れるデ ータ量は毎年増加を続けている.
総務省が毎年行なっている通信利用動向調査によると2009年末の時点でインターネット利
図1.1 想定環境
用 者 数 が9,408万 人 ま で 増 加 し て お り ,人 口 普 及 率 は78.0%と な っ て い る .イ ン タ ー ネ ッ トの利用法として,PCからの利用が最も多く全体の9割以上を占めている.しかしモバイ ル端末からのインターネット利用も全体の85 %が利用しており,年々モバイル端末からの イ ン タ ー ネ ッ ト 利 用 が 増 加 し て い る .さ ら に ,国 内 だ け で な く 世 界 のIPト ラ フ ィ ッ ク も 増 大傾向にある.この背景には,インターネット上を流れる動画が大きな要因となっている.
Cisco Systems社 の 試 算 に よ る と ,2014年 の イ ン タ ー ネ ッ ト ト ラ フ ィ ッ ク は2009年 の ト ラ フ ィ ッ ク 量 の4倍 以 上 に な る と 言 わ れ て い る .こ の ト ラ フ ィ ッ ク の ほ と ん ど が ,イ ン タ ー ネ ッ ト テ レ ビ や 動 画 共 有 サ ー ビ ス ,ま た フ ァ イ ル 共 有 ソ フ ト 等 に よ る も の と 予 測 さ れ て い る.さらにモバイル端末からのトラフィックに限ると2009年から2014年にかけて39 倍に 増 大 す る と 予 想 さ れ て い る .こ の よ う に こ れ か ら の イ ン タ ー ネ ッ ト の 傾 向 と し て ,モ バ イ ル 端 末 に て 広 帯 域 を 必 要 と す る コ ン テ ン ツ が 増 大 し ,そ れ に 伴 う イ ン タ ー ネ ッ ト ト ラ フ ィ ッ ク が 発 生 す る と 予 想 で き る .し か し な が ら 現 在 の イ ン タ ー ネ ッ ト に お い て は ,ア ー キ テ ク チ ャ 及 び プ ロ ト コ ル の 仕 様 に よ り マ ル チ ホ ー ム 環 境 下 に あ る 通 信 端 末 に お い て も 単 一 の ネ ッ ト ワ ー ク イ ン タ フ ェ ー ス の み を 使 用 し て 通 信 を 行 う こ と が 一 般 的 で あ る .複 数 の ネ ッ ト ワ ー ク イ ン タ フ ェ ー ス を 利 用 で き る に も か か わ ら ず ,片 方 し か 通 信 に 利 用 し な い の は 資 源 活 用 の 観 点 か ら は 非 効 率 的 で あ り ,必 要 な だ け の ネ ッ ト ワ ー ク 資 源 を 確 保 す る 事 が で き ず ,結 果 と し て 帯 域 不 足 や 通 信 デ ー タ の 消 失 に よ る 不 安 定 な 通 信 と な っ て し ま う .他 に も ,利 用 し て い る ネ ッ ト ワ ー ク の 帯 域 を 多 く 確 保 し て し ま う こ と に よ り ,他 の ユ ー ザ が 確 保 で き る は ず の 帯 域 を 圧 迫 し て し ま う 可 能 性 が あ る .
図1.2 インターネット上のトラフィック量の推移
図1.3 インターネットの利用方法
1.2 本研究の概要
以上の背景より,本研究では複数のネットワークインタフェースを用いて,異なるキャリ ア に よ っ て 提 供 さ れ る ネ ッ ト ワ ー ク を 同 時 に 利 用 す る こ と に よ り 多 く の ネ ッ ト ワ ー ク 資 源 を確保し,より広帯域かつ安定した通信を実現するAn Application-level Multipath Transfer Mechanism for Fast and Reliable Communication (ARMS)を 提 案 し ,様 々 な 環 境 に お い て 本 研 究 の 有 用 性 を 評 価 す る .
ARMSの 特 徴 と し て ,ト ラ ン ス ポ ー ト プ ロ ト コ ル に 複 数 の ネ ッ ト ワ ー ク に 接 続 さ れ た 環 境(マ ル チ ホ ー ム 環 境) に あ ら か じ め 対 応 し て い るStream Control Transmission Protocol
(SCTP) [15]を用いることで各パスを流れる複数のフローの間でデータを同期し,信頼性の
あるマルチパス転送を実現する.ARMS は現在のインターネット上におけるエンドノード に 広 く 実 装 さ れ た プ ロ ト コ ル ア ー キ テ ク チ ャ お よ び オ ペ レ ー テ ィ ン グ シ ス テ ム の 変 更 を 必 要 と し な い た め ,ア プ リ ケ ー シ ョ ン 開 発 者 が 容 易 に 利 用 で き る .
1.3 本論文の構成
本論文は以下で構成される.2章ではこれまでに提案されてきた複数経路を同時に利用す る手法を列挙し,それらの問題点について述べる.3 章ではARMS の設計について述べる.
4章 で はARMS 実 装 に つ い て 述 べ ,5章 で は 複 数 の 宛 先 へ の 最 適 な デ ー タ の 振 り 分 け 手 法 の検 討 を行 う .6章 では ARMSの評価実験結果と考察について述べる.最後に 7章にて本 論 文 を ま と め ,今 後 の 展 望 に つ い て 述 べ る .
第 2 章
関連研究
本章では,これまでに実現されてきたマルチパス転送について述べ,それぞ
れの実現手法やその効果,特徴について述べる.本研究におけるマルチパス
転送の実現手法との比較を行う.
2.1 関連研究
こ れ ま で に 提 案 さ れ て き たend-to-end で 複 数 パ ス を 利 用 し て 通 信 速 度 を 向 上 さ せ る 手 法 と し て ,本 研 究 と は 異 な り 複 数 の ソ ケ ッ ト を 用 い て 実 現 す る 手 法 で あ るPSocket [19]や ,
Parallel TCP [5]などのアプ リケーションにて実現する手法が挙げられる.また,オペレー
テ ィ ン グ シ ス テ ム 内 で 実 現 す る 方 法 に は 大 き く4 つ の 手 法 に 分 類 で き る .1つ 目 の 手 法 が ソケットを改良することによって実現したSBAM [7]である.2つ目の手法が現在最も一般 的 に 用 い ら れ て い る ト ラ ン ス ポ ー ト プ ロ ト コ ル TCPを 改 良 し て 実 現 し て い る 手 法 の pTCP [8],mTCP [14],AMS [18],[6], [10]な ど が 挙 げ ら れ る .3つ 目 の 手 法 に SCTPを 改良して実現している手法である,CMT [9]や [4], [3]などが挙げられる.最後に新たなト ラ ン ス ポ ー ト プ ロ ト コ ル に お い て 実 現 し て い る 手 法 で あ る ,R-MTP [12]が 挙 げ ら れ る .以 上 で 列 挙 し た も の を ア プ ロ ー チ 方 法 か ら5 つ の 場 合 に 分 け ,そ れ ぞ れ の 中 で よ り 実 現 可 能 生 の 高 い も の に つ い て 以 下 に 詳 し く 述 べ る .
2.2 アプリケーションアプローチ
• PSocket
PSocket [19]は,オペレーティングシステムの改変を必要とせずに複数のソケットを作
成し転送速度の向上を実現している.通常のTCPソケットを複数用いてデータを送 信した場合と比較し,PSocketを用いた転送では最大で約2倍の転送速度を計測して いる.また,ソケットが1 つの場合と比較し,ソケットが5個以下であれば理想に近 い転送速度を計測している.しかし,マルチホーム環境には適応しておらず,一つの アドレスで複数のソケットを作成し,複数セッションを張る事で実現している.その た め ア ド レ ス の 動 的 な 増 加・減 少・変 更 の よ う な 状 況 に つ い て は 考 慮 さ れ て い な い .
2.3 ソケット改良アプローチ
• SBAM
SBAM [7]では,オペレーティングシステム内に実装されているソケットを改良するこ
と に よ っ て 複 数 の 帯 域 統 合 を 実 現 し て い る .SBAMは ソ ケ ッ ト 内 に 実 装 し た ネ ッ ト ワ ー ク モ ニ タ リ ン グ 部 に お い て ,ア ド レ ス の 増 減 の 監 視 を す る と 同 時 にpacket pair 方式[11]を用いて,帯域情報を取得している.取得した帯域幅を基として転送データ の 振 り 分 け を 行 う .転 送 デ ー タ はSBAMシ ス テ ム 内 に て ト ラ ン ス ポ ー ト プ ロ ト コ ル
が 提 供 す る シ ー ケ ン ス 番 号 と は 異 な る シ ー ケ ン ス 番 号 を 付 け ら れ る .デ ー タ の 信 頼 性を要求されるTCPのような通信では,受信側ノードにてシーケンス番号に基づき 受 信 デ ー タ の 再 構 築 を 行 う .こ の た めSBAM実 装 は 両 エ ン ド ホ ス ト に 必 要 と な る . また,通信に使用していたアドレスが利用不可能になってしまった場合は,他のネッ ト ワ ー ク イ ン タ フ ェ ー ス を 用 い て デ ー タ 送 信 を 行 う .こ の 際 送 信 キ ュ ー に 若 い シ ー ケンス番号を持ったキューが入る可能性がある為,シーケンス番号の若い順に並び替 え を 行 う .
評価としてUDPを使ったデータ転送アプリケーションとの比較を行っている.結果 としては,UDPアプリケーションとほぼ同じ転送速度の実現にとどまった.これは,
複数アドレスを用いる為,デフォルトゲートウェイを宛先に応じての切り替えが必要 となり,転送アルゴリズム以外でのオーバーヘッドが大きいという欠点が存在するか らである.また,パケット自体にシーケンス番号をSBAM内で付ける為,1 パケット あ た り の 送 信 可 能 デ ー タ 量 も 小 さ く な っ て し ま う と い う 欠 点 も 存 在 す る .
2.4 TCP アプローチ
• pTCP
pTCP [8] は ト ラ ン ス ポ ー ト プ ロ ト コ ル のTCPを 改 良 す る 事 で マ ル チ パ ス 転 送 を 実 現 し た 研 究 の1 つ で あ る .pTCPで は ア プ リ ケ ー シ ョ ン が ソ ケ ッ ト を 作 成 す る と , pTCP内部にて自動的に利用可能なネットワークインタフェースの数だけTCP-vが 作 成 さ れ る .pTCPとTCP-vは お 互 い にopen/close, send/receive の よ う な8 つ の 命 令 で 動 い て い る .ま たpTCP 内 に あ る send buffer をTCP-v 内 に あ る virtual send buffer が共有して利用している為,bandwidth-delay product (BDP)が異なる経路に対 し て も 送 信 に 必 要 な 最 適 な バ ッ フ ァ サ イ ズ を 要 求 す る 事 が 可 能 で あ る .通 信 し て い る 最 中 に ア ド レ ス が 利 用 不 可 能 に な っ て し ま っ た 際 は ,pTCPか らTCP-vに 対 し て close 命 令 を 出 す .同 様 に 新 し い ア ド レ ス を 発 見 し た 際 も 動 的 にopen命 令 を 出 す の で ,ア ド レ ス の 動 的 な 追 加 / 削 除 に も 対 応 す る .
pTCPの評価として理想値との比較と,帯域情報を取得しその帯域幅に応じて転送比 率を決定してデータ転送をするアプリケーションを作成し,比較を行っている.帯域 幅 が 一 定 を 保つ とき ,pTCPとア プリ ケー ショ ンの 両方 とも ほぼ 理想 値を 計測 した . しかし,帯域が大きく揺れる環境下において,アプリケーションはネットワークイン タフェースの数が増えるほど理想値とは遠くなり,ネットワークインタフェースが5 つ の と き に 理 想 値 の 約6 割 に と ど ま っ た .一 方 でpTCP は ネ ッ ト ワ ー ク イ ン タ フェースの個数がいくつの時であっても,ほぼ理想の帯域幅を計測した.また,マル
チ パ ス 転 送 を 行 っ て い る 際 に 一 つ の ネ ッ ト ワ ー ク が 一 時 的 に 使 用 で き な く な っ た 場 合 ,ア プ リ ケ ー シ ョ ン で は 全 て の ネ ッ ト ワ ー ク に て 一 定 期 間 接 続 性 を 失 っ た が , pTCPで は ほ ぼ 途 切 れ る 事 な く 通 信 の 継 続 を 実 現 し て い る .
• AMS
AMS [18]も ま た TCPを 改 良 し て マ ル チ パ ス 転 送 を 実 現 し た 研 究 の 1 つ で あ る . AMS が 追 加 し たTCP オ プ シ ョ ン は 以 下 の3 つ で あ る .
1. AMS Permitted
両 エ ン ド ホ ス ト が AMSを サ ポ ー ト し て い る か ど う か を 確 認 す る . 2. AMS Control
ア ド レ ス の 追 加 や 削 除 な ど の ,動 的 な 変 更 を 相 手 に 通 知 す る . 3. AMS Common
送 信 デ ー タ を 再 構 築 す る 為 の 統 一 シ ー ケ ン ス 番 号 を 格 納 す る .
AMS で は デ ー タ 送 信 を 行 う 前 に 双 方 の ア ド レ ス の ペ ア リ ン グ を 行 う .デ ー タ 転 送 の ス ル ー プ ッ ト を 最 大 化 す る 為 に は ,最 適 な ペ ア リ ン グ が 必 要 で あ る .そ こ で , AMS で は 通 信 開 始 時 に 全 て の ア ド レ ス ペ ア にSYNパ ケ ッ ト を 送 り ,そ れ に 対 す る SYN/ACKが 返 っ て 来 た 時 点 の RTT を 用 い て ア ド レ ス ペ ア を 行 う .
評価として,スループットの理想値と比較を行っている.コネクションの数が2 つの 場合はほぼ理想値を計測したが,3 つに増えると7 % 程理想値を下回っている.これ はアドレスの増加により,送信リストの管理などのオーバーヘッドが増加した為と考 えられる.また,動的なアドレスの増加に対しては途切れる事なくスループットの伸 び を 計 測 し た が ,動 的 な ア ド レ ス の 減 少 で は ,約 5秒 ほ ど 転 送 が 中 断 さ れ た .
2.5 SCTP アプローチ
• CMT
CMT [9]は ト ラ ン ス ポ ー ト プ ロ ト コ ル で あ る SCTPを 改 良 す る 事 で 実 現 し た 手 法 で あ る .し か しCMTを 使 用 す る に は 以 下 に 示 す3 つ の デ メ リ ッ ト が 存 在 す る .(1)必 要 以 上 に 早 く 再 送 を し て し ま う .こ れ に よ り 経 路 上 に 余 計 な ト ラ フ ィ ッ ク が 増 加 し て し ま い よ り 多 く の デ ー タ を 送 信 で き な く な る .(2) cwnd の 伸 び が 過 度 に 遅 い .こ れ に よ り よ り 多 く の パ ケ ッ ト を 直 ち に 送 信 す る 事 が 可 能 で あ る に も か か わ ら ず , cwnd分しか送信できなくなってしまう.(3) ack trafficの増加.パケットを受信して 直ちにackを返してしまうと,送信順と到着順が変わってしまった場合に不要な再送 が 起 こ っ て し ま う .こ れ ら の 問 題 を 解 決 す る 為 に ,以 下 の5 つ の 再 送 ポ リ シ を 定 義
し ,そ れ ぞ れ の ポ リ シ を 評 価 し て い る . 1. RTX-SAME
再 送 は 必 ず デ ー タ の 送 信 を 行 っ た 宛 先 へ 行 う . 2. RTX-ASAP
再送す る タ イミング の際に cwndに空きのあ る宛先へ再 送される .もし,複数の 宛 先 のcwnd が 利 用 可 能 で あ る 時 ,ラ ン ダ ム に 送 信 先 を 選 択 す る .
3. RTX-CWND
再 送 パ ケ ッ ト は ,複 数 あ る 宛 先 の 中 で 再 送 を 行 う 際 に 最 も 大 き なcwndを 持 つ 宛 先 へ 送 信 す る .
4. RTX-SSTHRESH
再 送 パ ケ ッ ト は ,複 数 あ る 宛 先 の 中 で 再 送 を 行 う 際 に 最 も 大 き なssthresh (slow start threshold) の 宛 先 へ 送 信 す る .
5. RTX-LOSSRATE
再送パケットは,複数ある宛先の中で再送を行う際に最もパケットロス率の少な い 宛 先 へ 送 信 す る .
評 価 と し て ,ま ずCMTと SCTPア ソ シ エ ー シ ョ ン を 複 数 使 っ た マ ル チ パ ス 転 送 ア プ リ ケ ー シ ョ ン に お い て デ ー タ の 転 送 時 間 の 比 較 を 行 っ て い る .結 果 は ア プ リ ケ ー シ ョ ン よ り も 約10 % 程 転 送 速 度 は 向 上 し た .次 に ,5 つ あ る 再 送 ポ リ シ の 比 較 を 行 っ て い る .結 果 は ,パ ケ ッ ト ロ ス 率 を ベ ー ス に 含 ん で い るRTX-CWND, RTX-SSTHRESH, RTX-LOSSRATE の3 つ の ポ リ シ が よ り 良 い 結 果 を 示 し た .
2.6 新たなトランスポートプロトコルを用いたアプローチ
• R-MTP
R-MTP [12]は,トランスポートプロトコル層にてマルチパス転送を実現しているが,
使 用 し て い る ト ラ ン ス ポ ー ト プ ロ ト コ ル は TCPで もUDPで もSCTPで も な い ,ユ ニ ー ク な ト ラ ン ス ポ ー ト プ ロ ト コ ル で あ る .こ の 研 究 は ,各経 路 の 帯 域 幅 に 応 じ て , パ ケ ッ ト を 転 送 し て 行 く の が 特 徴 で あ る .帯 域 幅 の 推 定 方 法 は ,interarrival time, jitter,long run jitter の3 つ の 数 値 用 い る .interarrival timeと は ,arrival time と は 異 な り ,パ ケ ッ ト ロ ス な ど に 左 右 さ れ ず ,一 定 の 値 で あ る .long run jitter と は ,全 て のjitterを 合 計 し た 値 で あ り ,0 付 近 を 変 動 し て い る .帯 域 幅 を 決 め る 為 に パ ケ ッ ト ロ ス も 予 測 し な け れ ば な ら な い ,こ れ もjitter とlong run jitter の 両 方 を 用 い て 予 測する.発見されたパケットロスも突発的なものは考慮しないが,連続的に発生する 場合は最初の転送速度に戻すことでパケットロスを回避する.評価として,シングル
図2.1 マルチパスの種類
パ ス 転 送 と マ ル チ パ ス 転 送 の ス ル ー プ ッ ト の 比 較 を 行 っ て い る .パ ス の 帯 域 幅 の 差 が大きく,遅延がない場合はほとんど差は出なかったが,帯域幅 の差が小さいとき は 理 想 的 な ス ル ー プ ッ ト を 計 測 し た .ま た ,TCPア プ リ ケ ー シ ョ ン と の 比 較 を 行 っ ている.パケットロスが30 %で起こるネットワークを利用した際,TCPでは転送時 間が約250秒かかったのに対して,R-MTPを用いた場合は約 160秒で転送を完了し た.このようにパケットロスが多く起きる環境下においても高速な転送を実現した.
2.7 まとめ
こ れ ま で に 挙 げ て き た そ れ ぞ れ の マ ル チ パ ス を 用 い た 既 存 研 究 を 表2.1に 挙 げ て い る 項 目 を 満 た し て い る か 否 か を ま と め て い く .ア プ リ ケ ー シ ョ ン を 用 い て 複 数 の セ ッ シ ョ ン を 張 る 事 で マ ル チ パ ス 転 送 を 実 現 し たPSocketは ,マ ル チ ホ ー ム 環 境 に 対 応 し て い な い .本 論 文 に お け る マ ル チ ホ ー ム 環 境 と は ,図2.1に 示 す 通 り 一 つ の ホ ス ト が ,WiFiと3G/4G ネ ッ ト ワ ー ク な ど の 複 数 の ネ ッ ト ワ ー ク イ ン タ フ ェ ー ス を 保 有 し 、ま た 利 用 可 能 で あ る と 定 義 す る .PSocket以 外 の 全 て の 手 法 で は ,オ ペ レ ー テ ィ ン グ シ ス テ ム 内 の 実 装 を 必 要 と し,ユーザ空間のみでは利用する事ができない.また,現在においてどの技術も標準化され て お ら ず ,CMTを 除 き ど の オ ペ レ ー テ ィ ン グ シ ス テ ム に も 実 装 さ れ て い な い .CMTは 唯 一FreeBSD の み に 実 装 さ れ て い る が ,そ の 他 の オ ペ レ ー テ ィ ン グ シ ス テ ム で は 実 装 さ れ て い な い .ま た ,こ れ ら の 手 法 は ,通 常 の 単 一 経 路 を 利 用 し たTCP ま た はSCTPの ア プ リ ケ ー シ ョ ン と の 共 存 に つ い て は 触 れ て い な い .通 常 のTCPお よ び SCTPの ア プ リ ケ ー シ ョ ン と 複 数 パ ス 同 時 利 用 を 利 用 す る ア プ リ ケ ー シ ョ ン が 共 存 す る た め に は ,新 た なAPI を 実 装 し ,各 ア プ リ ケ ー シ ョ ン が 複 数 パ ス 同 時 利 用 を 行 う か 否 か を 選 択 す る 必 要 が あ る .
表2.1にて示された通りOSへの変更を必要とせずに,動的なアドレスの増減に対応して
OSの変更 マルチホーム環境の適応 動的なアドレスの増減への対応
PSocket 不要 × ×
SBAM 必要 ○ ×
pTCP 必要 ○ ○
CMT 必要 ○ ○
R-MTP 必要 ○ ×
表2.1 既存研究まとめ
い る も の は こ れ ま で に 存 在 し て い な い .
第 3 章
ARMS
本章では,始めに本研究が提案する ARMS の概要について述べ,次に本研
究におけるマルチパス転送の定義について述べ,最後に ARMS の設計につ
いて述べる.
3.1 ARMS 概要
前 章 に て 述 べ た 通 り ,こ れ ま で に 様 々 な ア プ ロ ー チ 方 法 を 用 い て マ ル チ パ ス 転 送 は 実 現 さ れ て い る .し か し ア プ リ ケ ー シ ョ ン 層 に お い て マ ル チ ホ ー ム 環 境 を サ ポ ー ト し た マ ル チ パ ス 転 送 は 提 案 さ れ て い な い .ま た ,広 く 普 及 す る 為 に は 実 現 コ ス ト を 低 く 抑 え る 事 が 重 要 で あ る .こ れ ま で に 多 く の 研 究 が な さ れ た に も か か わ ら ず1つ も 標 準 化 に 至 っ て な い 事 か ら 実 現 コ ス ト の 重 要 性 が 示 さ れ る .よ っ て 本 研 究 で は オ ペ レ ー テ ィ ン グ シ ス テ ム へ 変 更 を 加 え ず に ア プ リ ケ ー シ ョ ン 層 に お い て ,マ ル チ ホ ー ム 環 境 に 適 応 し た 広 帯 域 か つ 高 品 質 な マ ル チ パ ス 転 送 を 実 現 す る ,An Application-level Multipath Transfer Mechanism for Fast and Reliable Communication (ARMS)を 提 案 す る .本 研 究 手 法ARMS で は ,既 存 の 研 究 な ど と は 異 な り オ ペ レ ー テ ィ ン グ シ ス テ ム へ の 変 更 を 必 要 と し な い た め ,ア プ リ ケ ー シ ョ ン の 移 植 性 も 高 く 実 現 コ ス ト は 非 常 に 低 く 抑 え る こ と が 可 能 で あ る た め ,段 階 的 に 普 及 す る と 考 え ら れ る .
3.2 ARMS におけるマルチパス転送の定義
一 般 に マ ル チ パ ス 転 送 と い う 言 葉 は 非 常 に 抽 象 的 で あ る 為 ,本 論 文 で 論 じ る に あ た り マ ルチパス転送の定義を行う.一般に広い意味でマルチパス転送は以下のような場合を指す.
1. 両 エ ン ド ホ ス ト 共 に 1つ の ア ド レ ス し か 保 持 し て い な い 場 合
(a)図 3.1 (b)に 示 す よ う に 両 エ ン ド ホ ス ト 共 に1つ の ア ド レ ス し か 保 持 し て い な い が ,セ ッ シ ョ ン を 複 数 張 っ て い る 場 合
2. 両エンドホストのうち少なくともどちらかは複数のアドレスを保持し,その複数のア ド レ ス を 通 信 に 用 い る 場 合
(a)送信 側 ノ ー ドのみが複数のキャリアにより提供された複数のアドレスを保持し,
そ の 複 数 の ア ド レ ス を 通 信 に 用 い る 場 合
(b)図 3.1 (a)に 示 す よ う に ,受 信 側 ノ ー ド の み が 複 数 の キ ャ リ ア に よ り 提 供 さ れ た 複 数 の ア ド レ ス を 保 持 し ,そ の 複 数 の ア ド レ ス を 通 信 に 用 い る 場 合
(c)送信側・受信側ノードの両エンドホストが複数のキャリアにより提供された複数 の ア ド レ ス を 保 持 し ,そ の 複 数 の ア ド レ ス を 通 信 に 用 い る 場 合
図3.1 マルチパスの種類
以 上 の よ う に マ ル チ パ ス 転 送 は 非 常 に 多 く の 状 況 を 含 ん だ 言 葉 で あ る .本 研 究 の 想 定 環 境 と し て ,受 信 側 ノ ー ド が 複 数 の ネ ッ ト ワ ー ク イ ン タ フ ェ ー ス を 搭 載 し て い る 移 動 体 通 信 端 末 を 想 定 し ,送 信 側 ノ ー ド は 単 一 の ネ ッ ト ワ ー ク イ ン タ フ ェ ー ス を 用 い て 通 信 し て い る ことを想定する.よって,以降におけるマルチパス転送の定義は図 3.1 (a)のような通信を 示 す こ と と し て 論 じ る .
3.3 ARMS 設計
ARMSは 移 動 中 に お け る モ バ イ ル 端 末 を 用 い た 通 信 を 想 定 す る た め ,動 的 に 変 化 す る 異 なる特性の通信経路を同時に利用した信頼性のある通信を実現する.ARMS の動作概要を 図3.2に 示 す .ARMSで は 複 数 の 宛 先 を 有 効 に 活 用 す る た め に ,ア プ リ ケ ー シ ョ ン に お い て パ ス の 情 報 を 取 得 し ,取 得 し た 情 報 に 基 づ い て デ ー タ を 各 宛 先 へ 転 送 を 行 う .以 降 で は 第 一 に ,ARMS で 使 用 す る ト ラ ン ス ポ ー ト プ ロ ト コ ル の 選 択 に つ い て 述 べ る .第 二 に ARMSの 動 作 概 要 を 述 べ ,第 三 に 複 数 の 宛 先 へ の 最 適 な 送 信 比 率 の 決 定 方 法 を 述 べ る .最 後 に 複 数 の 宛 先 が あ る と き の 宛 先 の 指 定 方 法 を 述 べ る .
Acquiring and Measurement path status
図3.2 ARMSシステム概要
3.3.1 トランスポートプロトコルの選択
ア プ リ ケ ー シ ョ ン に お い て マ ル チ パ ス 転 送 を 行 う 際 に 重 要 な こ と の 一 つ と し て ,ト ラ ン スポートプロトコルの選択が挙げられる.既存のトランスポートプロトコルとして,TCP, UDP, SCTP, DCCPな ど が 挙 げ ら れ る .し か し 本 研 究 で は 信 頼 性 の あ る 通 信 の 実 現 を 目 標 と す る .従 っ て 輻 輳 制 御 機 能 を 持 た な いUDP やDCCPな ど に お い て も 実 現 は 可 能 で あ る が,自ら輻輳制御機能を実装するコストを考慮し,TCPか SCTPのどちらかを利用した方 が よ り 容 易 に 実 現 が 可 能 で あ る と 考 え る .
• 通 信 相 手 の ア ド レ ス の 取 得
複数パスを利用した通信を行うためには,始めに通信相手がどのアドレスを持つのか 検出する必要がある.アプリケーションにおいて通信相手のアドレスを取得するため には,アプリケーションが独自に通信相手とネゴシエーションすることによって通信 相手の持つアドレスリストを取得する方法が考えられる.しかしこの手法では,アプ リケーション開発者の負担が大きくなる問題がある.そのため,ARMS ではトランス ポート層プロトコルであるSCTPの機能を用いて通信相手の持つアドレスを取得する.
SCTPはTCPと同様に信頼性のある通信を実現するトランスポートプロトコルであ り ,TCP の3-Way Handshakeに あ た る 4-Way Handshakeに よ りend-to-end の コ ネ クションを確立する.SCTP におけるコネクションはアソシエーションと呼ばれる.
SCTPで は ,4-Way Handshakeに お い て お 互 い が 自 身 の 利 用 可 能 な ア ド レ ス を 通 信 相手に通知する.また,アプリケーションはアソシエーションにおける利用可能な宛 先 リ ス ト を SCTPが 提 供 す るAPI [16] に よ っ て 取 得 で き る .そ の た め ,ア プ リ ケ ー ションは,アドレスリストのシグナリング機能を実装することなく通信相手のアドレ ス を 取 得 で き る .
• デ ー タ の 同 期
複数のパスを用いてデータの同期をとる際に問題となるのは,受信側でのデータの再 構成である.TCPでは1 つのセッションにおいて1 つのアドレスのみしか使用でき ない.またセッション内ではシーケンス番号によって並び替えられるが,複数のセッ ションで受信したデータについては,送信側アプリケーションにて独自にシーケンス 番号を付加し,それに基づいて受信側アプリケーションでの再構成が必要となる.こ れでは並び替えがトランスポートプロトコル層とアプリケーション層の両方で行い,
かつ同期したいデータとは異なるデータを送信時に付加しなければならないので,効 率的な同期とは言えない.SCTPはマルチホーム環境をサポートしているので 1つの ソケットのみで,複数のアドレスに対してデータの送信が可能である.単一ソケット にてデータを送信することにより,トランスポート層にてデータの再構築を全て行う.
つまり送信側アプリケーションにて独自のシーケンス番号を付加する事も,受信側ア プ リ ケ ー シ ョ ン で の 受 信 デ ー タ の 再 構 築 も 不 要 と な る .以 上 よ り ,こ ち ら も ア プ リ ケーション開発者の負担をより軽減させるには SCTPを用いることが現実的である.
• 動 的 な ア ド レ ス の 変 化
本 研 究 で は 移 動 体 無 線 通 信 を 前 提 と し て 考 え て い る .こ の よ う な 環 境 で は 端 末 のIP ア ド レ ス が 動 的 に 変 化 す る .TCPは 永 久 的 に 一 組 の IPア ド レ ス の 組 を 通 信 の 単 位 として利用するため,端末のIP アドレスが変化した場合は新たなコネクションを再 度 生 成 す る 必 要 が あ る .一 方 で ,古 い コ ネ ク シ ョ ン と 新 た な コ ネ ク シ ョ ン の 間 で デ ー タ を 同 期 す る こ と は 困 難 で あ る .SCTP は Dynamic Address Reconfiguration (ADDIP) [17]機 能 に よ り ア ド レ ス が 変 化 し た 際 も 同 一 の ア ソ シ エ ー シ ョ ン 内 で 通 信 を維持できるため,端末の IPアドレスが変化した際も古いアドレスに対するデータ 送信あるいは古いアドレスからのデータ送信と新たなIPアドレスを用いたデータ送 信 と の 間 で デ ー タ が 同 期 さ れ る .ARMSは デ ー タ 転 送 にSCTP を 用 い る た め ,端 末 の 動 的 な ア ド レ ス の 変 化 に 適 応 可 能 で あ る .
以 上 の 特 徴 を マ ル チ パ ス 転 送 を 行 う 観 点 か ら の 比 較 を 表3.1 に 表 し た .
輻輳制御 マルチホーム環境への対応 動的なアドレスの変更
TCP ○ × ×
UDP × × ×
SCTP ○ ○ ○
DCCP × × ×
表3.1 トランスポートプロトコル比較表
各 ト ラ ン ス ポ ー ト プ ロ ト コ ル で マ ル チ パ ス 転 送 を 実 現 し よ う と し た 際 ,表3.1内 で × と な っ て い る 部 分 は ア プ リ ケ ー シ ョ ン 開 発 者 が 自 ら 実 装 し な け れ ば な ら な い .ア プ リ ケ ー ション開発者の実現コストが最も小さいのはSCTPを用いる事である事から,ARMS では ト ラ ン ス ポ ー ト プ ロ ト コ ル にSCTP を 用 い る 事 と し た .SCTP は 既 にFreeBSD, Linux,
Solarisに標準で搭載されている.また,FreeBSDの実装をベースにしたサードパーティーの
実 装 と し て ,Windowsの ド ラ イ バ 実 装 ,Mac OSXカ ー ネ ル モ ジ ュ ー ル の 実 装 が 存 在 す る .
3.3.2 複数宛先へのデータ送信
本 研 究 で は マ ル チ パ ス 転 送 を 実 現 す る た め にSCTPを 用 い る が ,通 常 のSCTPの マ ル チ ホーム環境における動作ではマルチパス転送は実現できない.図3.3 (a) に通常のSCTPの デ ー タ 転 送 と ,図3.3 (b) にARMS に よ っ て 行 う デ ー タ 転 送 を 示 す .通 常 のSCTP の デ ー タ 転 送 で は プ ラ イ マ リ パ ス に し か デ ー タ を 転 送 せ ず ,デ ー タ が 到 達 し な か っ た 場 合 に の み セ カ ン ダ リ パ ス へ デ ー タ が 転 送 さ れ る .こ れ はSCTPの デ ザ イ ン が ,複 数 の ア ド レ ス は 通 信 の 冗 長 化 を 目 的 と し て い る た め で あ る .デ ザ イ ン 通 り の 転 送 方 法 で は 通 信 の 接 続 性 を 維 持 す る 効 果 は 期 待 で き る が ,ネ ッ ト ワ ー ク 資 源 を 有 効 に 使 い き る こ と は で き ず ,通 信 速 度 の向上は見込めない.本研究では同時に利用可能なパスが複数存在したとき,図3.3 (b)の よ う に 全 て の パ ス を 同 時 に 用 い る .そ れ に よ り ネ ッ ト ワ ー ク 資 源 を 最 大 限 に 利 用 し ,高 速 に デ ー タ 送 信 を 行 う .
図3.3 SCTPのマルチパス転送の比較
3.3.3 送信比率決定
本研究は,複数の異なる種類のネットワーク環境に接続されている環境(図 3.4)を前提とし ているが,この環境下においてパルチパス転送を実現するには以下の問題点が挙げられる.
• 帯 域 幅
図3.4 で 示 す マ ル チ パ ス 環 境 下 で は ,Link 1の 帯 域 幅 が 2Mbps,Link 2の 帯 域 幅 が 8Mbpsと 異 な る .こ の と き パ ケ ッ ト を そ れ ぞ れ の パ ス へ 同 じ 比 率 で 送 信 を 行 う と , ソ ケ ッ ト は1 つ し か な い た め ,各 パ ス へ の パ ケ ッ ト は 同 じ 送 信 キ ュ ー に 入 る .そ の 為 ,Link 1 (帯 域 の 小 さ い リ ン ク) の 帯 域 を 埋 め き る 事 は で き る が ,Link 2 (帯 域 幅 の 大 き い リ ン ク) の 帯 域 を 埋 め き る 事 が で き ず ,結 果 と し て ,全て の パ ス の 帯 域 を 最 大 限 に 利 用 す る 事 が で き な い .こ れ は Link 1へ の パ ケ ッ ト が 送 信 キ ュ ー か ら 出 て い か ないことに起因している.以上より,利用可能な全てのパスを効率的に利用するため に は ,パ ス の 帯 域 幅 を 考 慮 し た 転 送 比 率 の 決 定 が 必 要 と な る .
• Round Trip Time (RTT)
異 な る パ ス に を 用 い た 通 信 で は ,各 パ ス のRound Trip Time (RTT)が 異 な る と 考 え れる.図4 では転送レートを帯域幅に応じて設定すると1:4の比率でデータが送信さ
%QTTGURQPFGPV0QFG
/QDKNG0QFG
8Mbps 2Mbps
RTT = 100 ms RTT = 150 ms
path MTU = 1500 path MTU = 1500
Link 1 status Link 2 status
1 2 3 4 5 6
send packets
1
2 3 4 5 6
…
図3.4 異なる性質のパスにおけるマルチパス転送
れるが,これらのパスは遅延が異なるため,bandwidth-delay productの比は 3:8とな る.そのため,各パスへのデータの送信レートは帯域幅だけでなく,遅延も考慮する べきである.図4の場合には,各パスへのデータ送信量は3:8の割合になるべきであ る .ま た ,図4 でLink 1へ パ ケ ッ ト1 が 送 信 さ れ ,次 にLink 2 へ パ ケ ッ ト2 - 5 が 送 信 さ れ た と す る .こ の 際 ,そ れ ぞ れ の リ ン ク は 遅 延 が 異 な る た め ,Mobile Nodeで 受 信される順番はパケット2 - 5が先に受信され25 ms遅れてパケット1が到着する.パ ケットの到着順序の変更は輻輳制御メカニズムにより通信効率の低下を招くため,で き る 限 り 避 け る 必 要 が あ る .また ,SCTPにはdelayed sackと いう ア ル ゴリ ズ ム が 存 在する.これは先に到着したパケットがあっても,次のパケットの到着を待ってまと め てackを 返 す と い う ネ ッ ト ワ ー ク の 効 率 的 な 使 い 方 で あ る .こ の ア ル ゴ リ ズ ム で は200msの 遅 延 を 待 つ と い う 設 定 に 初 期 値 で は 設 定 さ れ て い る .よ っ て こ の 値 よ り 大きな遅延差となるマルチホーム環境では,より広帯域なパスのみを利用する.なぜ な ら ば 遅 延 が 大 き な パ ス を 用 い て 送 信 し た パ ケ ッ ト は 全 て パ ケ ッ ト ロ ス と み な さ れ 再 送 が 要 求 さ れ て し ま う か ら で あ る .以 上 の こ と か ら 本 研 究 に お い てRTTを 考 慮 し
た マ ル チ パ ス へ の 転 送 を 行 う 必 要 が あ る .
以 上 で 述 べ た 点 を 考 慮 し ,ARMSで は ア プ リ ケ ー シ ョ ン 層 か ら 取 得 可 能 な パ ス の パ ラ メータとしてCongestion Window Size (cwnd) [13] とsRTTを使用する.cwnd はTCPおよ びSCTPに お い て 送 信 側 で 管 理 さ れ る 輻 輳 制 御 の パ ラ メ ー タ で ,SCTPに お い てcwndは 宛 先 毎 に 独 立 し て 保 持 さ れ て い る .cwndは 送 信 側 が ACKの 受 信 を 待 た ず に 送 信 可 能 な デ ー タ の 量 で ,経 路 の 帯 域 お よ び 遅 延 を 反 映 し て い る .理 想 値 と し て は ,delay-bandwidth productの 値 に な る .ま たsRTTは RTTを 一 定 時 間 取 得 し ,そ の 平 均 し た 値 で あ る .具 体 的 なcwnd や sRTTの 取 得 方 法 やcwndを 用 い た 最 適 な デ ー タ 転 送 比 率 の 決 定 方 法 は 第5 章 に て 詳 し く 論 じ る .
第 4 章
ARMS 実装
本章では,まず始めに SCTP を用いたソケットの作成方法を述べる.次に宛
先を指定して送信する為の API の利用方法について述べる,その後 ARMS
が行う処理を順序通り述べて行く.
4.1 ARMS アプリケーションの流れ
ARMS は 以 下 の 手 順 に 従 っ て 複 数 の 宛 先 へ デ ー タ の 送 信 を 行 う . 1. socket()関 数 に よ り ソ ケ ッ ト の 作 成
2. 通 信 に 用 い る ア ソ シ エ ー シ ョ ン の 情 報 の 取 得
3. 通 信 相 手 の ア ド レ ス の 取 得
4. 状 況 に 応 じ た デ ー タ 転 送 比 率 の 決 定
5. 複 数 の ア ド レ ス へ の デ ー タ 転 送
上 記 項 目 を 以 下 に お い て 実 際 の ソ ー ス コ ー ド を 用 い な が ら 述 べ る .
4.2 socket() 関数によりソケットの作成
ARMSは ア プ リ ケ ー シ ョ ン の 開 始 時 にMN が1 つSCTPを用 い た パ ケ ッ ト を 送 信 す る . こ の パ ケ ッ ト を 受 け 取 っ たCN がMN の 情 報 を 取 得 し ,そ の 情 報 に 基 づ い て 最 適 に デ ー タ 転 送 を 行 う .
通 信 を 行 う 際 に 使 用 す るsocket()関 数 だ が 、使 用 プ ロ ト コ ル を SCTPと す る 際 に 2つ の ソ ケ ッ ト ス タ イ ル の ど ち ら か を ソ ー ス コ ー ド 4.1の 様 に 指 定 す る .選 択 す る ソ ケ ッ ト ス タ イ ル の1 つ が ,one-to-one socket style で あ り ,他 方 が one-to-many socket styleで あ る .こ れ ら の 違 い は ,one-to-one soket style で は 作 成 し た ソ ケ ッ ト はTCP の 様 に 用 い ,one-to-many socket styleで は 作 成 し た ソ ケ ッ ト は UDPの 様 に 用 い る .ま た SCTPが 提 供 す るAPI の 使 用 方 法 等 が ソ ケ ッ ト ス タ イ ル 毎 に 異 な る .ARMS で は マ ル チ パ ス 転 送 を よ り 実 現 し や す い ,one-to-many socket style を 用 い る 事 と し た .こ の ソ ケ ッ ト ス タ イ ル の 指 定 方 法 は ソ ー ス コ ー ド 4.1の 5 行 目 に あ る よ う に socket()関 数 の 第 2 引 数 に SOCK SEQPACKETを 入 れ て 指 定 す る .
ソースコード4.1 sctp socket.c
1 /* one - to - one s o c k e t s t y l e */
2 int o t o _ s o c k = s o c k e t ( A F _ I N E T 6 , S O C K _ S T R E A M , I P P R O T O _ S C T P );
3
4 /* one - to - m a n y s o c k e t s t y l e */
5 int o t m _ s o c k = s o c k e t ( A F _ I N E T 6 , S O C K _ S E Q P A C K E T , I P P R O T O _ S C T P );
4.3 通信に用いるアソシエーション情報の取得
前 章 ま で で 述 べ た よ う にARMSで は ,転 送 比 率 の 決 定 を CN がMN の ア ド レ ス 毎 に 保 持 し て い るcwnd を 用 い て 行 っ て い る .こ の ア ド レ ス 毎 のcwnd を 取 得 す る に あ た り , SCTPが 提 供 す るAPIを 用 い る .具 体 的 に は ソ ー ス コ ー ド4.2の 19, 20行 目 に て 用 い て い るgetsockopt() 関 数 の 第 3引 数 にSCTP GET PEER ADDR INFO を 指 定 し ,実 行 結 果 を sctp paddrinfo構 造 体 に 格 納 す る .
ARMSで用いるのはsctp paddrinfo 構造体のメンバの中で,アソシエーションIDが入る spinfo assoc idとMN の ア ド レ ス 毎 のcwnd が 入 るspinfo cwndの 2つ で あ る .ア ド レ ス 毎 のcwndの 取 得 は ,ソ ー ス コ ー ド 4.2の 17 行 目 に あ る よ う にgetsockopt()関 数 の 実 行 前 に sctp paddrinfo構造体のspinfo addressに取得したいMN のアドレスをあらかじめ入れてお く こ と に よ り 指 定 す る .
ARMSで は ,ソ ー ス コ ー ド 4.2に て 示 さ れ た get assoc info() 関 数 を 呼 び 出 す 事 に よ り , アプリケーションからSCTPアソシエーションの情報を取得する.アソシエーション IDを 取 得 し た い 場 合 は ,get assoc info() 関 数 を 呼 び 出 す 際 の 第3 引 数 に0を 指 定 す る こ と に よ り 取 得 す る .ま た ,cwndを 取 得 し た い 場 合 は ,get assoc info() 関 数 を 呼 び 出 す 際 ,第 2引 数 に 取 得 し た い ア ド レ ス を ,第3引 数 に 1を 指 定 す る こ と に よ り 取 得 す る .最 後 にsRTT を 取 得 し た い 場 合 に は ,get assoc info()関 数 を 呼 び 出 す 際 の 第 3引 数 に2 を 指 定 す る こ と に よ り 取 得 す る .
ソースコード4.2 get asoc info.c
1 s t a t i c s c t p _ a s s o c _ t
2 g e t _ a s s o c _ i n f o ( int sock , s t r u c t s o c k a d d r * a d d r , int f l a g )
3 {
4 s t r u c t s c t p _ p a d d r i n f o sp ;
5 s o c k l e n _ t siz ;
6 s o c k l e n _ t s a _ l e n ;
7
8 siz = s i z e o f ( sp );
9 m e m s e t (& sp , 0 , s i z e o f ( sp ));
10 if ( addr - > s a _ f a m i l y == A F _ I N E T ) {
11 s a _ l e n = s i z e o f ( s t r u c t s o c k a d d r _ i n );
12 } e l s e if ( addr - > s a _ f a m i l y == A F _ I N E T 6 ) {
13 s a _ l e n = s i z e o f ( s t r u c t s o c k a d d r _ i n 6 );
14 } e l s e {
15 r e t u r n (( s c t p _ a s s o c _ t ) 0);
16 }
17 m e m c p y (( c a d d r _ t ) & sp . s p i n f o _ a d d r e s s , addr , s a _ l e n );
18
19 if ( g e t s o c k o p t ( sock , I P P R O T O _ S C T P ,
20 S C T P _ G E T _ P E E R _ A D D R _ I N F O , & sp , & siz ) != 0) {
21 r e t u r n (( s c t p _ a s s o c _ t ) 0);
22 }
23
24 s w i t c h ( f l a g ){
25 c a s e 0: // R e t u r n a s s o c i a t i o n ID
26 r e t u r n ( sp . s p i n f o _ a s s o c _ i d );
27 b r e a k ;
28 c a s e 1: // R e t u r n s p e c i f i e d p a t h ’ s C W N D
29 r e t u r n ( sp . s p i n f o _ c w n d );
30 b r e a k ;
31 c a s e 2: // R e t u r n s p e c i f i e d p a t h ’ s s R T T
32 r e t u r n ( sp . s p i n f o _ s r t t );
33 b r e a k ;
34 }
35 }
4.4 通信相手のアドレスを取得
複 数 の 宛 先 に 対 し て マ ル チ パ ス 転 送 を 行 う 際 必 ず 必 要 と な る の が ,通 信 相 手 が 保 持 し て い る 有 効 な の ア ド レ ス の 個 数 や ,そ の ア ド レ ス で あ る .こ れ ら の 情 報 を 取 得 す る 為 に SCTPが 提 供 す るAPI を 用 い る 事 に よ り ,ア プ リ ケ ー シ ョ ン か ら の 情 報 取 得 を 可 能 と し た.使い方としてはソースコード4.3の14 行目にある通りsctp getpaddrs()関数を用いる.
このsctp getpaddrs() 関数の第2引数にはソースコード 4.2にて取得したアソシエーション IDを 指 定 す る .ま た ,実 行 結 果 を 受 け 取 る 為 にsockaddr 構 造 体 を 第 3引 数 に 指 定 す る . sctp getpaddrs()関 数 は 使 用 後 にsctp freeaddrs()関 数 を 行 い メ モ リ の 解 放 を 行 う .
ソースコード4.3 get peer addrs.c
1 # d e f i n e R E M O T E _ A D D R E S S _ N U M 3
2
3 vo i d
4 g e t _ p e e r _ a d d r ( int s o c k , int a s s o c _ i d )
5 {
6 s t r u c t s o c k a d d r * addrs , * a d d r p ;
7 s t r u c t s o c k a d d r _ i n * a d d r p 4 ;
8 s t r u c t s o c k a d d r _ i n 6 * a d d r p 6 ;
9 s t r u c t p e e r _ a d d r s p _ a d d r s ;
10 int p a d d r _ n u m ;
11 c h a r u a d d r [ R E M O T E _ A D D R E S S _ N U M ][ I N E T 6 _ A D D R S T R L E N ];
12
13 /* s c t p _ g e t p a d d r s f u n c t i o n */
14 p a d d r _ n u m = s c t p _ g e t p a d d r s ( sock , a s s o c _ i d , & a d d r s );
15
16 a d d r p = a d d r s ;
17
18 if ( addrp - > s a _ f a m i l y == A F _ I N E T ) {
19 a d d r p 4 = ( s t r u c t s o c k a d d r _ i n *) a d d r p ;
20 ++ a d d r p 4 ;
21 a d d r p = ( s t r u c t s o c k a d d r *) a d d r p 4 ;
22 } e l s e if ( addrp - > s a _ f a m i l y == A F _ I N E T 6 ) {
23 for ( int c o u n t = 0; c o u n t < p a d d r _ n u m ; c o u n t + + ) {
24 a d d r p 6 = ( s t r u c t s o c k a d d r _ i n 6 *) a d d r p ;
25 m e m s e t ( uaddr , 0 , s i z e o f ( u a d d r [ c o u n t ] ) ) ;
26 if (( i n e t _ n t o p ( A F _ I N E T 6 , & addrp6 - > s i n 6 _ a d d r . s6_addr ,
27 u a d d r [ c o u n t ] ,
28 I N E T 6 _ A D D R S T R L E N )) == N U L L ) {
29 p e r r o r ( " i n e t _ n t o p " );
30 e x i t ( 1 ) ;
31 }
32 ++ a d d r p 6 ;
33 a d d r p = ( s t r u c t s o c k a d d r *) a d d r p 6 ;
34 }
35 }
36 s c t p _ f r e e p a d d r s ( a d d r s );
37 }
4.5 状況に応じたデータ転送比率の決定
状況に応じたデータ転送比率の決定手法は本研究の中で最も重要なアルゴリズムである.
デ ー タ 転 送 比 率 が 正 し く 設 定 さ れ て い な い 場 合 で は ,複 数 あ る ネ ッ ト ワ ー ク リ ソ ー ス を 効 率 的 に 利 用 で き な い た め に 広 帯 域 な 通 信 や 安 定 し た 通 信 を 実 現 す る こ と が 困 難 と な る .本 研 究 に お い て は ,ア プ リ ケ ー シ ョ ン 層 に お け る 効 率 的 な デ ー タ 転 送 比 率 を ア プ リ ケ ー シ ョ ン層から取得可能である経路情報であるcwndとsRTT,またアプリケーションから計測可 能 な 帯 域 幅 な ど を 用 い て 算 出 す る .詳 細 な 転 送 比 率 の 決 定 ア ル ゴ リ ズ ム は 次 章 に つ い て 深 く 議 論 す る .
4.6 複数のアドレスへのデータ転送とデータ受信
以上までにより取得・計算された情報を元にデータを送信して行く.複数の宛先へデータ 転 送 を す る 為 にARMSで はSCTP が 提 供 す るAPI で あ るsctp sendmsg()関 数[16] を 用 い た .sctp sendmsg()関 数 を 用 い る 事 で1 つ の ソ ケ ッ ト か ら 複 数 の 宛 先 へ の デ ー タ 転 送 が 可 能 と な る .通 常SCTPは 複 数 の 宛 先 を 保 持 し て い て も ,実 際 に 通 信 に 用 い る の は プ ラ イ マ リ ア ド レ ス だ け で あ る .こ の プ ラ イ マ リ ア ド レ ス が 使 用 不 可 能 に な っ た 際 に 初 め て セ カ ン ダ リ ア ド レ ス を 利 用 す る 事 と な る .し か しARMS で は ,ア ソ シ エ ー シ ョ ン に 含 ま れ る 宛 先 を 全 て 通 信 に 利 用 す る 為 にsctp sendmsg()関 数 の 第4 引 数 に 送 信 し た い 宛 先 ア ド レ ス を 明
示 的 に 指 定 す る .し か し 指 定 し た ア ド レ ス が プ ラ イ マ リ ア ド レ ス 以 外 の ア ド レ ス 以 外 の 場 合,SCTPの仕様によりこの引数は無視され,プライマリアドレスへデータは送信される.
これを防ぐ為にsctp sendmsg()関数の第7引数のフラグフィールドにSCTP ADDR OVER フ ラ グ を 立 て る 事 で プ ラ イ マ リ ア ド レ ス 以 外 の ア ド レ ス へ の デ ー タ 転 送 を 可 能 と し た . sctp sendmsg()関 数 はone-to-one socket styleで もone-to-many socket styleで も 使 用 可 能 で あ る が ,one-to-one socket style で はSCTP ADDR OVER フ ラ グ オ プ シ ョ ン を 使 用 で き な い .こ の た めARMS で はSCTPの ソ ケ ッ ト ス タ イ ル を one-to-many socket styleと し た .
ソースコード4.4 ARMS send data.c
1 vo i d
2 A R M S _ s n d _ r c v _ d a t a ( int sock , s t r u c t s o c k a d d r _ i n r e m o t e )
3 {
4 int s e n t _ l e n ;
5 int r e c v _ l e n ;
6 c h a r buf [ B U F S I Z E ];
7
8 s w i t c h ( Y O U R _ P R O G R A M ) {
9
10 c a s e S E N D E R :
11 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
12 * s s i z e _ t *
13 * s c t p _ s e n d m s g ( int sockfd , c o n s t v o i d * msg , s i z e _ t msgsz , *
14 * c o n s t s t r u c t s o c k a d d r * to , s o c k l e n _ t tolen ,*
15 * u i n i t 3 2 _ t ppid , *
16 * u i n t 3 2 _ t flag , u i n t 1 6 _ t stream , *
17 * u i n t 3 2 _ t t i m e t o l i v e , u i n t 3 2 _ t c o n t e x t ); *
18 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
19 s e n t _ l e n = s c t p _ s e n d m s g ( sock , buf , s i z e o f ( buf ) ,
20 ( s t r u c t s o c k a d d r *) & remote ,
21 ( s o c k l e n _ t ) s i z e o f ( r e m o t e ) ,
22 0 , S C T P _ A D D R _ O V E R , 0 , 0 , 0);
23 /* if f a i l to s e n d */
24 if ( s e n t _ l e n < 0) {
25 p e r r o r ( " s c t p _ s e n d m s g " );
26 ex i t ( E X I T _ F A I L U R E );
27 }
28 b r e a k ;
29
30 c a s e R E C E I V E R :
31 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
32 * s s i z e _ t *
33 * s c t p _ r e c v m s g ( int sockfd , c o n s t v o i d * msg , s i z e _ t msgsz , *
34 * s t r u c t s o c k a d d r * from , s o c k l e n _ t * fromlen , *
35 * s t r u c t s c t p _ s n d r c v i n f o * sri , int * m s g _ f l a g );*
36 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
37 s t r u c t s c t p _ s n d r c v i n f o sri ;
38 int len , f l a g ;
39 r e c v _ l e n = s c t p _ r e c v m s g ( sock , buf , s i z e o f ( buf ) ,
40 ( s t r u c t s o c k a d d r *) & remote ,
41 ( s o c k l e n _ t *) & len , & sri , & f l a g );
42 /* if f a i l to r e c r e c e i v e */
43 if ( s e n t _ l e n < 0) {
44 p e r r o r ( " s c t p _ r e c v m s g " );
45 ex i t ( E X I T _ F A I L U R E );
46 }
47 b r e a k ;
48 }
49 }
4.7 アプリケーション内の関数の相関関係
以 上 ま で で 作 成 し た 関 数 はARMS ア プ リ ケ ー シ ョ ン の 中 で 図 ??の よ う に 機 能 す る .通 信 に 用 い るSCTPソ ケ ッ ト は ,one-to-many ソ ケ ッ ト ス タ イ ル を 指 定 し て を 作 成 す る .次 に ,get assoc info()関 数 と get peer addr()関 数 に よ っ て 宛 先 毎 の cwndや 相 手 の 宛 先 ア ド レ ス の 増 減 な ど を 取 得 す る .こ れ ら の 関 数 に よ っ て 取 得 し た デ ー タ を 基 にrate decision() 関 数 に て 最 適 な デ ー タ 転 送 比 率 を 決 定 す る .最 適 な デ ー タ 転 送 比 率 の 決 定 手 法 は 本 研 究 に
お い て も っ と も 重 要 な 部 分 で あ る た め ,次 章 に て 詳 細 に 実 験 を 行 い 議 論 を 行 う .決 定 さ れ た 転 送 比 率 に 基 づ い てARMS send data()関 数 に て 複 数 の 宛 先 へ デ ー タ を 送 信 す る .送 信 時には,宛先を明示的に指定し,かつSCTP ADDR OVERフラグを立てる事にて複数の宛 先 を 同 時 に 用 い た マ ル チ パ ス 転 送 を 実 現 す る .
第 5 章
複数宛先への動的な振り分け手法
本章では複数パスへの送信比率の決定手法を改良するために行なった事前実
験について述べる.事前実験の結果を踏まえて本研究で用いる最適な複数パ
スへの振り分け手法を検討する.
5.1 複数宛先への動的な振り分けの検討方法
本 研 究 に お い て 複 数 の 宛 先 へ の 振 り 分 け 方 法 は 最 も 重 要 な ア ル ゴ リ ズ ム で あ る た め ,多 く の 手 法 を 実 際 に 実 装 し 実 験 を 行 な っ た 上 で 決 定 し た .は じ め に ,実 装 し た 手 法 を 検 証 す る た め の 実 験 環 境 を 図5.1に 示 す .本 実 験 で は ,Correspondent Nodeは 単 一 ネ ッ ト ワ ー ク イ ン タ フ ェ ー ス の み に て 通 信 を 行 い ,Mobile Nodeは 2つ の ネ ッ ト ワ ー ク イ ン タ ー フ ェ イ ス を 用 い て 通 信 を 行 う も の と す る .ま た ,事 前 実 験 で はCorrespondent Node, Mobile Node 共 にPC を 用 い て お り ,ネ ッ ト ワ ー ク は そ れ ぞ れ1Gbpsの ネ ッ ト ワ ー ク に 接 続 さ れ て い る.本実験環境において,Network 1, 2, 3はそれぞれ独立したネットワークであり,異なる ネ ッ ト ワ ー ク ア ド レ ス を 保 持 し て い る .こ れ に よ り ,Correspondent Node か ら Mobile Nodeへの同一ネットワーク内でのデータ転送を起こらないようにしている.本研究では複 数 の ネ ッ ト ワ ー ク に 接 続 可 能 な 小 型 移 動 体 端 末 を 想 定 し て い る の で ,実 験 環 境 を よ り モ バ イ ル 環 境 に 近 付 け る こ と が 望 ま し い .Mobile Node が 接 続 さ れ て い る ネ ッ ト ワ ー ク を モ バ イ ル 環 境 に 近 づ け る た め にCorrespondent Nodeと Routerの 間 にDummynet端 末 を 設 置 し た .Dummynetと は ,通 過 す る パ ケ ッ ト の 送 り 出 す 量 や 時 間 を 変 更 す る こ と に よ り 特 定 の 経 路 の 帯 域 幅 や 遅 延 ,パ ケ ッ ト ロ ス 率 な ど を 任 意 の 値 に 制 御 す る た め の ブ リ ッ ジ ノ ー ド の こ と で あ る