SlideShare uma empresa Scribd logo
1 de 13
Cost of OVS receiving
       process
        @syuu1228
http://bit.ly/kernelvm_study_1
http://bit.ly/kernelvm_study_1_slide
Bridgeの話
FDB: Forwarding
               Database
•   256エントリのフォワーディング先データベース(キャッシュ)

•   構造体エントリ

    •   fdb->addr: MACアドレス

    •   fdb->dst: フォワード先NIC

•   パケット着信毎に以下の作業を実施

    •   FDB上のエントリのaddrとパケットの送信元アドレスを順に比較して、一致するエ
        ントリがあったらdstを更新

        •   無かったら新しいエントリを作成

    •   FDB上のエントリのaddrとパケットの送信先アドレスを順に比較して、一致するエ
        ントリがあったらdstへパケット転送

        •   無かったら全ポートにパケット転送(flooding)
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)
OpenVSwitchの話
Key作成
•   ovs_flow_extract()でskbからsw_flow_key構造体へ以下の要素をコピー

    •   MACアドレス - memcpy

    •   IPv4
        •   アドレス - pointer

        •   プロトコル - value

        •   TOS - value
        •   TTL - value
    •   TCP
        •   ポート番号 - value
ハッシュ生成


• jhash関数でsw_flow_key構造体をハッ
 シュ
テーブルルックアップ
1. ハッシュ値からbucketを検索

2. bucketをイテレートして各エントリのkey
 と先ほど作ったkeyをmemcmp

3. 一致したらreturnで返す

4. 見つからなかったらユーザランドのデー
 モンへ聞きに行く
ACTIONの実行

• テーブルに登録されていたエントリに
 はフローに対するACTION群が登録さ
 れている

• ACTIONを開いて順に実施
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を実施するが、最終的にパケットをネットワークスタックへ引き渡
        す(このノードで受信することを意図している?)
Netlink
•   ユーザランドとのやり取りにNetlinkを使用
    (よく知らないので詳しい人教えて下さい)

•   ソケットインタフェースでカーネルと通信でき
    る?

•   ユーザランドとのパケットやり取りに使用

•   ユーザランドからカーネルモジュールをコント
    ロールするのにも使用?
疑問点
•   何故skb->hashを使わないでわざわざkeyを作って改めて
    ハッシュを計算するのか(非効率じゃない?)

•   どんな時にユーザランドへ上げるのだろう?(特に
    OVS_ACTION_ATTR_USERSPACE)

•   bridge compatibleなioctlのハンドラはどこ?
    →mainlineからは削られてたっぽい?

•   OVS独自なコントロール操作はどこ?

•   OVS_ACTION_ATTR_SAMPLEの用途は?

Mais conteúdo relacionado

Mais procurados

OpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみようOpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみようKimihiko Kitase
 
PaaSの作り方 Sqaleの場合
PaaSの作り方 Sqaleの場合PaaSの作り方 Sqaleの場合
PaaSの作り方 Sqaleの場合hiboma
 
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Takuya ASADA
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2Masahide Yamamoto
 
WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法Takashi Hoshino
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能についてshigeki_ohtsu
 
ParliamentでGeoSPARQL
ParliamentでGeoSPARQLParliamentでGeoSPARQL
ParliamentでGeoSPARQLTeppei Inaba
 
GUI&基本操作、CLI編
GUI&基本操作、CLI編GUI&基本操作、CLI編
GUI&基本操作、CLI編Go Chiba
 
Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)Masaru Oki
 
Linux Server 冗長化~リアルタイム同期でラクラク運用~
Linux Server 冗長化~リアルタイム同期でラクラク運用~Linux Server 冗長化~リアルタイム同期でラクラク運用~
Linux Server 冗長化~リアルタイム同期でラクラク運用~miraitas
 
6.2 reconciling amortization and persistence
6.2 reconciling amortization and persistence6.2 reconciling amortization and persistence
6.2 reconciling amortization and persistenceHironobu Kinugawa
 
Redisととあるシステム
RedisととあるシステムRedisととあるシステム
RedisととあるシステムTakehiro Torigaki
 
