Packets are too Fast

slankdevの報告

NFVガイドラインのようなものを少しまとめた

以下に置いた(画像部分をhatebuに変換するのが大変だったのでリンクにした) もしリンクがきれていたら, Twitter: @slankdevまで連絡をください. すぐ直します。 github.com

「次世代の通信インフラストラクチャーに対応する効率的な仮想ネットワーク機能(VNF)アーキテクチャー」を読んだのでようやく

NFV

バ先の上司に教えていただいたIntel,HPEのNFV白書を読んでいるが, 読解力が皆無なことが確認できてよかった— Hiroki SHIROKURA (@slankdev) 2017年9月3日 NFV Whitepaper by Intel HPE Hiroki SHIROKURA @slankdev 2018.07.30 本レポートは以下のLINKのWhite…

DPDKアプリをビルドする自前Makefile

DPDKどドキュメントによると、DPDKを使用したアプリケーションでは用意された雛形のMakefileを 一部変更することでビルド環境を提供しているが、自分で何かをつくりたいときにそんなことを やってられない。 ここでは自分で作成したMakefileでDPDKのアプリケ…

BSDのNW処理部分の設計実装

自分用雑記. まだ書きかけです. FreeBSDの黄色い本を読んで自分なりに要約, またSTCPの設計実装のためのメモ ここで出てくる典型的例とはBSDカーネル内での実装のことである. ソースは以下から入手した - ftp://ftp.freebsd.org/pub/FreeBSD/releases/ 12 ネ…

BSDのARP実装についてメモ

どこを参照したか FreeBSDソースの以下のファイル ファイル名 概要 sys/net/if_arp.h arphdr構造体とかその辺がある sys/net/if_ethersubr.c Ethernetに関する処理がある sys/netinet/if_ether.c Ether,ARPに関する大事な実装 ARP処理部分の流れ init arpres…

ダブルロックの有用性について

2016.08.01 サイボウズラボユースにて. ずいぶんまえに学んだ内容だが、資料を生理していたらmemoがでてきたので。 ここに吐いておく(間違っていたらすみません) はじめに通常のロックについて 以下の手順で行われる lock() if (inited == false) init() ini…

BPFに関する情報収集

BPFについてサーベイしたので、それのまとめ. BPF for Dummiesのプロトタイプといえるよういしていけたら最高である。 現状は雑記状態なのでご了承いただきたい. BPFとは,何をするためのものか 正直, 僕自身もよく分からない。 BPFはin kernelのパケットフィ…

cBPF命令セット

ここでは単純に表と図のみでcBPFにどのような命令が含まれて、 どのように動作するのかを示す。Instruction set archの設計論などは まったく触れない。 (ただつかう段階では必要ないため。) 必要があれば、それぞれのBitにどのような意味があるかも説明して…

eBPF命令セット

ここでは単純に表と図のみでeBPFにどのような命令が含まれて、 どのように動作するのかを示す。Instruction set archの設計論などは まったく触れない。 (ただつかう段階では必要ないため。) 必要があれば、それぞれのBitにどのような意味があるかも説明して…

The White Paper of Packet Processing 作成のためのMemo

完成はしないが、お勉強は大事である。 なんかしっていたら教えてください。。。涙 Hardware と Softwareでの選択はどのようにしておこなうのか。 下にいくについれて高性能だがフレキシブルでなくなる. とくにASICはできるまでに2年間くらいかかることもあ…

BPFにおけるJITとインタプリタの性能計測

gist.github.com

Thread Affinityによる性能実験

雑記状態なので、この記事もとても汚いことを了承してください。 DPDKはpthreadwを用いてスレッド操作を行っている。 内部でset affinityを行い、複数のCPUでスレッドを共有しないように固定している らしいが、実際に複数CPUで共有実行を行った場合と、単一…

Linux Network Stack Debugging using eBPF

とりあえずLinux Kernelのネットワークスタックのデバッグ/トレースをしてみようと思う。 Bccを用いたトレース手順 デバッグ対象を決める hookポイント trace内容 それに対して必要なスクリプトを書く (bcc, bpf, python, c) スクリプトを動かしてTraceを確…

BccとBPFでTracing

Packetとはなんなのかを理解するためにBPFをかじり始めたら どつぼにハマってしまい、とりあえずどんなことができるのかを 簡単なスクリプトを書いて試した. 目次 bpfで関数callをhookする bpfで関数callの引数をtraceする bpfで関数呼び出しの回数を取り出…

Slankdevなりのセキュリティ・キャンプの選考に通過するためのベストプラクティス

私は2015年のセキュリティキャンプの修了生で、2016年はチューターを担当しました。 セキュリティ・キャンプに通過するために何をすれば良いのか、というのを 私なりに簡単に考えました。 このリンク から申し込みができます。 もちろん、私個人の見解なので…

サイボウズ・ラボユース 第6期

