{"id":156,"date":"2025-09-30T12:47:26","date_gmt":"2025-09-30T10:47:26","guid":{"rendered":"https:\/\/techbygiusi.com\/?p=156"},"modified":"2026-04-09T19:43:11","modified_gmt":"2026-04-09T17:43:11","slug":"dynamic-ipv6-routing-with-ospf-frr","status":"publish","type":"post","link":"https:\/\/techbygiusi.com\/index.php\/guide\/dynamic-ipv6-routing-with-ospf-frr\/","title":{"rendered":"Dynamic IPv6 Routing with OSPF (FRR)"},"content":{"rendered":"\n<h6 class=\"wp-block-heading\">Overview<\/h6>\n\n\n\n<p>This guide explains how to set up <strong>dynamic IPv6 routing<\/strong> using <strong>FRR (Free Range Routing)<\/strong> with <strong>OSPFv3 (OSPF for IPv6)<\/strong>. The setup ensures that traffic between nodes automatically uses the <strong>fastest available links<\/strong> (e.g. 10 Gbps), while still providing a <strong>fallback path<\/strong> over slower links (e.g. 2.5 Gbps).<\/p>\n\n\n\n<p>If a link fails, OSPF dynamically recalculates routes and shifts traffic without manual intervention.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Example Topology<\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Nodes<\/strong>: 3 servers (<code>node1<\/code>, <code>node2<\/code>, <code>node3<\/code>)<\/li>\n\n\n\n<li><strong>Internal IPv6 addresses<\/strong>:\n<ul class=\"wp-block-list\">\n<li>node1 \u2192 <code>fd69:beef:cafe::111\/128<\/code><\/li>\n\n\n\n<li>node2 \u2192 <code>fd69:beef:cafe::112\/128<\/code><\/li>\n\n\n\n<li>node3 \u2192 <code>fd69:beef:cafe::113\/128<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Network links<\/strong>:\n<ul class=\"wp-block-list\">\n<li>One 2.5 Gbps \u201cfallback\u201d network (e.g. <code>vmbr0<\/code>)<\/li>\n\n\n\n<li>Two 10 Gbps <strong>point-to-point<\/strong> links between nodes (e.g. <code>enp2s0f0np0<\/code> and <code>enp2s0f1np1<\/code>)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Step 1: Install FRR<\/h6>\n\n\n\n<p>On each node:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update\napt install frr -y<\/code><\/pre>\n\n\n\n<p>Enable the OSPFv3 daemon:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/frr\/daemons\nospf6d=yes<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Step 2: Configure FRR for OSPF6<\/h6>\n\n\n\n<p>Edit <code>\/etc\/frr\/frr.conf<\/code> on each node. Example (adjust for each host):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/frr\/frr.conf<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>log syslog informational\nipv6 forwarding\n\ninterface lo\n    ipv6 address fd69:beef:cafe::111\/128   # change per node\n    ipv6 ospf6 area 0.0.0.0\n    ipv6 ospf6 passive\n\ninterface vmbr0\n    ipv6 ospf6 area 0.0.0.0\n    ipv6 ospf6 network broadcast\n    ipv6 ospf6 cost 100   # fallback link, higher cost\n\ninterface enp2s0f0np0\n    ipv6 ospf6 area 0.0.0.0\n    ipv6 ospf6 network point-to-point\n    ipv6 ospf6 cost 10    # preferred link\n\ninterface enp2s0f1np1\n    ipv6 ospf6 area 0.0.0.0\n    ipv6 ospf6 network point-to-point\n    ipv6 ospf6 cost 10    # preferred link\n\nrouter ospf6\n    ospf6 router-id 0.1.1.1   # unique per node (0.1.1.2, 0.1.1.3, etc.)\n    redistribute connected\n    auto-cost reference-bandwidth 100000<\/code><\/pre>\n\n\n\n<p>Assign each node its unique IPv6 address and router-id. Lower costs (10) are <strong>preferred<\/strong> routes, higher costs (100) are <strong>fallbacks<\/strong>. Adjust costs if you have different link speeds.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Step 3: Verify Connectivity<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">Test Bandwidth with <code>iperf3<\/code><\/h6>\n\n\n\n<p>On one node (server):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iperf3 -s<\/code><\/pre>\n\n\n\n<p>On the others (clients):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iperf3 -c fd69:beef:cafe::111 -t 300\niperf3 -c fd69:beef:cafe::112 -t 300\niperf3 -c fd69:beef:cafe::113 -t 300<\/code><\/pre>\n\n\n\n<p>This confirms that traffic flows across all OSPF-routed links.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Monitor Live Traffic with <code>nload<\/code><\/h6>\n\n\n\n<p>Install:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt-get install nload<\/code><\/pre>\n\n\n\n<p>Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nload vmbr0 enp2s0f0np0 enp2s0f1np1<\/code><\/pre>\n\n\n\n<p>Use arrow keys to switch between interfaces.<br>You should see traffic primarily on the <strong>10 Gbps links<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"#lb-1-ac83b04e\" class=\"lb-thumb\" aria-label=\"Bild vergr\u00f6\u00dfern\"><img loading=\"lazy\" decoding=\"async\" width=\"748\" height=\"420\" src=\"https:\/\/techbygiusi.com\/wp-content\/uploads\/2025\/09\/aufzeichnung-2024-08-31-151011-1.gif\" alt=\"\" class=\"wp-image-157\"><\/a><\/figure>\n\n\n\n<p>Remove tools when finished:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt-get remove nload\napt-get remove iperf3<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview This guide explains how to set up dynamic IPv6 routing using FRR (Free Range Routing) with OSPFv3 (OSPF for IPv6). The setup ensures that traffic between nodes automatically uses the fastest available links (e.g. 10 Gbps), while still providing a fallback path over slower links (e.g. 2.5 Gbps). If a link fails, OSPF dynamically [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[12,10],"class_list":["post-156","post","type-post","status-publish","format-standard","hentry","category-guide","tag-linux","tag-proxmox"],"_links":{"self":[{"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/posts\/156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/comments?post=156"}],"version-history":[{"count":4,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/posts\/156\/revisions"}],"predecessor-version":[{"id":180,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/posts\/156\/revisions\/180"}],"wp:attachment":[{"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/media?parent=156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/categories?post=156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techbygiusi.com\/index.php\/wp-json\/wp\/v2\/tags?post=156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}