• 検索結果がありません。

TCP Selective ACK

N/A
N/A
Protected

Academic year: 2022

シェア "TCP Selective ACK"

Copied!
36
0
0

読み込み中.... (全文を見る)

全文

(1)

パケットサイズを考慮した

TCP Selective ACK の性能評価

提出日: 2005 年 2 月 2 日

指導:後藤滋樹教授

早稲田大学 理工学部情報学科 学籍番号: 1G01P056-1

関 宏規

(2)

1 序論 5

1.1 研究の背景 . . . 5

1.2 研究の目的 . . . 5

1.3 本論文の構成. . . 6

2 TCPの基本機能 7 2.1 コネクション指向 . . . 8

2.1.1 コネクションの確立 . . . 8

2.1.2 コネクションの終了 . . . 9

2.2 ウィンドウ制御 . . . 9

2.3 再送機能 . . . 11

2.3.1 タイムアウト . . . 11

2.3.2 高速再転送 . . . 11

2.4 輻輳制御 . . . 11

2.5 ACKの問題点 . . . 12

2.6 Selective ACK . . . 12

2.6.1 SACKオプション . . . 12

2.7 パケットサイズ管理 . . . 15

2.7.1 パケットサイズ . . . 15

2.7.2 通信環境とパケットサイズ . . . 16

3 無線 LAN 17 3.1 無線LANの概要 . . . 17

3.1.1 IEEE802.11 . . . 17

3.2 無線LANの運用形態 . . . 18

3.2.1 アドホックモード . . . 18

3.2.2 インフラストラクチャモード . . . 18

(3)

3.3 無線リンクにおけるMAC層 . . . 19

3.3.1 衝突検出 . . . 19

3.3.2 データ転送制御 . . . 20

3.3.3 無線区間で発生する誤り回復 . . . 20

3.4 無線リンクにおける通信の特性 . . . 20

3.4.1 ビット誤り率とパケット消失率 . . . 20

3.4.2 Signal-to-Noise Ratio (S/N比) . . . 21

4 実験の概要 22 4.1 実験の目的 . . . 22

4.2 ビット誤り率とパケット消失率 . . . 22

4.3 実験 . . . 23

4.3.1 ネットワーク構成 . . . 23

4.3.2 実験に使用した計算機 . . . 23

4.3.3 実験の内容 . . . 24

4.3.4 dummynet . . . 24

5 考察 25 5.1 測定結果 . . . 25

5.1.1 ビット誤り率0におけるスループットの変化 . . . 25

5.1.2 ビット誤り率5×10−7におけるスループットの変化 . . . 26

5.1.3 ビット誤り率10−6におけるスループットの変化 . . . 27

5.2 パケットサイズ変更点 . . . 28

5.2.1 SACKを用いない場合のパケットサイズ変更点 . . . 28

5.2.2 SACKを用いる場合のパケットサイズ変更点 . . . 30

6 結論 31 6.1 結論 . . . 31

6.2 今後の課題 . . . 31

A Dummynet Configuration 35

(4)

2.1 TCP ヘッダフォーマット . . . 7

2.2 3-way handshake . . . 8

2.3 ハーフクローズ . . . 9

2.4 ウィンドウサイズが1の例 . . . 10

2.5 ウィンドウサイズが4の例 . . . 10

2.6 SACK Option へッダ . . . 13

2.7 SACKによる再送要求 . . . 14

3.1 アドホックモード . . . 18

3.2 インフラストラクチャモード . . . 19

4.1 ネットワーク構成図 . . . 23

5.1 ビット誤り率0のときのMTUとスループット . . . 25

5.2 ビット誤り率5×10−7 のときのMTUとスループット . . . 26

5.3 ビット誤り率10−6のときのMTUとスループット . . . 27

5.4 ビット誤り率2×10−7 のときのMTUとスループット . . . 28

5.5 ビット誤り率2.5×10−7のときのMTUとスループット . . . 29

5.6 ビット誤り率6×10−7 のときのMTUとスループット . . . 29

5.7 ビット誤り率6.5×10−7のときのMTUとスループット . . . 30

(5)

2.1 SACK Optionの例 . . . 13

2.2 リンク種別 デフォルトMTU . . . 15

4.1 計算機の仕様. . . 23

5.1 測定結果 . . . 30

(6)

序論

1.1 研究の背景

近年、ネットワーク技術の急速な発達により、ネットワーク規模が拡大し、通信機器や接続形 態の多様化が進んでいる。そこで現在では、物理的な配線を必要とせず、低コストで手軽に利用 できる無線LANが注目され研究されている。

無線LANでは、通信の際、TCP/IPを用いるが、TCP/IPは本来有線ネットワークを前提と して設計されたプロトコルであり、無線特有の通信誤りによるパケット損失を考慮していない。

このような無線リンクの特性に対応するために、TCP New RenoやSACK (Selective Acknowl-

edgement) オプション等の新しい TCP/IPプロトコルも実装されはじめている。しかし無線リ

ンクにおける通信速度や信頼性を高めることが依然として求められており、さらなる研究が必要 である。

1.2 研究の目的

1.1節で述べたとおり、今後は無線LAN等の無線ネットワークがさらに広がり、その必要性が 増していくことが予想される。従って、無線リンクにおけるTCP/IPネットワークの性能をさ らに高めていくことは不可欠である。無線リンクにおいては、電波の受信状態が良い状況では安 定した通信を行うことができるが、そうでない状況では、通信が不安定になりやすい。それは電 波という通信媒体の特性上、通信中にビット単位での消失が起こりやすいからである。ビット単 位の消失が起きた場合、それを含むパケット自体がパケットエラーとなり廃棄される。従って、

