Post on 05-Feb-2016
description
nチャンネル通信のための経路制御
200703006 小川 真人木下研究室
Nチャンネル通信N本の経路を用いて、ファイルを分散させて通信を行う方式である。分散されたファイルが、すべて違う経路を通り相手に届くことが理想である。
N本の経路を用意すれば良い
しかし、実装するにあたって 次のような問題点がある
一般のネットワーク
インターネット等の通信
指定したルートでデーターを送ることはできない。
経路制御(ルーティング)
提案手法 nチャンネルまでの流れ
N本の経路を用いた通信をしたいしかし、ルーターが最短経路を選択してしまうために不可能
↓
そこで、ソースルーティングに着目した
ソースルーティング
ソース・ルート・オプションの形式
SSRR( strict soruce and record route)というオプションを使用する。IPアドレスのリストを送信前に埋め込まなければならない。ソース・ルート・オプションはデータグラムが経路を通過するごとに IPアドレスリストが更新される。
コード
データ長
ポインタ
IP アドレス#1
IP アドレス#2
IP アドレス#3
・・・・
・
IP アドレス#9
1 1 1 4バイト 4バイト 4バイト・・・・
・4バイト
39 バイト
実験の概要•パソコン 4台を使用し、 A、 Bのパソコンを任意に選択し通信できるか、実験した
net1
net4net2
net3192.168.1.1
192.168.2.1
192.168.2.3 192.168.4.3
192.168.4.4
192.168.3.4
192.168.3.2192.168.1.2
eth1
eth1
eth1
eth2
eth2
eth2
eth2eth1
送信プログラムLSR SourceRoute;memset(&SourceRoute,0,sizeof(LSR));
SourceRoute.Nop = IPOPT_NOP;SourceRoute.Code = 0x89;SourceRoute.Len = 11;SourceRoute.Offset = 4;SourceRoute.Addrs[0] = inet_addr("192.168.1.2");SourceRoute.Addrs[1] = inet_addr("192.168.3.4");
setsockopt(sock,IPPROTO_IP,IP_OPTIONS,(char*)&SourceRoute,SourceRoute.Len+1);
n = sendto(sock, "HELLO-1", 7, 0, (struct sockaddr *)&addr, sizeof(addr));if (n < 1) {perror("sendto");return 1;}
送信プログラムLSR SourceRoute;memset(&SourceRoute,0,sizeof(LSR));
SourceRoute.Nop = IPOPT_NOP;SourceRoute.Code = 0x89;SourceRoute.Len = 11;SourceRoute.Offset = 4;SourceRoute.Addrs[0] = inet_addr("192.168.1.2");SourceRoute.Addrs[1] = inet_addr("192.168.3.4");
setsockopt(sock,IPPROTO_IP,IP_OPTIONS,(char*)&SourceRoute,SourceRoute.Len+1);
n = sendto(sock, "HELLO-1", 7, 0, (struct sockaddr *)&addr, sizeof(addr));if (n < 1) {perror("sendto");return 1;}
192.168.1.2 を通り192.168.3.4 に着くように設定
SSRR を指定
実験の結果
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes20:40:08.660333 IP 192.168.1.1.50002 > 192.168.3.4.12345: UDP, length 7
0x0000: 0800 27a0 0339 0800 27a4 22db 0800 4800 ..'..9..'."...H.0x0010: 002f 0000 4000 3f11 1f76 c0a8 010b c0a8 ./..@.?..v......0x0020: 0304 0189 0b08 c0a8 0302 c0a8 0304 c8e8 ................0x0030: 3039 000f 6c8f 4845 4c4c 4f2d 31 09..l.HELLO-1
パケットの詳細
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes20:40:08.660333 IP 192.168.1.1.50002 > 192.168.3.4.12345: UDP, length 7
0x0000: 0800 27a0 0339 0800 27a4 22db 0800 4800 ..'..9..'."...H.0x0010: 002f 0000 4000 3f11 1f76 c0a8 010b c0a8 ./..@.?..v......0x0020: 0304 0189 0b08 c0a8 0302 c0a8 0304 c8e8 ................0x0030: 3039 000f 6c8f 4845 4c4c 4f2d 31 09..l.HELLO-1
パケットの詳細時刻; HH:MM:SS. マイク
ロ秒192.168.1.1 のポート 50002 から
192.168.3.4 のポート 12345 に
UDP で 7 文字( HELLO-1 )
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes20:40:08.660333 IP 192.168.1.1.50002 > 192.168.3.4.12345: UDP, length 7
0x0000: 0800 27a0 0339 0800 27a4 22db 0800 4800 ..'..9..'."...H.0x0010: 002f 0000 4000 3f11 1f76 c0a8 0101 c0a8 ./..@.?.........0x0020: 0304 0189 0b08 c0a8 0302 c0a8 0304 c352 ................R0x0030: 3039 000f 6c8f 4845 4c4c 4f2d 31 09..l.HELLO-1
パケットの詳細
08:00:27:a0:03:39受信側 MAC アドレ
ス
08:00:27:a4:22:db送信側 MAC アドレ
スイーサネットタイプ
0800(IP)
Version:4 ,ヘッダ長 :8(8x4=32byte) ,サービスタイプ :00 ,IP から見た全データ長 :002 f(47)
イーサネットのプロトコル ヘッダとIP ヘッダ
ここからIP ヘッダ
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes20:40:08.660333 IP 192.168.1.1.50002 > 192.168.3.4.12345: UDP, length 7
0x0000: 0800 27a0 0339 0800 27a4 22db 0800 4800 ..'..9..'."...H.0x0010: 002f 0000 4000 3f11 1f76 c0a8 0101 c0a8 ./..@.?.........0x0020: 0304 0189 0b08 c0a8 0302 c0a8 0304 c352 ................R0x0030: 3039 000f 6c8f 4845 4c4c 4f2d 31 09..l.HELLO-1
パケットの詳細
識別 ID:0000フラグメント :4000( オクテッ ト )
生存時間( TTL ) :3f(63)プロトコル :11(17=UDP)チェックサム 1 f 76
IP ヘッダ
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes20:40:08.660333 IP 192.168.1.1.50002 > 192.168.3.4.12345: UDP, length 7
0x0000: 0800 27a0 0339 0800 27a4 22db 0800 4800 ..'..9..'."...H.0x0010: 002f 0000 4000 3f11 1f76 c0a8 0101 c0a8 ./..@.?.........0x0020: 0304 0189 0b08 c0a8 0302 c0a8 0304 c352 ................R0x0030: 3039 000f 6c8f 4845 4c4c 4f2d 31 09..l.HELLO-1
パケットの詳細
送信元 IP アドレス :192.168.1.1
送信先 IP アドレス :192.168.3.4(受信側)
オプション: 010 x 89 :SSRR
SourceRoute.Len :0b(11)SourceRoute.Offset :08
IP ヘッダ
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes20:40:08.660333 IP 192.168.1.1.50002 > 192.168.3.4.12345: UDP, length 7
0x0000: 0800 27a0 0339 0800 27a4 22db 0800 4800 ..'..9..'."...H.0x0010: 002f 0000 4000 3f11 1f76 c0a8 0101 c0a8 ./..@.?.........0x0020: 0304 0189 0b08 c0a8 0302 c0a8 0304 c352 ................R0x0030: 3039 000f 6c8f 4845 4c4c 4f2d 31 09..l.HELLO-1
パケットの詳細
経由アドレス :192.168.3.2
送信先 IP アドレス :192.168.3.4(受信側)
IP ヘッダ
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes20:40:08.660333 IP 192.168.1.1.50002 > 192.168.3.4.12345: UDP, length 7
0x0000: 0800 27a0 0339 0800 27a4 22db 0800 4800 ..'..9..'."...H.0x0010: 002f 0000 4000 3f11 1f76 c0a8 0101 c0a8 ./..@.?.........0x0020: 0304 0189 0b08 c0a8 0302 c0a8 0304 c352 ................R0x0030: 3039 000f 6c8f 4845 4c4c 4f2d 31 09..l.HELLO-1
パケットの詳細
ポート番号: c352(50002)ポート番号: 3039 (12345)
ここからが UDP のヘッダ
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes20:40:08.660333 IP 192.168.1.1.50002 > 192.168.3.4.12345: UDP, length 7
0x0000: 0800 27a0 0339 0800 27a4 22db 0800 4800 ..'..9..'."...H.0x0010: 002f 0000 4000 3f11 1f76 c0a8 0101 c0a8 ./..@.?.........0x0020: 0304 0189 0b08 c0a8 0302 c0a8 0304 c352 ................R0x0030: 3039 000f 6c8f 4845 4c4c 4f2d 31 09..l.HELLO-1
パケットの詳細
データ: 4845 4c4c 4f2d 31 ( HELLO-1 )
UDP から見たデータ長 :000f(15byte)チェックサム :6c8f
UDP のヘッダとデータ
禁止設定の解除各ホストで、/etc/sysctl.confを以下のように修正する。# があれば外して、項目が無ければ追加する。
net.ipv4.conf.default.rp_filter=1net.ipv4.conf.all.rp_filter=1net.ipv4.ip_forward=1net.ipv4.conf.all.accept_source_route = 1
この設定をしないと、ソースルーティングができない。
まとめ・nチャンネル通信の実装手法としてソースルーティングを用いることを提案した
・送信パケットのヘッダにオプションを加えるだけで済むため、ネットワークに負荷をかけずに実現が可能である
・パケットに経路情報を付け加えるだけで、複数の経路に異なるデータを同時に送信できることを実験によって確認できた
・ソースルーティングはその危険性のため、各ルーターごとに設定を解除する必要があることが分かった
①ルート検索を自動で行い、ソースルーティングを自動的に行えるようにする
②ソースルーティングは危険性があるために、制限されているので、対策を考える
③IPv6ではルーティングヘッダを付けるだけでソースルーティングが可能になったので、 IPv6での実装も今後の課題である
課題