Fixing YouTube Slowdowns at the Router Level

Фотография маршрутизатора — иллюстрация к разбору проблемы замедления YouTube на уровне домашнего роутера

Fixing YouTube Slowdowns at the Router Level

Greetings to all! On the night of August 1st, YouTube suddenly started lagging terribly. This was frustrating, because I rely on YouTube daily for streaming and other content. So, like any rational internet user, I wanted to find the root cause and fix it. In this article, I’ll walk you through the exact steps I took. You’ll learn how to resolve YouTube slowdowns at the router level. As a result, you can apply the same fix to your own home network.

What Happened?

First, let’s break down what might be happening and why YouTube starts “buffering.” The issue isn’t just a random slowdown. Instead, it’s often the result of your ISP (Internet Service Provider) applying a technique called **DPI (Deep Packet Inspection)**. DPI allows ISPs to analyze network traffic content. As a result, they can tell what type of data you’re sending — for example, streaming video or regular web browsing.

The root cause lies in how your device establishes **SSL connections**. This is the type of connection used when you access websites over HTTPS. During this process, your browser sends the domain name in plaintext through **SNI (Server Name Indication)**. This mechanism helps servers identify which domain you’re trying to reach. However, it also lets your ISP read that same information. When your ISP sees the domain `googlevideo.com`, which delivers YouTube’s video content, it may apply traffic shaping or throttling. Consequently, your connection slows down and video performance suffers.

How to Verify the Issue?

You can verify the problem locally using the `curl` command, which helps download files from the internet. First, try downloading a test file.

$ curl https://speedtest.selectel.ru/100MB -o/dev/null

If the download speed is high, your internet connection is generally fine. Next, run the same test against a YouTube domain.

$ curl — connect-to ::speedtest.selectel.ru https://manifest.googlevideo.com/100MB -k -o/dev/null

You’ll likely notice a significant drop in speed. That drop is a clear sign that your ISP is throttling traffic to `googlevideo.com`.

Now that we’ve identified the problem, let’s fix it. The main task is to mask or obfuscate your traffic, so your ISP can’t tell you’re connecting to YouTube.

How to Fix It?

The issue clearly relates to DPI applied by your ISP. Fortunately, several methods exist to bypass or disguise this traffic. One approach uses software that modifies data packets, so DPI systems can no longer analyze their contents correctly. A well-known project for this is **Goodbye DPI**, which works well on Windows systems. However, I wanted to fix the issue for my entire home network, not just individual devices. Therefore, I needed a solution I could implement directly on the router.

My Zyxel Keenetic Giga III Router and OPKG

My router is the **Zyxel Keenetic Giga III**, which is about ten years old. Despite its age, it has been a rock-solid performer. I considered upgrading, but instead I discovered something surprising: the **OPKG** package manager lets me install **OpenWrt** binaries directly on it. This was a pleasant discovery. As a result, I could install the necessary tools to bypass DPI directly on the router.

Installing OPKG on Zyxel Keenetic Giga III

To start, I accessed the router’s web interface and installed all the required components for OPKG. However, the router’s internal memory is quite limited. So, I used a USB flash drive formatted to **EXT4** instead. On the flash drive, I created an `install` directory and downloaded the necessary binaries from the **Entware** project. For my **mipsel** platform, I found the installer here: [EN_mipsel-installer.tar.gz](https://bin.entware.net/mipselsf-k3.4/installer/EN_mipsel-installer.tar.gz).

After installing OPKG and plugging in the flash drive, the router automatically extracted the archive. I was then able to connect via **SSH** on port 222.

Verifying the Correct Setup

If you select the wrong platform, the error message `exec format error` will let you know. If it succeeds, however, you’ll be able to log into the system through SSH with username `root` and password `keenetic`. Once logged in, immediately change the password with the `passwd` command.

Now that I had a nearly full Linux system running on the router, I was ready to install the necessary software to bypass DPI.

Installing and Configuring DPI Bypass Software

With my router running Linux, the next step was to install software to bypass DPI. First, install a few required packages.

# opkg update
# opkg install ipset curl gzip grep git-http

If space is limited on the router, you can manually transfer the necessary binaries from your computer using **scp**. For example, run this command.

scp -P 222 ./tpws root@192.168.0.1:/opt/root/

Choosing DPI Bypass Software

Among the various projects for bypassing DPI, I found **zapret** particularly useful. It’s a simple project with pre-compiled binaries for various platforms, so you can install it easily. I decided to use the **tpws** service from zapret, because it modifies network packets to fool DPI systems.

Installing zapret and Configuring the tpws Service

To install zapret on the router, run the following commands.

# git clone https://github.com/bol-van/zapret.git
# cd zapret
# ./install_bin.sh

Next, create a script to automatically start the **tpws** service.

# vi /opt/etc/init.d/S51tpws

Then, insert the following code.

#!/bin/sh

SCRIPT=/opt/root/git/zapret/tpws/tpws
PIDFILE=/var/run/tpws.pid
ARGS=” — daemon — bind-addr 192.168.0.1 — port 999 — disorder — tlsrec=sni — split-pos=2 — pidfile $PIDFILE”

start() {
if [ -f $PIDFILE ] && kill -0 $(cat $PIDFILE); then
echo ‘Service TPWS is already running’ >&2
return 1
fi
$SCRIPT $ARGS
iptables -t nat -A PREROUTING -i br0 -p tcp — dport 80 -j REDIRECT — to-port 999
iptables -t nat -A PREROUTING -i br0 -p tcp — dport 443 -j REDIRECT — to-port 999
echo ‘Started TPWS service’
}

stop() {
if [ ! -f “$PIDFILE” ] || ! kill -0 $(cat “$PIDFILE”); then
echo ‘Service TPWS is not running’ >&2
return 1
fi
echo ‘Stopping TPWS service…’
kill -15 $(cat “$PIDFILE”) && rm -f “$PIDFILE”
iptables -t nat -D PREROUTING -i br0 -p tcp — dport 80 -j REDIRECT — to-port 999
iptables -t nat -D PREROUTING -i br0 -p tcp — dport 443 -j REDIRECT — to-port 999
}

status() {
if [ -f $PIDFILE ] && kill -0 $(cat $PIDFILE); then
echo ‘Service TPWS is running’
else
echo ‘Service TPWS is stopped’
fi
}

Next, make the script executable.

# chmod +x /opt/etc/init.d/S51tpws

Finally, start the service.

# /opt/etc/init.d/S51tpws start

Now, tpws processes all HTTP and HTTPS traffic on ports 80 and 443. It disguises the packets, which helps you bypass your ISP’s DPI systems.

Conclusion

After setting everything up, I noticed a significant improvement in YouTube performance. Videos loaded quickly, without any buffering. This method of fooling DPI by modifying network packets proved effective for my entire home network. Best of all, I didn’t need to configure individual devices.

If your ISP is throttling YouTube or other services, I highly recommend trying this approach. By running software like **zapret** and **tpws** on your router, you can mask your traffic. As a result, you bypass throttling for every device on your network.

Information reviewed and updated: August 28, 2026.

Published by: REVOLD BLOG – blog.revold.us
Powered by
AIR RISE INC & REVOLD AI
Sponsored:
CORPIUS

Author: Roman Kravchina