So you think you understand IP fragmentation?
lwn.net
lwn.net
I've seen worse than that. A firewall dropping the first fragment based on the UDP port number (which is available in the first fragment), but allowing further fragments.
I'd love to see their new discovery algorithm get widely distributed, it's 2024, and a lot of stuff still breaks or suffers terrible delays if I don't apply the proper settings with my 1492 MTU.
I just use 1024 since nobody seems to use SLIP anymore. It should fit under 1200 with headers and the logic is similar to DEC 512+64 limit arrived at initially. All the PMTU detection algos suffer from something lowering the MTU along a route for a long lasting connection.
This is, of course, nonsense on so many levels, but it was very effective, because my servers at the time had a ridiculous IP fragment reassembly buffer (autoscaled based on system ram size, with a formula written decades ago) and reassembly did a linear search of the buffer. No big deal in normal conditions when we got one or two fragmented packets a minute; immensely terrible when getting a couple GBps of fragmented chargen reflection that could never be reassembled. Setting the reassembly buffer to the minimum solved the problem; during DDoS attacks, legitimate fragments wouldn't be reassembled, but oh well, so many other services don't ever assemble fragments, we did the best we could.
What are other cases where fragmentation truly makes sense?
I guess you could just say '1480 for all time' and be done with it
IPv6 moves to an end-to-end fragmentation model, but even then the right answer is to negotiate in a higher level protocol a maximum segment size for the path you're talking on, and then just avoid fragmentation entirely. Fragmentation is an absolutely wretched stream transport protocol!
I had multiple issues with WireGuard related to MTU/fragmentation. Once, service reported that a system is pingable, but the management website didn't load. I was able to SSH into it, but similarily, the connection broke everytime I tried to run `ip addr` or view logs. Commands with short output worked, however – apparently, somewhere on the path the packets got fragmented and/or dropped without notice.
I actually hit this recently, where I wasn't able to stream videos from certain sites over Wireguard. I spend a while with tcpdump and figured out that they were using Fastly as a CDN, Fastly was sending 1500 byte packets marked with Don't Fragment, my Wireguard endpoint was returning a message saying that the maximum packet size for the link was 1460 bytes, and Fastly was then… sending another 1500 byte packet marked Don't Fragment. To their credit when I was able to provide their engineering with logs showing this was clearly a Fastly problem, they fixed it fairly promptly
regarding credit; did you get paid for doing their homework?
CAN Injection: keyless car theft
I meant why not leverage fragmentation at the routing+transport protocol layer if configs can be controlled to support it and not drop fragmented packets.
What advantage is there doing it at the application layer?
I'm aware that all the layers can be messed with by rogue malicious actors.
Though IIRC CAN doesn't really have a transport or routing layer; the ARB IDs are baked into the physical protocol, which is very cool, but it's fundamentally a bus architecture, and I'm not sure how it would apply to current thread.
now if you have one system trying to send really oversized frames constantly, creating lots of fragmentation, and you have limited sized buffers, I could see a situation where the fragments are too regularly eating up buffer space, but that's even a slightly different problem too. I would expect inexpensive hardware to be able to handle 9k packets without introducing queue delay.
I heard upcoming networks are heading over 10gbps, which means their packet processing capabilities are necessarily well over 1Mpps, more than sufficient for latency concerns in the kinds of control systems hanging off of this.
Looking up some basic (possibly inaccurate) specs for the kinds of lidar used, frame samples won't fit in a packet, so we're talking in the range of 500 packets at 1500 bytes, or less than 100 packets at 9k, at around 30hz per sensor?
Clearly the deployed system works, we're dealing with 1500 bytes in a lot of places where it being the standard introduces a lot of inefficiency/hard optimization work, so it's hardly abnormal. As I said originally, I'm curious about what the factors are, they seem surprising.
Maybe for UDP for protocols where the designers were really optimistic. IMHO, for DNS if you want it to work as much as possible, your queries and responses should fit in 512 bytes, or some people are going to have problems on some networks. DNS over TCP doesn't work everywhere, even if it's supposed to.
It's more palatable to require DNS over TCP or working UDP over fragmented IP if it's for big txt records like for mail, but if your A and/or AAAA records don't fit in 512 bytes, expect lingering problems that are hard to track down.
Perhaps not, but with quantum-safe signature algorithms on the horizon, signatures are about to get much longer again.
2. You at least get some information. Maybe half a packet is better than no packet.
3. You get an exact size limit of the entire path the packet took. Rather than just a "too big" of the first hop that wouldn't pass it.
Overall I think it is a pretty decent solution. Assuming that the IP header says the original size or similar so that the truncation can be easily detected.
I do see some flaws though:
1. Layered protocols would have to be more complex to deal with packet truncation. (Although I guess they could simply treat truncation the same as dropped to avoid extra complexity.)
2. Checksums at the end of a packet being dropped likely make the whole packet useless.
3. It may be better to get a quick rejection from a local router rather than the possibly far away peer.
IETF folks wouldn't like that much state in the IP protocol and it doesn't solve intermediate L2 loss (the real reason you have IP MTU differences) when switches are involved in the path though. That said, might make in interesting ICMP probing method.
All these advantages would come from truncation being "in-band", following the same path as the data packets, instead of being a special "out-of-band" message like ICMP packets are.
As for the flaws you listed:
1. The main complexity would come not from dealing with truncation itself (as you said, just treat it the same as a dropped packet), but from each protocol having to reflect the "truncated size" back to the original sender (like how ECN deals with marked packets).
2. The whole packet is not useless, the reason for truncating instead of turning it into an empty packet is to keep as much as possible of the higher layer headers. That is, most of the packet might be useless, but the higher layer headers at the start can be useful.
3. On the other hand, you might need several of these "quick" rejections before arriving at the ideal size.
ICMP does send the hop MTU, it's not just a "too big" signal. (But I do acknowledge that you're going for the PMTU in a single shot, and that's slightly neater.)
The fallback for anything (one way, lazy, filtered connection, truly anything) is you always have your minimum MTU where the protocol is guaranteed to work at a given size and if it's not the protocol knows the solution will need to lie outside itself. IPv4/IPv6 already have this today.
- Local UDP socket bind receives a 65k payload to deliver
- Local IP stack looks at where this is going to go, sees it'll be going out an interface with 1.5k MTU
- Local IP stack creates 44 IP fragments of 1.5k and a final smaller fragment (Note: For IPv6 the IP stack must instead default to the safe-by-standard value of 1280 byte MTU since dynamic discovery could not be performed)
- 1.5k packets get sent to the network
I can guarantee these steps because no NIC or router uses 64k L2 frames for this to be able to reach the gateway unfragmented.
From here we run into a bit of a real world problem vs a theoretical how fragmentation could be done problem. The article touches on why a little bit: intermediate routers can fragment if they want but they aren't required to (overwhelming often they actually won't) but even fewer routers will bother re-fragmenting (what would need to be done here, as you already have 1.5k fragments) as it's significantly messier still. Even Linux won't re-fragment IP packets when doing pure software forwarding!
My point is that IP fragmentation, as a method, gets packets through a network that would otherwise be truncated or dropped by other methods. It can also do it reasonably efficiently and conveniently, moreso than always assuming a worst case MTU at the application protocol layer.
I think what changes between methods is the use of fragmented packets to begin with? The whole premise is that IP fragmentation is bad because real world routers and firewalls don't support fragmentation properly. If fragmentation is deprecated, then wouldn't network stacks need to also start dropping oversized packets coming from user space applications?
If your route looks like this,
E_a -- MTU 1500 --> R_1 -- MTU 1200 --> R_2 -- MTU 1000 -> E_b
Where E_a & E_b are the endpoints, with two routers. There PMTU is 1000; if you first emit a 1500 B packet with DF, R_1 will drop it, and emit an ICMP with the next hop MTU of 1200. You then have to emit another packet, and get another ICMP response from R_2 with the MTU of 1000, and now you know the PMTU, but it takes two failures to get there.OP's suggestion is a single round trip: you emit a 1500 B packet, E_b receives a truncated 1000 B packet. E_b responds to E_a saying "that got truncated to 1000 B" and now E_a knows the PMTU, in a single shot. In an simple design, we can call the truncated packet "worthless" and force E_a to repeat it with the right PMTU, but it's still only too a single packet from E_a to elicit the right value for the PMTU from the network.
router A <-> switch B <-> switch C <-> router D
Router A still needs to have a reliable, actively updating, way to detect the path MTU to Router D because something could change and the path turns into: router A <-> switch E <-> switch C <-> router D
where switch E has a different MTU than the other equipment. Now you could go even further back and say the same happens for anything IP transits on top of but then the folks at Xerox PARC would probably wonder why the hell you're trying to make their hubs so damn smart and expensive and the people after them would probably wonder why the hell you're telling them to throw backwards compatibility with all the previous gear out the window in the name of making MTU slightly simpler.It's a decent solution I think you just have the time backwards - it's something we should look to do as we move towards the future and the overhead of such logic is tiny to add to networking rather than something to wish we had in the past when even dumb hubs were expensively complicated.
This does leave one case unhandled though: you end up with a low MTU path at some point, things update so your traffic is going over a high MTU path, you still need to have some algorithm to discover this or the connection never recovers the performance.
If you want a world where you can rely on an L2 to have a way to handle the MTU mismatch then nothing is being solved by this other than the ability to say "fragmentation is not not in the current abstraction layer anymore, it's now an annoying problem on the layer below it instead" :).
The L2 MTU is fixed and known for every device on that same L2 network. The Internet is a network of networks; the reason we need to find the path MTU on the L3 network is that a single packet transits over several L2 networks, and while each L2 network has a single MTU, the L3 path can vary.
These underlying paths are not always static either, just because you have 9000 today doesn't mean when the path fails to a backup alternate tomorrow the MTU will be 9000. You have to get everyone involved on the internet to agree all links should now be 9000, now you can reliably set your router's outbound link to 9000 in all cases and rely on L3 fragmentation. Until someone wants to set their MTU to 12000 :). Even when I've had paid WAN transport with contracted MTU the MTU has lowered during carrier maintenance like firmware upgrades or unit replacements and I've had to call them up saying the MTU is broken because something like NFS servers will think they can statically set a known MTU on the path and it'll stay that way, a routed neighbor on the path would make the same error in this example.
The proposal is that in the case that the router is forwarding a packet which won't fit in the egress MTU, it truncates it, rather than drops it. Hopefully maybe with a truncated bit (maybe we can reuse the evil bit for this). If a peer receives a truncated packet, which it should know because either the evil bit is set, or the received length doesn't match the length in the IP header, that would be processed depending on the protocol. For TCP, the receiver should send a duplicate ack with a newly specified option that indicates the length of the truncated packet it received; then the other peer would know the maximum length packet it could send. For UDP, the truncated packet would probably need to be sent to the application and it could figure out how to notify the peer to send shorter packets (and perhaps process the received truncated packet).
Had this been specified in the before times, it would be reasonable to implement, and path mtu detection would work a lot better now. Some routers may still have been built that drop rather than truncate, but it's a lot more reasonable to send a smaller packet in some circumstances than to have the router fragment things (needs to send two packets sometimes instead of one) or to send a return packet (needs to create a packet and start it back through the routing process again).
Additionally, all of the signalling is in-band, which makes it harder to lose the MTU signals when (small) data is otherwise flowing.
router A <-> switch E <-> switch C <-> router D
Say router A and switch E have a 9000 byte MTU but switch C has an MTU of 1500 bytes. Router A gets a 12000 byte IP packet and sees to truncate the IP packet to 9000 bytes to be able to egress it to switch E, the designated path to its routed peer D. Switch E accepts this 9000 byte packet and bridges to switch C. Switch C only knows how to accept 1500 byte packets and so drops the 9000 byte packet. No truncated IP packet is ever delivered and the MTU is never learned.
This scenario, and a few others, are already noted in the RFC mentioned in the article https://datatracker.ietf.org/doc/html/rfc8899 as problems classically run into when trying to do PMTUD. Your browser based PMTUD test relies on these principles when it sends packets of various size, that's the only foolproof PMTUD method there is - truncating at egress on only routed hops does not provide foolproof IP delivery across the internet so cannot provide foolproof PMTUD.
Even when you can take the liberty to 100% guarantee A, C, E, and D will all support an MTU of 9000 bytes you can't guarantee nowhere else on your path across the internet will have the above issue on their switched paths between routers. Or that your packet won't go through a non-IP protocol tunnel as it goes through the internet and get dropped as too big in that encapsulation. Truncation is only 100% reliable when you're already 100% certain the real physical path across the internet can handle that size, which in practice requires knowing the real dynamic PMTU across multiple parties i.e. having PMTUD already.
I guess if you have this situation, you'd have the same problem we have today. Which is a too big packet gets dropped with no notification. But systems today don't tend to handle that well either. In practice today, usually people don't setup a mixed MTU broadcast domain, so I would expect a router between different networks to know the MTU of the next link. MTU (or really MRU) could have been put into ARP, if mixed MTU broadcast domains were expected, as well.
Otoh, there's a lot of situations where the router knows a route has a lower MTU, and could easily truncate, even if it can't easily fragment or drop and send an ICMP backwards. Truncation would be better than those two options.
And it might be easier to convince people to properly configure next hop MTU when it would enable truncation that would actually work. Instead of today where properly setting next hop MTU enables slightly earlier dropping of oversized packets because DF is almost (but not quite) universal and router fragmentation is disabled or rate limited and ICMP sending is disabled, rate limited, firewalled, or the router doesn't have a reasonable sending address.
In conclusion, while I ageee truncation wouldn't handle every case, it would handle every case where router based fragmentation could handle, and some more cases, and I think would have put us in a better place than we are today.
At that nosebleed speed, FPGA is designed to do such defragmentation of IP as well as assembly of UDP reassembly and TCP desegmentation.
Very fast.
Including a bulk of FPGA dedicated to the overlapping payload that hackers often play tricks on such IDS, et. al.
That is probably the ONLY beef I have with RFCs covering IP/TCP/UDP: did not detail what to do in event of overlapping packets (first overlapped takes precedence or last overlapped overrides old data?)
For a correctly operating sender, it shouldn't matter, since the data should be identical. It would be the same as asking what should happen if the sender changes the data when retransmitting a packet (the only difference from overlapping fragments is that a retransmitted packet has 100% overlap). It's Undefined Behavior, the receiver is allowed to do anything it wants, and the sender can't complain since it's its own fault.
(Also consider that packets are always allowed to be reordered in transit, so what you thought was the first packet might become the last packet on the next hop; even if the standard constrained the reassembly ordering, you might still not get the result you expected.)
Any order is a valid case that someone got as their "correct" order.
The boxes do run into very interesting problems and knowledge space though, just more on the inverse of the problem at hand (how to properly act like a client receiving already fragmented data).
With even more live updating of newly added Aho-Corrasick and Regex algorithm into the FPGA.
Goal is to do proper reduction of each ASIC/FFPA stage without a packet drop.
Meanwhile, your website is dropping SSL connections, zamadatix.
That decision alone would’ve made fragments so much simpler on network devices and appliances, and much less likely for them to get dropped.
(None of this would fix the real problem with fragmentation, which is that you can't efficiently segment out a large frame without having some kind of reliability layer).
Wikipedia lists over 100 assigned IP protocol numbers [1], and while it would break existing firewalls, adding a new protocol would certainly require less work than the transition from IPv4 to IPv6. But UDP is already simple enough that there's very little benefit in not just building on that.
[1] https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers
Do most routers really do that, or just the ones which are also trying to act as a firewall?
For packets that don't want to use it, this is just 1 byte of overhead to set the size to 0.
Keep in mind, most routers don't even bother supporting existing fragmentation because it's costly to implement in high speed hardware. So while you could theoretically have that dynamic next protocol header length value field it'd only be complicating something hardware makers already think is too complicated to be worth it. Making things unappealing complex is one of the common results of layering violations.
You don't even really need that, and as proof, take ICMP ... which was designed as part of IP ... actually does do this. Routers are already required to copy and include the header of the packet that triggered an ICMP error.
Doesn't that make it more one of those situations where the non-documented behavior has become the de facto standard, rather than "wrong" exactly? (I guess it depends on whether that decision is being made consciously by the implementors or just for lack of knowledge of the standards.)
I guess you could provision the router cpus so they could send ICMPs for line rate incoming packets that must be dropped, but that doesn't seem like a good cost tradeoff.
> IP_PMTUDISC_WANT will fragment a datagram if needed according to the path MTU, or will set the don't-fragment flag otherwise.
And then the quiz asks for the DF bit in the former case. The docs don't say; one could illogically assume the DF is unset in the former case … and in fact, that seems to be the case, though this leaves me wondering why it would do that, since with DF unset, it won't elicit the needed ICMP responses. There still remain some cases, of course, where we could do that (the latter case in the docs) … but this seems inefficient. In the former case, why wouldn't we fragment according to the PMTU and just set DF in all cases?
Sure, the delivery mechanisms are quite a bit different - but not that much if we were to speak of a case of a packet fitting into two fragments…
Why or why not?
In fact, now that I think about it... what happens if a TCP/IP connection is initiated from another country to a TCP/IP address inside of an outwardly blocked country?
Would that act similar to a NAT punchthrough, but on a Nation-State's firewall?
Think about it this way... let's take an arbitrary example, China...
And let's suppose for the purposes of discussion that what the western Mainstream Media says about China's Internet is completely true -- that outgoing connections to the West from China -- are blocked.
OK, but there still is Alibaba -- the equivalent of China's Amazon.com.
Connections FROM the West (e-commerce connections, "we buy from you", "you are a merchant to us", etc., etc.) TO Alibaba.com (in China) -- are not blocked, and would NOT be blocked by the Chinese government!
Why?
Because anywhere there's trade -- if the trade is beneficial to the government in question (anyone heard of taxes, anyone? They benefit the government you know!) -- there will be internal political pressure NOT to prevent that trade from occurring!
So let's say that a TCP/IP connection that looked like a legitimate e-commerce connection -- was initiated FROM the West, to an IP address in China for a legitimate Chinese e-commerce site...
Now, couldn't that connection, once established (since it is, after all bi-directional) -- be used to send data outside of China?
Yes!
But to only one outside/external IP address!
But what if that IP address on the Western side (being in a non-firewalled country) -- now could somehow route that data to any other IP address around the world?
Sort of like a VPN -- but the connection is opened up from an INCOMING connection, not an outgoing one...
Would that be the equivalent of NAT punchthrough -- for a Nation State's firewall?
?
Before you answer, I'm guessing that there are Deep State bots (from all countries!) that will try to derail this conversation...
That's a testament to "always think for yourself" (let logic be your guide!) -- stay away from so called "expert" opinions, especially one or two sentence "no it can't be done" or "it would never work" replies by fake posters with fake names from fake accounts!
But, I guess we'll open up the floor to the AI powered agenda-driven bots... foreign and domestic! :-)
Also, note that I don't suggest/condone that anyone actually do any of the above -- this discussion is theoretical in scope only!
Um, conspiracy theories aside, Alibaba has servers in the US.
Point is, if there's a way out, then there's a way in...
How does the data on the Alibaba servers in the U.S. get updated? Probably not by carrier pigeon... Someone (or a group of people) in the Alibaba offices in China updates that server when prices change, when new products are added, etc., etc.
And how does that happen, if there isn't an outgoing Internet connection?
And if so, then that's proof of a non-blocked outgoing connection from China.
And if that's true, then we need to raise the question of which types of outgoing connections are selectively permitted from China (because obviously the Alibaba update on U.S. servers is permitted!)
Which would in turn start to crumble the western mainstream media narrative that China blocks all outgoing connections...
In other words, if China doesn't block all outgoing connections, then we need to know (if we care at all about global Internet censorship) which types of connections are blocked, which ones aren't, and what the exact criteria for a blocked or permitted connection is...
Because if you are correct, then it would seem that connections from mainland China to Alibaba's U.S. servers are NOT blocked...
Conspiracy theories aside!
Try reading the basic Wikipedia articles for starters:
https://en.wikipedia.org/wiki/Internet_censorship_in_China
https://en.wikipedia.org/wiki/Great_Firewall
https://en.wikipedia.org/wiki/List_of_websites_blocked_in_ma...
That question was raised decades ago, and the answer is already known: traffic which sufficiently disagrees with the current government of China is blocked.
>Which would in turn start to crumble the western mainstream media narrative that China blocks all outgoing connections
I have never seen anyone (other than you) claim that China blocks all outgoing connections. That seems to be your narrative, rather than some mythical, conspiratorial, "western mainstream media narrative". I don't think it does us any good to invent divisive narratives like this. You could instead invent narratives that unite people and ideas and nations.
The reality that the world realizes, is that the current government of China blocks traffic containing content telling narratives which sufficiently disagree with them, using the tool they developed specifically for that purpose.
"Sufficiently disagrees" is not an exact understanding of exactly when/where/why and how the Chinese (or more broadly, any other Nation-State's) government blocks connections, or even if they indeed block connections (I have not personally tested Internet connectivity to the world at large from within China, so I'm going by secondhand information, western news reports -- that make the general claim that at least some aspects of China's Internet are censored and/or blocked: https://www.google.com/search?q=great+firewall+of+china )
>I have never seen anyone (other than you) claim that China blocks all outgoing connections.
I did not claim that...
Did I not say in the first message in this chain: "And let's suppose for the purposes of discussion that what the western Mainstream Media says about China's Internet is completely true -- that outgoing connections to the West from China -- are blocked." ?
The purpose of this message chain was not about China nor western mainstream media!
The purpose of this message chain was to discuss the following:
>"what happens if a TCP/IP connection is initiated from another country to a TCP/IP address inside of an outwardly blocked country?"
?
???
China, in this context, was only used as an arbitrary choice for the purposes of a philosophical discussion...
We could substitute China with any other country for the purposes of this same discussion, if it pleases you!
Related:
https://en.wikipedia.org/wiki/Great_Firewall
https://en.wikipedia.org/wiki/NAT_traversal
https://en.wikipedia.org/wiki/Hole_punching_(networking)
https://en.wikipedia.org/wiki/TCP_hole_punching
>"Sufficiently disagrees" is not an exact understanding of exactly when/where/why and how the Chinese...government blocks connections
An exact understanding isn't necessary to determine whether it happens (it does). Nonetheless, it seems like an interesting topic: how exactly do Chinese government decisions on what to block, flow through their government system, before getting to the technical level where they actually do the blocking? I look forward to the results of your research on this, as you have good questions to ask the Chinese government.
>or even if they indeed block connections
They do. It's in the lede of the article you linked:
> The Great Firewall (GFW; simplified Chinese: 防火长城; traditional Chinese: 防火長城; pinyin: Fánghuǒ Chángchéng) is the combination of legislative actions and technologies enforced by the People's Republic of China... to block access to selected foreign websites [0]
I know it sounds obvious, but to avoid confusion, it's worth being absolutely clear here: blocking access to foreign websites means blocking connections to them. Honestly, it's quite confusing to me how someone can doubt the very existence of China's connection-blocking Great Firewall. Is this some attempted jedi mind trick? Of course it exists.
Indeed, that is an excellent question, applied to any Nation-State that blocks connections for any reason!
Now, this brings up a highly interesting question, which looks something like this:
How could someone in Nation-State X know exactly what is blocked by a different Nation-State, Nation-State Y -- without physically being there to perform tests on their Internet as if they were a Citizen/National/Resident/Physically Located -- in Nation-State Y?
?
There's no easy answer for that question... at least not without going to Nation-State Y and physically testing their Internet...
But if I were to guess at a hypothetical way to do it -- if someone had a Google-size cache snapshot of all websites and their contents on the global Internet, then if that someone also had a Google-style multi-threaded multi-computer web spider like the Googlebot -- then if one could somehow get VPN connections to outgoing IP addresses in Nation-State Y, then one could attempt running that, the effect being similar to being physically in Nation-State Y...
From that, one could compare ALL of the results of those connection requests and corresponding web pages -- to see what connections and web pages worked and which ones didn't...
For the connections and pages which didn't work, those might have been caused by a website being updated, being taken offline, random Internet failure, etc., etc., that is, one couldn't immediately ascribe responsibility to Nation-State Y intentionally blocking the site or connection without additional debugging/fact-finding/triangulation of the root cause...
So, that wouldn't solve the problem... but it might be a good starting point...
Something like that, if it would exist, if it could exist (Google + a VPN provider in Nation-State Y would have all of the necessary infrastructure, incidentally!) -- would be a good first step in that direction...
In fact, a smaller, one-site-at-a-time version of it could be implemented by remote P2P nodes...
In fact, here's an even weirder idea(!), now that I think about it -- use Javascript running on remote P2P nodes (with permission of the node owners!) in other countries to test Internet connectivity to Web Sites (or more broadly, any kind of Internet connectivity, since the Internet is not only the web!):
In other words, use something like the following (in conjunction with custom JavaScript code which would test websites/Internet connectivity):
https://news.ycombinator.com/item?id=39373960
https://pears.com/news/holepunch-unveils-groundbreaking-open...
Anyway, some excellent questions! Thank you for them! You made me think!
VPNs work pretty much all the same regardless of which "direction" the tunnel is opened in, its still just normal VPN. Heck, you don't even need a open connection for a VPN, IP itself is stateless and connectionless.
Titles like these sound unnecessarily arrogant to me and are off-putting.
Of course, it really depends on whether you can actually back this up! And in this case Val does, quite clearly.
Yes indeed; and reading the article, she does not sound that arrogant:
"Many networking experts think they know when IP fragmentation will happen, and I thought I did too—until I had to implement an algorithm for a VPN"