offloading bpf implementation to fpga-nic したいねって話
Post on 08-Jan-2017
405 Views
Preview:
TRANSCRIPT
Offloading BPF Implementation to
FPGA-NIC したいねって話
[FPGA Startup]
(受付係) Hiroki Shirokura @slankdevhttp://blog.slankdev.net
自己紹介
▣ 都内の大学の理工学部 B3□ Twitter : @slankdev□ Facebook : hirokishirokura□ Blog : http://blog.slankdev.net
▣ IPA Security Camp 2015, 2016 tutor▣ Cybozu Labs Youth 5,6th
▣ L4以下のネットワーク関係が好き▣ ハードウェア初心者 (FPGA入門したばっかです)
自己紹介
▣ つくった□ パケット解析のフレームワーク□ ネットワークスタック□ CPUのエミュレータ (超簡易的)
▣ つくってない (今後やる予定)□ NIC□ CPU□ デバイスドライバ
Cybozu Labs Youth
▣ 個人のソフトウェア研究開発プロジェクトを会社が応援する制度
▣ 年間103万円を上限にサイボウズが奨励金を支払う
▣ すごい人にお金を貰いながら協力してもらえる
今岡さんとの関係
▣ 2015年□ セキュリティキャンプ全国大会で出会う(参加者と講師)□ arduinoのGPIOでパケットの電気信号を作る指導を受ける
▣ 2016年□ OSCで隣に出展させていただく□ セキュリティキャンプ全国大会 (チューターと講師)□ セキュリティミニキャンプ (チューターと講師)□ arduinoのGPIOでパケットの電気信号を作る指導を手伝う
これは一番弟子といっていいのでは
昨日の夜
AM 11:00僕 「あしたFPGA Start UPだ」
体調不良で寝込む。。。
PM 10:30僕 「何にもやってない」
「プロセッサとかNICとかつくりたかったな」 「できるとこまでやろう」
AM 1:00僕 「とりあえず仕様とdissasemblerと エミュレータのベースはできた、おやすみ」
本日
AM 9:00鳥 「チュンチュン。」
僕 「おはよう」
AM 11:00僕 「できた」
PM 2:00僕 「LT資料できてねーや」
今岡さん「しろくら君、自己紹介。」
僕 「トイレの場所とかは詳しいです!」
要するにまだFPGAは出てきてないです。。
ごめんなさい
なにをしたいかというと
▣ BPF(Berkeley Packet Filter)□ in-kernelで動くパケットフィルタ□ 64bit RISC, Register Machine□ フィルタのアセンブリを書いてフィルタに適用
▣ これをNICの近くにオフローディングしたい▣ FPGAの出番だ!
BPFの説明
User APP
BPF
Filter Function
Buffer
User APP
link-level-drvr
User
Kernel
Network
Filter Function
Buffer
link-level-drvr
BPF 従来
設定可能
今回やりたいこと
今回実装する部分
BPF
Filter Function
Buffer
User APP
link-level-drvr
User
Kernel
Network
BPF 新
設定可能
User APP
Buffer
設定可能
link-level-drvr
Network
FPGA NICWith Filter
モチベーション
早いNW装置をつくるとき
OS内部のNWサブシステムの実装はなんかよくわからない
(※NWサブシステム意外はもっとわからない...)
いろんなとこでchecksum計算してたり、
フラグメンテーション処理がいろんなとこでされてたり
NW処理の場所
User
Kernel
Network
Device Driver
Network Sub-Systems
Socket/BPF
NIC
Application Application
PMD
DPDK
Checksum Offload
Segmentaion Offload
***Offload
Device Driver
Network Sub-Systems
任意のAPI
Application
NIC
CPU
NIC
ここ
BPFの説明
TCPのパケットをフィルタリングするプログラム
これでは理解できない
わかりやすく説明すると
これ(パケット)を...
これ(プログラム)に食わせれば...
Acceptされたり...
Refuseされて破棄されるパケットフィルタ
なにをしなければいけないか
▣ ISAの仕様決める▣ dissas作る▣ エミュレータ作る▣ FPGAでCPUを実装する▣ NICの近くで動かす
なにをしたか
▣ [done] SAの仕様決める▣ [done] dissas作る▣ [done] エミュレータ作る▣ FPGAでCPUを実装する▣ NICの近くで動かす
CPUのエミュレータを実装して、動くところまでやったhttps://github.com/slankdev/bpf
まとめ
第二回があれば完成させておきます
参考文献
▣ CPUのエミュレータの作り方運営の内田さん著 →https://book.mynavi.jp/ec/products/detail/id=41347
▣ BPFのasmの仕様について詳しいhttp://jakou.byethost6.com/pktcap.html?i=1
▣ The BSD PacketFilter: A New ArchitectureforUser-levelPacketCapturehttp://www.vodun.org/papers/net-papers/van_jacobson_the_bpf_packet_filter.pdf
top related