Electronについて
ElectronについてElectronについて
Electronについてtomowata
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)Masaru Oki
 
分散ストレージ技術Cephの最新情報
分散ストレージ技術Cephの最新情報分散ストレージ技術Cephの最新情報
分散ストレージ技術Cephの最新情報Emma Haruka Iwao
 

Mais procurados (20)

Kubernetesできること
KubernetesできることKubernetesできること
Kubernetesできること
 
OpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみようOpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみよう
 
PaaSの作り方 Sqaleの場合
PaaSの作り方 Sqaleの場合PaaSの作り方 Sqaleの場合
PaaSの作り方 Sqaleの場合
 
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2
 
WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法WALをバックアップとレプリケーションに使う方法
WALをバックアップとレプリケーションに使う方法
 
Ecs
EcsEcs
Ecs
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能について
 
Stream2の基本
Stream2の基本Stream2の基本
Stream2の基本
 
ParliamentでGeoSPARQL
ParliamentでGeoSPARQLParliamentでGeoSPARQL
ParliamentでGeoSPARQL
 
GUI&基本操作、CLI編
GUI&基本操作、CLI編GUI&基本操作、CLI編
GUI&基本操作、CLI編
 
Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)Lagopus.confの書式(for lagopus 0.1.x)
Lagopus.confの書式(for lagopus 0.1.x)
 
Linux Server 冗長化~リアルタイム同期でラクラク運用~
Linux Server 冗長化~リアルタイム同期でラクラク運用~Linux Server 冗長化~リアルタイム同期でラクラク運用~
Linux Server 冗長化~リアルタイム同期でラクラク運用~
 
Lagopus 0.2
Lagopus 0.2Lagopus 0.2
Lagopus 0.2
 
6.2 reconciling amortization and persistence
6.2 reconciling amortization and persistence6.2 reconciling amortization and persistence
6.2 reconciling amortization and persistence
 
Redisととあるシステム
RedisととあるシステムRedisととあるシステム
Redisととあるシステム
 
Electronについて
ElectronについてElectronについて
Electronについて
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)
 
Redis速習会@Wantedly
Redis速習会@WantedlyRedis速習会@Wantedly
Redis速習会@Wantedly
 
分散ストレージ技術Cephの最新情報
分散ストレージ技術Cephの最新情報分散ストレージ技術Cephの最新情報
分散ストレージ技術Cephの最新情報
 

Destaque

หนังสือเล่มเล็ก
หนังสือเล่มเล็กหนังสือเล่มเล็ก
หนังสือเล่มเล็กguest32f0fe9
 
Evaluacion Factorial de las Aptitudes
Evaluacion Factorial de las AptitudesEvaluacion Factorial de las Aptitudes
Evaluacion Factorial de las Aptitudeskarkim
 
Networked Citizens a Cagliari: presentazione libro e open lesson
Networked Citizens a Cagliari: presentazione libro e open lesson Networked Citizens a Cagliari: presentazione libro e open lesson
Networked Citizens a Cagliari: presentazione libro e open lesson Alessandro Lovari
 
Solving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalizationSolving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalizationdmcfarlane
 
http://izhtc.ru Банер для перехода с 1.6 на 2.0
http://izhtc.ru Банер для перехода с 1.6 на 2.0http://izhtc.ru Банер для перехода с 1.6 на 2.0
http://izhtc.ru Банер для перехода с 1.6 на 2.0eugenij eugenij
 
52653 vero57
52653 vero5752653 vero57
52653 vero57verka 123
 
Driving And Mobiles Don\'t Mix
Driving And Mobiles Don\'t MixDriving And Mobiles Don\'t Mix
Driving And Mobiles Don\'t MixAlan Bassett
 
SMP Impl. on BSD/MIPS - TLB Consistency -
SMP Impl. on BSD/MIPS - TLB Consistency -SMP Impl. on BSD/MIPS - TLB Consistency -
SMP Impl. on BSD/MIPS - TLB Consistency -Takuya ASADA
 
Quarter square log cabin tutorial
Quarter square log cabin tutorialQuarter square log cabin tutorial
Quarter square log cabin tutorialLaura Rieben
 
