23
Offloading BPF Implementation to FPGA-NIC したいねって話 [FPGA Startup] (受付係) Hiroki Shirokura @slankdev http://blog.slankdev.net

Offloading BPF Implementation to FPGA-NIC したいねって話

Embed Size (px)

Citation preview

Page 1: Offloading BPF Implementation to FPGA-NIC したいねって話

Offloading BPF Implementation to

FPGA-NIC したいねって話

[FPGA Startup]

(受付係) Hiroki Shirokura @slankdevhttp://blog.slankdev.net

Page 2: Offloading BPF Implementation to FPGA-NIC したいねって話

自己紹介

▣ 都内の大学の理工学部 B3□ Twitter : @slankdev□ Facebook : hirokishirokura□ Blog : http://blog.slankdev.net

▣ IPA Security Camp 2015, 2016 tutor▣ Cybozu Labs Youth 5,6th

▣ L4以下のネットワーク関係が好き▣ ハードウェア初心者 (FPGA入門したばっかです)

Page 3: Offloading BPF Implementation to FPGA-NIC したいねって話

自己紹介

▣ つくった□ パケット解析のフレームワーク□ ネットワークスタック□ CPUのエミュレータ (超簡易的)

▣ つくってない (今後やる予定)□ NIC□ CPU□ デバイスドライバ

Page 4: Offloading BPF Implementation to FPGA-NIC したいねって話

Cybozu Labs Youth

▣ 個人のソフトウェア研究開発プロジェクトを会社が応援する制度

▣ 年間103万円を上限にサイボウズが奨励金を支払う

▣ すごい人にお金を貰いながら協力してもらえる

Page 5: Offloading BPF Implementation to FPGA-NIC したいねって話

今岡さんとの関係

▣ 2015年□ セキュリティキャンプ全国大会で出会う(参加者と講師)□ arduinoのGPIOでパケットの電気信号を作る指導を受ける

▣ 2016年□ OSCで隣に出展させていただく□ セキュリティキャンプ全国大会 (チューターと講師)□ セキュリティミニキャンプ (チューターと講師)□ arduinoのGPIOでパケットの電気信号を作る指導を手伝う

これは一番弟子といっていいのでは

Page 6: Offloading BPF Implementation to FPGA-NIC したいねって話

昨日の夜

AM 11:00僕   「あしたFPGA Start UPだ」

    体調不良で寝込む。。。

PM 10:30僕   「何にもやってない」

    「プロセッサとかNICとかつくりたかったな」    「できるとこまでやろう」

AM 1:00僕   「とりあえず仕様とdissasemblerと     エミュレータのベースはできた、おやすみ」

Page 7: Offloading BPF Implementation to FPGA-NIC したいねって話

本日

AM 9:00鳥   「チュンチュン。」

僕   「おはよう」

AM 11:00僕   「できた」

PM 2:00僕   「LT資料できてねーや」

今岡さん「しろくら君、自己紹介。」

僕   「トイレの場所とかは詳しいです!」

Page 8: Offloading BPF Implementation to FPGA-NIC したいねって話

要するにまだFPGAは出てきてないです。。

ごめんなさい

Page 9: Offloading BPF Implementation to FPGA-NIC したいねって話

なにをしたいかというと

▣ BPF(Berkeley Packet Filter)□ in-kernelで動くパケットフィルタ□ 64bit RISC, Register Machine□ フィルタのアセンブリを書いてフィルタに適用

▣ これをNICの近くにオフローディングしたい▣ FPGAの出番だ!

Page 10: Offloading BPF Implementation to FPGA-NIC したいねって話

BPFの説明

User APP

BPF

Filter Function

Buffer

User APP

link-level-drvr

User

Kernel

Network

Filter Function

Buffer

link-level-drvr

BPF 従来

設定可能

Page 11: Offloading BPF Implementation to FPGA-NIC したいねって話

今回やりたいこと

今回実装する部分

BPF

Filter Function

Buffer

User APP

link-level-drvr

User

Kernel

Network

BPF 新

設定可能

User APP

Buffer

設定可能

link-level-drvr

Network

FPGA NICWith Filter

Page 12: Offloading BPF Implementation to FPGA-NIC したいねって話

モチベーション

早いNW装置をつくるとき

OS内部のNWサブシステムの実装はなんかよくわからない

(※NWサブシステム意外はもっとわからない...)

いろんなとこでchecksum計算してたり、

フラグメンテーション処理がいろんなとこでされてたり

Page 13: Offloading BPF Implementation to FPGA-NIC したいねって話

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

ここ

Page 14: Offloading BPF Implementation to FPGA-NIC したいねって話

BPFの説明

TCPのパケットをフィルタリングするプログラム

Page 15: Offloading BPF Implementation to FPGA-NIC したいねって話

これでは理解できない

わかりやすく説明すると

Page 16: Offloading BPF Implementation to FPGA-NIC したいねって話

これ(パケット)を...

Page 17: Offloading BPF Implementation to FPGA-NIC したいねって話

これ(プログラム)に食わせれば...

Page 18: Offloading BPF Implementation to FPGA-NIC したいねって話

Acceptされたり...

Page 19: Offloading BPF Implementation to FPGA-NIC したいねって話

Refuseされて破棄されるパケットフィルタ

Page 20: Offloading BPF Implementation to FPGA-NIC したいねって話

なにをしなければいけないか

▣ ISAの仕様決める▣ dissas作る▣ エミュレータ作る▣ FPGAでCPUを実装する▣ NICの近くで動かす

Page 21: Offloading BPF Implementation to FPGA-NIC したいねって話

なにをしたか

▣ [done] SAの仕様決める▣ [done] dissas作る▣ [done] エミュレータ作る▣ FPGAでCPUを実装する▣ NICの近くで動かす

CPUのエミュレータを実装して、動くところまでやったhttps://github.com/slankdev/bpf

Page 22: Offloading BPF Implementation to FPGA-NIC したいねって話

まとめ

第二回があれば完成させておきます