// TL;DR — for those who already have packet loss and just want the fix

Preamble: the internal war

Good morning, gentlemen. You were probably here for a CVE writeup, cyberwarfare analysis, maybe a cloud architecture deep-dive. Instead we're here to talk about TIM. Not because I want to — absolutely not. But when you pay for a Gigabit, download at 26 Mbps, and support closes your ticket as 'resolved' without anyone having done a damn thing, at some point you open a text editor.

// Geopolitical-financial context (i.e., who's structurally at fault)

Poste Italiane acquired a 25% stake in TIM, becoming its largest shareholder and effectively taking control. A company that delivers parcels — often to the wrong neighbor, often three days late — now manages the national telecommunications infrastructure. Let's hope network packets are routed better than physical ones. Spoiler: they aren't.

This writeup exists for everyone who has been on the receiving end of a technological overreach from TIM — a term I deliberately use instead of what I actually want to write, for legal reasons. I'm seeing a lot of posts on Reddit and gaming forums with inexplicable packet loss on GeForce Now with TIM FTTH. This is the right place. Come closer. There are many of us.

Aiuto Aldo Giovanni Giacomo GIFfrom Aiuto GIFs

Friday, February 27, 2026: the ignominy manifests

I was about to finish my ArcRaiders session before the wipe. Anyone who games knows how sacred this moment is. And so, as Murphy's Law teaches us — the empirical principle that anything that can go wrong will go wrong, at the worst possible moment — the magic happens.

// NETWORK STATS — UNKNOWN HOURS OF A FRIDAY NIGHT
The crime scene
MetricValueStatus
Bandwidth>100 Mbps✓ OK
Latency<20 ms✓ OK
Packet Loss12.5%✗ CRITICAL
ConnectionEthernet Cable✓ OK

For anyone using cloud gaming services, that level of packet loss is, in elevated terms, a user experience condition notably below contractual expectations. In less elevated terms: it's a thoroughly unpleasant situation.

The exclusion phase: it's not me, it's them

Before accusing anyone, I did the only sensible thing: systematically rule out every variable in my environment. Complete list of torture inflicted on my home network:

And here the real magic happens: on the mobile hotspot, packet loss = 0%. Bandwidth in the mobile average, latency comparable to a civil servant on vacation — but zero packet loss. The problem was not in my hardware. It was in the TIM network.

Niente Di Serio Sìma Niente Di Serio GIFfrom Niente Di Serio GIFs

Nvidia support: an oasis in the desert

I contacted Nvidia EU to report the problem. Nvidia website, technical support, chat with operator. In two minutes I was talking to an actual human being, not a bot asking me if I'd tried turning it off and on again. I trusted them (a poor choice in hindsight, but not Nvidia's fault). After a few days, I also contacted Nvidia USA, who confirmed: zero issues on their end.

// A note on Nvidia USA support

The Nvidia USA operator initially replied thinking I was someone else, beginning to share another user's sensitive data. I stopped them immediately and flagged the issue. This is a serious support session management problem that shouldn't happen, but it's still a human error, not a structural one. Resolved quickly.

TIM support: welcome to Angie's lair

Remember that chat where you reach a human operator in two minutes? Forget it completely. TIM has Angie. Angie is a chatbot without heart, without brain, programmed to never let you reach the point. Every answer opens a menu, every menu leads to a wrong solution, every wrong solution brings you back to the start. It's an infinite loop designed by someone who hates human beings.

After finding the exact combination of answers to reach the free-text report box — hidden like the entrance to a secret dungeon in a '90s JRPG — I submitted the problem. Response half an hour later: 'Resolved?'. No notification. No phone call. Just a ticket unilaterally closed by someone who clearly did nothing.

I opened 5 tickets. Reopened each at least ten times. Result every time: 'Resolved'. Without anyone calling. Without anyone intervening. So I called myself. 54 minutes on hold. Transfer to technician. Line dropped. Tried again: 24 minutes on hold. Line dropped two seconds before the transfer. The TIM network — the one I was reporting as broken — dropped two of my calls to TIM support. Applause.

