Well the “one address” bit sure :) but given the scale supported by CGNAT systems today, I don’t think being able to support an entire country behind a single cluster is that far off. At which point the difficulty becomes “is the 100.64.0.0/10 block big enough”? Or maybe they’re using DS-lite for the hauling from private network to the NAT.
- 0 Posts
- 6 Comments
Fred@programming.devto Programming@programming.dev•Linus Torvalds on how and when to maintain a clean git history (2009)4·23 days agoWhile exploring solutions, I use f or ffto mean “follow-up/to-squash” and a to mean logically separate. Sometimes other (additional) short abbreviations to know where to move, squash, and edit the changes to.
I recently discovered
git commit --fixup=abcd1234
: it will make a new commit with a message offixup! <message from abcd1234>
. (It’s the only special thing that flag does: a specially formatted commit message, which you can craft yourself if you remember the spelling of thefixup!
marker.)When you later rebase,
git rebase --interactive --autosquash
will automatically mark that commit to be a fixup ofabcd1234
.magit for emacs has shortcut for creating a fixup commit selecting the previous commit, I’m sure other interfaces do too.
I guess my commit descriptions get better with project lifetime
I’ve found that too, which I think is because as the project matures, you’re more likely to make fixes or contained features, as opposed to regular “change everything” as you explore the design in a young project.
As @shane@feddit.nl says, you can use the same public port for many different destination address, vendors may call it something like “port overloading”.
More importantly, you can install a large pool of public address on your CGNAT. For instance if you install a /20 pool, work with a 100 users / public address multiplexing, you can have 400,000 users on that CGNAT. 100 users / address is a comfortable ratio that will not affect most users. 1000 users / address would be pushing it, but I’m sure some ISP will try it.
If you search for “CGNAT datasheet” for products you can deploy today, the first couple of results:
- https://www.fortinet.com/content/dam/fortinet/assets/data-sheets/fortinet-cgnat-solution.pdf Fortinet claiming 1.8 billion concurrent TCP sessions, supporting 25 million new TCP session/s
- https://www.f5.com/pdf/products/big-ip-cgnat-datasheet.pdf F5 claiming “Scales up to 310 Gbps of throughput at Layer 7 with over 480 million concurrent sessions”
- https://www.a10networks.com/wp-content/uploads/A10-DS-Thunder-CGN.pdf A10 Thunder 8665S 800 million concurrent TCP sessions
Fred@programming.devto Programming@programming.dev•[Solved] Python question: How to convert list to sort with multiple keys?9·2 months agoInside the
lambda
expression you can have a comprehension to unpack thekeys
list to get the same sort of uplet as your “manual” example, like this:>>> items = [{"core_name": "a", "label": "b"},{"core_name": "c", "label": "d"}, ] >>> keys = ["core_name", "label"] >>> tuple(items[0][k] for k in keys) ('a', 'b') >>> sorted(items, key=lambda d: tuple(d[k] for k in keys)) [{'core_name': 'a', 'label': 'b'}, {'core_name': 'c', 'label': 'd'}]
And Fabrice Bellard, the original author of ffmpeg, went on to create qemu which pretty much made open-source virtualization possible. Also TCC (even if I don’t think that one is widely used), he established a world record for computing decimals of Pi using a single machine that had ~2000× less FLOPS than the previous record, and so much more…
Don’t forget the tech giants are all IPv6 enabled. Google Netflix Apple xhamster Facebook Microsoft are all reachable over v6.