電波の受信状態が良くない状況ではパケット廃棄が不規則的に起こり、その度に再送が行われ る。

このように無線リンクにおいては電波の受信状態によって通信性能が変わる。このとき送受信 するパケットサイズを考えると、再送が起こらない状況ではパケットサイズが大きい方が、再送

(7)

が何度も起こる状況ではパケットサイズが小さい方が良い。これはパケットのへッダのオーバー へッドが通信に影響を及ぼすからである。また、無線リンクにおけるパケット消失は、輻輳時に よるバースト的な消失とは異なり、ビットエラーによって引き起こされるものが大部分を占める。

従って、パケットサイズ自体の違いによって、パケット廃棄率も異なってくる。

現在広く普及しているTCP/IPや無線LAN製品の規格では、パケットサイズの値はデフォル トで一定値に定められており、電波の受信状態によって、動的に変化することはない。

再送が何度も起こる状況では、通常のTCPではパケットサイズを小さくする必要があること が知られている。しかし現在実装され始めているSACKオプションを用いることで再送による スループットの低下からすばやく回復し、安定した通信を行うことが出来るようになる。そのた め、再送が何度も起こる状況であっても、多少のパケットロスではパケットサイズを変化させる 必要はなくなると考えられる。

本論文では、無線リンクにおけるビット誤り率を考慮しながら、パケットサイズがスループッ トに及ぼす影響をSACKを用いる場合と用いない場合、それぞれにおいて実験によって測定す る。そして、そのスループットの変動の様子を比較し、SACKの及ぼす影響を考察する。

1.3 本論文の構成

本論文は以下の章により構成される。

第1章 序論

本研究の概要について述べる。

第2章 TCPの基本機能

TCP の基本的な部分を解説する。

第3章 無線リンク

無線リンクにおける通信の特性について述べる。

第4章 実験の概要

実験の目的と概要を述べる。

第5章 測定と考察

第4章の実験結果を考察する。

第6章 結論

本論文の結論。

(8)

TCP の基本機能

TCP (Transmission Control Protocol)は、IPの上位に位置するトランスポートプロトコルで、

高信頼性の通信サービスを提供する。TCPでは、コネクションを確立し、通信の信頼性と順序 を保証するために、以下のような制御を行っている。

順序番号(Sequence Number)

確認応答(Ackknowledgement)

コネクション管理

ウィンドウ制御

再送制御

輻輳制御

パケットサイズ管理

これらの制御はTCPへッダの情報を用いて行われる。図2.1にTCPのへッダ構成を示す。

4bit header

length

32bit sequence number 32bit acknowledge number

16bit source port number 16bit destination port number

reserved (6bit)

U R G

A C K

P S H

R S T

S Y N

F I N

16bit window size 16bit TCP checksum 16bit urgent pointer

OPTIONS

図 2.1: TCP ヘッダフォーマット

(9)

2.1 コネクション指向

TCP では、コネクション指向と呼ばれる仕組みを提供する。コネクション指向は、データの 送信の前に送信側と受信側がネゴシエートし、通信経路を把握して、効率の高い通信を実現する。

2.1.1 コネクションの確立

コネクションにおいては IP アドレスとポート番号の組で相手を識別する。このため、1 つの Web サーバに対して複数の TCP コネクションを確立することも可能である。

コネクションは、3-way handshake といわれる方法によって確立される。3-way handshake の手順を以下に示す。

1. クライアントはサーバに確立要求(SYN)を送信する

2. サーバは確立要求(SYN)と、クライアントからの確立要求に対する確認応答(ACK)を同 時に送信する

3. クライアントはサーバからの確立要求に対する確認応答(ACK)を送信する

SENDER RECEIVER

(1) SYN

(2) ACK

(3) ACK

図 2.2: 3-way handshake

SYNとACKはTCPのヘッダフォーマットのフラグに含まれている。SYNフラグをオンに して通信すれば、そのセグメントはコネクションの確立を要求したことになる。

(10)

2.1.2 コネクションの終了

コネクションの終了は、ハーフクローズという方法で行なう。ハーフクローズでは、コネクショ ンを片方ずつ閉じるため、4 つのセグメントが伝送される。

最初にクローズ要求を出す側をActive Closeという。Active Closeする側は最初にコネクショ ンの終了要求FINを送る。それに対し、FINを受け取った側は確認応答ACKを送信する。Ac-

tive Closeする側は、最後の FINを受信して最後のACKを送った後、一定時間待ってからコネ

クションを終了する。

SENDER RECEIVER

Active Close

Passive Close

(3) FIN

(4) ACK (2) ACK

(1) FIN

図 2.3: ハーフクローズ

2.2 ウィンドウ制御

TCPのデータの転送速度の調節は、スライディングウィンドウ方式によって行われる。

スライディングウィンドウ方式では、送信側は確認応答を受け取るまでの間に連続して送信で きるセグメントの数を、予め決められたウィンドウサイズに基づき決めることができる。

図2.4にウィンドウサイズが1の例を、図2.5にウィンドウサイズが4の例を示す。

ウィンドウサイズ1の場合に比べて、ウィンドウサイズが4の場合の方がACKを受け取るま でに4つのセグメントを送信できるので、より効率的である。

(11)

seq=1001,size=100

ack=1101

SENDER RECEIVER

図 2.4: ウィンドウサイズが1の例

seq=1001,size=100

SENDER RECEIVER

seq=12 01,size=100 seq=1301,size=100

ack=1101 seq=1101,size=100

ack=12

01