2016/2/1から1年間、サイボウズ・ラボユースという制度で研究開発の支援を受けていた. 一年間、本当に強力なサポートをしていただき、我ながら圧倒的に成長した気がするので、 他の人にもぜひ体験していただきたく、ラボユースの紹介と報告をしようと思う。 …

DPDKでremote_core_launchした処理が例外を投げた時の挙動について

上記について実際に動かして調べました。 パターン1: remote_core_launchをtryに囲む void func() /* user implementation */ { throw exception; } int main() /* developer implementation */ { dpdk_init(); try { remote_core_launch(func); } catch (e)…

osc北海道参加記録

前回のオープンソースカンファレンス2016東京に続き、先日北海道で行われたオープンソース カンファレンス2016北海道にも参加させていただきました。 いつも通り「国立セキュリティ・キャンプ同窓会」というコミュニティで参加をさせていただき、 セキュリテ…

セキュリティ・ミニキャンプin四国高松 チューター

IPA主催のセキュリティ・キャンプの地方大会であるセキュリティ・ミニキャンプ in 四国高松で チューターとして参加させていただきました。 セキュリティ・ミニキャンプin四国 今回はもりたこ君(@mrtc0)と一緒にチューター業務をさせていただきました。こう…

DPDKとLinuxカーネルでパケット処理のレイテンシ比較

DPDKを使って開発をするのですが、どれだけ早いのか一応自分で測ってまとめてみました。 今回はrdtscを使ってレイテンシ計測を行います。ただ、DPDKの通信速度を計るだけでなく、 Linuxカーネルで同様の通信をした時の速度と比較をします。

DPDK の環境構築

DPDKはLinuxやBSDのカーネルをバイパスし、NICをユーザランドから直接触ることにより 従来の通信ソフトウェアと比べはるかに高性能に通信を行うことを可能にしたライブラリである。 近年ではDPDKを用いたソフトウェアルーターで145GbEを達成した実装などがあ…

サイボウズ・ラボユース 第5期

今年の2月から2ヶ月間サイボウズ・ラボユースという神制度のお世話になってきました。OSC2015/TokyoFallの時にあの川合さんに紹介していただいて、2月からしほ氏(@elliptic_shiho)とかすごい人たちの中で素人発揮してきました。 趣味の開発(大学の研究にする…

セキュリティ・キャンプアワード 2016

先日セキュリティ・キャンプ フォーラム2016に参加することになり、そこでパケット解析ライブラリの開発について話をさせていただきました。 後日@ITさんの記事で紹介をしていただきました。 セキュリティ・キャンプが修了生の「今」を表彰する新たな取り組…

BPFとLinuxでのL2インターフェースを扱うネットワークプログラミングでの違いについて

この記事を書こうと思ったきっかけ osx上でc言語で書いたパケットキャプチャでパケットをキャプチャしていた時に並行して wiresharkと見比べていたのですが、なんだかwiresharkと比べてパケットを幾つかドロップしていたため、 少し調べた(他人に頼った)とこ…

オープンソースカンファレンス2015 Tokyo/Spring に参加してきました

前回のOSCに続き、国立セキュリティ・キャンプ同窓会 としてOSCに参加させていただきました。前回は展示のみの参加だったのですが、今回は がっつりセミナーもさせていただきましたので幾つか報告をしようと思います。 後日キャンプ運営の方のサイトに掲載し…

パケット遊び ARP編

この記事は僕の趣味である「パケット遊び」をたくさんの人に知ってもらい、ぜひパケット仲間を増やそう!といった内容の記事です。 What is LibPGEN LibPGEN (りぶ ぴーじぇん) は筆者(@slankdev)がパケット操作を自由に行うために開発した統合パケット操作補…

Docker使ってVPS構築しなおした

年末だし、VPSのバックアップとか、いろいろやって綺麗に作り直そう!と考えていたら年が明けて、 一週間もがたちました。 いままで自分はslankdev.netとlibpgen.orgの2つをwordpressのマルチサイト機能で管理していたんですが、 つい先日どこかのプロが不手…

2015年 振り返り

今年は…. 簡単にまとめると今年はこんなイベントがありました。 セキュリティ・ミニキャンプ in 新潟 2015 セキュリティ・キャンプ 全国大会 2015 私立プログラミングキャンプ オープンソースカンファレンス 2015 Tokyo/Fall サイボウズラボユース LibPGEN v…

PcapNg解析入門

普段開発しているlibpgenにPcapNgファイルの読み書きの機能追加をした時に PcapNgの入門をしたのでまとめてみました。 PcapNgとは PcapNg(以下めんどくさいのでpcapng)とはwiresharkで開くことのできる パケットのファイルフォーマットの一つです。 従来まで…

TDUCTF2015 NW500 portscan writeup

運営の皆さんお疲れさまでした、楽しかったです!! 昨日はnomukenさん率いるTDUCTFに参加してきました。 今回はNW問がそこそこに解けて12位でした。 2015.09.20 若干の追記があります