il: 失われたプロトコル

Post on 12-May-2015

1.790 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

IL: 失われたプロトコル

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

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

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

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

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

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

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

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

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

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

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

9P9P

TCP IL

IPIP

EthernetEthernet

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

• TCPとUDPの中間的特徴

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

• 順序保証、再送

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

• フロー制御はない

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/(制御が戻らない)

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

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

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

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

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

ILの現状

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

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

• ルーティング

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

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 },

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

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

• 例:IL、SCTP、DCCP

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

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

SCTP: Stream Control Transport ProtocolDCCP: Data Congestion Control Protocol

続・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

続きは懇親会で

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

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

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

Closed

Syncer

Syncee

Established

Closing

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

top related