a

ck=1301

ack=1401

図 2.5: ウィンドウサイズが4の例

(12)

2.3 再送機能

送信側は、以下の場合に送出セグメントが正しく届かなかったものと判断し、再送を開始する。

2.3.1 タイムアウト

セグメント送信後一定時間経過してもACKが返信されない場合、送信側は送出セグメントが 経路上で消失したものと判断し、再度セグメントを送信する。

2.3.2 高速再転送

受信側は、セグメントを受け取る度にその時点で連続して受け取ったセグメントの最大のシー ケンス番号に1を加えた値を返す。順番通りにセグメントが受信者に到達しないと、送信者は重 複するACKを受け取ることとなる。送信者にとっては、重複ACKがセグメントの消失による ものなのか、セグメントの順序が入れ替わっただけなのかを判断することができない。

しかし、一般に経路中でセグメントの順序が入れ替わることは頻繁に起こることではない。従っ て、重複ACKが3つ連続して到着した場合、それはデータセグメントの消失の可能性が高いも のと判断し、再送タイマのタイムアウトまで待機せず、当該パケットの再転送を行う。これを高 速再転送(Fast Retransmit)と呼ぶ。

高速再転送アルゴリズムでは、セグメント再送後、輻輳崩壊を避けるために転送速度を減少さ

せる。TCP Renoでは、Fast Recoveryアルゴリズムに従って輻輳ウィンドウサイズをセグメン

ト消失検出前の2分の1に設定する。

2.4 輻輳制御

TCPによる輻輳制御は終端ノードによる自律的な制御である。TCPでは転送速度の上げ下げ を繰り返しながら通信を行う。セグメント消失が起きるまで転送速度を上げ続け、それによって 引き起こされるセグメント消失によって通信経路の限界を判断する。

転送速度の制御は、輻輳ウィンドウcwndのサイズを変えることで行う。輻輳ウィンドウサイ ズの増やし方はスロースタート段階と輻輳回避段階の2つの通信段階に対応している。

(1) スロースタート段階

cwndがssthreshとよばれる閾値に達するまで、RTT (Round Trip Time)ごとにウィン ドウサイズを2倍にする。ウィンドウサイズは指数的に増加する。

(2) 輻輳回避段階

RTTごとに1 セグメント分cwndを増加させる。ウィンドウサイズは線形的に増加する。

(13)

2.5 ACK の問題点

2.3節で述べたように、TCP Renoでは、高速再転送を用いることでセグメント消失から高速 に復帰することが可能である。しかし、TCP Renoにおいて複数のセグメントが消失した場合、

再送タイムアウトによらずに複数の損失から回復することは通常ない。この現象がパフォーマン スの際立った低下を招くことが知られている。

2.6 Selective ACK

2.5節で示したように、ACKを利用した単純な累積応答確認方式では、無線リンクのようなセ グメント消失率の高いリンク上では良いパフォーマンスを得ることは難しい。現在では、それら の問題を解決する手法として、SACK (Selective ACK)のオプションがある。SACKは、どの セグメントが到着したかを従来のACKよりも詳細に通知することにより、パフォーマンスの向 上をはかる。SACKはRFC2018で規定されている[7]。

2.6.1 SACKオプション

TCPはへッダにいくつかのオプションを含むことができる。SACKはこのオプションを利用 して実現される。SACKのオプションはSACK Permitted OptionとSACK Optionの2つから なる。

SACK Permitted Option SACK Permitted Optionは、TCPのネゴシエーション時に、

通信相手にSACK optionに対応していることを通知するためのオプションである。コネクショ ン確立要求のSYNフラグがセットされたパケットで利用される。

SACK Option SACK Optionは、到着したセグメントのシーケンス番号情報を格納する。

SACKは通常のACKに加え、SACK Optionを利用して、どのセグメント群(ブロック)が到着 したかを詳細に通知する。これらは、到着したシーケンス番号のブロックの左端(LeftEdge)と 右端(Right Edge)によって表され、最大で4ブロックまで指定できる。SACK Optionのへッ ダを図2.6に表す。

SACKの動作の例を図2.7に表す。また、同じ場面でのSACK Optionの例を表2.1に示す。

シーケンス番号が1001、1101、1201、1301、1401、1501のセグメントが連続して送出された 場合を考える。サイズは全て100であるとする。経路上において、シーケンス番号が1101、1301 のセグメントが消失したものとする。受信者は 1101 のセグメントの再送を再三要求し、送信 者は1101のセグメントの高速再転送を行う。この1101の再送要求を行う際に、SACK Option を付加し、1301のセグメントも消失したことを通知する。これを受け取った送信者は1101のセ

(14)

KIND LEN Left Edge of First Block Right Edge of First Block

: :

Left Edge of n th Block Right Edge of n th Block

図 2.6: SACK Option へッダ

グメントだけでなく、1301のセグメントについても高速再転送を行うことが可能である。いわ ば、各右端 (Right Edge)がACKとして扱われることになる。この高速再転送の結果、連続す るセグメントである1601への要求を受け取り、正常な状態へ復帰する。

表 2.1: SACK Optionの例

1st block 2nd block

Triger Segment ACK Left Edge Right Edge Left Edge Right Edge

1001 1101

1101 (lost)

1201 1101 1201 1301

1301 (lost)

1401 1101 1401 1501 1201 1301

1501 1101 1401 1601 1201 1301

(15)

SENDER RECEIVER

seq=1001, size=100 seq=1101, size=100

seq=1201, size=100

seq=1301, size=100

seq=1401, size=100

seq=1501, size=100

ack=1101

