17

Overview

I have a 1 Gbps connection via a Cat 6 Ethernet cable to my MacBook Pro (16-inch, 2019). I am on macOS Big Sur 11.6 on the Intel Core i9 if that helps.

The Ethernet cables connect to the Thunderbolt port via a dock supporting a 1 Gbps networking and my router, switch and modem all support 1 Gbps speeds.

Getting speeds of 1 Gbps

I have tried this with two other docks/Ethernet to Thunderbolt ports and can reproduce the issue.

The issue

Whenever I restart the machine or I freshly connect the dock (or even just the CAT cable to the dock), I get the specified 1 Gbps speeds on my machine.

However, after a few minutes of usage (this varies between 5 - 30 minutes), the speeds drop to 118 Mbps / 118 Mbps.

If I disconnect and reconnect the dock or the network cable, it sometimes fixes the issue and sometimes it doesn't and my speed is limited to 118 Mbps (exact).

The My NetworkAdvanced setting on my Ethernet looks like this:

Network Hardware Settings

And it shows T1000 with duplex. I have tried all suggestions on various Apple forums like this one and they haven't worked for me.

It is like the Mac suddenly decides that it cannot support 1 Gbps and switches to 118 Mbps (why exact 118 Mbps though?).

Speedtest showing speeds of 118 Mbps

What setting can I check/change to fix this issue?

-- Update 01 --

As per some suggestions, I ran an iperf3 test between two MBPs on the local network and got about 940 Mbps.

However, I also got the Internet speedtest hitting 900 Mbps when I ran that next. I am not ruling out some local network issue. I'll rerun iPerf once I see my Internet speed drop to rule out any local network issues.

iPerf3 results

Checking for ISP caps via a secondary device over Wi-Fi

When I get low speeds on my Ethernet, switching to Wi-Fi or testing on my phone (over Wi-Fi), gives me substantially higher speeds - around 200 - 300 Mbps. So I doubt it is an ISP cap (possible, but unlikely).

-- Update 02 (and solution) --

It was not the Macbook but my router doing some QoS :|

After encountering iPerf3 showing 940 Mbps and my Speedtest reporting 118 Mbps, I started dismantling my network and connecting my Macbook at various levels right until I connected it directly to the modem. (Modem was 1 Gbps and router was 118 Mbps).

(I had also procured a Windows machine and connected it to the LAN which was also capped at 118 Mbps. That proved that it was not the Mac but something to do locally with my network.)

Turned out that my router (I have a TP-Link Deco) has a QoS setting which is set at 120 Mbps and when a certain number of devices connect / there is enough network activity, it restricts speeds to 120 Mbps. (Hence the 118 Mbps on speed tests).

The reason I was thrown off initially was because my phone was showing higher speeds when my Macbook was being throttled.

This turned out to be due to the fact that my phone was registered as a higher-priority device and the router skipped the QoS on it and allowed its full bandwidth.

TP Link Deco QoS Setting

17
  • 11
    My bet is your ISP is capping your speeds. The only way to be sure is to test bulk data transfers between other computers in the same network.
    – Dai
    Oct 17 at 10:31
  • 2
    Might want to speed-test with another device, e.g. a phone or laptop, even if it's over Wi-Fi, to see if it has the same cap.
    – Nat
    Oct 17 at 12:48
  • 4
    If you leave it for half an hour to cool down, does it start working at the higher speed again? Oct 17 at 15:25
  • 2
    Note that if the speed test comes back at 118 Mbps, then whatever is limiting the speed is limiting it to something higher than 100 Mbps - perhaps 128 Mbps. The reason one 1 Gbps registers around 900 Mbps is because of overhead. The overhead exists at lower speeds. Oct 17 at 15:57
  • 2
    Would it be possible that one of the two devices decide the connection is not good enough and renegotiates from 1000 to 100? The media field in "ifconfig" may show something. Oct 17 at 20:16