// The pinnacle of the negotiation

After a few support requests with terminology not exactly suitable for an academic conference, I received a call from a technician (or alleged one) who in a thin voice asks: 'There's no issue, have you tried rebooting the modem?' I said yes, listed everything I'd done. Final answer: 'Ah, we don't see anything on our end'. End of call.

// The plot twist: the paid technician

But the best part — and I use 'best' in the most ironic sense possible — comes next. At the end of that same phone call, after we'd established together that the problem exists (measurable, documented, reproducible packet loss on TIM's network but not on hotspot), the technician proposes the solution: send a technician to my home. At my expense. Me. Who already pays the subscription. For a service that doesn't work. I have to pay an additional fee for someone to come diagnose that the service I'm paying for doesn't work. Because the bug is in TIM's network. Not in my home setup. In TIM's network. Obviously I declined.

The problem is still being worked on as I write this. It's not resolved. The ticket is still open. Or rather: it's been closed as 'resolved' at least five times, and reopened at least five times. The current situation is exactly what's described in this article: broken network, VPN workaround active, TIM silent. This article is a work in progress in the most literal sense of the term.

The real troubleshooting: when you stop waiting for TIM

At this point, knowing TIM would not fix anything on its own, I decided to do what you do when support doesn't support: self-diagnose and gather overwhelming evidence. Below you'll find every command, every test, and what each one told me.

Step 1 — Identify interfaces and gateway

Before shooting commands at random, you need to understand what you're dealing with. The system was a MacBook Pro on macOS, connected via USB Ethernet to the TIM AGGPON_2024 router. WiFi was active at the same time — first important detail to keep in mind.

# List all available network services
networksetup -listallnetworkservices

# Identify active interfaces (en0 = WiFi, en6 = USB Ethernet)
ifconfig | grep -E "^(en|utun|lo)"

# Who is the gateway? (the TIM router)
netstat -rn | grep "^default"

Result: gateway 192.168.1.1 (TIM router), primary interface en6 via USB Ethernet with IP 192.168.1.x, WiFi en0 with IP 192.168.1.y — both active. To clarify priorities:

# Check network service priority order
networksetup -listnetworkserviceorder

# Result:
# 1. USB 10/100/1000 LAN (en6) ← highest priority
# 2. Wi-Fi (en0)

Good. Traffic goes through Ethernet, as expected. The problem is not in the interface order.

Step 2 — Basic ping test: where the problem hides

The ping command is the basic scalpel of network diagnostics. It sends small ICMP packets to a destination and measures how many come back and how long it takes. I tested four key destinations.

# Local router — the first hop, always test first
ping -c 50 -i 0.2 192.168.1.1

# Google DNS — stable and reliable public destination
ping -c 50 -i 0.2 8.8.8.8

# Cloudflare — second public destination for confirmation
ping -c 50 -i 0.2 1.1.1.1

# GeForce Now EU server — the problem destination
ping -c 50 -i 0.2 185.56.218.1
DestinationLossAverage RTTAssessment
192.168.1.1 (router)0.0%0.8 msOK
8.8.8.8 (Google)0.0%9.7 msOK
1.1.1.1 (Cloudflare)0.0%11.8 msOK
185.56.218.1 (GFN EU)0.0%62 msOK (apparently)

No loss. Everything works. And this is exactly where the problem gets interesting — and a bit insidious. With small packets (standard ICMP, ~64 bytes), there's no visible loss. The bug hides elsewhere.

Step 3 — High frequency test: jitter shows up

GeForce Now and cloud gaming services don't send one packet per second — they send dozens or hundreds per second. To simulate that load, I increased the ping frequency.

# High frequency: 20 packets per second toward Google
ping -c 100 -i 0.05 8.8.8.8