2014 Social Media Forecasts From The Experts
2014 Social Media Forecasts From The Experts2014 Social Media Forecasts From The Experts
2014 Social Media Forecasts From The ExpertsHeidi Cohen
 
商业之星使用手册
商业之星使用手册商业之星使用手册
商业之星使用手册guest165649
 
Sociala medier - employer branding Senior & Young
Sociala medier - employer branding Senior & YoungSociala medier - employer branding Senior & Young
Sociala medier - employer branding Senior & YoungTobias Franzén
 
Mung Thanh Terexa
Mung Thanh TerexaMung Thanh Terexa
Mung Thanh Terexaguest3d57b
 
2014 Content Marketing Forecasts
2014 Content Marketing Forecasts2014 Content Marketing Forecasts
2014 Content Marketing ForecastsHeidi Cohen
 
Halloween August 2009bp
Halloween August 2009bpHalloween August 2009bp
Halloween August 2009bpcnunnally
 

Destaque (20)

หนังสือเล่มเล็ก
หนังสือเล่มเล็กหนังสือเล่มเล็ก
หนังสือเล่มเล็ก
 
Evaluacion Factorial de las Aptitudes
Evaluacion Factorial de las AptitudesEvaluacion Factorial de las Aptitudes
Evaluacion Factorial de las Aptitudes
 
Lsg4 dontaylor
Lsg4 dontaylorLsg4 dontaylor
Lsg4 dontaylor
 
Networked Citizens a Cagliari: presentazione libro e open lesson
Networked Citizens a Cagliari: presentazione libro e open lesson Networked Citizens a Cagliari: presentazione libro e open lesson
Networked Citizens a Cagliari: presentazione libro e open lesson
 
Solving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalizationSolving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalization
 
http://izhtc.ru Банер для перехода с 1.6 на 2.0
http://izhtc.ru Банер для перехода с 1.6 на 2.0http://izhtc.ru Банер для перехода с 1.6 на 2.0
http://izhtc.ru Банер для перехода с 1.6 на 2.0
 
52653 vero57
52653 vero5752653 vero57
52653 vero57
 
Neshep 01 12 2015
Neshep 01 12 2015Neshep 01 12 2015
Neshep 01 12 2015
 
Psvkbsrk.kursus
Psvkbsrk.kursusPsvkbsrk.kursus
Psvkbsrk.kursus
 
Driving And Mobiles Don\'t Mix
Driving And Mobiles Don\'t MixDriving And Mobiles Don\'t Mix
Driving And Mobiles Don\'t Mix
 
SMP Impl. on BSD/MIPS - TLB Consistency -
SMP Impl. on BSD/MIPS - TLB Consistency -SMP Impl. on BSD/MIPS - TLB Consistency -
SMP Impl. on BSD/MIPS - TLB Consistency -
 
5
55
5
 
Quarter square log cabin tutorial
Quarter square log cabin tutorialQuarter square log cabin tutorial
Quarter square log cabin tutorial
 
2014 Social Media Forecasts From The Experts
2014 Social Media Forecasts From The Experts2014 Social Media Forecasts From The Experts
2014 Social Media Forecasts From The Experts
 
商业之星使用手册
商业之星使用手册商业之星使用手册
商业之星使用手册
 
Presecan's new paintings
Presecan's new paintingsPresecan's new paintings
Presecan's new paintings
 
Sociala medier - employer branding Senior & Young
Sociala medier - employer branding Senior & YoungSociala medier - employer branding Senior & Young
Sociala medier - employer branding Senior & Young
 
Mung Thanh Terexa
Mung Thanh TerexaMung Thanh Terexa
Mung Thanh Terexa
 
2014 Content Marketing Forecasts
2014 Content Marketing Forecasts2014 Content Marketing Forecasts
2014 Content Marketing Forecasts
 
Halloween August 2009bp
Halloween August 2009bpHalloween August 2009bp
Halloween August 2009bp
 

Semelhante a Cost of ovs receiving process

Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Panda Yamaki
 