21

MacOS does not come with such a restriction. There's no built-in feature that limits transfer speeds to 118 Mpbs (or similar value) after while.

You can build such a feature yourself using the included pf packet filter, but I assume you have not done so.

As your network settings show that the speed negotiated between the ethernet port on the dock/Mac and the switch shows as 1000Base-T then you do have a 1 Gbps link.

You're using an unreliable way of determining speeds by using SpeedTest. I would not recommend that for testing speeds on your local network. You could simply be throttled at the server or ISP - i.e. after you have spent an amount of bandwidth over a small period over time, the server or ISP put in place throttling to ensure that you do not overuse their bandwidth.

One of the best tools for local network speed testing is iPerf3. I would recommend installing that, and then measure the network speed between your Mac and another device on your local network. Then you can isolate the cause of the throttling to be outside your local network.

4
  • 1
    No, ofcourse not - but this question wasn't about how to do bandwidth shaping. Rather I just wanted to make sure that the poster of the question hasn't enabled bandwidth shaping - which we can probably say for sure that he didn't.
    – jksoegaard
    Oct 17 at 11:44
  • 1
    Thanks @jksoegaard for the great suggestion. I ran iperf3 between 2 MBPs and was able to get 940 Mbps (screenshot updated in the question). However, when I ran the speedtest, I got a similar result (900 Mbps) -- but I am not ruling out a local network issue. I'll run iperf3 again again when the speedtest results drops back to 118 Mbps and post an update which will be more conclusive. Thanks for the suggestion though!
    – saurabhj
    Oct 17 at 13:25
  • Accepting this as the answer as the issue was to do with my local connection and not the macOS per se. I have added an explanation to what the issue was in my original post. Thank you to the pointer to iPerf3 -- that was helpful and instrumental in me being able to get to the bottom of this.
    – saurabhj
    Oct 20 at 4:34
13

Check your network cable

If it's not a software based issue, it's likely hardware. I'd replace the network cable with a known good one. Even cables that look OK can have issues.

3
  • 2
    Upvoting this because this issue affected me once - while Cat6 cables are generally very well made, the OP might have some invisible damage within the cable causing crosstalk.
    – Dai
    Oct 18 at 0:56
  • +1, I would do the same if I was in same situation. Either way, OP's network seems to be only 1GbE, so I assume he's using Cat5e or Cat6, so it might be a good idea to replace the entire cable with Cat6a (which can support 10GbE in the future).
    – Skye-AT
    Oct 18 at 7:46
  • 1
    Definitively worthwhile checking the cables. I had a similar experience: lbreddemann.org/what-a-10x-network-speed-difference-looks-like
    – Lars Br.
    Oct 18 at 22:29
1

Cables and dongles are always an easy ground zero to address. Try those and unless you have dedicated internet from your ISP, data caps are real. Look into the contract you have with your provider.

1

Third-party macOS USB-C Ethernet adapters are apparently notorious for requiring excess CPU power on the host, due to driver issues and the lack of offloading support. Even if you've tried multiple Ethernet docks, it's quite possible that they're all using the same chipset and driver so perhaps changing docks doesn't tell you anything.

Have you tried running Activity Monitor while running the transfer to see if the CPU is spiking at some point, and if so, does that correlate with the transfer speed? Or are you running other CPU-intensive tasks on the machine at the same time?

I could even imagine a cascade of issues: for example, the CPU usage could cause thermal throttling to kick in and further reduce the amount of bandwidth available for the computations that cannot be offloaded to the external chipset.

While on that subject, are you plugging in your hub on the left side or the right side?

In either case, as other answers have noted, it's best to test this locally. To rule out any problems with switches or routers, first find another computer with a GbE port on your network, plug a cable directly between the two (most GbE adapters supports auto-crossover so you can probably use a regular cable), and measure the transfer speed directly. (You could, for example, mount a directory and dump a file with "dd".)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .