<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Network on Council of Elrond</title><link>https://songkou.github.io/categories/network/</link><description>Recent content in Network on Council of Elrond</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 24 Jul 2026 13:00:00 +0800</lastBuildDate><atom:link href="https://songkou.github.io/categories/network/index.xml" rel="self" type="application/rss+xml"/><item><title>RoCE QoS Concepts and Packet Examples</title><link>https://songkou.github.io/posts/roce-qos-concepts-and-packet-examples/</link><pubDate>Fri, 24 Jul 2026 13:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/roce-qos-concepts-and-packet-examples/</guid><description>&lt;p&gt;There are many docs that use different terms on QoS — PCP vs CoS, for example, are in fact the same thing. This doc consolidates the QoS concepts and terminology behind RoCEv2 deployments, with decoded packet examples.&lt;/p&gt;
&lt;p&gt;It is the &lt;strong&gt;concepts companion&lt;/strong&gt; to two other posts on this blog: &lt;a href="https://songkou.github.io/posts/rocev2-cisco-cumulus-connectx-end-to-end/"&gt;End-to-End RoCEv2 Configuration: Cisco Nexus, Cumulus Linux, and ConnectX&lt;/a&gt; is the configuration guide that turns these concepts into working templates, and &lt;a href="https://songkou.github.io/posts/rdma-performance-tuning/"&gt;RDMA Performance Tuning&lt;/a&gt; covers tuning and packet-loss troubleshooting once the fabric is up.&lt;/p&gt;</description></item><item><title>RDMA Performance Tuning: From Fresh Install to Line-Rate Bandwidth</title><link>https://songkou.github.io/posts/rdma-performance-tuning/</link><pubDate>Thu, 23 Jul 2026 21:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/rdma-performance-tuning/</guid><description>&lt;p&gt;The number-one complaint with RDMA is simple: the bandwidth won&amp;rsquo;t fill up. A 100G card pushing only 60G, two days spent checking drivers, optics, and the peer&amp;rsquo;s configuration — and in the end the fix is a single PCIe parameter.&lt;/p&gt;
&lt;p&gt;When RDMA underperforms, 90% of the time the cause is not exotic. It&amp;rsquo;s some factory default that was never touched: the switch buffer carved too small, the PCIe read request size left at its tiny default, the MTU misaligned on one segment of the path. None of these is hard to fix on its own — the hard part is knowing which one to check.&lt;/p&gt;</description></item><item><title>EVE-NG_6_SONiC_Virtual_Switch_Installation</title><link>https://songkou.github.io/posts/eve-ng-6-sonic-virtual-switch-installation/</link><pubDate>Thu, 23 Jul 2026 20:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/eve-ng-6-sonic-virtual-switch-installation/</guid><description>&lt;p&gt;SONiC (Software for Open Networking in the Cloud) publishes a virtual-switch build (SONiC-VS) that boots as a QEMU VM, which makes it a perfect lab guest for EVE-NG. This post walks through installing SONiC-VS on EVE-NG 6 using the built-in &lt;strong&gt;Sonic Switch&lt;/strong&gt; template, validating the first boot with real console captures, and finishes with a command reference for the SONiC CLI — the commands you actually reach for once the switch is up: interfaces, routing, logs, config, and user management.&lt;/p&gt;</description></item><item><title>Cheat_Sheet</title><link>https://songkou.github.io/posts/cheat-sheet/</link><pubDate>Tue, 21 Jul 2026 04:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/cheat-sheet/</guid><description>&lt;p&gt;Every verification and troubleshooting command from the lab posts on this blog — plus a few general-purpose Linux staples — collected in one place and organized &lt;strong&gt;by vendor&lt;/strong&gt;, because that&amp;rsquo;s how you reach for a cheat sheet: you&amp;rsquo;re on a box, and you need to know what to run. Each subsection links back to the post it came from where one exists, and explains what each command shows and what a healthy result looks like — a command you can&amp;rsquo;t interpret is just noise.&lt;/p&gt;</description></item><item><title>Arista_VXLAN_EVPN_Lab</title><link>https://songkou.github.io/posts/arista-vxlan-bum-her-vs-multicast/</link><pubDate>Tue, 21 Jul 2026 00:30:00 +0800</pubDate><guid>https://songkou.github.io/posts/arista-vxlan-bum-her-vs-multicast/</guid><description>&lt;p&gt;A VXLAN fabric has to answer one question before any host can talk: &lt;strong&gt;how does BUM traffic (Broadcast, Unknown unicast, Multicast) reach every remote VTEP?&lt;/strong&gt; There are only two data-plane answers — head-end replication (HER, also called ingress replication) or an IP multicast underlay — and two control-plane ways to drive each of them (static configuration or BGP EVPN).&lt;/p&gt;
&lt;p&gt;This lab builds the same Arista fabric four times, once per combination:&lt;/p&gt;</description></item><item><title>End-to-End RoCEv2 Configuration: Cisco Nexus, Cumulus Linux, and ConnectX</title><link>https://songkou.github.io/posts/rocev2-cisco-cumulus-connectx-end-to-end/</link><pubDate>Mon, 20 Jul 2026 04:30:00 +0800</pubDate><guid>https://songkou.github.io/posts/rocev2-cisco-cumulus-connectx-end-to-end/</guid><description>&lt;p&gt;A RoCEv2 fabric is not complete when the switch merely forwards UDP port 4791. The endpoints and every switch hop must agree on a traffic-class contract: &lt;strong&gt;DSCP classification, internal priority, egress queue, PFC priority, ECN thresholds, CNP handling, MTU, and DCQCN behavior&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This guide turns that contract into two switch implementations and one host implementation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cisco Nexus 9000 with NX-OS Modular QoS CLI (MQC)&lt;/li&gt;
&lt;li&gt;NVIDIA Spectrum with Cumulus Linux and NVUE&lt;/li&gt;
&lt;li&gt;Linux servers with NVIDIA ConnectX-5/6/7 adapters&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The examples use &lt;strong&gt;DSCP 24 for RoCE data&lt;/strong&gt;, &lt;strong&gt;DSCP 48 for CNP&lt;/strong&gt;, and &lt;strong&gt;PFC priority 3&lt;/strong&gt;. Those values are a design choice, not a protocol requirement. If your environment uses DSCP 26, a different PFC priority, or a vendor profile, change the entire path consistently.&lt;/p&gt;</description></item><item><title>Arista_EOS_RoCEv2_Lossless_Config</title><link>https://songkou.github.io/posts/arista-eos-roce-config/</link><pubDate>Mon, 20 Jul 2026 04:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/arista-eos-roce-config/</guid><description>&lt;p&gt;On Cisco NX-OS, enabling PFC for RoCE normally involves several MQC (Modular QoS CLI class-map -&amp;gt; policy-map -&amp;gt; system qos) layers. On Arista EOS, basic PFC can be enabled directly on an interface with two commands:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;priority-flow-control on
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;priority-flow-control priority 3 no-drop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; these commands cannot be executed in an EVE-NG lab. PFC is a hardware feature — the pause frames are generated and honored by the switching ASIC — and the virtual vEOS-lab image has no such hardware, so EOS rejects the configuration outright. Real output from a vEOS-lab node:&lt;/p&gt;</description></item><item><title>SFP, QSFP, Fiber Types</title><link>https://songkou.github.io/posts/sfp-qsfp-fiber-400g-800g-optics/</link><pubDate>Sun, 19 Jul 2026 18:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/sfp-qsfp-fiber-400g-800g-optics/</guid><description>&lt;p&gt;Choosing an optical transceiver is harder than matching the number printed on the switch port. A working link has to align the &lt;strong&gt;form factor, host lane rate, Ethernet standard, optical organization, fiber type, connector, wavelength, FEC mode, loss budget, and platform support&lt;/strong&gt; at both ends.&lt;/p&gt;
&lt;p&gt;The first clarification is terminology: &lt;strong&gt;SFP&lt;/strong&gt; is a specific one-lane form factor, not the general name for every removable optic. Engineers often say “SFP” informally, but 400G and 800G modules are normally &lt;strong&gt;QSFP112, QSFP-DD, QSFP-DD800, or OSFP&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>VXLAN EVPN Architecture</title><link>https://songkou.github.io/posts/vxlan-evpn-architecture/</link><pubDate>Sun, 19 Jul 2026 12:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/vxlan-evpn-architecture/</guid><description>&lt;p&gt;VXLAN EVPN combines a scalable Layer 2 data plane with a standards-based MP-BGP control plane. VXLAN carries Ethernet frames across a routed IP fabric; EVPN distributes endpoint, subnet, and tunnel-reachability information so the fabric does not have to discover everything by flooding.&lt;/p&gt;
&lt;details class="post-toc"&gt;
 &lt;summary&gt;Contents — 22 sections&lt;/summary&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#standards-and-implementation-scope"&gt;Standards and implementation scope&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#1-why-overlays-exist"&gt;1. Why overlays exist&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#11-layer-2-and-layer-3-overlays"&gt;1.1 Layer 2 and Layer 3 overlays&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#12-problems-vxlan-addresses"&gt;1.2 Problems VXLAN addresses&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#2-vxlan-encapsulation-and-vteps"&gt;2. VXLAN encapsulation and VTEPs&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#21-header-fields-and-encapsulation-overhead"&gt;2.1 Header fields and encapsulation overhead&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#22-virtual-tunnel-end-point"&gt;2.2 Virtual Tunnel End Point&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#23-vlan-bridge-domain-and-vni"&gt;2.3 VLAN, bridge domain, and VNI&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#3-underlay-design"&gt;3. Underlay design&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#31-underlay-routing-choices"&gt;3.1 Underlay routing choices&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#32-ecmp-behavior"&gt;3.2 ECMP behavior&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#33-multicast-underlay-requirements"&gt;3.3 Multicast underlay requirements&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#4-design-considerations"&gt;4. Design Considerations&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#41-ibgp-overlay-with-an-igp-underlay-versus-ebgp-everywhere"&gt;4.1 iBGP overlay with an IGP underlay versus eBGP everywhere&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#42-bum-handling"&gt;4.2 BUM Handling&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#5-vxlan-data-plane-forwarding"&gt;5. VXLAN data-plane forwarding&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#51-local-switching"&gt;5.1 Local switching&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#52-known-remote-unicast"&gt;5.2 Known remote unicast&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#53-bum-traffic"&gt;5.3 BUM traffic&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#6-what-evpn-adds"&gt;6. What EVPN adds&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#61-route-reflectors"&gt;6.1 Route reflectors&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#62-underlay-versus-overlay-bgp"&gt;6.2 Underlay versus overlay BGP&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#63-evpn-address-family-and-route-installation"&gt;6.3 EVPN address family and route installation&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#7-evpn-building-blocks-rd-rt-and-route-types"&gt;7. EVPN building blocks: RD, RT, and route types&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#71-route-distinguisher"&gt;7.1 Route Distinguisher&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#72-route-target"&gt;7.2 Route Target&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#73-important-evpn-route-types"&gt;7.3 Important EVPN route types&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#74-route-targets-in-practice-auto-derivation-the-ebgp-wrinkle-and-reading-rts-in-show-output"&gt;7.4 Route targets in practice: auto-derivation, the eBGP wrinkle, and reading RTs in show output&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#8-evpn-multihoming-in-detail"&gt;8. EVPN multihoming in detail&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#81-ethernet-segment-identifier"&gt;8.1 Ethernet Segment Identifier&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#82-how-route-types-1-and-4-work-together"&gt;8.2 How route types 1 and 4 work together&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#83-aliasing-and-known-unicast-load-balancing"&gt;8.3 Aliasing and known-unicast load balancing&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#84-designated-forwarder-election"&gt;8.4 Designated Forwarder election&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#85-split-horizon"&gt;8.5 Split horizon&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#86-failure-sequences"&gt;8.6 Failure sequences&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#87-mlag-versus-evpn-mh-why-a-fabric-may-show-no-type-1-or-type-4-routes"&gt;8.7 MLAG versus EVPN-MH: why a fabric may show no type-1 or type-4 routes&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#9-endpoint-learning-mobility-and-arp-suppression"&gt;9. Endpoint learning, mobility, and ARP suppression&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#91-local-and-remote-learning"&gt;9.1 Local and remote learning&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#92-host-mobility"&gt;9.2 Host mobility&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#93-arp-suppression"&gt;9.3 ARP suppression&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#10-distributed-anycast-gateway-and-irb"&gt;10. Distributed anycast gateway and IRB&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#101-same-subnet-forwarding"&gt;10.1 Same-subnet forwarding&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#102-inter-subnet-forwarding"&gt;10.2 Inter-subnet forwarding&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#11-head-end-replication-and-control-plane-suppression"&gt;11. Head-end replication and control-plane suppression&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#12-design-choices-pod-multi-pod-fabric-and-site"&gt;12. Design choices: pod, multi-pod, fabric, and site&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#121-pod"&gt;12.1 Pod&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#122-multi-pod"&gt;12.2 Multi-Pod&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#123-multi-fabric-and-multi-site"&gt;12.3 Multi-fabric and Multi-Site&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#124-multi-pod-versus-multi-site-at-the-boundary"&gt;12.4 Multi-pod versus Multi-Site at the boundary&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#13-vxlan-multi-site-architecture"&gt;13. VXLAN Multi-Site architecture&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#131-border-gateway-roles"&gt;13.1 Border gateway roles&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#132-underlay-isolation"&gt;13.2 Underlay isolation&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#133-pip-and-multi-site-vip"&gt;13.3 PIP and Multi-Site VIP&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#134-anycast-bgw-and-designated-forwarder"&gt;13.4 Anycast BGW and designated forwarder&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#135-bum-replication-modes"&gt;13.5 BUM replication modes&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#136-selective-advertisement"&gt;13.6 Selective advertisement&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#137-multi-site-control-plane-boundaries"&gt;13.7 Multi-Site control-plane boundaries&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#138-tracking-and-restoration"&gt;13.8 Tracking and restoration&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#14-multi-site-forwarding-walks"&gt;14. Multi-Site forwarding walks&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#141-inter-site-bridging"&gt;14.1 Inter-site bridging&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#142-inter-site-routing"&gt;14.2 Inter-site routing&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#143-inter-site-bum"&gt;14.3 Inter-site BUM&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#15-representative-cisco-nx-os-configuration-model"&gt;15. Representative Cisco NX-OS configuration model&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#151-enable-features"&gt;15.1 Enable features&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#152-underlay-loopback-and-routed-link"&gt;15.2 Underlay loopback and routed link&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#153-overlay-bgp"&gt;15.3 Overlay BGP&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#154-vlan-to-vni-and-tenant-vrf"&gt;15.4 VLAN-to-VNI and tenant VRF&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#155-anycast-gateway-svi"&gt;15.5 Anycast gateway SVI&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#156-nve-interface"&gt;15.6 NVE interface&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#157-evpn-vni-policy"&gt;15.7 EVPN VNI policy&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#158-multi-site-bgw-pattern"&gt;15.8 Multi-Site BGW pattern&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#16-failure-handling-and-verification"&gt;16. Failure handling and verification&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#17-inter-tenant-eastwest-firewall-insertion"&gt;17. Inter-tenant (east–west) firewall insertion&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#171-the-transit-plumbing-two-attachment-designs"&gt;17.1 The transit plumbing: two attachment designs&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#172-routing-and-steering"&gt;17.2 Routing and steering&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#173-packet-walk"&gt;17.3 Packet walk&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#174-operational-controls"&gt;17.4 Operational controls&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#18-external-connectivity-per-vrf-handoff-fusion-router-and-shared-services"&gt;18. External connectivity: per-VRF handoff, fusion router, and shared services&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#181-option-1-per-vrf-ebgp-handoff-at-a-border-leaf-pair"&gt;18.1 Option 1: per-VRF eBGP handoff at a border-leaf pair&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#182-option-2-fusion-router--merge-tenants-into-the-edge-global-table"&gt;18.2 Option 2: fusion router — merge tenants into the edge global table&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#183-option-3-shared-internet-vrf-with-centralized-route-leaking"&gt;18.3 Option 3: shared Internet VRF with centralized route leaking&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#184-common-route-leaking-failures"&gt;18.4 Common route-leaking failures&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#185-choosing-between-the-options"&gt;18.5 Choosing between the options&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#19-practical-design-checklist"&gt;19. Practical design checklist&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#underlay"&gt;Underlay&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#overlay"&gt;Overlay&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#multihoming"&gt;Multihoming&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#gateways-and-services"&gt;Gateways and services&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#multi-site"&gt;Multi-Site&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#20-security-policy-and-operational-hardening"&gt;20. Security, policy, and operational hardening&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#201-underlay-and-vtep-protection"&gt;20.1 Underlay and VTEP protection&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#202-endpoint-and-tenant-controls"&gt;20.2 Endpoint and tenant controls&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#203-scale-budgets"&gt;20.3 Scale budgets&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#204-observability-baseline"&gt;20.4 Observability baseline&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#21-final-mental-model"&gt;21. Final mental model&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#appendix-a-evpn-type-1-and-type-4-multihoming-reference"&gt;Appendix A: EVPN Type 1 and Type 4 multihoming reference&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#a1-worked-scenario-why-type-4-and-type-1-are-both-needed"&gt;A.1 Worked scenario: why Type 4 and Type 1 are both needed&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#a2-control-plane-flow"&gt;A.2 Control-plane flow&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#a3-forwarding-flow-after-convergence"&gt;A.3 Forwarding flow after convergence&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#a4-failure-flow-when-leaf-a-loses-the-whole-ethernet-segment"&gt;A.4 Failure flow when &lt;code&gt;Leaf-A&lt;/code&gt; loses the whole Ethernet segment&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#a5-route-responsibility-summary"&gt;A.5 Route responsibility summary&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#a6-alternative-three-step-cepe-example"&gt;A.6 Alternative three-step CE/PE example&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