ack=1101, L1=1201, R1=1301

seq=1101, size=100

seq=1601, size=100

seq=1701, size=100

seq=1801, size=100

ack=1701 ack=1801

ack=1901 ack=1101, L1=1401, R1=1501, L2=1201, R2=1301

ack=1101, L1=1401, R1=1601, L2=1201, R2=1301 seq=1301, size=100

ack=1601 ack=1301, L1=1401, R1=1601

図 2.7: SACKによる再送要求

(16)

2.7 パケットサイズ管理

2.7.1 パケットサイズ

MTU(Maximum Transfer Unit) MTUとは、データリンク層において1回の転送で送信 できるデータの最大値を示す値のことである。IPが送信しようとするデータグラムがリンク層 のMTUより大きい場合、IPはデータグラムを小さなかたまりに断片化するフラグメンテーショ ンを行う。各フラグメントはMTUよりも小さなサイズに断片化される。MTUの値はリンクの 種別によって異なる。代表的なリンクのデフォルトMTUを表2.2に示す。

表 2.2: リンク種別 デフォルトMTU

ネットワーク MTU (byte)

Hyperchannel 65,535

16Mbpsトークンリング (IBM) 17,914

4Mbpsトークンリング (IEEE802.5) 4,464

FDDI 4,352

Ethernet 1,500

IEEE 802.11 1,500

IEEE 802.3/802.2 1,492

X.25 576

MSS (Maximum Segment Size) MSSとは最大セグメント長のことで、その通信経路で利 用できるTCPパケットのデータの最大長を意味する。MSSは以下の計算で求めることができ る。

HEADER = IP header(20byte) +T CP header(20byte) MSS = MT U−HEADER

上位層から渡されたデータがある程度大きい場合、TCPはデータをMSSの大きさで分割して 転送する。MSSを大きくとりすぎると、IP層でフラグメンテーションが起きてしまう。またMSS を小さくすると、IPへッダとTCPへッダによるオーバーへッドが大きくなる。MSSを適切に 設定すると、パケットのフラグメントによる処理負荷が少なくなるうえに、パケットへッダのオー バへッドが最も少なくなり、効率の良い通信を行うことができる。

(17)

2.7.2 通信環境とパケットサイズ

2.3節で述べたように、TCPではパケットが消失した際にそのパケットを再送するように設計 されている。ただし安定した通信環境においては、パケットの消失はほとんど起きない。その場 合、一般的にパケットサイズを大きくするとパケットへッダのオーバヘッドが少なくなるので、

効率の良い通信を行うことができる。

通信が輻輳状態に陥り通信環境が劣悪になると、パケット消失が頻発しパケットを何度も再送 することになる。この場合、パケットサイズが小さいときの方が大きいときに比べて再送するパ ケットが小さくてすむので、再送による影響は少なくなる。

パケットの再送が多い状態は輻輳時以外にも起こる。無線リンクにおける通信では輻輳以外で のパケット消失が特に多い。無線リンクでは、通信媒体として電波を用いているため、電波の受 信状態が良くない状況ではビット誤りが起こり、パケットの再送が何度も引き起こされる。従っ て輻輳が起きていないにも関わらず、TCPに輻輳と判断され輻輳制御が行われてしまう。この ときには、必要以上に通信効率を下げてしまっている。また、パケット消失はビット誤りによっ て引き起こされるため、パケット送信の際に1ビットでも誤りがあれば、パケットエラーが引き 起こされる。従って、ビット誤り率が高い状況においてはパケットサイズが大きいほど、そのパ ケットは消失しやすくなり、パケットサイズが小さい方がパケット消失率が小さくなるのでより 効率よく通信が行えるようになる。このように無線リンクにおいては、その通信の特性を考慮し て、最適なパケットサイズを設定することが求められる。

(18)

無線 LAN

3.1 無線 LAN の概要

3.1.1 IEEE802.11

無線LAN規格の標準化を行う機関として、1990年のIEEE総会で設立の承認を得たのが、

IEEE802.11 Wireless LAN WGである。1997年には初めての無線LAN規格、IEEE802.11が まとめられた。後述のISMバンドを利用し、アクセス方式としては直接拡散方式のスペクトラ ム拡散と周波数ホッピング方式のスペクトラム拡散、及び赤外線の3種類の方式があり、各方式 に対して伝送速度として1Mbpsと2Mbpsの2種類ずつが用意された。その後、1999年には次 世代規格としてIEEE802.11bが制定された。IEEE802.11bは直接拡散方式のスペクトラム拡散 を用いており、伝送速度は最大11Mbpsという高速通信が可能になった。IEEE802.11bは現在 幅広く用いられている規格でもある。

最近では、より高速な通信が可能な規格としてIEEE802.11bの上位互換規格、IEEE802.11g と、IEEE802.11bとは異なる5GHz帯を利用する規格のIEEE802.11aが既にまとめられており、

徐々にこれらの規格をサポートした製品も市場に出回り始めている。上記の2つの規格は、いず

れも最大54Mbpsの伝送速度を実現することができる。以下に代表的な無線LANの規格を示す。

IEEE802.11b

2.4GHz帯の電波 (ISMバンド) を使い、11Mbpsの速度で50m∼100mの距離にある端末 間で通信を行なうことができる。同じ2.4GHz帯の電波を使う電子レンジや医療用機器、

Bluetooth対応製品などが近くにあると、干渉のために通信速度が落ちることがある。

IEEE802.11a

5.2GHz周辺の周波数帯域を使用し、変調方式にはOFDM方式、MAC層はIEEE802.11

と同様にCSMA/CAを採用している。伝送速度は36〜54Mbpsで、IEEE 802.11bの約

(19)

11Mbpsから大幅に高速化されている。すでに日本国内でも対応製品が出ている。ただし IEEE802.11bとの互換性はない。

IEEE802.11g

IEEE802.11gはIEEE802.11bと同じ2.4GHz帯の周波数を利用し、IEEE802.11bと互換 性を保ちながら、54Mbpsの転送速度を実現する。また、なお、54Mbpsという最高転送

速度は IEEE802.11aと同じであるが、2.4GHz帯は無線LAN以外の機器でも多数使用さ

れているため、実際の転送速度はIEEE802.11aよりも遅くなると言われている。

3.2 無線 LAN の運用形態

3.2.1 アドホックモード

10Base-Tや100Base-TXでは複数のノード間で信号をやり取りできるように、HUBを使っ

て物理的に接続しなければならないが、無線LANでは電波という媒体の性質上、HUBが不要 である。そして、チャンネルを合わせることによって一定の周波数帯域が共有され、HUBで接 続したのと同じ状態になる。これがアドホック、あるいはピアツーピア(peer-to-peer) と呼ばれ る無線LANの基本的な運用方法で、半二重のノードをリピータHUBでつないた状態と類似し ている。

アドホックモードの概念を図 3.1 に示す。

図 3.1: アドホックモード

3.2.2 インフラストラクチャモード

インフラストラクチャモードとは携帯電話やPHSの基地局と同じようにアクセスポイントを 配置し、アクセスポイント間をイーサネット等を使って結ぶ運用形態である。アクセスポイント は通常、サービスエリア内の端末が外部と通信できるように、内外の中継を行うブリッジとして

(20)

機能する。また、携帯電話やPHSと同様に移動中の端末が各アクセスポイントのサービスエリ ア間を渡り歩けるように、ローミングを利用することもできる。

インフラストラクチャモードの概念を図 3.2 に示す。

AP

LAN

図 3.2: インフラストラクチャモード

3.3 無線リンクにおける MAC 層

無線リンクにおけるMAC層の基本的な制御には、以下の3つがある。

衝突検出

データ転送制御

無線区間で発生する誤り回復

3.3.1 衝突検出

有線リンク、無線リンクどちらにおいても、2つ以上のフレームが同時に送信されると信号が 重なってしまう。その結果、誤った信号になってしまう現象が起こる。これを衝突(Collision)と 呼ぶ。これを防ぐためには衝突検出(Collision Detection)を行なって再送する必要がある。

CSMA/CA 有線リンクでは、複数のフレームが衝突するとケーブル上の直流成分が増加する

ので、これを検出することで自動的な衝突検出が可能となる。これが、CSMA/CD(CSMA with

Collision Detection)方式である。しかし、無線リンクでは、受信のレベルは無線特有のフェー

(21)

ジングにより激しく変化するため信号の衝突を検出できない。従って、無線リンクではCSMA/CA(CSMA with Collision Avoidance)方式を用いる。CSMA/CA方式では、各クライアントは通信路が一

定時間以上継続して空いていることを確認してからデータを送信する。この待ち時間は最小限の 時間にランダムな長さの待ち時間を加えたもので、直前の通信があってから一定時間後に複数の クライアントが一斉に送信する事態を避ける。実際にデータが正しく送信されたかどうかは受 信側からのACKが到着するかどうかで判定し、ACKがなければ通信障害があったとみなして データの再送信を行なう。CSMA/CD方式に比べると効率は落ちる。特に衝突が発生した場合 にはすべてのデータを送信してから応答を待ち再送するという手順のため、通信性能が著しく低 下してしまう。

3.3.2 データ転送制御

無線ネットワークの伝送区間では誤り率が非常に小さい時間と誤り率が非常に大きいごく短い 時間の2つの時間帯が分布する。これに対処するために長いパケットと短いパケットの2種類の パケットを切り替えるという方法が考えられる。しかしながらこの方式は制御が非常に煩雑とな る。そこで考案された方式が長いパケットと短いパケットを折衷した方式である。これはマルチ フレーム構成と呼ばれ、メインフレームを複数のサブフレームで構成する。マルチフレーム構成 において、受信側では誤りの存在の判定を各サブフレームごとに行い、すべてのサブフレームの 判定が終わったら判定結果をデータの送信側に送り返すものである。データの送信側はデータの 受信側からの応答信号を受信し、誤りのあったサブフレームを再送する。

3.3.3 無線区間で発生する誤り回復

IEEE802.11は、OSI参照モデルにおける物理層及びデータリンク層を規定している。しかし

ながら無線リンクにおいては、ビット誤り率が高いためデータリンク層が再送制御を行い、誤り が発生した個所から回復する機能を有するアクセス方式が多い。一般に下位層において誤り制御 を行う場合は、上位層での制御と衝突が生じないように考慮しなければならない。

3.4 無線リンクにおける通信の特性

3.4.1 ビット誤り率とパケット消失率

TCP/IPは本来、ビット誤り率の低い有線リンクを前提に設計されている。しかし、無線リン

クは有線リンクとは異なった特性を有しており、特に大きく異なるのはビット誤り率の高さであ る。一般に無線リンクは不安定なリンクであり、ビット誤り率が高い。多くのIEEE802.11b無 線LAN製品において、無線リンクにおけるビット誤り率は、10−5以下であると規定されてい

(22)

