Commit f7e11cecff
Verified · cmc
Layout: unified · split
content/blog/2026-07-30-10gbps.org added +249
| @@ -0,0 +1,249 @@ | ||
| 1 | #+date: [2026-07-30 Thu 17:14:00] | |
| 2 | #+title: Upgrading My Homelab to 10 Gbps | |
| 3 | #+description: Moving my homelab off 1 Gbps and onto a 10 Gbps backbone. | |
| 4 | #+slug: 10gbps | |
| 5 | #+filetags: :self-hosting: | |
| 6 | ||
| 7 | * Why 10 Gbps? | |
| 8 | ||
| 9 | The short answer: fiber finally became available at my current residence, so I | |
| 10 | jumped on it immediately. | |
| 11 | ||
| 12 | The slightly longer answer is that I'd previously enjoyed proper 1 Gbps fiber, | |
| 13 | but for a while now I'd been stuck limping along on "1 Gbps" cable from Cox | |
| 14 | that, in reality, often crawled along at 100 Mbps regardless of what I did to | |
| 15 | fix it. New modem, new cables, different ports, calls to support - nothing | |
| 16 | mattered. It ran at whatever speed it felt like that day. | |
| 17 | ||
| 18 | So when [[https://fiber.google.com][Google Fiber]] showed up in my neighborhood, I ordered the 8 Gbps package | |
| 19 | immediately. I'll upgrade to their 10 Gbps package the moment it's released, but | |
| 20 | I'm not exactly suffering in the meantime. | |
| 21 | ||
| 22 | A quick note on the title before we go further: my /internet/ is 8 Gbps for now, | |
| 23 | but this post is really about rebuilding my /internal/ network to 10 Gbps end to | |
| 24 | end. The WAN is just the excuse to upgrade everything. | |
| 25 | ||
| 26 | #+caption: My WAN status over the past month. | |
| 27 | #+attr_html: :alt A chart of my WAN status and activity over the past month. | |
| 28 | https://img.cleberg.net/blog/20260730-10gbps/wan_history.webp | |
| 29 | ||
| 30 | In the screenshot above, you can see that Google Fiber was installed on 7/20 and | |
| 31 | UniFi entered WAN failover mode (the blue bar) and then I unplugged Cox on 7/22, | |
| 32 | resulting in the green Google Fiber bar. | |
| 33 | ||
| 34 | As you can also see, Cox was a /train wreck/ - cycling between yellow | |
| 35 | (disconnections, lag, etc.) and red (no internet connection) for the previous | |
| 36 | month. | |
| 37 | ||
| 38 | * What I Was Running Before | |
| 39 | ||
| 40 | Nothing exotic. My network was built entirely on 1 Gbps gear: | |
| 41 | ||
| 42 | - A 24-port UniFi switch in the rack. | |
| 43 | - Two 8-port UniFi switches serving other rooms. | |
| 44 | - A Cox "1 Gbps" WAN that, as mentioned, frequently delivered closer to 100 | |
| 45 | Mbps. | |
| 46 | ||
| 47 | It worked. For years, it was more than enough - I've written before about how my | |
| 48 | [[https://cleberg.net/blog/homelab-maintenance.html][homelab basically maintains itself]], and the network was no exception. But once I | |
| 49 | had real bandwidth coming into the house, 1 Gbps internally became the | |
| 50 | bottleneck instead of the ISP. | |
| 51 | ||
| 52 | As a result, I installed the hardware I'll list in the next section. You can see | |
| 53 | the 10G connections in blue and the 1G connections in green. | |
| 54 | ||
| 55 | #+caption: My homelab infrastructure. | |
| 56 | #+attr_html: :alt A network diagram of my homelab infrastructure. | |
| 57 | https://img.cleberg.net/blog/20260730-10gbps/infrastructure.webp | |
| 58 | ||
| 59 | * The Hardware | |
| 60 | ||
| 61 | Everything here is UniFi. I'm already knee-deep in the ecosystem, and at this | |
| 62 | point fighting it would cost me more time than it's worth. Staying in one | |
| 63 | platform means everything shows up in a single controller and I don't have to | |
| 64 | think about it - which is exactly how I like my homelab. | |
| 65 | ||
| 66 | #+caption: My homelab rack. | |
| 67 | #+attr_html: :alt A photo of my homelab rack of UniFi gear. | |
| 68 | https://img.cleberg.net/blog/20260730-10gbps/rack.webp | |
| 69 | ||
| 70 | This rack shows: | |
| 71 | - UDM Pro router. | |
| 72 | - 10G 24-port switch. | |
| 73 | - Switch panel with keystone jacks. | |
| 74 | - 1G 24-port switch. | |
| 75 | - My server. | |
| 76 | ||
| 77 | This is *before* the Google Fiber installation, so you can see that the WAN RJ45 | |
| 78 | port is in use on the UDM Pro instead of the SFP+ port. | |
| 79 | ||
| 80 | I also removed the old 1G switch after this picture and plan to sell it. I just | |
| 81 | didn't want to box it up quite yet when I took this photo. | |
| 82 | ||
| 83 | ** Switch | |
| 84 | ||
| 85 | Two switches did the heavy lifting for the upgrade: | |
| 86 | ||
| 87 | - [[https://store.ui.com/us/en/category/switching-professional-max-xg/products/usw-pro-hd-24-poe?variant=usw-pro-hd-24-poe][USW Pro HD 24 PoE]]: the new core switch in the rack, replacing my old 1 Gbps | |
| 88 | 24-port unit. | |
| 89 | - [[https://store.ui.com/us/en/category/switching-utility/products/usw-pro-xg-8-poe?variant=usw-pro-xg-8-poe][USW Pro XG 8 PoE]]: a smaller 10G switch serving another room, replacing one of | |
| 90 | the old 8-port units. | |
| 91 | ||
| 92 | ** NICs | |
| 93 | ||
| 94 | Neither of my two most important machines shipped with 10G, so both needed a new | |
| 95 | network card: | |
| 96 | ||
| 97 | - *Windows gaming PC*: an Intel X520-DA1, a 10G SFP+ card. | |
| 98 | - *Server*: an Intel X710-DA2, a dual-port 10G SFP+ card. | |
| 99 | ||
| 100 | Both are enterprise Intel cards you can find used for very little money, which | |
| 101 | is half the reason I went with them. | |
| 102 | ||
| 103 | The Ubuntu server already had Intel drivers installed, so I wasn't required to | |
| 104 | install anything. I simply slotted the NIC into the PCIe port on the motherboard | |
| 105 | and it worked. | |
| 106 | ||
| 107 | #+caption: The 10G NIC in my server. | |
| 108 | #+attr_html: :alt A photo of the 10G NIC installed in my server. | |
| 109 | https://img.cleberg.net/blog/20260730-10gbps/server_nic.webp | |
| 110 | ||
| 111 | However, the Windows machine was a different story. It did come with an | |
| 112 | installation CD-ROM, but I of course ignored that since I have no disc drive in | |
| 113 | my PC. I tried to find the right drivers online, but Intel's websites are a vast | |
| 114 | wasteland of useless downloads and circular links. | |
| 115 | ||
| 116 | Eventually, I pulled a USB-C disc reader from storage and used the CD, which | |
| 117 | magically installed on the first try and everything started working from there. | |
| 118 | ||
| 119 | That'll teach me (not really). | |
| 120 | ||
| 121 | #+caption: The 10G NIC in my Windows gaming PC. | |
| 122 | #+attr_html: :alt A photo of the 10G NIC installed in my Windows gaming PC. | |
| 123 | https://img.cleberg.net/blog/20260730-10gbps/desktop_nic.webp | |
| 124 | ||
| 125 | ** Cabling | |
| 126 | ||
| 127 | This is where 10G gets fiddly, and where most of my shopping list ended up. | |
| 128 | Going 10G means leaving RJ45 behind for SFP+ almost everywhere: | |
| 129 | ||
| 130 | - [[https://store.ui.com/us/en/category/accessories-modules-fiber/collections/accessories-pro-direct-attach-cables/products/uacc-cm-rj45-mg?variant=uacc-cm-rj45-mg][SFP+ to RJ45 Adapter]]: bridges the Google Fiber RJ45 handoff into the SFP+ port | |
| 131 | on my UDM Pro. | |
| 132 | - [[https://store.ui.com/us/en/category/accessories-cables-dacs/collections/accessories-pro-patch-cables/products/uacc-cable-patch-el?variant=uacc-cable-patch-el-0dot15m-w][UniFi Etherlighting Patch Cable]]: short in-rack runs between the switch, the | |
| 133 | other rack devices, and the fiber modem. | |
| 134 | - [[https://store.ui.com/us/en/category/accessories-modules-fiber/collections/accessories-pro-direct-attach-cables/products/10gbps-direct-attach-cable?variant=uacc-dac-sfp10-0dot5m][10G Direct Attach Cable (DAC)]]: the short SFP+ runs from the rack switch to the | |
| 135 | server, and from the second switch to the gaming PC. | |
| 136 | - [[https://store.ui.com/us/en/category/accessories-modules-fiber/collections/accessories-pro-direct-attach-cables/products/10-gbps-active-optical-cable?variant=uacc-aoc-sfp10-20m][10G Active Optical Cable (AOC)]]: the long run between the rack and the 8-port | |
| 137 | switch in the other room, where a copper DAC won't reach. | |
| 138 | ||
| 139 | ** Cost | |
| 140 | ||
| 141 | None of this is cheap, so here's the full damage: | |
| 142 | ||
| 143 | | Item | Qty | Price | | |
| 144 | |---------------------------+-----+-----------| | |
| 145 | | USW Pro HD 24 PoE | 1 | $999.00 | | |
| 146 | | USW Pro XG 8 PoE | 1 | $499.00 | | |
| 147 | | SFP+ to RJ45 Adapter | 1 | $65.00 | | |
| 148 | | UniFi Etherlighting Patch | 27 | $112.97 | | |
| 149 | | Cat6A Keystone Coupler | 2 | $78.00 | | |
| 150 | | 10G Direct Attach Cable | 3 | $43.00 | | |
| 151 | | 10G Long-Range DAC (AOC) | 1 | $55.00 | | |
| 152 | | Intel X520-DA1 NIC | 1 | $45.00 | | |
| 153 | | Intel X710-DA2 NIC | 1 | $145.00 | | |
| 154 | |---------------------------+-----+-----------| | |
| 155 | | *Total* | | $2,041.97 | | |
| 156 | ||
| 157 | * The Upgrade | |
| 158 | ||
| 159 | With the parts in hand, the actual topology is straightforward. Bandwidth flows | |
| 160 | in from the street and fans out through the rack: | |
| 161 | ||
| 162 | #+begin_src | |
| 163 | Google Fiber | |
| 164 | │ (RJ45 → SFP+ adapter) | |
| 165 | ▼ | |
| 166 | UDM Pro | |
| 167 | │ (Etherlighting patch) | |
| 168 | ▼ | |
| 169 | USW Pro HD 24 (core switch) | |
| 170 | ├─ DAC ──────────► Server | |
| 171 | ├─ AOC ──────────► USW Pro XG 8 (other room) | |
| 172 | │ └─ DAC ──► Windows Gaming PC | |
| 173 | └─ ETH ──────────► USW 8-port (1G switch) | |
| 174 | #+end_src | |
| 175 | ||
| 176 | The UDM Pro takes the Google Fiber handoff through the RJ45-to-SFP+ adapter, | |
| 177 | then hands everything down to the new 24-port switch over an Etherlighting patch | |
| 178 | cable. From there, the server hangs directly off the core switch on a short DAC, | |
| 179 | and a long active optical cable carries 10G across the house to the second | |
| 180 | switch, which finally feeds my gaming PC. My surviving 1 Gbps 8-port switch | |
| 181 | still hangs off the core switch too, handling everything that doesn't need 10G. | |
| 182 | ||
| 183 | The physical installation was pretty easy. I needed to replace a drive in my | |
| 184 | server's ZFS pool, so I already needed to get inside the rack. Since I don't use | |
| 185 | rails, I had to unscrew and pull out each device by hand. | |
| 186 | ||
| 187 | From there, the NIC (and HDD) installation in the server was seamless. Just pop | |
| 188 | out one of the metal slots on the back of the server, slot the NIC into the PCIe | |
| 189 | lane, and line up the port with the new opening in the back panel. | |
| 190 | ||
| 191 | All in all, it was easy and simple. No physical snags, only one driver issue on | |
| 192 | the Windows machine (which was my fault for ignoring the provided CD), cabling | |
| 193 | runs were easy, and UniFi updates were minimal. | |
| 194 | ||
| 195 | * Benchmarks | |
| 196 | ||
| 197 | Let's nerd out on the numbers. | |
| 198 | ||
| 199 | ** Before | |
| 200 | ||
| 201 | I don't actually have any speed tests from before the upgrade, but the Cox | |
| 202 | connection had degraded even further by the end - down to roughly 70 Mbps for | |
| 203 | the month prior to the upgrade. | |
| 204 | ||
| 205 | Occasionally, I was able to get ~800 Mbps when the connection would work | |
| 206 | properly. | |
| 207 | ||
| 208 | ** After | |
| 209 | ||
| 210 | So, here's the catch. I'm not getting the full 8 Gbps currently. When the Google | |
| 211 | tech installed the modem, we confirmed ~ 8500 Mbps together, which means the | |
| 212 | fiber is working through the ONT and the modem. | |
| 213 | ||
| 214 | However, they would not connect directly to my router, which means the Google | |
| 215 | modem is in bridge mode for now. | |
| 216 | ||
| 217 | The speed test below shows an average speed, where I'm getting 5 to 6 Gbps to my | |
| 218 | router. While not the full 8 Gbps, I'm not saturating it anyway, so I haven't | |
| 219 | dug into my UniFi settings to determine what's causing the difference. | |
| 220 | ||
| 221 | #+caption: Speed test from the UniFi controller. | |
| 222 | #+attr_html: :alt A screenshot of a speed test result from the UniFi controller. | |
| 223 | https://img.cleberg.net/blog/20260730-10gbps/speed_unifi.webp | |
| 224 | ||
| 225 | A supplementary test showing speeds directly to my server: | |
| 226 | ||
| 227 | #+caption: Speed test from my server. | |
| 228 | #+attr_html: :alt A screenshot of a speed test result from my server. | |
| 229 | https://img.cleberg.net/blog/20260730-10gbps/speed_server.webp | |
| 230 | ||
| 231 | * Was It Worth It? | |
| 232 | ||
| 233 | Here's the honest part. | |
| 234 | ||
| 235 | Do I /need/ 10 Gbps between my gaming PC and my server? Probably not. The number | |
| 236 | of times a day I move enough data to saturate even 1 Gbps is small, and for most | |
| 237 | of what I do, this changes nothing I'll consciously notice. | |
| 238 | ||
| 239 | But that was never really the point. I finally have an internet connection that | |
| 240 | delivers what I pay for, and a network that won't be the bottleneck for years to | |
| 241 | come. After spending so long fighting a "1 Gbps" connection that never once hit | |
| 242 | 1 Gbps, there's something deeply satisfying about watching a transfer actually | |
| 243 | move as fast as the hardware allows. | |
| 244 | ||
| 245 | Instead of constantly monitoring speeds and pausing services so our | |
| 246 | work-from-home connections aren't impacted, I can let my server idle at 400 Mbps | |
| 247 | 24/7, not to mention all the other devices in my home. | |
| 248 | ||
| 249 | Was it worth it? For the peace of mind alone: yes. | |