More Related Content
PDF
PDF
Npstudy#7 クラウドインフラのネットワーク自動描画 PDF
PDF
Loom openflow controller in 10 min PPTX
PDF
OpenStack Congress and Datalog (Japanese) PDF
PDF
Viewers also liked
PDF
PDF
PPTX
PDF
FlexPod Day 2016 - Cisco session (Publish edition) PDF
Career - design, adaption and diversity - for EMC I&D event PDF
PDF
Call for Speakersに講演を256倍通す方法 PDF
OpenStack Congress and Datalog (English) PDF
PDF
Lagopus & NFV with Vhost (Tremaday#9) PDF
PDF
PDF
PDF
PDF
PDF
PDF
【Interop Tokyo 2016】 Seminar - EA-18 : 「Cisco の先進セキュリティ ソリューション」 Shownet 2016... PDF
【Interop Tokyo 2016】 ShowNet - SSS-17 : ShowNet 2016 を支えるシスコの最新テクノロジー PDF
PDF
npstudy 161129
- 1.
- 2.
- 3.
- 4.
- 5.
Snabbってズバリ何?
• 高速パケットネットワークツールキットである。
• アプリNICの読み書きの概念はまさにDPDKと似ているかもしれない(kernel をバイパ
スする、tight loopでポーリングする、アプリにはパケットが格納されたメモリ上のポイ
ンタを渡す、など)。
• LuaJIT上で駆動する。ここで動くLuaのコードはCのコードとも遜色のない速度である。
• LuaとCで実装されており、メモリをあれこれする箇所やデバイスドライバのほとんどが
Luaで書かれている。
• 今のところ、Intel(I350, 82599, XL710), Mellanox(connectx-4), virtio, vhost, rawsock, solarflare
などでテストされている様子。
- 6.
- 7.
- 8.
簡単なアプリをかく
• 単方向ブリッジ(raw sock版)
•requireのコードは除く…
function run(args)
local port1, port2 = args[1], args[2]
local c = config.new()
config.app(c, ‘port1’, rawsock, port1)
config.app(c, ‘port2’, rawsock, port2)
config.link(c, ‘port1.tx -> port2.rx’)
engine.configure(c)
engine.main()
end
配列は1から。
Configにパケット処理
ネットワークを表現す
る。初期化。
初期化したconfig
App名
App種別
引数
を与えて初期化。
2つのAppを接続する。
上記を適用し、起動。
- 9.
簡単なアプリをかく
• Ethertype をプリントする
•先ほどのrawsockのコードに printer というmoduleをかませるの
をイメージする。
• Printerはether typeに応じて文字列をプリントして、ポートに出すだけ
Rawsock printer RawSock
input outputtx rx
- 10.
簡単なアプリをかく
• Packet dataの参照
•Ether type をとるには、例えば、このような感じ。
• ffi.C.ntohs(ffi.cast(‘uint16_t *’, packet.data + 12)[0])
• vlan tagをpopしたり、pushしたりするときも大体こういったAPIを読んで書いてい
る
• ほかには
• Packet.clone
• Packet.resize
• Packet.append
• Packet.prepend
• Packet.shift{left|right}
• などがある。
- 11.
- 12.
- 13.
- 14.
- 15.