← Back to AI Insights
Gemini Executive Synthesis

An ISP infrastructure emulator and lab environment, named Aether, featuring a custom Python-based virtual Broadband Network Gateway (vBNG) for IPoE IPv4 subscriber management.

Technical Positioning
Positioned as a learning reference and starting point for individuals struggling to understand complex ISP networking, particularly BNGs and subscriber management, due to closed-source vendor stacks and lack of mentorship. It is explicitly stated as not production-grade, but an educational tool.
SaaS Insight & Market Implications
This project, 'Aether,' addresses a significant pain point within the telecommunications and ISP industry: the high barrier to entry and understanding created by proprietary, closed-source vendor solutions for core network functions like Broadband Network Gateways (BNGs). The author's personal journey highlights the lack of accessible learning resources and mentorship, which is a common challenge for new engineers and smaller regional ISPs. Aether democratizes this knowledge by providing an open-source, emulated lab environment where users can practically learn IPoE IPv4 subscriber management, RADIUS AAA, and traffic shaping without needing expensive hardware or vendor licenses. Developers and network engineers will find this project invaluable for several reasons. It offers a transparent, hands-on platform to dissect and understand the intricate mechanics of ISP infrastructure, moving beyond abstract concepts. The use of Containerlab for network topology emulation, coupled with a Python-based vBNG, demonstrates how modern software development practices and containerization can be applied to complex networking problems. This fosters experimentation, allows for prototyping custom solutions, and bridges the gap between traditional network engineering and software development. The project represents a broader trend towards open-source alternatives in specialized domains, the virtualization of complex infrastructure for learning and development, and the application of modern software architectures (like event-driven systems with Redis Streams) to networking. While not production-ready, Aether serves as a critical educational tool, empowering a new generation of network professionals to innovate and understand beyond vendor lock-in.
Proprietary Technical Taxonomy
multi-BNG ISP infrastructure lab IPoE IPv4 subscriber management python-based vBNG with RADIUS AAA per-subscriber traffic shaping traffic simulation emulated on Containerlab event-driven architecture Go RADIUS CoA daemon Redis Streams

Raw Developer Origin & Technical Request

Source Icon Hacker News Mar 13, 2026
Show HN: I built an ISP infrastructure emulator from scratch with a custom vBNG

Demo: aether.saphal.me
GitHub: github.com/saphalpdyl/Aether... is a multi-BNG (Broadband Network Gateway) ISP infrastructure lab built almost from scratch that emulates IPoE IPv4 subscriber management end-to-end. It supports IPoE/Ipv4 networks and runs a python-based vBNG with RADIUS AAA, per-subscriber traffic shaping, and traffic simulation emulated on Containerlab. It is also my first personal networking project, built roughly over a month.Motivations behind the projectI'm a CS sophomore. About three years ago, I was assigned, as an intern, to build a OSS/BSS platform for a regional ISP by myself without mentoring. Referencing demo.splynx.com , I developed most of the BSS side ( bookkeeping, accounting, inventory management ), but, in terms of networking, I managed to install and setup RADIUS and that was about it. I didn't have anyone to mentor me or ask questions to, so I had given up then.Three years later, I decided to try cracking it again. This project is meant to serve as a learning reference for anyone who's been in that same position i.e staring at closed-source vendor stacks without proper guidance. This is absolutely not production-grade, but I hope it gives someone a place to start.Architecture overviewThe core component, the BNG, runs on an event-driven architecture where state changes are passed around as messages to avoid handling mutexes and locks. The session manager is the sole owner of the session state. To keep it clean and predictable, the direBNG never accepts external inputctly. The one exception is the Go RADIUS CoA daemon, which passes CoA messages in via IPC sockets. Everything the BNG produces(events, session snapshots) gets pushed to Redis Streams, where the bng-ingestor picks them up, processes them, and persists them.Simulation and meta-configsI am generating traffic through a simulator node that mounts the host's docker socket and runs docker exec commands on selected hosts. The topology.yaml used by Containerlab to define the network topology grows bigger as more BNG's and access nodes are added. So aether.config.yaml, a simpler configuration, is consumed by the configuration pipeline to generate the topology.yaml and other files (nginx.conf, kea-dhcp.conf, RADIUS clients.conf etc.)Known Limitations- Multiple veth hops through the emulated topology add significant overhead. Profiling with iperf3 (-P 10 -t 10, 9500 MTU, 24 vCPUs) shows BNG→upstream at ~24 Gbit/s, but host→BNG→upstream drops to ~3.5 Gbit/s. The 9500 MTU also isn't representative of real ISP deployments. This gets worse when the actual network is reintroduced capping my throughput to 1.6 Gbits/sec in local.
- The circuit ID format (1/0/X) is non-standard. I simplified it for clarity.
- No iBGP or VLAN support.
- No Ipv6 support. I wanted to target IPv4 networks from the start to avoid getting too much breadth without a lot of depth.Nearly everything I know about networking (except some sections from AWS) I learned building this. A lot was figured out on the fly, so engineers will likely spot questionable decisions in the codebase. I'd genuinely appreciate that feedback.Questions- Currently, the circuit where the user connects is arbitrarily decided by the demo user. In a real system with thousands of circuits, it'd be very difficult to properly assess which circuit the customer might connect to. When adding a new customer to a service, how does the operator decide, based on customer's location, which circuit to provide the service to ?

Developer Debate & Comments

