Hacker News new | past | comments | ask | show | jobs | submit login
A brief history of router architecture (apnic.net)
213 points by xuande on March 13, 2021 | hide | past | favorite | 33 comments



Cool seeing this post tonight. I just finished implementing a router for my networks class like 30 minutes ago.

https://cseweb.ucsd.edu/classes/wi21/cse123-a/project.html

We use this book and its amazing:

https://book.systemsapproach.org/index.html

Section 3.5 covers router implementation details.


THANK YOU for the link to book.systemsapproach.org! My "library" has been missing a resource like this. :)


Wow, that’s cool - fun assignments, too. Are you allowed to share the skeleton code referenced in the descriptions?


This is why I stay on HN. This is such a niche, interesting subject that I never would have found otherwise.

I’ve been looking for networking resource that go in depth on things like this, rather than just configuring and setting up equipment. Does anyone know anything like this? I’m especially interested in ones for telecommunications networking technology.


Please check this book "Computer Networking : A Top-Down Approach" By Kurose & Ross. It is the best textbook on computer networking, bar none. The latest edition also covers modern networking concepts, for example Software Defined Networks (SDN).

[1]https://www.amazon.com/Computer-Networking-Top-Down-Approach...


The Kurose/Ross textbook is also a favourite of mine.

Consider checking out https://book.systemsapproach.org/index.html as a free alternative as well.

The authors develop the book, as well as a few micro-books on topics like SDN, 5G, TCP congestion control, on github: https://github.com/SystemsApproach

They also have a blog with regular updates: https://www.systemsapproach.org/blog

And if you're curious about the motivation behind the project, they have a whitepaper: Open Source Networking Education: A Systems Approach - https://www.systemsapproach.org/uploads/4/7/7/4/47748257/sig...


Some pointers that might be useful:

https://beej.us/guide/bgnet/

https://github.com/srsLTE/srsLTE

https://www.gnuradio.org/grcon/grcon17/presentations/open_fi...

https://en.wikipedia.org/wiki/Asterisk_(PBX)

Don’t be afraid to study the source code if you’re curious about the inner workings of a system. Best of luck!


HPBN (High-Performance Browser Networking) is excellent. I can vouch for the print edition I bought a couple years ago, and the companion website gets updates: https://hpbn.co

Also, today thanks to this thread I discovered https://book.systemsapproach.org and can already recommend it.


Thank you for the kind comments. If you have questions, I'm happy to answer them. -- Tony Li


I missed a statement about the transition between internal and external scaling. In the beginning of the article it is all about internal computer architecture, later more about deployment.

What is the state of internal architecture?


Stuck at Clos networks. Not expected to make significant further progress.


Thanks for the article. Nice read.


> In the beginning, routers were simply generic computers, with Network Interface Cards (NICs) attached to a bus.

I'm a total network noob, but I do want to know more about how they work. Your article could help me, I think. But this statement already puts me off: what is a bus? I just can't picture what that's supposed to mean. Sorry if that's a stupid question. Maybe the article is just not for me and I need some primer first.


You might find these pages interesting:

https://en.wikipedia.org/wiki/S-100_bus

https://en.wikipedia.org/wiki/Bus_(computing)

It’s a physical data highway that allows devices to communicate with each other.

Early routers were ‘normal’ computers with lots of network cards plugged into a bus. Data arrived on one card, and was routed to another by the operating system.

Your home router is still a computer, but miniaturises everything to a much simpler circuit board with the network connectors directly soldered on.


A bus is something computers and peripherals comunicate on. Think PCI, PCIexpress, USB


Well technically a bus is a group of wires shared amongst several devices. Each device has to wait its turn to talk/listen.

PCI, AGP, ISA, IDE are busses.

PCI express, USB, SATA are not busses but rather point-to-point protocols.


The usage of the term has changed a bit. From WP:

"Early computer buses were parallel electrical wires with multiple hardware connections, but the term is now used for any physical arrangement that provides the same logical function as a parallel electrical bus. Modern computer buses can use both parallel and bit serial connections, and can be wired in either a multidrop (electrical parallel) or daisy chain topology, or connected by switched hubs, as in the case of USB. "

(The B in USB stands for Bus)


Is it like a bunch of wires?


It's both a bunch of wires as well as the definition for the protocol that uses said wires.


Tony,

Great article, thanks for taking the time to put it together. Hope to find more articles like this from you in the near future :)


Name a topic...


The knowledge ingestion from reading your article felt like being plugged into the matrix. Great article!


Almost 25 years ago I had the brief pleasure of working for BBN Technologies. On one memorable occasion I went to their warehouse to borrow a large external hard drive and spotted at least one IMP (effectively a router for early ARPANET).

https://en.wikipedia.org/wiki/Interface_Message_Processor

I hope some of that warehouse ended up in a museum at some point.


Nice article. Would be great to see some more detail with a timeframe for the progression and example routers that were known to be early implementers of each design.



I'm also a fan of this book. Its a bit dated, but the basics are the basics. The ideas here are still widely applied in industry.

Also worth checking out is the on-chip networks book from the synthesis lecture series.


Ok this is really cool. I had no idea content like this existed. Now if only I new anything about general computer architecture.


Hennessy and Patterson is the book you need.


The Fifth Edition (from 2012 - the latest edition is the sixth from 2017) is available as a free download from the ACM.

PDF link: https://dl.acm.org/doi/pdf/10.5555/1999263


A picture’s worth a thousand words


But is this within or external to the router. After SNA and token ring, the Ethernet-cum-internet decentralised not just the net but also the router, switch, cable up to internet (local : ospf and ...).

Not sure why it seems to talk about the router. Even a small floor network does not run on one router. But panels, switches, routers, ups ... abd that is in 1990s to now.

The internal architecture ... is that so important. (Some big router-switch with many cards may be. But that is not the only one approach.)


Everything that I talk about is internal to the router.

Some of us think that the architecture of big routers is plenty important. It's those routers that hold up the backbone of the Internet and a whole lot of other places.

Yes, you can build distributed routers. The supernode that I discuss is one such example. But that doesn't mean that you want to build it with a bunch of tiny home routers that you bought off the shelf at Fry's. You still want to start with fairly chunky building blocks, otherwise you end up suffering from a lot of inefficiencies just interconnecting things. Jonathan Turner calls this the 'small switch penalty'.


I don’t understand all that much about the finder details of high-capacity networking, but it sure is a fascinating and important concept! The sheer volume of packets that are sent every day over the world is nothing but amazing.

Welcome to Hacker News. Glad to see you here!




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: