1 / 25

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

動的インタフェース調整機構について. 2003 年度春 タームプロジェクト. move! B3 skk@ht.sfc.keio.ac.jp. 25 Jul 2003. 23 Jul 2003. 18 Jul 2003. 11 Jul 2003. 本日のメニュー. 動機 想定環境 関連研究 システムについて 実装 今後. 動機. 無線環境の普及 同時に複数の異種無線を利用可能な環境 同時に複数のインタフェースからデータを流したいという要求 移動しても通信は切れないように. 想定環境. ネットワーク2 (802.11 とか ). ネットワーク1

erma
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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 両方ともに扱えるように • フロー制御

More Related