agoodkind • Mar 20, 2026
IMO doing yourself a disservice by not prioritizing competency in IPv6
morphle • Mar 12, 2026
You ask for feedback:I am surprised the author did not mention or uses Software Defined Networking (SDN), Openflow or P4 (programming language for programmable switches) or the mininet simulator. He must have skipped reading the scientific literature even though he is a computer science sophomore?I programmed and build one of the very first ISP hardware and software systems in 1987-1997 when we connected the first submarine link between the US and Europe in Amsterdam.Google switched 50% of the internet that they owned in 2012 to SDN and Openflow [1]. I'm sure they progressed to P4 and more recent SDN controllers since then. They build the Google Fiber ISP[5] with SDN. Cloudflare also uses SDN when last I checked. A majority of the internet has moved to SDN (there are many versions.The author built his simulation on legacy systems mostly from the Telecom world, an alternate reality distinct from the real internet and acces providers we call ISPs. Telecom systems are about surveillance and monetizing the free internet.You can query the US ISPs on the Nanog mailing list, there are similar social media for the European, Asian and other ISPs on other continents. Beware that those are biased to Telecom as well as Tier 1 network operators and less to ISP access providers.I do not think we should continue with the current implementation of the internet. I think we should start deploying the true internet (decentralized, peer to peer) standard and expand it to the Enernet standards of the near future: every building a router (switch) and fiber optic and electricity cables to their peers; their closest neighbors. If every building has peer connections than you are connected all the way to the internet exchanges without need for Tech Bros, Government, Telecom, ISP or Tier 1 network oligopolies. True internet [3], true Enernet [4].[1] OpenFlow @ Google - Urs Hoelzle, https://www.youtube.com/watch?v=VLHJUfgxEO4[2] The Future of Networking, and the Past of Protocols - Scott Shenker https://www.youtube.com/watch?v=YHeyuD89n1Y[3] Fiberhood White Paper https://www.researchgate.net/profile/Merik-Voswinkel/publica...[4] Enernet - Bob Metcalfe https://www.youtube.com/watch?v=axfsqdpHVFU[5] Google Fiber build "Fiberhoods" but my own Enernet ISP Fiberhood had trademarked that name before in 2011.
calebelac • Mar 11, 2026
Thank you for sharing. This is really cool and way more than I accomplished as a sophomore in CS. Keep it up!
nineteen999 • Mar 11, 2026
This brings back fond memories of my first job real job in IT, as the sysadmin for a small boutique mom-n-pop ISP. This was dialup/ISDN days though (back in the late 90's).Good job!
chaz6 • Mar 11, 2026
Thanks for sharing! I am happy to see open-source BNG projects taking off in the last few months. These are a couple of others to look at:-https://github.com/codelaboratoryltd/bng-edge-infrahttps://github.com/veesix-networks/osvbng
error503 • Mar 11, 2026
> - Currently, the circuit where the user connects is arbitrarily decided by the demo user. In a real system with thousands of circuits, it'd be very difficult to properly assess which circuit the customer might connect to. When adding a new customer to a service, how does the operator decide, based on customer's location, which circuit to provide the service to ?I'm not exactly sure what you're asking, but port allocation is, depending on the ISP's deployment model, either going to be fixed at the time the infrastructure was built, or whoever is doing the last metre install will choose a random available port on the switch. The subscriber will be assigned to that port in the RADIUS or equivalent database, and the BNG will query the subscriber based on DHCP Option 82 port information added by the switch. You could also map the subscriber based on MAC address, but this doesn't really work unless you don't support customer provided equipment on their end.
john_strinlai • Mar 11, 2026
this looks pretty interesting! i plan to take a closer look after work, but thought i would mention it now: it may be worth a look through the NANOG (north american network operators group) archives (https://nanog.org/nanog-mailing-list/list-archives/) for information around your question if you havent, and/or posting your question to the NANOG mailing list. there are many very friendly people who have experience running ISPs of all sizes.(or whichever operators group best fits your area. i only subscribe to NANOG, so cant speak to the activity/friendliness of the other groups. you can find a pretty comprehensive list here: https://nanog.org/resources/organizations-our-community/)
nonameiguess • Mar 11, 2026
I feel like you were done dirty. When I was in grad school 12 years ago, our networking classes used mininet to simulate networks on a single host. It's mostly meant for developing SDN systems, but probably would have met your needs and supports way more.On the other hand, building even a tiny subset but doing it yourself from scratch is a great way to learn. I made a very poor man's VM image builder for HyperV years back because Packer didn't have a builder for it at the time and that was a pretty interesting experience. Finally grokked the Windows object model and even though I still don't use it, I at least no longer jeer at PowerShell.I'm interested in the answer to your question, too, but as a customer of an ISP. I don't work for one. I was the first owner of my house and when they hooked me into their network, whoever did messed up my neighbors badly, putting them on the wrong circuit and bleeding noise into adjacent neighborhoods. For three years, complaint calls would get our network cut by third-party contractors with no warning, then we'd have to call and get it reconnected. I don't know how they're supposed to do it, but know it can cause quite a mess when they do it wrong.
yjftsjthsd-h • Mar 11, 2026
Forgive my ignorance, this isn't my strong suit. Am I correct in understanding that this is mostly a simulation layer for the actual physical network, but that you're mostly(?) running off-the-shelf software on top? So this is running the same software that you'd use for a real ISP network, just without having to actually provision all the hardare? Or is part of the actual network management custom as well?
saphalpdyl • Mar 11, 2026
I recently found out about Apache Netbox that would act as the authoritative source of truth for the network topology and replace majority of aether.config.yaml. In Splynx, I did not see any mention of an external solution. It seems they have their own stack for that.A better and UX-friendly implementation would have been Netbox + aether.config.yaml -> configuration pipeline -> topology.yaml + .

Engagement Signals

68
Upvotes
21
Comments

Cross-Market Term Frequency

Quantifies the cross-market adoption of foundational terms like multi-BNG ISP infrastructure lab and IPoE IPv4 subscriber management by tracking occurrence frequency across active SaaS architectures and enterprise developer debates.