PageSourceSearch

https://www.pysio.online/assets/AKIX.html-CvlhH9G7.js

js pysio.online collected 2026-09-28 06:50:31 UTC 16,655 bytes, 56 lines download raw bytes

1import{a as n,c as a,f as t,o as s}from"./app-fWPFO-Ym.js";const i={};function o(l,e){return s(),a("div",null,[...e[0]||(e[0]=[t(`<p>I&#39;ve had my ASN for three months now, and I haven&#39;t been tinkering much lately. Recently, on a whim, I suddenly wanted to try building my own IXP.</p><h2 id="why-bother-with-ixp" tabindex="-1"><a class="header-anchor" href="#why-bother-with-ixp"><span>Why Bother with IXP?</span></a></h2><p>Honestly, the initial motivation was simple - I just wanted to play. BGP, RPKI - these terms sound impressive, but only by actually doing it did I realize I could set it up myself. Plus, it can help friends&#39; networks interconnect more easily, so why not?</p><ul><li>Wanted to deeply understand BGP and RPKI - just reading docs isn&#39;t enough, must practice</li><li>Let small networks interconnect with low barriers, experience &quot;the internet of the internet&quot;</li><li>Try remote virtual access, see if friends on the other side of the planet can easily connect</li></ul><h2 id="technology-selection-and-pitfalls" tabindex="-1"><a class="header-anchor" href="#technology-selection-and-pitfalls"><span>Technology Selection and Pitfalls</span></a></h2><p>From the start, I didn&#39;t plan to make it too complex - as long as it runs, interconnects, and is secure.</p><ul><li>Chose Bird for routing software - lightweight, easy to use, configuration not difficult</li><li>Used VXLAN for switching, saves the hassle of physical switches, remote access is convenient too</li><li>Set up my own RPKI RTR server for security</li><li>Server in Frankfurt, rich European network resources, decent latency</li></ul><p>The most troublesome part was actually remote virtual access, since not everyone can go to the data center to plug in a cable. VXLAN was a huge help - everyone just needs a public VPS to pull tunnels in.</p><h2 id="build-log" tabindex="-1"><a class="header-anchor" href="#build-log"><span>Build Log</span></a></h2><h3 id="_1-server-and-network" tabindex="-1"><a class="header-anchor" href="#_1-server-and-network"><span>1. Server and Network</span></a></h3><p>First got a VPS that supports BGP, applied for IPv6 segment <code>2a14:67c1:a080::/48</code>. IPv4 is too expensive, IPv6 is really nice to use.</p><div class="language-bash" data-highlighter="prismjs" data-ext="sh"><pre><code class="language-bash"><span class="line"><span class="token comment"># Create IXP VXLAN interface</span></span>
2<span class="line"><span class="token function">ip</span> <span class="token function">link</span> <span class="token function">add</span> vxlan0 <span class="token builtin class-name">type</span> vxlan <span class="token function">id</span> <span class="token number">10</span> dstport <span class="token number">4789</span> <span class="token builtin class-name">local</span> 2a05:f480:1800:2e75:5400:05ff:fe65:88f3</span>
3<span class="line"><span class="token function">ip</span> addr <span class="token function">add</span> 2a14:67c1:a080::1/64 dev vxlan0</span>
4<span class="line"><span class="token function">ip</span> <span class="token function">link</span> <span class="token builtin class-name">set</span> vxlan0 up</span>
5<span class="line"></span></code></pre></div><h3 id="_2-bird-configuration" tabindex="-1"><a class="header-anchor" href="#_2-bird-configuration"><span>2. Bird Configuration</span></a></h3><p>Bird is the core, responsible for BGP route exchange. Configuration is actually not as complex as imagined, mainly ASN filtering, RPKI validation, templating and peers.</p><div class="language-conf" data-highlighter="prismjs" data-ext="conf"><pre><code class="language-conf"><span class="line">router id 1.1.1.1;</span>
6<span class="line"></span>
7<span class="line"># Define BOGON ASN filtering</span>
8<span class="line">define BOGON_ASNS = [</span>
9<span class="line">    0, 23456, 64496..64511, # ... other BOGON ASNs</span>
10<span class="line">];</span>
11<span class="line"></span>
12<span class="line">define IX_PEERS = [</span>
13<span class="line">    213605, 213891, 151194, 198025, 210352</span>
14<span class="line">];</span>
15<span class="line"></span>
16<span class="line">function ix_import() {</span>
17<span class="line">    if bgp_path.last ~ BOGON_ASNS then return false;</span>
18<span class="line">    if !check_roa_v6() then return false;</span>
19<span class="line">    return true;</span>
20<span class="line">}
20</span>
21<span class="line"></span></code></pre></div><p>Templated configuration makes adding members later very convenient:</p><div class="language-conf" data-highlighter="prismjs" data-ext="conf"><pre><code class="language-conf"><span class="line">template bgp ix_rs {</span>
22<span class="line">    local as 210440;</span>
23<span class="line">    multihop 2;</span>
24<span class="line">    ipv6 {</span>
25<span class="line">        import where ix_import();</span>
26<span class="line">        export where ix_export();</span>
27<span class="line">        next hop self;</span>
28<span class="line">        graceful restart on;</span>
29<span class="line">    };</span>
30<span class="line">}</span>
31<span class="line"></span></code></pre></div><h3 id="_3-rpki-validation" tabindex="-1"><a class="header-anchor" href="#_3-rpki-validation"><span>3. RPKI Validation</span></a></h3><p>Can&#39;t skip on security - set up my own RPKI validator, also pulled a backup from Cloudflare.</p><div class="language-conf" data-highlighter="prismjs" data-ext="conf"><pre><code class="language-conf"><span class="line">protocol rpki rpki_akae {</span>
32<span class="line">    roa4 { table roa_table_v4; };</span>
33<span class="line">    roa6 { table roa_table_v6; };</span>
34<span class="line">    remote &quot;rpki.akae.re&quot; port 8282;</span>
35<span class="line">    retry keep 90;</span>
36<span class="line">    refresh keep 43200;</span>
37<span class="line">    expire keep 86400;</span>
38<span class="line">}</span>
39<span class="line"></span>
40<span class="line">protocol rpki rpki_cloudflare {</span>
41<span class="line">    roa4 { table roa_table_v4; };</span>
42<span class="line">    roa6 { table roa_table_v6; };</span>
43<span class="line">    remote &quot;rtr.rpki.cloudflare.com&quot; port 8282;</span>
44<span class="line">    retry keep 90;</span>
45<span class="line">    refresh keep 43200;</span>
46<span class="line">    expire keep 86400;</span>
47<span class="line">}</span>
48<span class="line"></span>
49<span class="line">function check_roa_v6() {</span>
50<span class="line">    case roa_check(roa_table_v6, net, bgp_path.last) {</span>
51<span class="line">        ROA_VALID: return true;</span>
52<span class="line">        ROA_UNKNOWN: return true;</span>
53<span class="line">        ROA_INVALID: return false;</span>
54<span class="line">    }</span>
55<span class="line">}</span>
56<span class="line"></span></code></pre></div><h3 id="_4-peeringdb-registration" tabindex="-1"><a class="header-anchor" href="#_4-peeringdb-registration"><span>4. PeeringDB Registration</span></a></h3><p>After setting up, casually registered on PeeringDB:</p><ul><li>Organization: AKAERE NETWORKS TECHNOLOGY LTD</li><li>Alias: Akaere IX</li><li>Location: CN</li><li>Region: Asia Pacific</li><li>Service Level: Business Hours</li><li>Website: <a href="https://ixpm.akae.re/" target="_blank" rel="noopener noreferrer">ixpm.akae.re</a></li></ul><h2 id="operations-notes" tabindex="-1"><a class="header-anchor" href="#operations-notes"><span>Operations Notes</span></a></h2><p>Currently several friends&#39; networks have connected to Akaere IX, everyone playing BGP together, testing routes, tinkering with RPKI. Bandwidth and scale aren&#39;t really the point - the key is being able to interconnect, communicate, and grow together.</p><h3 id="pitfalls-encountered" tabindex="-1"><a class="header-anchor" href="#pitfalls-encountered"><span>Pitfalls Encountered</span></a></h3><ul><li>VXLAN occasionally acts up, tunnels unstable, need more monitoring</li><li>Each member&#39;s routing policy is different, configuration needs to be flexible</li></ul><h3 id="technical-gains" tabindex="-1"><a class="header-anchor" href="#technical-gains"><span>Technical Gains</span></a></h3><ul><li>BGP route control and policy tricks - hands-on practice is way more interesting than reading books</li><li>RPKI deployment and exception handling - security level maxed out</li><li>VXLAN cross-regional layer 2 networks - remote access so easy</li><li>Automated script management - saves a lot of worry</li></ul><h2 id="future-ideas" tabindex="-1"><a class="header-anchor" href="#future-ideas"><span>Future Ideas</span></a></h2><p>Akaere IX is still slowly improving, future plans:</p><ul><li>Multiple access points, covering more regions</li><li>Better automation and visualization</li><li>Enrich routing security services more</li><li>Maybe even interconnect with other IXPs for fun</li></ul><h2 id="summary" tabindex="-1"><a class="header-anchor" href="#summary"><span>Summary</span></a></h2><p>This IXP tinkering experience brought not just technical knowledge, but the joy of growing together with a group of friends who also love networking. The essence of the internet is openness and connection - IXP is just a small microcosm of that.</p><p>If you also want to play with BGP and experience network interconnection, feel free to reach out ([email protected]), let&#39;s tinker together!</p><figure><img src="https://s3.pysio.online/cdn-cgi/image/f=avif,onerror=redirect,slow-connection-quality=50/https://s3.pysio.online/pysioimages/akaere/Akaere IXP.png" alt="AKIX 
56Logo" tabindex="0" loading="lazy"><figcaption>AKIX Logo</figcaption></figure><hr><p><strong>Technical References:</strong></p><ul><li><a href="https://bird.network.cz/" target="_blank" rel="noopener noreferrer">BIRD Router Documentation</a></li><li><a href="https://rpki.readthedocs.io/" target="_blank" rel="noopener noreferrer">RPKI Deployment Guide</a></li></ul>`,39)])])}const p=n(i,[["render",o]]),c=JSON.parse(`{"path":"/en/posts/daily/AKIX.html","title":"Building an IXP - A Small Journal","lang":"en-US","frontmatter":{"title":"Building an IXP - A Small Journal","date":"2025-05-05T00:00:00.000Z","icon":"fa-solid fa-ethernet","category":"daily","tag":["BGP","Daily"],"description":"I've had my ASN for three months now, and I haven't been tinkering much lately. Recently, on a whim, I suddenly wanted to try building my own IXP. Why Bother with IXP? Honestly,...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Building an IXP - A Small Journal\\",\\"image\\":[\\"https://s3.pysio.online/cdn-cgi/image/f=avif,onerror=redirect,slow-connection-quality=50/https://s3.pysio.online/pysioimages/akaere/Akaere%20IXP.png\\"],\\"datePublished\\":\\"2025-05-05T00:00:00.000Z\\",\\"dateModified\\":\\"2025-06-01T00:04:33.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Pysio\\",\\"url\\":\\"https://github.com/pysio2007/\\"}]}"],["meta",{"property":"og:url","content":"https://www.pysio.online/en/posts/daily/AKIX.html"}],["meta",{"property":"og:site_name","content":"Pysio's Home"}],["meta",{"property":"og:title","content":"Building an IXP - A Small Journal"}],["meta",{"property":"og:description","content":"I've had my ASN for three months now, and I haven't been tinkering much lately. Recently, on a whim, I suddenly wanted to try building my own IXP. Why Bother with IXP? Honestly,..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://s3.pysio.online/cdn-cgi/image/f=avif,onerror=redirect,slow-connection-quality=50/https://s3.pysio.online/pysioimages/akaere/Akaere%20IXP.png"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2025-06-01T00:04:33.000Z"}],["meta",{"property":"article:tag","content":"Daily"}],["meta",{"property":"article:tag","content":"BGP"}],["meta",{"property":"article:published_time","content":"2025-05-05T00:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2025-06-01T00:04:33.000Z"}],["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://www.pysio.online/posts/daily/AKIX.html"}],["meta",{"property":"article:published_time","content":"2025-05-05T00:00:00.000Z"}],["meta",{"name":"article:published_time","content":"2025-05-05T00:00:00.000Z"}],["meta",{"property":"article:tag","content":"BGP"}],["meta",{"property":"article:tag","content":"Daily"}],["meta",{"property":"article:section","content":"daily"}],["meta",{"property":"og:title","content":"Building an IXP - A Small Journal"}],["meta",{"property":"og:url","content":"https://www.pysio.online/en/posts/daily/AKIX.html"}],["meta",{"property":"og:description","content":"I've had my ASN for three months now, and I haven't been tinkering much lately. Recently, on a whim, I suddenly wanted to try building my own IXP. Why Bother with IXP? Honestly,..."}],["meta",{"name":"description","content":"I've had my ASN for three months now, and I haven't been tinkering much lately. Recently, on a whim, I suddenly wanted to try building my own IXP. Why Bother with IXP? Honestly,..."}],["meta",{"name":"twitter:title","content":"Building an IXP - A Small Journal"}],["meta",{"name":"twitter:description","content":"I've had my ASN for three months now, and I haven't been tinkering much lately. Recently, on a whim, I suddenly wanted to try building my own IXP. Why Bother with IXP? Honestly,..."}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"BlogPosting\\",\\"headline\\":\\"Building an IXP - A Small Journal\\",\\"author\\":{\\"@type\\":\\"Person\\",\\"name\\":\\"Pysio\\",\\"url\\":\\"https://github.com/pysio2007\\"},\\"publisher\\":{\\"@type\\":\\"Organization\\",\\"name\\":\\"Pysio's Home\\",\\"url\\":\\"https://www.pysio.online\\"},\\"url\\":\\"https://www.pysio.online/en/posts/daily/AKIX.html\\",\\"datePublished\\":\\"2025-05-05T00:00:00.000Z\\",\\"dateModified\\":\\"2025-05-05T00:00:00.000Z\\",\\"description\\":\\"I've had my ASN for three months now, and I haven't been tinkering much lately. Recently, on a whim, I suddenly wanted to try building my own IXP. Why Bother with IXP? Honestly,...\\",\\"mainEntityOfPage\\":{\\"@type\\":\\"WebPage\\",\\"@id\\":\\"https://www.pysio.online/en/posts/daily/AKIX.html\\"}}"],["link",{"rel":"canonical","href":"https://www.pysio.online/en/posts/daily/AKIX.html"}],["link",{"rel":"alternate","type":"application/rss+xml","title":"Pysio's Home RSS Feed","href":"https://www.pysio.online/rss.xml"}],["meta",{"property":"og:title","content":"Building an IXP - A Small Journal"}],["meta",{"property":"og:description","content":"I've had my ASN for three months now, and I haven't been tinkering much lately. Recently, on a whim, I suddenly wanted to try building my own IXP. Why Bother with IXP? Honestly,..."}],["meta",{"property":"og:image","content":"https://www.pysio.online/og-images/buildinganixp-asmalljournal.png"}],["meta",{"property":"og:url","content":"https://www.pysio.online/en/posts/daily/AKIX.html"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:site_name","content":"Pysio's Home"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:title","content":"Building an IXP - A Small Journal"}],["meta",{"name":"twitter:description","content":"I've had my ASN for three months now, and I haven't been tinkering much lately. Recently, on a whim, I suddenly wanted to try building my own IXP. Why Bother with IXP? Honestly,..."}],["meta",{"name":"twitter:image","content":"https://www.pysio.online/og-images/buildinganixp-asmalljournal.png"}],["link",{"rel":"alternate","type":"application/rss+xml","href":"https://www.pysio.online/en/rss.xml","title":"Pysio's Home RSS Feed"}]]}
56,"git":{"createdTime":1748736273000,"updatedTime":1748736273000,"contributors":[{"name":"pysio2007","username":"pysio2007","email":"[email protected]","commits":1,"url":"https://github.com/pysio2007"}]},"readingTime":{"minutes":2.54,"words":761},"filePathRelative":"en/posts/daily/AKIX.md","excerpt":"<p>I've had my ASN for three months now, and I haven't been tinkering much lately. Recently, on a whim, I suddenly wanted to try building my own IXP.</p>\\n<h2>Why Bother with IXP?</h2>\\n<p>Honestly, the initial motivation was simple - I just wanted to play. BGP, RPKI - these terms sound impressive, but only by actually doing it did I realize I could set it up myself. Plus, it can help friends' networks interconnect more easily, so why not?</p>","autoDesc":true}`);export{p as comp,c as data};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.