OpenWrt Multi-Dial on a Single Line: Combining Bandwidth with mwan3

OpenWrt Multi-Dial on a Single Line: Combining Bandwidth with mwan3

Goal: dial multiple PPPoE connections over a single broadband line and combine the speed
Result: downstream throughput near the theoretical multiple (whether it actually combines depends on your carrier's policy)
Prerequisite: the ONT is already in bridge mode and OpenWrt can dial successfully
Difficulty: medium to high — this needs config file edits, not a few clicks
Time needed: about 60 minutes

1. First, why does multi-dial actually add speed?

How carriers rate-limit

A broadband account's speed limit usually operates on two levels:

Level Description Account-level limit The maximum rate for one account, say 500Mbps Port-level limit The physical ceiling of the ONT's PON port, usually far above the account rate

The principle behind multi-dial: open several PPPoE connections with the same account.
If the carrier allows it, each connection gets its own share of bandwidth,
and mwan3 then spreads traffic across those connections, so the total speed adds up.

But the key precondition is that the carrier must allow it

Many carriers restrict "one session per account" at the BRAS.
In that case you can only bring up one connection and multi-dial is a non-starter.

Situation Result The carrier allows multiple sessions ✅ Multi-dial works and speeds combine The carrier limits to a single session ❌ Only one connection comes up The carrier allows multiple sessions but shares bandwidth ⚠️ Multi-dial works, but speeds do not combine

So the first step is not configuring OpenWrt — it is confirming whether your line supports multi-dial at all.

2. Checking the prerequisites (10 minutes)

1. The ONT must already be in bridge mode

This is a hard prerequisite. If the ONT is still in router mode, multi-dial is blocked at that layer.

For the full procedure, see the ONT bridge mode guide. The key points:

  • Obtain the ONT super password
  • Switch the internet VLAN to bridge mode and let your own router dial
  • Back up the original configuration (important)

2. Test whether the carrier allows multi-dial

The simplest test:

  1. Connect a computer directly to the ONT's LAN port and dial with the broadband account (Windows broadband connection)
  2. Have the router dial at the same time (same account)
  3. If both come online → the carrier allows multi-dial

You can also test with a manual multi-dial in OpenWrt (see the method in section 4).

3. Prepare the hardware

Approach Description Multiple physical NICs The most robust, but needs several ports wired to the same switch macvlan virtual interfaces (recommended) A single NIC is enough; software creates the extra MACs

The advantage of macvlan: no extra network card needed — one WAN port can spawn multiple virtual interfaces.

4. Check your OpenWrt version

This step matters — mwan3 comes in an iptables build and an nftables build:

# Check the firewall backend
opkg list-installed | grep -E 'iptables|nftables'
If you have Install this mwan3 iptables mwan3 (iptables build) nftables mwan3 (nftables build)

Installing the wrong build means the rules never take effect — this is the most common trap.

3. Installing mwan3

SSH into OpenWrt and run:

opkg update
opkg install mwan3
opkg install luci-app-mwan3

If you need macvlan virtual interfaces (multi-dial on a single NIC):

opkg update
opkg install kmod-macvlan

These commands come from the official OpenWrt documentation.

Step 1: create the macvlan virtual interface

Edit /etc/config/network and add the virtual device:

config device 'veth5'
    option name 'veth5'
    option type 'macvlan'
    option ifname 'eth1'      # change to your WAN port name

config device 'veth7'
    option name 'veth7'
    option type 'macvlan'
    option ifname 'eth1'

Explanation (from the official documentation example):

  • veth5 / veth7 is the virtual interface name; you can choose your own
  • type 'macvlan' indicates this is a macvlan type
  • ifname 'eth1' must be changed tothe physical port your ONT is actually connected to

How to find the physical port name:

ip link show
uci show network | grep ifname

Step 2: create a dial-up for each virtual interface

Continue editing /etc/config/network and add the extra WAN interfaces:

config interface 'wan1'
    option ifname 'veth5'
    option proto 'pppoe'
    option username 'your_broadband_username'
    option password 'your_broadband_password'
    option ipv6 '1'

config interface 'wan2'
    option ifname 'veth7'
    option proto 'pppoe'
    option username 'your_broadband_username'    # the same account
    option password 'your_broadband_password'
    option ipv6 '1'

Note: the username and password match the main WAN (multi-dial uses the same account).

Step 3: verify that multi-dial worked

# Restart the network
/etc/init.d/network restart

# Wait 30 seconds, then check the interface status
ifstatus wan1 | grep -E 'up|address'
ifstatus wan2 | grep -E 'up|address'

# Or just look at whether they got different IPs
ip addr show veth5
ip addr show veth7

Signs of success:

  • Both interfaces are up
  • They obtained different public IPs (this is the key point)

If the second one will not come up:

  • The carrier is limiting you to one session → this line cannot multi-dial
  • Or you need to stagger the dial times (some BRAS units require it)

5. Method two: multiple physical NICs

If the router has several ports, you can run a cable from each to the ONT or switch:

config interface 'wan1'
    option ifname 'eth1'      # physical NIC
    option proto 'pppoe'
    option username 'username'
    option password 'password'

config interface 'wan2'
    option ifname 'eth2'      # the other physical NIC
    option proto 'pppoe'
    option username 'username'
    option password 'password'

Advantages: no macvlan needed, and it is more stable
Drawbacks: you need several ports, and all of them must reach the ONT's network

6. Configuring mwan3 load balancing

Once the interfaces are up, use mwan3 to spread traffic across the lines.

Step 1: identify the mwan3 interfaces

Edit /etc/config/mwan3:

config interface 'wan1'
    option enabled '1'
    list track_ip '1.0.0.1'
    list track_ip '1.1.1.1'
    list track_ip '208.67.222.222'
    list track_ip '208.67.220.220'
    option family 'ipv4'

config interface 'wan2'
    option enabled '1'
    list track_ip '1.0.0.1'
    list track_ip '1.1.1.1'
    list track_ip '208.67.222.222'
    list track_ip '208.67.220.220'
    option family 'ipv4'

What track_ip is: mwan3 uses these IPs for connectivity probing.
If one WAN fails its probe, mwan3 automatically shifts traffic to the other lines.

(These IPs are the examples from the official docs: Cloudflare's 1.1.1.1, OpenDNS's 208.67.x.x, and so on.)

Step 2: configure members and weights

config member 'wan1_m1_w3'
    option interface 'wan1'
    option metric '1'
    option weight '3'        # weight: 3 shares

config member 'wan2_m1_w3'
    option interface 'wan2'
    option metric '1'
    option weight '3'        # weight: 3 shares

weight sets how traffic is divided:

Configuration Effect Both set to weight '3' 50% each wan1 is 3 and wan2 is 1 wan1 gets 75%, wan2 gets 25%

If the two lines have different speeds (say 500M and 300M),
weighting them in proportion to speed works better.

Step 3: configure a policy

config policy 'balanced'
    list use_member 'wan1_m1_w3'
    list use_member 'wan2_m1_w3'
    option last_resort 'unreachable'

Step 4: configure a rule

config rule 'default_rule_v4'
    option dest_ip '0.0.0.0/0'
    option family 'ipv4'
    option use_policy 'balanced'

What this rule means: all outbound IPv4 traffic uses the balanced policy (load balancing).

Step 5: global settings

config globals 'globals'
    option local_source 'lan'
    option mmx_mask '0x3F00'

mmx_mask is the bitmask mwan3 uses to mark traffic; the official default is 0x3F00.
Do not change it unless it conflicts with another plugin that also uses firewall marks.

Step 6: restart and verify

/etc/init.d/mwan3 restart
mwan3 status

mwan3 status should show:

  • Both interfaces are online
  • Traffic counters are present

Note: if it shows offline, it usually means track_ip fails its probe;
you can switch to a stable domestic IP instead (for example 223.5.5.5 Alibaba DNS).

7. Verifying the speed gain

Use a speed test tool

# Test from a LAN device (do not test on the router - the CPU becomes the bottleneck)
# Or use iperf3 for a multi-threaded test
iperf3 -c speedtest_server -P 8

Use a multi-threaded speed test (a single thread only uses one line, so it cannot show combining).

The key point: single-thread versus multi-thread

Test method Result Single-threaded download Only saturates one line Multi-threaded download Reaches the combined total speed

This explains a common confusion:
"I clearly got multi-dial working, so why is my download still 500M?"
— because you are using a single-threaded download, which only ever uses one line.

mwan3 balances loadper connection:
the same TCP connection always uses one line; only different connections get spread out.

Check whether the NAT type changed

Multi-dial can change your NAT type; check it with the NAT type test tool.

If it was NAT1 before, multi-dial may turn it into NAT3 — because traffic leaving via several lines produces inconsistent source addresses.

8. Side effects and risks of multi-dial

This section is rarely covered in other guides, but it matters.

1. Risk of the carrier blocking you

Some carriers prohibit multi-dial in their terms of service.

Risk level Situation Low The carrier tacitly permits it (true in many regions) Medium Rate-limited once multi-dial is detected High Classified as abnormal use, service suspended or rectification demanded

Advice:

  • Do not dial too many (2–3 is usually safe; 10+ is easily detected)
  • Do not saturate the link for long periods
  • If you are rate-limited or cut off, turn multi-dial off first and then call support

2. Impact on IPTV

Multi-dial changes your network topology, which can cause:

  • The IPTV VLAN being disturbed by multi-dial traffic
  • The set-top box failing to join IGMP multicast

If you also use IPTV, we suggest:

  • Exclude the IPTV interface from mwan3 (keep it out of load balancing)
  • Or switch to multicast-to-unicast; see the NAS multicast-to-unicast guide and use multicast-to-unicast instead

3. Impact on IPv6

Multi-dial affects IPv6 fairly strongly:

  • Each PPPoE connection receives a different IPv6 prefix (PD)
  • Devices end up with several IPv6 addresses
  • This can lead to confusing IPv6 routing

Advice:

  • If you do not use IPv6 much, configure mwan3 to load-balance IPv4 only
  • Use the IPv6 test tool to verify connectivity after multi-dial

4. Impact on remote NAS access

This is the most easily overlooked trap:

After multi-dial you have several public IPs, but DDNS can only resolve to one.
If the IP DDNS resolves to does not match your actual egress, remote access will fail.

Solutions:

  • Create a port forwarding policy in mwan3 so specific traffic always uses one line
  • Or attach DDNS to only one line and use the others purely for download acceleration

9. FAQ

Q1: The speed did not change after multi-dial?

Troubleshoot in order:

  1. Confirm multiple connections really came up — mwan3 status check that all show online
  2. Confirm you got different public IPs — the same IP means multi-dial did not really happen
  3. Use a multi-threaded speed test — a single thread only uses one line
  4. Confirm the carrier is not applying an account-level limit

Q2: Why do only 1–2 connections come up?

The most common reason: the carrier limits concurrent sessions at the BRAS.

Other possibilities:

  • MAC address conflicts in macvlan (each virtual port should have its own MAC)
  • Dialling too frequently and getting temporarily blocked
  • A session limit on the ONT itself

Q3: Will the carrier ban my account for multi-dial?

Possibly, depending on carrier policy.

Risk warning: some carriers explicitly prohibit multi-dial in their terms of service.
Keep it to 2–3 connections and avoid saturating the link for long periods.
If the carrier contacts you, stop multi-dial immediately.

Q4: IPTV stopped working after multi-dial?

Cause: multi-dial traffic is interfering with the IPTV VLAN.

Fix:

  1. Exclude the IPTV interface in mwan3
  2. Or see the NAS multicast-to-unicast guide

Q5: Will IPv6 be affected?

Yes. Multi-dial produces multiple IPv6 prefixes, which can confuse routing.

Advice: load-balance IPv4 only in mwan3.
Verification tool: IPv6 connectivity test

Q6: What hardware does a software router need?

Multi-dial is not CPU-intensive (it mainly loads the network forwarding path).

Scenario Recommendation Below gigabit An N100-class software router is enough Multi-dial plus gigabit and above J4125 or better, and 2.5G ports Running other services at the same time Leave CPU headroom

For benchmark data on specific models, see the NAS CPU performance ladder

Q7: Can I still do port forwarding after multi-dial?

Yes, but watch out for the egress IP problem.

With several public IPs, inbound access may only reach one of them.

Advice: use mwan3 rules to pin a specific service to one line.

Q8: What if mwan3 shows offline?

It usually means the track_ip probe is failing.

The official examples use foreign IPs (1.1.1.1, 208.67.x.x), which may be unreachable domestically.

Switch to stable domestic IPs:

list track_ip '223.5.5.5'      # Alibaba DNS
list track_ip '119.29.29.29'   # Tencent DNS

10. Summary

The three prerequisites for multi-dial

# Prerequisite 1 The ONT is already in bridge mode 2 The carrier allows multi-dial (this is the critical one — if you cannot prove it, do not bother) 3 The mwan3 build matches your firewall backend (iptables / nftables)

The three most common traps

  1. A single-threaded speed test shows no combining — mwan3 balances load per connection
  2. Installing the wrong mwan3 build — the iptables build does nothing on an nftables system
  3. DDNS points at only one IP — remote access may fail after multi-dial

One honest word

Multi-dial is not magic. Its results depend entirely on carrier policy:

  • The carrier allows it → you may double your speed
  • The carrier restricts it → not even one connection comes up
  • The carrier tolerates it but shares bandwidth → connections come up, but speed does not improve

Before spending time on configuration, test whether multi-dial is possible using the method in section 2.
That can save you several hours.