Cost of ovs receiving process

818 views
697 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
818
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Cost of ovs receiving process

    1. 1. Cost of OVS receiving process @syuu1228
    2. 2. http://bit.ly/kernelvm_study_1http://bit.ly/kernelvm_study_1_slide
    3. 3. Bridgeの話
    4. 4. FDB: Forwarding Database• 256エントリのフォワーディング先データベース(キャッシュ)• 構造体エントリ • fdb->addr: MACアドレス • fdb->dst: フォワード先NIC• パケット着信毎に以下の作業を実施 • FDB上のエントリのaddrとパケットの送信元アドレスを順に比較して、一致するエ ントリがあったらdstを更新 • 無かったら新しいエントリを作成 • FDB上のエントリのaddrとパケットの送信先アドレスを順に比較して、一致するエ ントリがあったらdstへパケット転送 • 無かったら全ポートにパケット転送(flooding)
    5. 5. bridgeのコスト1. foreach(fdb) /* < 256 entry */ if (memcmp(fdb->addr, source_addr)) update(fdb, source_port, source_addr)2. foreach(fdb) /* < 256 entry */ if (memcmp(fdb->addr, dest_addr)) xmit(fdb->dst, packet)
    6. 6. OpenVSwitchの話
    7. 7. Key作成• ovs_flow_extract()でskbからsw_flow_key構造体へ以下の要素をコピー • MACアドレス - memcpy • IPv4 • アドレス - pointer • プロトコル - value • TOS - value • TTL - value • TCP • ポート番号 - value
    8. 8. ハッシュ生成• jhash関数でsw_flow_key構造体をハッ シュ
    9. 9. テーブルルックアップ1. ハッシュ値からbucketを検索2. bucketをイテレートして各エントリのkey と先ほど作ったkeyをmemcmp3. 一致したらreturnで返す4. 見つからなかったらユーザランドのデー モンへ聞きに行く
    10. 10. ACTIONの実行• テーブルに登録されていたエントリに はフローに対するACTION群が登録さ れている• ACTIONを開いて順に実施
    11. 11. ACTIONの種類• OVS_ACTION_ATTR_OUTPUT • 指定されたNICへパケット出力• OVS_ACTION_ATTR_USERSPACE • ユーザランドでパケットハンドル• OVS_ACTION_ATTR_PUSH_VLAN • VLANタグをパケットに書き込み• OVS_ACTION_ATTR_POP_VLAN • VLANタグをパケットから削除• OVS_ACTION_ATTR_SET • パケットヘッダの書き換え(priority、MACヘッダ、IPヘッダ、TCP/UDPヘッダ)• OVS_ACTION_ATTR_SAMPLE • 上述のACTIONを実施するが、最終的にパケットをネットワークスタックへ引き渡 す(このノードで受信することを意図している?)
    12. 12. Netlink• ユーザランドとのやり取りにNetlinkを使用 (よく知らないので詳しい人教えて下さい)• ソケットインタフェースでカーネルと通信でき る?• ユーザランドとのパケットやり取りに使用• ユーザランドからカーネルモジュールをコント ロールするのにも使用?
    13. 13. 疑問点• 何故skb->hashを使わないでわざわざkeyを作って改めて ハッシュを計算するのか(非効率じゃない?)• どんな時にユーザランドへ上げるのだろう?(特に OVS_ACTION_ATTR_USERSPACE)• bridge compatibleなioctlのハンドラはどこ? →mainlineからは削られてたっぽい?• OVS独自なコントロール操作はどこ?• OVS_ACTION_ATTR_SAMPLEの用途は?

    ×