# High frequency toward the GFN server
ping -c 100 -i 0.05 185.56.218.1

Revealing results: toward Google, 1% loss at 20 packets per second. Toward GFN, no loss but abnormal jitter — minimum 50ms, average 101ms, maximum 581ms, standard deviation 86ms. Something was going wrong, but not enough to be obvious. Time to bring out traceroute.

Step 4 — Traceroute: mapping the problem's path

Traceroute is like putting a GPS on every packet that leaves your machine. It tells you exactly which node to which node your traffic travels, and how long each segment takes. It lets you identify where the network starts misbehaving.

# -n: no reverse DNS lookup (faster)
# -q 10: 10 probes per hop (more statistically reliable)
# -w 3: 3-second timeout per hop
traceroute -n -q 10 -w 3 185.56.218.1
# Path to GeForce Now EU servers
Hop  1:  192.168.1.1          →  0.8 ms    (TIM router, stable)
Hop  2:  * * *                →  ICMP blocked (normal)
Hop  3:  172.17.112.60/64     →  5-8 ms    (TIM network, stable)
Hop  4:  172.17.112.90-102    →  6-8 ms    (TIM network, stable)
Hop  5:  172.19.184.24-30     →  10 ms     (TIM backbone, stable)
Hop  6:  172.19.177.10-66     →  9-10 ms   (TIM backbone, stable)
Hop  7:  195.22.192/205.x     →  9-12 ms   (TIM transit, stable)
Hop  8:  195.22.192.117/119   →  25-29 ms  (international backbone, stable)
Hop  9:  185.100.113.154-157  →  26-30 ms  (GFN network ingress, stable)
Hop 10:  185.8.179.45/46      →  28-48 ms  (GFN infrastructure)
Hop 11:  185.8.179.37/38      →  29-33 ms  (GFN infrastructure)
Hop 12:  192.168.10.26/70     →  47-59 ms  + 4/10 timeout ← signal
Hop 13:  185.56.218.1         →  56-79 ms  + spikes 143ms, 218ms ← destination

Critical observation: the TIM path from hops 1 to 9 is completely stable. The problem seems to appear at hops 12-13 in the GFN infrastructure. But wait — this is misleading. The jitter at the final hops is not originating there. It's a consequence of something happening earlier, silently.

Step 5 — The culprit: MTU and TIM's PPPoE

MTU stands for Maximum Transmission Unit: the maximum size of a packet that can traverse a network link. On standard Ethernet it's 1500 bytes. But TIM fiber uses PPPoE (Point-to-Point Protocol over Ethernet) internally, which adds 8 bytes of overhead. Result: the real limit drops to 1492 bytes.

To test this hypothesis, I used ping's -D flag — which sets the Don't Fragment bit on the packet. This tells the network: 'don't fragment this packet, or drop it'. Then I varied the payload size.

# Payload 1400 bytes → total packet 1428 bytes (below limit)
ping -c 10 -D -s 1400 185.56.218.1

# Payload 1472 bytes → total packet 1500 bytes (at Ethernet limit)
ping -c 10 -D -s 1472 185.56.218.1
// Revealing result

Payload 1400B (total 1428B): 0% loss
Payload 1472B (total 1500B): 100% loss

Large packets vanish into the void. No warning. No error. Simply: nothing.

To find the exact MTU, I did a binary search — testing increasing sizes until finding the exact breaking point.

# Binary search for effective MTU
for size in 1460 1465 1470 1471 1472; do
    ping -c 5 -W 2000 -D -s $size 185.56.218.1
done
PayloadTotalLoss to GFNLoss to 8.8.8.8
1460 B1488 B0%0%
1465 B1493 B100%100%
1470 B1498 B60%100%
1472 B1500 B60%100%

The effective path MTU is 1492 bytes. Exactly the standard PPPoE limit. Confirmed. But the problem is not that the limit exists — the problem is how TIM handles packets that exceed it.

