Packets are too Fast

slankdevの報告

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 若干の追記があります

私立プログラミングキャンプ2015

シプキャン(私立プログラミングキャンプ)に参加してきました。 今回は徹夜のハッカソンで、僕はlibpgenの機能追加をしました。

セキュリティ・キャンプ2015全国大会に参加します

IPA(情報処理推進機構)が主催しているセキュリティ・キャンプ2015全国大会の選考に通ることができ、 参加できることになりました。 選択問題は3,4,5,7,11を回答してます。申込み用紙は以下のようになりました。 seccamp2015_slankdev.pdf - Google ドライブ …

libpgenでARP Spoofing 実験 中間者攻撃編

前回のARP Spoofing 実験でターゲットのARPテーブルを書き換えることには成功したので、実用させてみることにしました。ARP Spoofing を利用した、悪事として代表的な攻撃でMITM attack(中間者攻撃)と言うのがあります。