る [9]。しかし、実際にビット誤り率が10−5である区間において通信を行った場合、ほとんど のパケットが消失してしまい、現実的に通信を行うことはできない。したがって、不安定ながら も、断続的な通信が可能となる状況時のビット誤り率は、おおよそ10−8 10−6 程度であると 言われている。ビット単位の消失が起きた場合、そのビットを含むパケット全体がパケットエラー となるので、無線リンクにおいてはパケット消失が不規則的に引き起こされる。このような無線 リンク上でTCP/IPを利用する場合、十分なパフォーマンスが得られない場合がある。

ビット誤り率に対するパケット消失率は以下の計算式から理論的に求めることができる。

PERはパケット消失率であり、1からパケット成功率PSRを引くことによって、求めること ができる。また、パケット成功率PSRは、ビット成功率をそのビット数だけ掛け合わせること で導出できる。また、ビット成功率は1からビット誤り率BERを引くことで求められる。

P ER = 1−P SR

P ER = 1(1−BER)8×M T U 3.4.2 Signal-to-Noise Ratio (S/N比)

映像信号、音声信号などベースバンド信号の強度と雑音の強度比をS/N 比 (Signal-to-Noise Ratio) という。信号電力をS、雑音電力をNで表したとき、S/N比は10 log10S/N で求めるこ とができ、単位はデシベル(dB)である。値が大きいほどノイズが少なく信号が明確であること を表し、従って信号の読み込みエラー率が小さくなる。

(23)

実験の概要

4.1 実験の目的

今回の実験では、それぞれのビット誤り率におけるパケット消失率をもとに、SACKを用い る場合と用いない場合、それぞれにおいてパケットサイズとパケット消失率がスループットにど のような影響を及ぼすのかを実験によって測定する。そして、そのスループットの変動の様子を 比較し、SACKの使用が及ぼす影響を考察する。

4.2 ビット誤り率とパケット消失率

通信路においてビット単位での消失が起こった場合、そのビットを含むパケットはすべてパケッ トエラーと判断されて破棄される。従ってビット誤り率が同じならば、その通信路においてはパ ケットサイズが大きいほど消失する可能性が高くなり、逆にパケットサイズが小さいほど消失す る可能性は低くなる。ビット誤り率に対するパケット消失率は以下の計算式から理論的に求める ことができる。

PERはパケット消失率であり、1からパケット成功率PSRを引くことによって、求めること ができる。また、パケット成功率PSRは、ビット成功率をそのビット数だけ掛け合わせること で導出できる。また、ビット成功率は1からビット誤り率BERを引くことで求められる。

P ER = 1−P SR

P ER = 1(1−BER)8×M T U

上記の計算式から各ビット誤り率におけるパケット消失率をパケットサイズごとに求め、実験に 用いる。

(24)

4.3 実験

4.3.1 ネットワーク構成

3台の端末を100Mbps Ethernetクロスケーブルによって接続し、外部影響を全く受けない環 境を構築して実験を行う。1台をルータ用端末として、他の2台を測定端末として使用する。ルー タ用端末にてdummynetを使用し、ファイアウォールを構築する。ネットワーク構成を図4.1に 表す。

PC1 PC2 PC3

Eth0 192.168.0.1

Bge0 192.168.0.2

Bge1 192.168.1.1

Eth0 192.168.1.2

図 4.1: ネットワーク構成図

4.3.2 実験に使用した計算機

本実験に使用した計算機の緒源を表4.1に示す。

表 4.1: 計算機の仕様

PC1 CPU PentiumII 300MHz Memory 128MB

OS Red Hat Linux 9 PC2 CPU Xeon 3.2GHz

Memory 2GB

OS FreeBSD 4.10 PC3 CPU PentiumII 300MHz

Memory 128MB

OS Red Hat Linux 9

(25)

4.3.3 実験の内容

本実験では、スループットの測定ツールとしてnttcp[12]を用いる。そしてPC1を送信端末、

PC3を受信端末とする。また送信データはバッファ数を10,240byte、バッファサイズを4,096byte とし、全体として41,943,040byteに固定する。これはTCPのスロースタートの影響を軽減する ために、十分大きな値を送信する必要があるためである。

また、ルータ用端末であるPC2にてdummynetを使用し、パケット消失率を設定する。節4.2で 述べたように、パケットサイズによってパケット消失率の設定を変えてランダムにパケットを消 失させる。データは送信側から受信側にのみ送られ、受信側から送信側には、ACKのみしか送 信されない。従って受信側から送信側に対しては、MSSが0byteとしてへッダサイズのみを考 慮して、パケット消失率を設定する。設定したパケット消失率においてSACKを用いる場合と 用いない場合それぞれについてスループットを測定する。

4.3.4 dummynet

dummynetは、帯域制御によりネットワークのプロトコルをテストするために設計された機能

である[10]。dummynetはルータあるいはブリッジの役割をするFreeBSD端末において帯域、

遅延、キューの大きさ、パケット消失率などを調節することができる。

書式 ルールは、dummynetのパイプ(pipe)によって記述され、ipfwコマンドによって制御さ れる。以下にルールの書式を示す。

ipfw add pipe NNN ....

ipfw pipe NNN config bw B delay D queue Q plr P

bandwidth B :帯域幅を設定する。使用可能な単位は bit/s、Kbit/s、Mbit/s、Byte/s、 KByte/s、MByte/sである。

delay D :遅延時間を設定する。使用可能な単位はmsである。

queue Q : キューの大きさを設定する。大きさはパケット単位、またはバイト数で表現する。

plr P : パケット消失率を設定する。0から1までの値が選択でき、設定された確率によって ランダムにパケットが廃棄される。

(26)

考察

5.1 測定結果

実験4.3における測定結果を以下に示す。

