7. • Introduction
• Multi-Level Architecture
• Micro-services & APIs
• Commoditization & Unit Economics
• Resiliency, system coupling and state recovery
• Open Source Development & Test
• Conclusion
Agenda
I am Hannes Gredler currently exiting my engagement with Juniper Networks, Inc. the worlds second largest router-vendor.
Throughout my entire professional life I have been supporting and building routers and routing software.
It takes 10000 hours of experience to master any art. – In the Routing world I have accumulated experience of
18000 hours of deploying and supporting routers and another 18000 hours for developing software and making system design choices.
At Juniper I am in charge of providing architectural guidance for Junipers Development center in Bangalore, India.
In my role I oversee the routing-protoccol development at the intersection of BGP, IS-IS and MPLS.
As a voluntary community service I do chair the IETF working group standardazing extensions to the IS-IS Link-state routing protocol.
In addition I have authored/co-authored the following documents
http://www.arkko.com/tools/allstats/hannesgredler.html
The core of the system is a distributed data store which holds every state in the system. Irrespective if it is interface information, IS-IS adjacencies, BGP RIBs or forwarding tables – every state is stored in the back store.
Brick Data Store (BDS) it is a model-driven indexing and data replication vehicle.
BDS has been designed for speed and consistency – data insertion can progress as fast as 1M updates per second per CPU core.
The back store is configured by defining tables, objects and its attributes akin to a SQL server using a json config file.
The back store also allows to quickly locate who is the originator of a an object and generate local replicas of that data for local (in-situ) processing.
BDS is fully horizontal scalable, so if there are large tables (like for example RIB-ins) then it can shard the workload across a set of worker processes) all of the shard-ing can happen without changing a single-line of code
The database centric design allows us to do all the cool-HA things, like doing live-software upgrades, restart of components without loss of service, etc. – Furthermore this design paradigm greatly minimizes the amount of boiler-plate code that one has to do to develop new networking code.