動的インタフェース調整機構について - PowerPoint PPT Presentation

erma
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
動的インタフェース調整機構について PowerPoint Presentation
Download Presentation
動的インタフェース調整機構について

play fullscreen
1 / 25
Download Presentation
動的インタフェース調整機構について
159 Views
Download Presentation

動的インタフェース調整機構について

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. 動的インタフェース調整機構について 2003 年度春 タームプロジェクト move! B3 skk@ht.sfc.keio.ac.jp 25 Jul 2003 23 Jul 2003 18 Jul 2003 11 Jul 2003

  2. 本日のメニュー • 動機 • 想定環境 • 関連研究 • システムについて • 実装 • 今後

  3. 動機 • 無線環境の普及 • 同時に複数の異種無線を利用可能な環境 • 同時に複数のインタフェースからデータを流したいという要求 • 移動しても通信は切れないように

  4. 想定環境 ネットワーク2 (802.11 とか) ネットワーク1 (AirH”とか) a b c

  5. 関連研究 • SCTP • 相手先ホストまでの経路の多重化 • 相手先ホストでデータの統合は行わない • pTCP • ネットワークインタフェースの動的変更に対応していない • TCP のみ • MIBSocket • データ送信の多重化は行わない

  6. システムについて

  7. 要件 • ネットワークインタフェースの動的な個数の変更 • 相手先ホストでのデータ統合 • 無線に適したパラメータの制御

  8. システム概要 process アプリケーション層 socket layer ソケット層 protocol layer protocol layer トランスポート層 interface layer interface layer wi0 cuaa0(ppp)

  9. トランスポート層 (TCP/UDP) とソケット層の間での理由 • 再送制御 • フロー制御 • 既存アプリケーションへの影響を最小限に

  10. アプリケーション層における実装との比較 • スピード • ネットワーク層の方が速い • プログラミング • アプリケーションの複雑化 • ミドルウェアならいいかも • 遅い • ユーザプログラマへの影響 • ネットワークそうならばない。 • ミドルウェアだと、それを使うアプリケーションだけ。 • スケールしない(by pTCP の論文) • ネットワーク層の問題への対応 • 再送が起きている時など、アプリケーション層では知りえない状況のとき、対応できない。

  11. ネットワーク層 (IP) における実装との比較 • 再送/輻輳制御を行うことは出来ない • パケットの統合を行うのが難しい。(sequential number がないから)

  12. 実装に関して

  13. 実装1 - 実験環境 - • FreeBSD 5.1R • Thinkpad T30 • 802.11b x 2

  14. 実装2 - 目標 - • 一つの送信データを2つのインタフェースから UDP パケットで投げる データ 1 3 1 2 3 4 2 4 送信元ホスト 受信ホスト

  15. 実装3 - 関数の構造 - send() socket() so_type SOCK_DGRAM sosend() mbuf を free() するときに panic !! skk_usrreq socket layer protosw{} protocol layer skk_send() udp_send() udp_send() NIC1 NIC2

  16. 実装4 - 追加した関数 • socreate() (kern/uipc socket.c) • struct protosw inetsw[] (netinet/in proto.c) • netinet/skk usrreq.c • netinet/skk var.h

  17. 実装5 - コード紹介 - socreate() 内 if (type == SOCK_DGRAM && dom == PF_INET){ prp = pffindproto(dom, IPPROTO_SKK, SOCK_SKK); if (proto) global_prp = pffindproto(dom, proto, type); else global_prp = pffindtype(dom, type); } else if (proto) prp = pffindproto(dom, proto, type); else prp = pffindtype(dom, type);

  18. 実装5 - コード紹介2 - in_proto.c 内 struct protosw inetsw[] { SOCK_SKK, &inetdomain, IPPROTO_SKK, PR_ATOMIC|PR_ADDR, skk_input, 0, skk_ctlinput, ip_ctloutput, 0, skk_init, 0, 0, 0, &skk_usrreqs },

  19. 実装5 - コード紹介3 - skk_send() 内 static int skk_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, struct mbuf *control, struct thread *td) { static int ret, ret2 ; struct ifnet *ima_ifp; struct inpcb *inp; ret = (*global_prp->pr_usrreqs->pru_send)(so, flags, m, addr, control, td); ima_ifp = find_next_ifnet(so); if(ima_ifp != NULL){ inp = sotoinpcb(so); inp->inp_route.ro_rt->rt_ifp = ima_ifp ; ret2 = (*global_prp->pr_usrreqs->pru_send)(so, flags, m, addr, control, td); } return ret2; }

  20. 評価 • 10MB のファイルを他のホストへ送信 • 使用インタフェース1つの場合 • 50 s • 使用インタフェース2つの場合 • 25 s

  21. 今後行う予定のこと • (今回の実装目標を終了させる) • ネットワークインタフェースが増減したとき、動的に送信インタフェースを増減 • UDP/TCP 両方ともに扱えるように • フロー制御