5.1.1 ビット誤り率0におけるスループットの変化

図 5.1: ビット誤り率0のときのMTUとスループット

考察

ビット誤り率が0 (図5.1)の時は、パケット消失における再送が起こることがほとんどないた め、スループットはデフォルトMTUである1500[byte]の時が最大となり、MTUを小さくして

(27)

いくほど、パケットヘッダのオーバーヘッドによりスループットは低下していく。これは、SACK を用いる場合も用いない場合も同じであり、スループットはどちらにおいても同様に変動してい る。しかし、SACKを用いることにより、2.6節で示したようにSACKオプションを含ませる 分、SACKを用いない場合よりもヘッダのオーバーヘッドが大きくなってしまう。これにより SACKを用いる場合の方が若干ではあるがスループットは小さくなっている。よって、パケット 消失がほとんど起こらない状況ではSACKは用いないほうがいいことがわかる。

5.1.2 ビット誤り率5×10−7 におけるスループットの変化

図 5.2: ビット誤り率5×10−7 のときのMTUとスループット

考察

ビット誤り率が5 × 10−7 (図5.2) の場合は、SACKを用いていない場合はMTU 1500byte

よりもMTU 1300byteのときの方がスループットは約10%高くなっている。これは、パケット

ヘッダのオーバーヘッドが及ぼす影響よりもMTU 1500byteのときのパケット消失率のほうが スループットに影響を及ぼしているためである。このことより、ビット誤り率が5×10−7 の場合 は、SACKを用いない場合はパケットサイズを変えることが有効である。しかしSACKを用い

た場合、MTU 1500byteのときが最大スループットを示している。これは、SACKを用いるこ

とで、パケット消失によるスループット低下からすばやく回復し、これによりヘッダのオーバー ヘッドが及ぼす影響がパケット消失によるスループットへの影響を上回っているためである。こ

(28)

のことより、ビット誤り率が5×10−7 の場合、SACKを用いない場合はパケットサイズを変え る必要があるがSACKを用いることにより、パケットサイズを変える必要がなくなり、SACK がスループットの低下を抑えることに非常に有効に働いていることがわかる。

5.1.3 ビット誤り率10−6におけるスループットの変化

図 5.3: ビット誤り率10−6のときのMTUとスループット

考察

ビット誤り率が10−6 (図5.3) の場合は、SACKを用いる用いないにかかわらず、MTUを小 さくする方がスループットが高くなっていることがわかる。SACKを用いない場合はMTU 500byte のときに最大スループットを示しているが、SACKを用いている場合はMTU 750byteのとき に最大スループットを示している。これはSACKがパケット消失によるスループットの低下を 抑えているために、SACKを用いない場合よりも大きなサイズのパケットを送ることが可能と なっているためだと思われる。このことからSACKを用いることは有効ではあることがわかる が、SACKによるスループット低下を抑える影響よりもパケット消失が大きすぎるためにSACK を用いていてもパケットサイズを変える必要がある。

(29)

5.2 パケットサイズ変更点

節5.1より、SACKを用いる場合と用いない場合で、パケットサイズの変更が必要となるビッ ト誤り率が違うことがわかった。そこで、SACKを用いる場合と用いない場合それぞれについ て、パケットサイズの変更が必要となるビット誤り率の閾値を求める。

5.2.1 SACKを用いない場合のパケットサイズ変更点

図 5.4: ビット誤り率2×10−7 のときのMTUとスループット

考察

ビット誤り率が2×10−7 (図5.4) の場合は、MTU1500byteのときが最大スループットを示し ている。しかし、ビット誤り率が2.5×10−7(図5.5)の場合は、MTU1450byteのときとMTU1500 のときがほぼ同じ値を示し、わずかではあるがMTU1450byteのときが最大になる。つまり、SACK を用いない場合、パケットサイズの変更が必要となってくるビット誤り率は約2.5×10−7 からと 考えられる。

(30)

図 5.5: ビット誤り率2.5×10−7 のときのMTUとスループット

図 5.6: ビット誤り率6×10−7 のときのMTUとスループット

(31)

図 5.7: ビット誤り率6.5×10−7 のときのMTUとスループット

5.2.2 SACKを用いる場合のパケットサイズ変更点 考察

ビット誤り率が6×10−7 (図5.6) の場合は、MTU1500byteのときが最大スループットを示し ている。しかし、ビット誤り率が6.5×10−7(図5.7)の場合は、わずかではあるがMTU1450byte のときが最大になる。つまり、SACKを用いる場合、パケットサイズの変更が必要となってく るビット誤り率は約6.5×10−7 からと考えられる。これによりSACKを用いない場合はパケット サイズを変える必要があるがSACKを用いることでパケットサイズを変える必要がなくなる、

SACKが最も有効に働くビット誤り率は2.5×10−7〜6.5×10−7であることがわかる。

以上の結果をまとめたものを表5.1に示す

表 5.1: 測定結果

ビット誤り率 SACKなし SACKあり パケットサイズの変更

0 × 共に必要なし

2.5×10−76.5×10−7 × SACKなしのみ必要あり 6.5×10−710−6 × 共に必要あり

(32)

結論

6.1 結論

パケット消失が0 のときは、SACKを用いる用いないにかかわらずパケットサイズを変える 必要はない。また、ヘッダによるオーバーヘッドの影響のためにSACKを用いることでスルー プットがわずかに下がる。よって、パケットロスが0のときは、SACKは用いないほうがよい。

