Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

866 views

Published on

FPGA startup 1stのLT資料です。
ソフトウェアエミュレータまでしかできてないです。

Published in: Engineering
  • Be the first to comment

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

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

×