中間報告書提出・L4 より上の内容を適切に ringbuf へコピー・留学生チューター


先週実施したこと

  • 中間報告書提出
  • L4 より上の内容を適切に ringbuf へコピーする(途中)
  • 留学生のチューター


中間報告書提出

  • 10/20(金)で 2 回目のレビューを受けた
  • 提出済み


L4 より上の内容を適切に ringbuf へコピーする

  • https://git.softlab.cs.tsukuba.ac.jp/ichiki/ebpf-afw-rust/issues/20
  • 「PSH フラグが立っているパケットを dissect する実験」で egress を流れるパケットのうち L4 より上の内容が適切にコピーできていなかった。しかし ingress については動作していた
  • 原因:今までは bpf_probe_read_kernel を呼び出していたが、__sk_buff 構造体からパケットをコピーする BPF プログラムは bpf_skb_load_bytes を呼び出す必要があった
    • bpf_probe_read_kernel は、与えられたカーネル空間のポインタから指定された長さのデータを eBPF stack や ringbuf へコピーする
    • __sk_buff へのアクセスは、対応する sk_buff に対してマッピングされる。BPF プログラムを実行する側(カーネル)がしている
      • ingress 側で今までコピーできていたのは、たまたま
  • 現状:bpf_skb_load_bytes を用いたコピーを試みている
  • やること
    • __sk_buff が reference counter もっているなら ringbuf で pointer の値のみを格納できるかもしれない
    • Wireshark の capture 機能
      • キャプチャする機能の部分で BPF program のコンパイルをしている箇所を見たので、もうちょっと注意深く見る


留学生のチューター

  • 李驍叡さんによる初めてのメールに返信した


今後の予定

  • eBPF プログラムから BPF map へパケットを適切にコピーする
  • SSLKEYLOGFILE 環境変数の指定で得られる TLS 共通鍵でキャプチャしたパケットを復号する
  • ルールの追加・削除をユーザができる CLI ツールを作成する