MBSD_Cybersecurity_Challenges_2017_最終審査会_発表スライド
MBSD_Cybersecurity_Challenges_2017_最終審査会_発表スライドMBSD_Cybersecurity_Challenges_2017_最終審査会_発表スライド
MBSD_Cybersecurity_Challenges_2017_最終審査会_発表スライドYoshinori Hayashi
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装Takuya ASADA
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsuNanha Park
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!Takashi Sogabe
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1信之 岩永
 
Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Hokkaido.cap#1 Wiresharkの使い方(基礎編)Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Hokkaido.cap#1 Wiresharkの使い方(基礎編)Panda Yamaki
 
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)inaz2
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsmganeko
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lispirix_jp
 
Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回Hiroshi Hayakawa
 
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapyWebフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapyMasashi Shibata
 
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングYuichi Tateno
 
Richard high performance fuzzing ja
Richard  high performance fuzzing jaRichard  high performance fuzzing ja
Richard high performance fuzzing jaPacSecJP
 
近頃のDockerネットワーク
近頃のDockerネットワーク近頃のDockerネットワーク
近頃のDockerネットワークYuji Oshima
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
160705-w02 RTミドルウエア講習会・早稲田大
160705-w02 RTミドルウエア講習会・早稲田大160705-w02 RTミドルウエア講習会・早稲田大
160705-w02 RTミドルウエア講習会・早稲田大openrtm
 

Semelhante a Cost of ovs receiving process (20)

Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
 
MBSD_Cybersecurity_Challenges_2017_最終審査会_発表スライド
MBSD_Cybersecurity_Challenges_2017_最終審査会_発表スライドMBSD_Cybersecurity_Challenges_2017_最終審査会_発表スライド
MBSD_Cybersecurity_Challenges_2017_最終審査会_発表スライド
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsu
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Hokkaido.cap#1 Wiresharkの使い方(基礎編)Hokkaido.cap#1 Wiresharkの使い方(基礎編)
Hokkaido.cap#1 Wiresharkの使い方(基礎編)
 
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lisp
 
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
 
Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回
 
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapyWebフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapy
 
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギング
 
Reading NATS
Reading NATSReading NATS
Reading NATS
 
Richard high performance fuzzing ja
Richard  high performance fuzzing jaRichard  high performance fuzzing ja
Richard high performance fuzzing ja
 
近頃のDockerネットワーク
近頃のDockerネットワーク近頃のDockerネットワーク
近頃のDockerネットワーク
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
160705-w02 RTミドルウエア講習会・早稲田大
160705-w02 RTミドルウエア講習会・早稲田大160705-w02 RTミドルウエア講習会・早稲田大
160705-w02 RTミドルウエア講習会・早稲田大
 

Mais de Takuya ASADA

Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークTakuya ASADA
 
ヤマノススメ〜秋山郷 de ハッカソン〜
ヤマノススメ〜秋山郷 de ハッカソン〜ヤマノススメ〜秋山郷 de ハッカソン〜
ヤマノススメ〜秋山郷 de ハッカソン〜Takuya ASADA
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダTakuya ASADA
 
OSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingOSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingTakuya ASADA
 
OSvパンフレット v3
OSvパンフレット v3OSvパンフレット v3
OSvパンフレット v3Takuya ASADA
 
OSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/FallOSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/FallTakuya ASADA
 
Linux network stack
Linux network stackLinux network stack
Linux network stackTakuya ASADA
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理Takuya ASADA
 
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminalTakuya ASADA
 
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがないTakuya ASADA
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
OSvパンフレット
OSvパンフレットOSvパンフレット
OSvパンフレットTakuya ASADA
 
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜Takuya ASADA
 
「ハイパーバイザの作り方」読書会#2
「ハイパーバイザの作り方」読書会#2「ハイパーバイザの作り方」読書会#2
「ハイパーバイザの作り方」読書会#2Takuya ASADA
 
「ハイパーバイザの作り方」読書会#1
「ハイパーバイザの作り方」読書会#1「ハイパーバイザの作り方」読書会#1
「ハイパーバイザの作り方」読書会#1Takuya ASADA
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化Takuya ASADA
 
