Wednesday, May 11, 2016

Facebook Introducing Open/R Modular Routing Platform


Open/R generalizes the concept of a replicated state database found in well-known link-state routing protocols such as OSPF and ISIS. It uses this as an underlying message system upon which is used to build multiple applications. Distributed routing is just one of the applications that leverages this message bus. Facebook is leveraging Thrift for all message encoding and use the well-documented and mature open source ZeroMQ library for all message exchange, whether it's intra-process or inter-process.

ZeroMQ typically uses TCP to establish transport connections and allows for flexible message patterns (with PUB/SUB being one important example) that we actively leverage. While it might sound heavyweight compared with OSPF and ISIS, which use their own “lightweight” transports, we haven't found this to be an issue in modern networking hardware, such as the devices we use for Terragraph or the Wedge and 6-pack boxes running FBOSS in our data center networks. On the plus side, using ZeroMQ saves a lot of work implementing and testing the low-level aspects of the system, and it allows us to use the same framework for intra-application and inter-application messaging.

Link to Post
Click Here To Read Rest Of The Post...

Friday, May 6, 2016

All About Juniper JET Automation Framework


JET is a framework which means all the features ties together that enables JUNOS to be more open and programmable.

There are four big components of JET
1. Python: Python 2.7.8 is supported on all JUNOS devices. By using Python users can develop and execute Python scripts on JUNOS.

2. JSON: JSON is popular data exchange program because of it’s simplicity, light weight and rich native support in several programming languages. Most of the python programmers use JSON as data exchange program. With this help now JUNOS operational show commands can display data in JSON format also along with XML format. JUNOS configuration can be provided directly in JSON format which can help programmer to write code in python and push configuration on box without having worry of XML.

3. Fast Programmatic Configuration Database: It is fast programmatic configuration database used by JUNOS and gives access to controller’s applications which are pushing fast state changes onto JUNOS. SDN applications can make the changes at very high rate with 1000 of configuration changes per second with no configuration validation. The onus of configuration validation will be taken care by the external SDN controllers and applications.

4. JET API: SDN requires programmable interface for fast rate of configuration changes with multiple instance of databases without the contention of database resources. JET APIs are AVATAR of JUNOS SDK which enables APP developer to program the JUNOS control and data plane. JET APIs constitutes of 5 things as mentioned below
a. Route
b. Interface
c. Firewall
d. Management APIs
e. Notifications

JET APIs framework is language and Operating System agnostic which means APP developer can use any of the language and OS of their own choice. The APPS which are written will be binary compatible and decoupled from the JUNOS releases. All the APIs exposed externally by JET will be used internally as well.

Click Here To Read Rest Of The Post...

Thursday, May 5, 2016

Different Types Of Routing Tables In Junos


Juniper Network Operating System (JUNOS) maintains different types of routing tables for clear separation of different types of routes. Each routing table populates a portion of forwarding table and thus the forwarding table is partitioned based on routing table. The routing table in Juniper Network Operating System or JUNOS contains all the information known by that router and routing protocol puts the different routes in the routing table for single destination. Further the routing table places the best route in the packet forwarding engine (PFE).

Below is the list of different types of routing tables created by Junos. They are as follows:
1. Inet.0: This table stores the IPv4 unicast routes. This is equivalent to global routing table in CISCO.

2. Inet.1: This table stores the multicast routes. This table stores the (S,G) entries. This is equivalent to mroute table of CISCO.

3. Inet.2: This table is used for unicast RPF (Reverse Path Forwarding). For subsequent address family indicator (SAFI) 2 routes, when multiprotocol BGP (MBGP) is enabled. This table stores unicast routes that are used for multicast reverse-path-forwarding (RPF) lookup. The routes in this table can be used by the Distance Vector Multicast Routing Protocol (DVMRP), which requires a specific RPF table. In contrast, Protocol Independent Multicast (PIM) does not need this table because it can perform RPF checks against the inet.0 table. You can import routes from inet.0 into inet.2 using routing information base (RIB) groups, or install routes directly into inet.2 from a multicast routing protocol.

4. Inet.3: For IPv4 MPLS. This table stores the egress address of an MPLS label-swiched path (LSP), the LSP name, and the outgoing interface name. This routing table is used only when the local device is the ingress node to an LSP.

5. Inet6.0: This table stores the IPv6 Unicast routes.

6. Bgp.l2vpn.0: This table stores the L2VPN learned routes.

7. Bgp.l3vpn.0: This table stores the L3VPN learned routes.

8. Mpls.0: For MPLS label switching operations. This table is used when the local device is a transit router.

9. Iso.0: For IS-IS routes. When you are using IS-IS to support IP routing, this table contains only the local device’s network entity title (NET).

10. Juniper_Private: For Junos OS to communicate internally between the Routing Engine and PIC hardware.


Click Here To Read Rest Of The Post...