2.5×10−7〜6.5×10−7のビット誤り率のときは、SACKを用いない場合、パケットサイズ を変更する必要があるが、SACKを用いることで、パケット消失によるスループット低下から すばやく回復するために、パケットサイズを変える必要はなくなる。この範囲のビット誤り率の ときが、SACKが最も有効に働く状況である。

しかし、ビット誤り率が6.5×10−7を超え、パケット消失が非常に大きくなると、SACKを用 いていても、SACKの回復機能がパケット消失に追いつかなくなってしまうために、パケット サイズを変更しなければならない。ただし、SACKによる回復機能が働いているためにSACK を用いていない場合よりも大きなパケットサイズのときに最大スループットを示す。

6.2 今後の課題

本論文での実験は無線を前提としたシミュレーションを併用して行ったが、今後は実際の無線 環境に移して実験を行い、無線環境におけるSACKの及ぼす影響を調べてみたい。また、SACK

以外にもTCP New RenoやTCP Vegasなど新しいプロトコルが実装され始めている。これらの

プロトコルが無線環境でどのような挙動を示すのか調べていきたい。

(33)

本学士論文の作成にあたり日頃より御指導を頂いた早稲田大学理工学部の後藤滋樹教授に深く 感謝致します。さらに、研究の初期段階から終了まで辛抱強く御指導して頂いた福田浩章氏に深 く感謝致します。また、実験環境構築に御協力を頂きました石井勇弥氏、さまざまな助言を頂き ました笹川真氏、河野真也氏に深く感謝致します。最後に、多大なる御協力を頂きました後藤研 究室の諸氏に感謝致します。

(34)

[1] FreeBSD.org, ”FreeBSD Hyper Text Man Pages, ” http://www.freebsd.org/cgi/man.cgi

[2] JM Project, ”Manpage of TCP, ”

http://www.linux.or.jp/JM/html/LDP_man-pages/man7/tcp.7.html

[3] IEEE802.11 Working Group, ”IEEE P802.11,The Working Group for Wireless LANs ” http://grouper.ieee.org/groups/802/11/main.html

[4] J. Mogul, S. Deering, “Path MTU Discovery”, Internet RFC 1191, 1990.

[5] W. Richard Stevens, “TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms”, RFC 2001, 1997.

[6] S. Floyd, T. Henderson:”The NewReno Modification to TCP’s Fast Recovery Algo- rithm”,RFC2582,1999.

[7] M. Mathis, J. Mahdavi, S. Floyd and A. Romanow, “TCP Selective Acknowledgment Options”, Internet RFC 2018, 1996.

[8] V. Paxson, M. Allman, S. Dawson, W. Fenner, J. Griner, I. Heavens, K. Lahey, J. Semke and B. Volz, “Known TCP Implementation Problems”, Internet RFC 2525, 1999.

[9] InfraCom, ”Technology Comparison”

http://www.infra-com.com/html/standards.pdf [10] Luigi Rizzo,”dummynet, ”

http://info.iet.unipi.it/~luigi/ip_dummynet/

[11] 帯域制御(BSD編) for FreeBSD

http://infonet.cse.kyutech.ac.jp/~nori/memo/dummynet.html

(35)

[12] Elmar Bartel,”New TTCP program”

http://www.leo.org/~elmar/nttc/

[13] ファイヤープロジェクト,”nttcp の紹介, ”

http://www.h7.dion.ne.jp/~matsu/pc_cluster/benchmark/communication/nttcp.

html

[14] 西田佳史, 日本ネットワークインフォメーションセンター編, 『TCP 詳説』, www.nic.ad.jp/jp/materials/iw/1999/proceedings/C03.PDF

[15] W.Richard Stevens, 井上尚司監訳, 橘康雄訳『詳解TCP/IPプロトコル』ソフトバンク, 1997.

[16] 竹田直哉『シミュレーションによる TCP Selective ACKの性能評価』早稲田大学理工学部 情報学科後藤研究室 2001 年度卒業論文.

[17] 福田浩章『無線リンクにおける最適パケットサイズの検討』早稲田大学理工学部情報学科後 藤研究室 2002 年度卒業論文.

(36)

Dummynet Configuration

シミュレート実験に使用した PC2(ルータ用端末) の設定を示す。以下は、DUMMYNETのた めに必要な設定に関する部分を抜粋したものである。

# Pipe Configuration

Sender Receiver

$fwcmd add 1 pipe ip from 192.168.0.1 to 192.168.1.2

Receiver Sender

$fwcmd add 2 pipe ip from 192.168.1.2 to 192.168.0.1

# Packet Loss Rate Configuration

Sender Receiver

$fwcmd pipe 1 config plr [Packet Loss Rate (DATA)]

Receiver Sender

$fwcmd pipe 2 config plr [Packet Loss Rate (ACK)]

参照

関連したドキュメント

体長は大きくなっても 1cm くらいで、ワラジム シに似た形で上下にやや平たくなっている。足 は 5

問い ―― 近頃は、大藩も小藩も関係なく、どこも費用が不足しており、ひどく困窮して いる。家臣の給与を借り、少ない者で給与の 10 分の 1、多い者で 10 分の

黒い、太く示しているところが敷地の区域という形になります。区域としては、中央のほう に A、B 街区、そして北側のほうに C、D、E

大村 その場合に、なぜ成り立たなくなったのか ということ、つまりあの図式でいうと基本的には S1 という 場

神はこのように隠れておられるので、神は隠 れていると言わない宗教はどれも正しくな

自分ではおかしいと思って も、「自分の体は汚れてい るのではないか」「ひどい ことを周りの人にしたので

生育には適さない厳しい環境です。海に近いほど  

より早期の和解に加え,その計画はその他のいくつかの利益を提供してい