<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ebpf on terassyi blog</title>
    <link>https://blog.terassyi.net/tags/ebpf/</link>
    <description>Recent content in Ebpf on terassyi blog</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <managingEditor>iscale821@gmail.com (terassyi)</managingEditor>
    <webMaster>iscale821@gmail.com (terassyi)</webMaster>
    <lastBuildDate>Mon, 18 Oct 2021 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.terassyi.net/tags/ebpf/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>XDP入門</title>
      <link>https://blog.terassyi.net/posts/intro-xdp/</link>
      <pubDate>Mon, 18 Oct 2021 00:00:00 +0000</pubDate><author>iscale821@gmail.com (terassyi)</author>
      <guid>https://blog.terassyi.net/posts/intro-xdp/</guid>
      <description>&lt;p&gt;こんにちは．閃光のハサウェイが配信開始されたので早速視聴しました．メッサーがいいですね．&lt;/p&gt;&#xA;&lt;p&gt;前回もXDP関連の話題でしたが，今回はXDPに入門します．&#xA;XDPを学習する際のロードマップやつまりどころの解消になればと思います．&lt;/p&gt;&#xA;&lt;h3 id=&#34;2023-12-30-加筆&#34;&gt;2023-12-30 加筆&lt;/h3&gt;&#xA;&lt;p&gt;本記事を公開して約 2 年が経過しました.&#xA;この加筆で古くなってしまった情報を修正しています.&#xA;差分は このブログの Github の &lt;a href=&#34;https://github.com/terassyi/blog/pull/57/files&#34;&gt;PR&lt;/a&gt; を見てください.&lt;/p&gt;&#xA;&lt;p&gt;この 2 年間で eBPF 及び XDP への注目はさらに高まったように感じます.&#xA;取得できる情報も充実してきました.&#xA;特に O&amp;rsquo;reilly より発売された &lt;a href=&#34;https://www.oreilly.co.jp/books/9784814400560/&#34;&gt;入門 eBPF&lt;/a&gt;(原書: &lt;a href=&#34;https://www.oreilly.com/library/view/learning-ebpf/9781098135119/&#34;&gt;Learning eBPF&lt;/a&gt;) は非常に充実した内容になっています.&#xA;日本語でこれらの情報に触れられるようになったことは大変ありがたいです.&lt;/p&gt;&#xA;&lt;p&gt;2023 年は個人的にも XDP に関して新たに発展的なコンテンツを作成しました.&lt;/p&gt;&#xA;&lt;p&gt;そちらも触っていただければと思います.&lt;/p&gt;&#xA;&lt;div class=&#34;github-card&#34; data-repo=&#34;terassyi/seccamp-xdp&#34;&gt;&#xA;    &lt;a href=&#34;https://github.com/terassyi/seccamp-xdp&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;github-link&#34;&gt;&#xA;      &lt;div class=&#34;github-icon&#34;&gt;&#xA;        &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;currentColor&#34;&gt;&#xA;          &lt;path fill-rule=&#34;evenodd&#34; d=&#34;M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.03 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z&#34;/&gt;&#xA;        &lt;/svg&gt;&#xA;      &lt;/div&gt;&#xA;      &lt;div class=&#34;github-info&#34;&gt;&#xA;        &lt;div class=&#34;github-title&#34;&gt;terassyi/seccamp-xdp&lt;/div&gt;&#xA;        &#xA;        &lt;div class=&#34;github-description github-auto-description&#34;&gt;Loading...&lt;/div&gt;&#xA;        &#xA;        &lt;div class=&#34;github-meta&#34;&gt;&#xA;          &lt;span class=&#34;github-language&#34; style=&#34;display: none;&#34;&gt;&#xA;            &lt;span class=&#34;language-dot&#34;&gt;&lt;/span&gt;&#xA;            &lt;span class=&#34;language-name&#34;&gt;&lt;/span&gt;&#xA;          &lt;/span&gt;&#xA;          &lt;span class=&#34;github-stat github-stars&#34; style=&#34;display: none;&#34;&gt;&#xA;            &lt;svg width=&#34;14&#34; height=&#34;14&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;currentColor&#34;&gt;&#xA;              &lt;path d=&#34;M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25z&#34;/&gt;&#xA;            &lt;/svg&gt;&#xA;            &lt;span class=&#34;stars-count&#34;&gt;&lt;/span&gt;&#xA;          &lt;/span&gt;&#xA;          &lt;span class=&#34;github-stat github-forks&#34; style=&#34;display: none;&#34;&gt;&#xA;            &lt;svg width=&#34;14&#34; height=&#34;14&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;currentColor&#34;&gt;&#xA;              &lt;path fill-rule=&#34;evenodd&#34; d=&#34;M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.25 2.25 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878z&#34;/&gt;&#xA;            &lt;/svg&gt;&#xA;            &lt;span class=&#34;forks-count&#34;&gt;&lt;/span&gt;&#xA;          &lt;/span&gt;&#xA;        &lt;/div&gt;&#xA;      &lt;/div&gt;&#xA;      &lt;div class=&#34;github-arrow&#34;&gt;&#xA;        &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;currentColor&#34;&gt;&#xA;          &lt;path fill-rule=&#34;evenodd&#34; d=&#34;M6.22 3.22a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06L9.94 8 6.22 4.28a.75.75 0 010-1.06z&#34;/&gt;&#xA;        &lt;/svg&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/a&gt;&#xA;  &lt;/div&gt;&#xA;&#xA;  &lt;style&gt;&#xA;  .github-card {&#xA;    margin: 1.5rem 0;&#xA;    border: 1px solid #e5e7eb;&#xA;    border-radius: 8px;&#xA;    overflow: hidden;&#xA;    background: #fff;&#xA;    transition: all 0.2s ease;&#xA;    font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, &#34;Noto Sans&#34;, Helvetica, Arial;&#xA;  }&#xA;&#xA;  .github-card:hover {&#xA;    border-color: #3b82f6;&#xA;    box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15);&#xA;  }&#xA;&#xA;  .github-link {&#xA;    display: flex;&#xA;    align-items: center;&#xA;    padding: 16px;&#xA;    text-decoration: none;&#xA;    color: inherit;&#xA;    gap: 12px;&#xA;  }&#xA;&#xA;  .github-icon {&#xA;    flex-shrink: 0;&#xA;    color: #6b7280;&#xA;  }&#xA;&#xA;  .github-info {&#xA;    flex: 1;&#xA;    min-width: 0;&#xA;  }&#xA;&#xA;  .github-title {&#xA;    font-weight: 600;&#xA;    font-size: 14px;&#xA;    color: #111827;&#xA;    margin-bottom: 4px;&#xA;    word-break: break-all;&#xA;  }&#xA;&#xA;  .github-description {&#xA;    font-size: 13px;&#xA;    color: #6b7280;&#xA;    line-height: 1.4;&#xA;    margin-bottom: 8px;&#xA;    display: -webkit-box;&#xA;    -webkit-line-clamp: 2;&#xA;    -webkit-box-orient: vertical;&#xA;    overflow: hidden;&#xA;  }&#xA;&#xA;  .github-meta {&#xA;    display: flex;&#xA;    align-items: center;&#xA;    gap: 12px;&#xA;    font-size: 12px;&#xA;    color: #6b7280;&#xA;  }&#xA;&#xA;  .github-language {&#xA;    display: flex;&#xA;    align-items: center;&#xA;    gap: 4px;&#xA;  }&#xA;&#xA;  .language-dot {&#xA;    width: 12px;&#xA;    height: 12px;&#xA;    border-radius: 50%;&#xA;    display: inline-block;&#xA;  }&#xA;&#xA;  .github-stat {&#xA;    display: flex;&#xA;    align-items: center;&#xA;    gap: 3px;&#xA;  }&#xA;&#xA;  .github-stat svg {&#xA;    color: #6b7280;&#xA;  }&#xA;&#xA;  .github-arrow {&#xA;    flex-shrink: 0;&#xA;    color: #9ca3af;&#xA;    transition: transform 0.2s ease;&#xA;  }&#xA;&#xA;  .github-link:hover .github-arrow {&#xA;    transform: translateX(2px);&#xA;  }&#xA;&#xA;  @media (prefers-color-scheme: dark) {&#xA;    .github-card {&#xA;      background: #1f2937;&#xA;      border-color: #374151;&#xA;    }&#xA;&#xA;    .github-title {&#xA;      color: #f9fafb;&#xA;    }&#xA;&#xA;    .github-description,&#xA;    .github-meta {&#xA;      color: #d1d5db;&#xA;    }&#xA;&#xA;    .github-icon {&#xA;      color: #9ca3af;&#xA;    }&#xA;&#xA;    .github-stat svg {&#xA;      color: #9ca3af;&#xA;    }&#xA;  }&#xA;  &lt;/style&gt;&#xA;&#xA;  &lt;script&gt;&#xA;  (function() {&#xA;    const languageColors = {&#xA;      &#39;Go&#39;: &#39;#00ADD8&#39;,&#xA;      &#39;JavaScript&#39;: &#39;#f1e05a&#39;,&#xA;      &#39;TypeScript&#39;: &#39;#2b7489&#39;,&#xA;      &#39;Python&#39;: &#39;#3572a5&#39;,&#xA;      &#39;Java&#39;: &#39;#b07219&#39;,&#xA;      &#39;C&#39;: &#39;#555555&#39;,&#xA;      &#39;C++&#39;: &#39;#f34b7d&#39;,&#xA;      &#39;Rust&#39;: &#39;#dea584&#39;,&#xA;      &#39;Ruby&#39;: &#39;#701516&#39;,&#xA;      &#39;PHP&#39;: &#39;#4f5d95&#39;,&#xA;      &#39;Swift&#39;: &#39;#ffac45&#39;,&#xA;      &#39;Kotlin&#39;: &#39;#F18E33&#39;,&#xA;      &#39;Shell&#39;: &#39;#89e051&#39;,&#xA;      &#39;HTML&#39;: &#39;#e34c26&#39;,&#xA;      &#39;CSS&#39;: &#39;#1572B6&#39;&#xA;    };&#xA;&#xA;    const cards = document.querySelectorAll(&#39;.github-card&#39;);&#xA;&#xA;    cards.forEach(async (card) =&gt; {&#xA;      const repo = card.dataset.repo;&#xA;      if (!repo) return;&#xA;&#xA;      try {&#xA;        const response = await fetch(`https://api.github.com/repos/${repo}`);&#xA;        if (!response.ok) throw new Error(&#39;API request failed&#39;);&#xA;&#xA;        const data = await response.json();&#xA;&#xA;        &#xA;        const autoDescription = card.querySelector(&#39;.github-auto-description&#39;);&#xA;        if (autoDescription) {&#xA;          if (data.description) {&#xA;            autoDescription.textContent = data.description;&#xA;          } else {&#xA;            autoDescription.style.display = &#39;none&#39;;&#xA;          }&#xA;        }&#xA;&#xA;        &#xA;        const languageElement = card.querySelector(&#39;.github-language&#39;);&#xA;        const languageDot = card.querySelector(&#39;.language-dot&#39;);&#xA;        const languageName = card.querySelector(&#39;.language-name&#39;);&#xA;&#xA;        if (data.language) {&#xA;          languageName.textContent = data.language;&#xA;          languageDot.style.backgroundColor = languageColors[data.language] || &#39;#586069&#39;;&#xA;          languageElement.style.display = &#39;flex&#39;;&#xA;        }&#xA;&#xA;        &#xA;        const starsElement = card.querySelector(&#39;.github-stars&#39;);&#xA;        const starsCount = card.querySelector(&#39;.stars-count&#39;);&#xA;        if (data.stargazers_count !== undefined) {&#xA;          starsCount.textContent = data.stargazers_count.toLocaleString();&#xA;          starsElement.style.display = &#39;flex&#39;;&#xA;        }&#xA;&#xA;        &#xA;        const forksElement = card.querySelector(&#39;.github-forks&#39;);&#xA;        const forksCount = card.querySelector(&#39;.forks-count&#39;);&#xA;        if (data.forks_count !== undefined) {&#xA;          forksCount.textContent = data.forks_count.toLocaleString();&#xA;          forksElement.style.display = &#39;flex&#39;;&#xA;        }&#xA;&#xA;      } catch (error) {&#xA;        console.error(&#39;Error fetching GitHub data:&#39;, error);&#xA;        &#xA;        const autoDescription = card.querySelector(&#39;.github-auto-description&#39;);&#xA;        if (autoDescription) {&#xA;          autoDescription.style.display = &#39;none&#39;;&#xA;        }&#xA;      }&#xA;    });&#xA;  })();&#xA;  &lt;/script&gt;</description>
    </item>
    <item>
      <title>Goのcilium/ebpfでXdpcapを使う</title>
      <link>https://blog.terassyi.net/posts/use-xdpcap/</link>
      <pubDate>Thu, 07 Oct 2021 00:00:00 +0000</pubDate><author>iscale821@gmail.com (terassyi)</author>
      <guid>https://blog.terassyi.net/posts/use-xdpcap/</guid>
      <description>&lt;p&gt;こんにちは．学生生活も後少しとなってしまいました．悲しいです．&#xA;今回はxdpcapというツールについてです．xdpcapの使用に関する資料が日本語では非常に少なかったので使い方を紹介します．&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux Network Namespaceを使用したネットワークシミュレータの紹介</title>
      <link>https://blog.terassyi.net/posts/pyns2/</link>
      <pubDate>Mon, 21 Dec 2020 00:00:00 +0000</pubDate><author>iscale821@gmail.com (terassyi)</author>
      <guid>https://blog.terassyi.net/posts/pyns2/</guid>
      <description>&lt;p&gt;こんにちは．12月に入り非常に寒い日々が続いています．個人的には10月から続いていたセキュリティキャンプが一段落して少し余裕が出てきました．&#xA;また，この記事は&lt;a href=&#34;https://adventar.org/calendars/5335&#34;&gt;SecHack365 Advent Calendar 2020&lt;/a&gt;の記事として書いています．&#xA;今回は趣味で開発しているツールを紹介します．&lt;/p&gt;</description>
    </item>
    <item>
      <title>XDPが実行できるVagrantfileを探して</title>
      <link>https://blog.terassyi.net/posts/xdp-vagrant/</link>
      <pubDate>Mon, 19 Oct 2020 00:00:00 +0000</pubDate><author>iscale821@gmail.com (terassyi)</author>
      <guid>https://blog.terassyi.net/posts/xdp-vagrant/</guid>
      <description>&lt;p&gt;こんにちは．大学院の後期授業も開始され，さらに多数イベントが同時並行で開催されており非常に忙しい日々を過ごしています．最近は将棋の勉強にも精を出しています．弱いですが．&#xA;今回はXDPが実行できるVMをVagrantで作ります．&#xA;先日&lt;a href=&#34;https://terassyi.net/posts/2020/09/12/pepabo-intern.html&#34;&gt;GMOペパボさんのeBPFインターンシップ&lt;/a&gt;に参加させていただいて以降eBPF関連の技術に興味を持っておりXDPに手を出してみます．&lt;/p&gt;</description>
    </item>
    <item>
      <title>GMOペパボの研究開発コースインターンシップに参加しました</title>
      <link>https://blog.terassyi.net/posts/pepabo-intern/</link>
      <pubDate>Sat, 12 Sep 2020 00:00:00 +0000</pubDate><author>iscale821@gmail.com (terassyi)</author>
      <guid>https://blog.terassyi.net/posts/pepabo-intern/</guid>
      <description>&lt;h2 id=&#34;参加の経緯&#34;&gt;参加の経緯&lt;/h2&gt;&#xA;&lt;p&gt;確か最初にインターンの開催を知ったのはtwitterだったと記憶しています．エンジニアインターンはWeb系の募集がほとんどで低レイヤを扱うインターンを探していたので即応募しました．&lt;/p&gt;&#xA;&lt;h2 id=&#34;内容&#34;&gt;内容&lt;/h2&gt;&#xA;&lt;p&gt;僕が参加したのは研究開発/SREコースでeBPFを使用したトレーシングツールの作成を行いました．&lt;code&gt;eBPF&lt;/code&gt;とは&lt;code&gt;extended Berkeley Packet Filter&lt;/code&gt;の略でユーザー空間からプログラムを挿入してカーネル空間のデータを取得することができる技術です．&#xA;今回のインターンでは&lt;a href=&#34;https://twitter.com/udzura&#34;&gt;Uchio Kondo&lt;/a&gt;さんと&lt;a href=&#34;https://twitter.com/pyama86&#34;&gt;P山&lt;/a&gt;さんにメンターとしてついていただきeBPFのチュートリアルから初めて最終的に参加者それぞれが一つのツールにまとめて成果として最終日に発表しました．お二方には期間中とても手厚くサポートしていただきました．ありがとうございました．&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