&lt;/nav&gt;
&lt;/details&gt;

&lt;h2 id="standards-and-implementation-scope"&gt;Standards and implementation scope&lt;/h2&gt;
&lt;p&gt;VXLAN EVPN is not defined by one document. The architecture is assembled from a data-plane encapsulation, an EVPN control plane, a mapping between EVPN and network-virtualization overlays, and later IRB and prefix-route extensions:&lt;/p&gt;</description></item><item><title>VXLAN_EVPN_Cumulus_Lab_Test</title><link>https://songkou.github.io/posts/vxlan-evpn-cumulus-5.4-lab-guide/</link><pubDate>Sun, 19 Jul 2026 02:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/vxlan-evpn-cumulus-5.4-lab-guide/</guid><description>&lt;p&gt;This lab builds a VXLAN EVPN fabric on Cumulus Linux 5.4: one BGP spine, an MLAG leaf pair (leaf1/leaf2) acting as a single logical VTEP, and a standalone leaf (leaf3). Linux1 is dual-homed to the MLAG pair over an LACP bond, while Linux21 and Linux22 share a stretched VLAN with a distributed anycast gateway.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lab requirements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VLAN 100: Linux1 &lt;code&gt;192.168.100.10/24&lt;/code&gt;, gateway &lt;code&gt;192.168.100.1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;VLAN 121: Linux21 &lt;code&gt;192.168.121.21/24&lt;/code&gt;, Linux22 &lt;code&gt;192.168.121.22/24&lt;/code&gt;, anycast gateway &lt;code&gt;192.168.121.1&lt;/code&gt; on all leaves&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="lab-environment"&gt;Lab environment&lt;/h2&gt;
&lt;p&gt;This lab runs in EVE-NG. The four switches (&lt;code&gt;spine&lt;/code&gt;, &lt;code&gt;leaf1&lt;/code&gt;, &lt;code&gt;leaf2&lt;/code&gt;, &lt;code&gt;leaf3&lt;/code&gt;) are Cumulus VX 5.4 nodes, and the three hosts (&lt;code&gt;Linux1&lt;/code&gt;, &lt;code&gt;Linux21&lt;/code&gt;, &lt;code&gt;Linux22&lt;/code&gt;) are lightweight Alpine-style Linux nodes configured through &lt;code&gt;/etc/network/interfaces&lt;/code&gt; and OpenRC&amp;rsquo;s &lt;code&gt;rc-service&lt;/code&gt;. Any emulator that boots Cumulus VX 5.4 with the port mapping in section 2 will work; adjust the host commands if your Linux image uses a different init system or network configuration method.&lt;/p&gt;</description></item><item><title>Perftest_RDMA_Benchmarking</title><link>https://songkou.github.io/posts/perftest/</link><pubDate>Sat, 18 Jul 2026 20:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/perftest/</guid><description>&lt;h2 id="what-is-perftest"&gt;What is perftest?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;perftest&lt;/strong&gt; is the standard micro-benchmark suite for RDMA — it validates and benchmarks InfiniBand, hardware RoCE, and Soft-RoCE links, not ordinary TCP networking. Each tool measures one RDMA verb:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Test&lt;/th&gt;
					&lt;th&gt;Measures&lt;/th&gt;
					&lt;th&gt;Real-world workloads it models&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ib_write_bw&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;RDMA Write bandwidth&lt;/td&gt;
					&lt;td&gt;Data replication, storage writes, GPU/bulk data transfers&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ib_write_lat&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;RDMA Write latency&lt;/td&gt;
					&lt;td&gt;Updating remote memory — small one-sided writes&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ib_read_bw&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;RDMA Read bandwidth&lt;/td&gt;
					&lt;td&gt;Distributed storage and database reads, remote memory access&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ib_read_lat&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;RDMA Read latency&lt;/td&gt;
					&lt;td&gt;Fetching remote memory — storage/database-style lookups&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ib_send_bw&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Send/Receive bandwidth&lt;/td&gt;
					&lt;td&gt;MPI messages, RPC, request queues&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ib_send_lat&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Send/Receive latency&lt;/td&gt;
					&lt;td&gt;Small request/response round trips — RPC and MPI latency&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ib_atomic_bw&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Atomic operation rate&lt;/td&gt;
					&lt;td&gt;Distributed locks and counters&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ib_atomic_lat&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Atomic latency&lt;/td&gt;
					&lt;td&gt;Synchronization primitives&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="write-read-and-send-are-different-operations"&gt;Write, Read, and Send are different operations&lt;/h3&gt;