Implements BIOS emulation support for BHyVe: A BSD Hypervisor
Implements BIOS emulation support for BHyVe: A BSD HypervisorImplements BIOS emulation support for BHyVe: A BSD Hypervisor
Implements BIOS emulation support for BHyVe: A BSD HypervisorTakuya ASADA
 
仮想化環境での利用者公平性
仮想化環境での利用者公平性仮想化環境での利用者公平性
仮想化環境での利用者公平性Takuya ASADA
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディングTakuya ASADA
 

Mais de Takuya ASADA (20)

Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
 
ヤマノススメ〜秋山郷 de ハッカソン〜
ヤマノススメ〜秋山郷 de ハッカソン〜ヤマノススメ〜秋山郷 de ハッカソン〜
ヤマノススメ〜秋山郷 de ハッカソン〜
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダ
 
OSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingOSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meeting
 
OSvパンフレット v3
OSvパンフレット v3OSvパンフレット v3
OSvパンフレット v3
 
OSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/FallOSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/Fall
 
OSv噺
OSv噺OSv噺
OSv噺
 
Linux network stack
Linux network stackLinux network stack
Linux network stack
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminal
 
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
OSvパンフレット
OSvパンフレットOSvパンフレット
OSvパンフレット
 
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
BHyVeでOSvを起動したい
〜BIOSがなくてもこの先生きのこるには〜
 
「ハイパーバイザの作り方」読書会#2
「ハイパーバイザの作り方」読書会#2「ハイパーバイザの作り方」読書会#2
「ハイパーバイザの作り方」読書会#2
 
「ハイパーバイザの作り方」読書会#1
「ハイパーバイザの作り方」読書会#1「ハイパーバイザの作り方」読書会#1
「ハイパーバイザの作り方」読書会#1
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
Implements BIOS emulation support for BHyVe: A BSD Hypervisor
Implements BIOS emulation support for BHyVe: A BSD HypervisorImplements BIOS emulation support for BHyVe: A BSD Hypervisor
Implements BIOS emulation support for BHyVe: A BSD Hypervisor
 
仮想化環境での利用者公平性
仮想化環境での利用者公平性仮想化環境での利用者公平性
仮想化環境での利用者公平性
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
 

Cost of ovs receiving process

  • 1. Cost of OVS receiving process @syuu1228
  • 4. FDB: Forwarding Database • 256エントリのフォワーディング先データベース(キャッシュ) • 構造体エントリ • fdb->addr: MACアドレス • fdb->dst: フォワード先NIC • パケット着信毎に以下の作業を実施 • FDB上のエントリのaddrとパケットの送信元アドレスを順に比較して、一致するエ ントリがあったらdstを更新 • 無かったら新しいエントリを作成 • FDB上のエントリのaddrとパケットの送信先アドレスを順に比較して、一致するエ ントリがあったらdstへパケット転送 • 無かったら全ポートにパケット転送(flooding)
  • 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)
  • 7. Key作成 • ovs_flow_extract()でskbからsw_flow_key構造体へ以下の要素をコピー • MACアドレス - memcpy • IPv4 • アドレス - pointer • プロトコル - value • TOS - value • TTL - value • TCP • ポート番号 - value
  • 9. テーブルルックアップ 1. ハッシュ値からbucketを検索 2. bucketをイテレートして各エントリのkey と先ほど作ったkeyをmemcmp 3. 一致したらreturnで返す 4. 見つからなかったらユーザランドのデー モンへ聞きに行く
  • 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. Netlink • ユーザランドとのやり取りにNetlinkを使用 (よく知らないので詳しい人教えて下さい) • ソケットインタフェースでカーネルと通信でき る? • ユーザランドとのパケットやり取りに使用 • ユーザランドからカーネルモジュールをコント ロールするのにも使用?
  • 13. 疑問点 • 何故skb->hashを使わないでわざわざkeyを作って改めて ハッシュを計算するのか(非効率じゃない?) • どんな時にユーザランドへ上げるのだろう?(特に OVS_ACTION_ATTR_USERSPACE) • bridge compatibleなioctlのハンドラはどこ? →mainlineからは削られてたっぽい? • OVS独自なコントロール操作はどこ? • OVS_ACTION_ATTR_SAMPLEの用途は?

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n