il: 失われたプロトコル

16
IL: 失われたプロトコル oraccha Plan9日記(http://d.hatena.ne.jp/oraccha/201058日 第四回カーネル/VM探検隊

Upload: ryousei-takano

Post on 12-May-2015

1.790 views

Category:

Technology


3 download

DESCRIPTION

第4回カーネル/VM探検隊

TRANSCRIPT

Page 1: IL: 失われたプロトコル

IL: 失われたプロトコル

oracchaPlan9日記(http://d.hatena.ne.jp/oraccha/)

2010年5月8日 第四回カーネル/VM探検隊

Page 2: IL: 失われたプロトコル

Ken Thompsonに聞く

Q「UNIXを再設計できるとしたら、  何を変えたい?」

A「creat(2)に”e”を付ける」

出典:Ask a google engineer. Ken Thompson,

http://www.google.com/moderator/#15/e=7f3&t=7f3.44&f=7f3.5046

Page 3: IL: 失われたプロトコル

Ken Thompsonに聞く1. ポータビリティ

2. EthernetとIPよりもよい通信

3. プロセス毎の名前空間

4. ファイルシステム用リモートアクセスプロトコル

Page 4: IL: 失われたプロトコル

IL: Internet Link1. ポータビリティ

2. EthernetとIPよりもよい通信

3. プロセス毎の名前空間

4. ファイルシステム用リモートアクセスプロトコル

9P9P

TCP IL

IPIP

EthernetEthernet

Page 5: IL: 失われたプロトコル

IL: Internet Link• 9P向けに設計された軽量でコネクション指向のトランスポートプロトコル

• TCPとUDPの中間的特徴

• 信頼性のあるデータグラム

• 順序保証、再送

• メッセージの区切りの存在

• フロー制御はない

Page 6: IL: 失われたプロトコル

rx(1): リモート実行

• Usage: rx machine command arg...

例)玄柴(plug)で処理を実行

注意:cpu(1)は標準入出力をつなぎ替えないので、上記のような使い方はできない

% rx plug echo 1 2 3 | sed s/1/x/x 2 3

% echo 1 2 3 | rx plug sed s/1/x/(制御が戻らない)

Page 7: IL: 失われたプロトコル

rx(1) over IL

• rxは標準入力がcloseされたとき、0バイトwriteすることでEOFを通知(TCPでは0バイトwriteは無視)

% echo 1 2 3 | rx il!plug!17009 sed s/1/x/x 2 3

% echo 1 2 3 | rx il!plug!17009 sed s/1/x/ |sed s/2/y/x y 3

Page 8: IL: 失われたプロトコル

TCPハーフクローズ• TCPは全二重通信

• shutdown(2)により片方向のみの通信を切断可能

• rsh系コマンドでEOF通知に利用

• Plan 9では未実装... orz

Page 9: IL: 失われたプロトコル

ILの現状

• TCPへの置換えは既定路線だったが、数年前にカーネルからコードが消滅

• 理由:長距離ネットワークへの対応

• ルーティング

• 性能(特にADSLのような非対称網)

Page 10: IL: 失われたプロトコル

ILを使ってみよう

• カーネルの再構築

• /n/sources/extra/il.c

• 参照:http://lufia.org/plan9/doc/inst/il.html

• ndb/cs.cの変更cpu% diff cs.c.orig cs.c164a165> { "il", iplookup, iptrans, 1 },

Page 11: IL: 失われたプロトコル

まとめ• TCPは万能ではない

• メッセージ指向プロトコル

• 例:IL、SCTP、DCCP

• 専用L4プロトコルを作る意義は?

• 例:劣悪な通信環境(モバイル、衛生通信)

SCTP: Stream Control Transport ProtocolDCCP: Data Congestion Control Protocol

Page 12: IL: 失われたプロトコル

続・Ken Thompsonに聞く

Q「Plan 9を再設計できるとしたら、  何を変えたい?」

A「クラウドOS!」

出典:Ask a google engineer. Ken Thompson,

http://www.google.com/moderator/#15/e=7f3&t=7f3.44&f=7f3.5046

Page 13: IL: 失われたプロトコル

続きは懇親会で

Plan9日記(http://d.hatena.ne.jp/oraccha/)

Tokyo Inferno/Plan9 Users Group (TIP9UG)もよろしく!

Page 14: IL: 失われたプロトコル

IL/IPヘッダフォーマットVersion Header

length TOS LengthLengthLengthLength

IdentifierIdentifierIdentifier 0 DF MF Fragment offset

TTLTTL Protocol Header checksumHeader checksumHeader checksumHeader checksum

Source IP addressSource IP addressSource IP addressSource IP addressSource IP addressSource IP addressSource IP address

Destination IP addressDestination IP addressDestination IP addressDestination IP addressDestination IP addressDestination IP addressDestination IP address

IL checksumIL checksumIL checksum Packet lengthPacket lengthPacket lengthPacket length

Packet typePacket type Special Source portSource portSource portSource port

Destination portDestination portDestination port Sequence idSequence idSequence idSequence id

Sequence id (cont.)Sequence id (cont.)Sequence id (cont.) Acked sequenceAcked sequenceAcked sequenceAcked sequence

Acked sequence (cont.)Acked sequence (cont.)Acked sequence (cont.) ----

0 31

Page 15: IL: 失われたプロトコル

Closed

Syncer

Syncee

Established

Closing

Page 16: IL: 失われたプロトコル

ipwriteip/devip.c

ilkick

transmit

ipoput4

etherbwrite

ipread

iliput

interrupt

ipiput4

etherread4

ip/il.c

ip/ip.c

ip/ethermedium.c

etheriq

etherbwriteetheroqpc/devether.c

pc/etherxxxx.c

write(2) read(2)

wq rq

in

oq