&lt;p&gt;The grouping in the table is not accidental — the three verbs have different semantics:&lt;/p&gt;</description></item><item><title>RoCE_Cumulus_Linux</title><link>https://songkou.github.io/posts/roce_cumulus_linux/</link><pubDate>Fri, 17 Jul 2026 20:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/roce_cumulus_linux/</guid><description>&lt;h2 id="part-1-roce-and-rdma-fundamentals"&gt;Part 1: RoCE and RDMA fundamentals&lt;/h2&gt;
&lt;p&gt;In the context of &lt;strong&gt;NVIDIA/Cumulus Linux and HPC networking&lt;/strong&gt;, &lt;strong&gt;RoCE&lt;/strong&gt; stands for:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;RoCE = RDMA over Converged Ethernet&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It is widely used in &lt;strong&gt;AI clusters, HPC, GPU clusters, storage networks, and low-latency data centers&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="what-is-roce"&gt;What is RoCE?&lt;/h3&gt;
&lt;p&gt;RoCE allows &lt;strong&gt;RDMA (Remote Direct Memory Access)&lt;/strong&gt; to run over an Ethernet network.&lt;/p&gt;
&lt;p&gt;Normally, when one server sends data to another:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Application
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TCP/IP Stack
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Kernel
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NIC
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Ethernet
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The CPU has to copy memory, handle interrupts, process TCP/IP, and switch between user and kernel space. This consumes CPU cycles and adds latency.&lt;/p&gt;</description></item><item><title>TCP_Three_Way_Handshake_and_Four_Way_Termination</title><link>https://songkou.github.io/posts/tcp_three_way_handshake_and_four_way_termination/</link><pubDate>Thu, 16 Jul 2026 00:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/tcp_three_way_handshake_and_four_way_termination/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Study notes rewritten in English.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="tcp-basics"&gt;TCP basics&lt;/h2&gt;
&lt;h3 id="what-is-tcp"&gt;What is TCP?&lt;/h3&gt;
&lt;p&gt;TCP is a &lt;strong&gt;connection-oriented&lt;/strong&gt;, &lt;strong&gt;reliable&lt;/strong&gt;, &lt;strong&gt;byte-stream&lt;/strong&gt; transport-layer
protocol.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Connection-oriented&lt;/strong&gt; – strictly one-to-one. Unlike UDP, one host cannot
broadcast to many hosts over a single TCP connection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reliable&lt;/strong&gt; – no matter what happens on the link, TCP guarantees a segment
eventually reaches the receiver.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Byte stream&lt;/strong&gt; – the OS may split a user message into several TCP segments.
Segments are ordered: if the previous segment hasn&amp;rsquo;t arrived, a later one that
did arrive cannot be handed up yet; duplicate segments are dropped.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;IP is &lt;strong&gt;unreliable&lt;/strong&gt; — it doesn&amp;rsquo;t guarantee delivery, ordering, or integrity. If
you need reliability, the transport-layer TCP has to provide it.&lt;/p&gt;</description></item><item><title>How_Linux_Sends_and_Receives_Network_Packets</title><link>https://songkou.github.io/posts/how_linux_sends_and_receives_network_packets/</link><pubDate>Sat, 11 Jul 2026 07:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/how_linux_sends_and_receives_network_packets/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Study notes rewritten in my own words&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="network-models"&gt;Network models&lt;/h2&gt;
&lt;p&gt;To let all kinds of devices talk to each other over a network, the ISO defined
the &lt;strong&gt;OSI reference model&lt;/strong&gt; with 7 layers. Each layer has a single job:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Application&lt;/strong&gt; – provides a uniform interface to programs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presentation&lt;/strong&gt; – converts data into a format another system understands&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Session&lt;/strong&gt; – establishes, manages and terminates sessions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transport&lt;/strong&gt; – end-to-end data transfer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Network&lt;/strong&gt; – routing, forwarding, fragmentation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data link&lt;/strong&gt; – framing, error detection, MAC addressing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Physical&lt;/strong&gt; – transmits frames over the physical medium&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OSI is mostly a &lt;em&gt;conceptual&lt;/em&gt; model — it never shipped a concrete implementation.
What we actually use is the simpler &lt;strong&gt;TCP/IP model&lt;/strong&gt; with 4 layers, and the Linux
stack is built to match it:&lt;/p&gt;</description></item><item><title>PIM Sparse Mode in Detail</title><link>https://songkou.github.io/posts/pim-sparse-mode-detailed/</link><pubDate>Mon, 20 Nov 2023 12:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/pim-sparse-mode-detailed/</guid><description>&lt;p&gt;A step-by-step walk through the PIM Sparse Mode (PIM-SM) control plane — from a receiver&amp;rsquo;s IGMP report through shared-tree construction, source registration, the native source tree, and the optional shortest-path-tree switchover — then how to make the Rendezvous Point redundant with Anycast RP. For the Designated Router versus Assert election and multicast-ECMP behavior, see the companion post &lt;a href="https://songkou.github.io/posts/pim-dr-assert-multicast-ecmp/"&gt;PIM DR, Assert, and Multicast ECMP&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="1-overview"&gt;1. Overview&lt;/h2&gt;
&lt;p&gt;Protocol Independent Multicast Sparse Mode (PIM-SM) builds multicast distribution trees only where receivers explicitly request traffic. It is intended for networks where multicast receivers are sparsely distributed.&lt;/p&gt;</description></item><item><title>PIM DR, Assert, and Multicast ECMP</title><link>https://songkou.github.io/posts/pim-dr-assert-multicast-ecmp/</link><pubDate>Sat, 11 Nov 2023 12:00:00 +0800</pubDate><guid>https://songkou.github.io/posts/pim-dr-assert-multicast-ecmp/</guid><description>&lt;p&gt;Several questions come up whenever two PIM routers share a receiver VLAN over equal-cost paths: if the &lt;strong&gt;DR&lt;/strong&gt; and the &lt;strong&gt;Assert winner&lt;/strong&gt; are different routers, which one forwards the multicast? Does a single stream ever spread its packets across both paths? If you change nothing, do 500 streams split evenly across the two routers—or does that take configuration? And what changes if the switch becomes a Layer 3 router? This post works through each, with the underlying PIM mechanics and a clear line between what the standards mandate and what is vendor-specific.&lt;/p&gt;</description></item><item><title>Load_Balancing</title><link>https://songkou.github.io/posts/load_balancing/</link><pubDate>Sun, 20 Aug 2023 21:29:04 +0800</pubDate><guid>https://songkou.github.io/posts/load_balancing/</guid><description>&lt;h3 id="loadbalancing"&gt;LoadBalancing&lt;/h3&gt;
&lt;p&gt;Load balancing (Server Load Balance) means to balance and distribute the load (work tasks) to multiple operating units for execution, so that the entire system can complete the task together.&lt;/p&gt;
&lt;p&gt;Load balancing provides a cheap and effective method to expand the bandwidth of network devices and servers, increase throughput, enhance network data processing capabilities, and improve network flexibility and availability. According to the different implementation purposes of load balancing, load balancing can be divided into two types. One is task sharing, in which a large amount of concurrent access or data traffic is shared among multiple devices for separate processing, and each device completes a relatively complete request response process; the other is collaborative computing, which shares a heavy-load computing task. Perform parallel processing on multiple devices. After each device completes processing, the results are summarized and calculated.&lt;/p&gt;</description></item><item><title>CDN_Cache_Cluster_communication</title><link>https://songkou.github.io/posts/cdn_cache_cluster_communication/</link><pubDate>Mon, 16 May 2022 12:29:04 +0800</pubDate><guid>https://songkou.github.io/posts/cdn_cache_cluster_communication/</guid><description>&lt;h3 id="cache-cluster-communication"&gt;Cache Cluster Communication&lt;/h3&gt;
&lt;p&gt;The main goal of collaborative interaction within the Cache server cluster is to establish a good communication channel between each server node, communicate in a timely manner about the content cache on the server, and provide users with a good service experience through collaboration between servers in the cluster.&lt;/p&gt;
&lt;p&gt;Communication between Cache server clusters can be divided into two categories: loose coupling and tight coupling. Among them, loosely coupled Cache communication protocols based on network messages include: ICP, HTCP, Cache Digest, Cache Pre-filling, etc. Tightly coupled Cache communication protocols managed by specific data structures are represented by CARP. Below is just a brief introduction to these communication protocols, focusing on their working principles, advantages and disadvantages.&lt;/p&gt;</description></item><item><title>Low_Latency_Network_Architecture</title><link>https://songkou.github.io/posts/low_latency_network_architecture/</link><pubDate>Thu, 10 Mar 2022 20:04:01 +0800</pubDate><guid>https://songkou.github.io/posts/low_latency_network_architecture/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Originally published in March 2022. Substantially revised in July 2026: the architecture analysis was rebuilt around current exchange designs (Eurex Co-location 2.0, CME MSGW, Nasdaq NY11-4), the sequencer pattern, traffic-plane segregation, and the hybrid FPGA fast path, with refreshed vendor and latency data. Sources are linked inline; latency figures from vendor datasheets are best-case specs, not independent measurements.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-what-a-trading-system-architecture-optimizes-for"&gt;1. What a trading system architecture optimizes for&lt;/h2&gt;
&lt;p&gt;Below is a simple sketch of the key components of an exchange trading system. Legacy systems ran everything on centralized servers; the network carries market data, order routing and clearing.&lt;/p&gt;</description></item><item><title>CDN_Notes</title><link>https://songkou.github.io/posts/cdn_notes/</link><pubDate>Sat, 08 Jan 2022 02:36:13 +0800</pubDate><guid>https://songkou.github.io/posts/cdn_notes/</guid><description>&lt;h1 id="content-delivery-network"&gt;Content Delivery Network&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Below is all my personal understandings&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="full-name-content-delivery-network-or-content-ddistribute-network"&gt;Full Name :Content Delivery Network or Content Ddistribute Network&lt;/h3&gt;
&lt;p&gt;Basically, CDN solution solves a common issue: There will always be a bottleneck on the internet, due to different service providers, or geo locations, etc. Which impact the network performance. On the other hand, Latency control is one of the most important indicators nowadays.
With CDN, You can deliver a more reliable and stable network by putting certain Servers in certain places in the internet, and building a intelligent network on top of the internet.
CND can redirect customer reuquests to the fastest server(maybe not the closest), based on network throughput, response time, latency, loadbalancing status, physical distance(main factor that impact latency).&lt;/p&gt;</description></item></channel></rss>