frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: I built an ISP infrastructure emulator from scratch with a custom vBNG

https://aether.saphal.me/dashboard/default
3•saphalpdyl•1h ago
Demo: https://aether.saphal.me GitHub: https://github.com/saphalpdyl/Aether

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 project

I'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 overview

The 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-configs

I 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 ?

What Happens When Your Stripe Payment Fails

https://dvcoolarun.com/stripe/system-design/payments/2026/03/11/What-Happens-When-Your-Stripe-Pay...
1•dvcoolarun•19s ago•0 comments

Elastic Docs Skills

https://github.com/elastic/elastic-docs-skills
1•taubek•34s ago•0 comments

The Death of Coding Is Cancelled

https://medium.com/predict/the-death-of-coding-is-cancelled-why-your-ai-assistant-is-quickly-beco...
1•youknownothing•35s ago•0 comments

Chasing Boring at Just the Right Speed

https://log.andvari.net/no-mttr.html
1•rdoherty•45s ago•0 comments

RedwoodSDK v1.0 released – We stopped breaking everything

https://rwsdk.com
1•pistoriusp•2m ago•0 comments

Near token jumps 17% after 'Confidential Intents' launch

https://www.coindesk.com/markets/2026/03/02/near-token-jumps-17-after-confidential-intents-launch...
1•PaulHoule•2m ago•0 comments

The Complexity of a 60-Line Script

https://www.etiq.ai/posts/why-visual-programming-and-testing-are-the-next-step
1•robertcizmas•2m ago•1 comments

The Browser Becomes Your WordPress

https://wordpress.org/news/2026/03/announcing-my-wordpress/
2•tiernano•4m ago•0 comments

Hitching Your Software Engineering Firm's Positioning to a Platform

https://punctuation.com/hitching-your-software-engineering-firms-positioning-to-a-platform/
1•herbertl•4m ago•0 comments

Show HN: Opensoul – Open-source agentic marketing stack (6 AI agents)

https://github.com/iamevandrake/opensoul
1•iamevandrake•4m ago•1 comments

Applying Statistics to LLM Evaluations

https://cameronrwolfe.substack.com/p/stats-llm-evals
2•Brajeshwar•7m ago•0 comments

Let yourself fall down more

https://ntietz.com/blog/let-yourself-fall-down-more/
3•Brajeshwar•7m ago•0 comments

After the AI Revolution

https://www.noemamag.com/after-the-ai-revolution/
1•Brajeshwar•7m ago•0 comments

A Chrome extension to export a Gemini chat or selected messages

https://chromewebstore.google.com/detail/gemini-exporter-save-gemi/lgipeakgdkcgnkdljeagconfbfeolidj
1•nongquy•8m ago•0 comments

U.S. at Fault in Strike on School in Iran, Preliminary Inquiry Says

https://www.nytimes.com/2026/03/11/us/politics/iran-school-missile-strike.html
9•jbegley•11m ago•2 comments

Functional Universe – Physics as Composable Functional Transitions

https://voxleone.github.io/FunctionalUniverse/index.html
1•voxleone•11m ago•0 comments

Diffusion LLM may make most of the AI engineering stack obsolete

2•victorpiles99•12m ago•0 comments

When Your Life's Work Becomes Free and Abundant

https://x.com/adityaag/article/2031396465063436395
1•vednig•12m ago•0 comments

Inline MCP results are the new prompt bloat

https://futuresearch.ai/blog/mcp-results-widget/
6•rafaelpo•13m ago•1 comments

Wiz Joins Google

https://www.wiz.io/blog/google-closes-deal-to-acquire-wiz
5•aldarisbm•13m ago•0 comments

I made a tool that scores your startup, app or business "objectively"

https://stacksleuth.vercel.app
1•aether-dev•14m ago•1 comments

Notes from Token Town: Negotiating for the Fortune 5M

https://twitter.com/sarahmsachs/status/2031473087791902991
1•sundaypancakes•14m ago•0 comments

New Programming Languages Have an AI Problem

https://edgl.dev/blog/ai-language-adoption/
2•edg-l•15m ago•1 comments

The first AI Operating System for serious professionals

https://www.sooko.ai/
1•Femiaguda•15m ago•1 comments

Legend of Zelda: Ocarina of Time on the Apple Watch [video]

https://www.youtube.com/watch?v=1DR0ESBEC8s
1•zdw•16m ago•0 comments

HTTPS certificates in the age of quantum computing

https://lwn.net/SubscriberLink/1060941/af07898a15c68291/
1•askl•16m ago•0 comments

The Upfront Investment That Saves 10k Hours

https://eric.mann.blog/the-upfront-investment-that-saves-10000-hours/
1•eamann•17m ago•0 comments

DNSSEC NTAs: No Good Compromises

https://quad9.net/news/blog/dnssec-ntas-no-good-compromises/
2•Velocifyer•17m ago•0 comments

Answering Machine Messages from "Weird Al" Yankovic

http://www.noveltyansweringmachine.com/video/weirdal.html
1•TigerUniversity•17m ago•0 comments

Code Quality in the Age of Coding Agents

https://michaeltimbs.me/blog/code-quality-in-the-age-of-coding-agents/
2•mmorris•17m ago•1 comments