Root cause: ICMP Black Hole

When a router receives an oversized packet with the DF (Don't Fragment) bit set, it should reply to the sender with an ICMP 'Fragmentation Needed' message — essentially: 'hey, your packet is too big, send it smaller'. This mechanism is called Path MTU Discovery (PMTUD) and is fundamental for any connection to work correctly.

# CORRECT behavior (what is NOT happening)
NVIDIA sends UDP 1470B → TIM router → "too large for PPPoE"
TIM router → ICMP "Fragmentation Needed" → NVIDIA
NVIDIA lowers packets to ≤1464B → everything works ✓

# ACTUAL behavior (the TIM bug)
NVIDIA sends UDP 1470B → TIM router → SILENT DROP 🕳️
NVIDIA receives no warning → keeps sending 1470B
→ loop → 10% packet loss → GFN unplayable

This is called an ICMP Black Hole: the router drops oversized packets but never sends the 'Fragmentation Needed' ICMP message to the sender. NVIDIA never discovers the limit and keeps sending packets that are silently discarded.

// Hidden impact: it's not just GeForce Now

The same mechanism affects all download bandwidth. TCP packets from 1500 bytes arriving from the Internet get dropped by the TIM router. TCP floods with retransmissions. Upload works because outbound direction doesn't suffer the same problem. Result: 26 Mbps download on a 1 Gbps line. That's 2.6% of what you're paying for.

Tested solutions (and what doesn't work)

Mac-side MTU fix — doesn't resolve

First hypothesis: lower the Mac's interface MTU so it never sends packets larger than 1464 bytes.

# Lower the MTU of the Ethernet interface
sudo ifconfig en6 mtu 1464

Result: doesn't work. The problem is on packets incoming from the GFN server to us, not outbound. The GFN server doesn't know our MTU limit (nobody told it, because TIM doesn't send ICMP) and keeps sending large packets that get dropped.

Cloudflare WARP — makes it worse

# WARP uses MASQUE/QUIC (UDP) — subject to the same MTU bug
warp-cli connect
ping -c 100 -i 0.05 185.56.218.1
# Result: 18-40% packet loss. Worse than before.

WARP uses UDP as transport. UDP with large packets. The exact same problem. Actually worse: 18-40% loss. I also tried blocking QUIC to force WARP onto TCP.

# Block QUIC to force WARP onto HTTP/2 TCP
sudo pfctl -e
echo "block out proto udp to any port 443" | sudo pfctl -f -
warp-cli connect
# Result: 20% packet loss, max jitter 627ms. Even worse.

# Restore system
sudo pfctl -f /etc/pf.conf
warp-cli disconnect
sudo ifconfig en6 mtu 1500

Even in HTTP/2 TCP mode, WARP doesn't work in this configuration. Not the solution.

✅ ProtonVPN with WireGuard (TCP) — works

ProtonVPN in WireGuard (TCP) mode fixes the problem because it automatically sets its tunnel to MTU 1380 bytes — well below the PPPoE limit of 1492. TCP handles segment size negotiation (MSS negotiation), completely bypassing TIM's ICMP Black Hole.

# How the tunnel works:
# [Large GFN UDP] → [WireGuard TCP, MTU 1380] → TIM (packets ≤1380B < 1492) → ✓

# Configuration in ProtonVPN:
# Settings → Protocol → WireGuard (TCP)

# Check VPN status
scutil --nc list
MetricWithout VPNWith free VPNWith paid VPN (expected)
Download bandwidth>100 Mbps (but 26 actual)~3 Mbps (throttled)~900 Mbps
Packet loss8.8%0.0% ✓0.0% ✓
Latency18 ms42 ms~25-35 ms

The technical verdict

ComponentStatus
Mac hardware✓ OK
USB Ethernet cable✓ OK
TIM router (local)✓ OK (0ms jitter)
TIM physical fiber✓ OK (910 Mbps upload)
PPPoE MTU TIM❌ BUG: ICMP Black Hole
Server GeForce Now✓ OK

Contracted line: Gigabit fiber. Actual download without fix: ~26 Mbps. Actual download with ProtonVPN WireGuard TCP: ~900 Mbps.

The fixes — because TIM won't do it for you

// FIX 01 — IMMEDIATE · works now
ProtonVPN with WireGuard (TCP)

The fix that works immediately, no waiting for TIM, no hoping for miracles. Recommended plan: Proton Unlimited (~€10/month annual). Protocol: WireGuard (TCP). Recommended servers: Italy or Germany for minimum latency.

With this setup: full bandwidth (~900 Mbps), 0% packet loss, GFN playable at any quality. Added latency: ~10-15 ms. Cost: ~€10/month. Yes, you're paying for a VPN to use the Gigabit connection you already pay for. No, this isn't normal. Yes, it's TIM's fault.

// FIX 02 — DEFINITIVE · theoretically · ticket still open
Call TIM — second level, exact technical phrase

Explicitly request a second-level technician. Not first level. Not the chatbot. Not the person who asks if you've rebooted the modem. Second level. If they offer a paid home visit: refuse. The problem is in TIM's network, not your home setup. It's not your hardware they should be charging you for. Use exactly this phrase:

// The magic phrase to say to TIM

"I have an ICMP black hole issue on my FTTH connection. The AGGPON_2024 router drops IP packets larger than 1492 bytes without sending ICMP 'Fragmentation Needed' messages back to the sender. This causes packet loss on applications that use UDP with the DF bit set and limits download bandwidth to around 26 Mbps on a 1 Gbps line. I request that NOC verify PPPoE MTU and MSS clamping on my line."

Attach as evidence: fast.com screenshot (26 Mbps download / 910 Mbps upload), GFN screenshot with 0% loss with VPN and 8.8% without, this article. Warning: my problem is still open. I don't yet have confirmation this procedure works. Updates to follow.

// FIX 03 — ESCALATION · if TIM pretends nothing happened
AGCOM Complaint

If TIM keeps closing tickets as 'resolved' without any real action, or offering paid home visits for operator network issues, file a formal complaint with AGCOM (Authority for Communications Guarantees): agcom.it.

TIM is contractually required to deliver the agreed bandwidth. A 26 Mbps download on a 1 Gbps line is not an interpretation — it is a measurable, documentable, and actionable breach of contract. Charging the customer for a technician visit to diagnose a bug in the operator's own network is, at best, a commercially questionable practice.

Quick reference commands

# Check path MTU to a host — if 100% loss, the path MTU is below payload+28
ping -c 5 -W 2000 -D -s 1465 185.56.218.1

# Full traceroute to GFN servers
traceroute -n -q 10 -w 3 185.56.218.1

# Speed test from terminal (macOS)
START=$(date +%s%N)
BYTES=$(curl -s -o /dev/null -w "%{size_download}" "https://speed.cloudflare.com/__down?bytes=50000000")
END=$(date +%s%N)
echo "scale=1; $BYTES * 8 / 1000000 / (($END - $START) / 1000000000)" | bc

# Check which interface handles traffic to GFN
route get 185.56.218.1

# Error stats on both interfaces (en0 WiFi, en6 USB Ethernet)
netstat -i | grep -E "en0|en6"

# Lower Mac-side MTU (partial workaround — doesn't fix GFN)
sudo ifconfig en6 mtu 1464

# Restore standard MTU
sudo ifconfig en6 mtu 1500

// Epilogue: «Stay With Me» by Miki Matsubara playing in the background. Twenty years of Vodafone at the old place. Zero issues. Zero tickets. Zero suggestions to pay for a technician for operator network problems.
// I knew this moment would come — the only FTTH fiber available at the new place was TIM. You accept your fate. You open a VPN. You write a post.
// The ticket is still open. The VPN is still active. TIM hasn't called back. Good luck out there.