Friday, May 29, 2015

The Four Agreements, Don Miguel Ruiz (
"Be Impeccable With Your Word. Speak with integrity. Say only what you mean. Avoid using the word to speak against yourself or to gossip about others. Use the power of your word in the direction of truth and love..."
"Don't Make Assumptions. Find the courage to ask questions and to express what you really want. Communicate with others as clearly as you can to avoid misunderstandings, sadness and drama. With just this one agreement, you can completely transform your life..."
"Don't Take Anything Personally. Nothing others do is because of you. What others say and do is a projection of their own reality, their own dream. When you are immune to the opinions and actions of others, you won't be the victim of needless suffering..."
"Always Do Your Best. Your best is going to change from moment to moment; it will be different when you are healthy as opposed to sick. Under any circumstance, simply do your best, and you will avoid self-judgment, self-abuse and regret..."

Tuesday, May 26, 2015

BGP Protocol - Traffic Capture

Without having to capture your own trace, a good source for sample traffic capture of BGP protocol is here,

There is also a good set of cheat sheet on the same site,

Monday, May 25, 2015

Using IP SLA to control static routes on Cisco IOS


Static route configuration can take an extra parameter which is the track object.   The route can be active/inactive based on whether the track object status.
Ciscozine(config)#ip route track 10

Gentle introduction to Puppet

Short, but sweet!

Introduction to REST API

Short, but effective!

Interesting stuff from Facebook DC network talks

This is like a 5-star movie, plain at first sight, lovely every time you re-watch, Facebook's Data Center Fabric.

16 servers per rack, 48 racks per pod, 48 pods per altogether. (Total number of servers are 16 x 48 x 48 = 36,864 servers in a single fabric clos). 1 wedge for each rack as Top of Row switch (presumably) [16 ports x 40Gbps], and truck load of 6-Packs [128 ports x 40 Gbps x 1.92Tbps non-blocking throughput].
Inter-pod traffic, for fully populate network, there are 4 x ECMP paths (at the maximum of 4 hops) from any rack to any other rack. Intra-pod traffic (traffic between racks belonging to the same pod, it is 4xECMP path with 2 hops each.

From the look of it,
1. Each server seems to only connect to the network via a single NIC. (i.e. no network connection redundancy) (I think we can pretty much presume commodity-grade server hardware is used also). Therefore, redundancy is definitely built-in at a software layer and entirely make do without the server level redundancy. (I do not have a hard evidence here, but this guys may not even use RAID at the server)
2. One single protocol, BGP. (Hah! say it again!) At first, I think the detail is skimmed over, but later slide show that 6-pack has only minimum routing functionality. And I was like, ummm, how the hell do they do that? And I am curious. And that probably is a good thing. Is this actually possible? What is the convergence time? Does it really matter given the design? A good source I turned to only suggested that I should think whether that IGP element is absolutely required. (OSPF/IS-IS)

Assuming we want to improve on this design, what can we improve and why! (Wow, that makes it even more interesting, isn't it? :P)
- Attached Screenshot Taken from Facebook's Data Center Fabric,
- See also, Introducing 6-pack, the First Open Hardware Modular Switch 

- See also a walking through iterations of the design, Datacenter Networking @ Facebook,  (This one actually explicitly states that BGP is the only protocol used in the fabric)

See Also:

- Use of BGP for routing in large-scale data centers, draft-ietf-rtgwg-bgp-routing-large-dc-02,

Saturday, May 23, 2015

Search (All) CUCM Documentation using Custom Search

Try this link,

Learning Basic OS Preemption

I was curious about how OS preemption is implemented.   I think the best way is to learn from the simplest OS.

I found FreeRTOS to be a good real OS that can help me learn those implementation detail.

It also help that FreeRTOS is documented as part of "The Architecture of Open Source Applications" Book II.  


"...The heartbeat of a FreeRTOS system is called the system tick. FreeRTOS configures the system to generate a periodic tick interrupt. The user can configure the tick interrupt frequency, which is typically in the millisecond range. Every time the tick interrupt fires, the vTaskSwitchContext() function is called. vTaskSwitchContext() selects the highest-priority ready task and puts it in the pxCurrentTCB variable like this..."

See Also.

CFS (which is default scheduler for processes) has no fixed timeslice, it is calculated at runtime depending of targeted latency (sysctl_sched_latency) and number of running processes. Timeslice could never be less than minimum granularity (sysctl_sched_min_granularity).
Timeslice will be always between sysctl_sched_min_granularity and sysctl_sched_latency, which are defaults to 0.75 ms and 6 ms respectively and defined in kernel/sched/fair.c.
But actual timeslice isn't exported to user-space.

Learning Basic MPLS

I think MPLS Section on CCIE 5.0 Official Guide is quite good.   Here is an excerpt from the book outline.


Part VI Multiprotocol Label Switching (MPLS)
Chapter 11
 Multiprotocol Label Switching 515
“Do I Know This Already?” Quiz 515
Foundation Topics 519
MPLS Unicast IP Forwarding 519
    MPLS IP Forwarding: Data Plane 520
        CEF Review 520
        Overview of MPLS Unicast IP Forwarding 521
        MPLS Forwarding Using the FIB and LFIB 522
        The MPLS Header and Label 524
        The MPLS TTL Field and MPLS TTL Propagation 524
    MPLS IP Forwarding: Control Plane 526
        MPLS LDP Basics 527
        The MPLS Label Information Base Feeding the FIB and LFIB 529
        Examples of FIB and LFIB Entries 532
        Label Distribution Protocol Reference 534
    The Problem: Duplicate Customer Address Ranges 535
    The Solution: MPLS VPNs 537
    MPLS VPN Control Plane 539
        Virtual Routing and Forwarding Tables 540
        MP-BGP and Route Distinguishers 541
        Route Targets 543
        Overlapping VPNs 545
    MPLS VPN Configuration 546
        Configuring the VRF and Associated Interfaces 548
        Configuring the IGP Between PE and CE 550
        Configuring Redistribution Between PE-CE IGP and MP-BGP 553
        Configuring MP-BGP Between PEs 555
    MPLS VPN Data Plane 558
        Building the (Inner) VPN Label 559
        Creating LFIB Entries to Forward Packets to the Egress PE 560
        Creating VRF FIB Entries for the Ingress PE 562
        Penultimate Hop Popping 564
Other MPLS Applications 565
Implement Multi-VRF Customer Edge (VRF Lite) 566
    VRF Lite, Without MPLS 566
    VRF Lite with MPLS 569
Foundation Summary 570
Memory Builders 570
    Fill In Key Tables from Memory 570
    Definitions 570
    Further Reading 570

There is also a good session on Cisco Live On Demand.   This rendition of the session is quite interesting.

BRKCCIE-3345 - The CCIE Candidate's Introduction to MPLS L3VPN Networks (2013 Orlando),

- Scott Morris - Chief Technology Officer, Copper River IT
- Keith Barker - Edutainment Specialist, Trainer

Lecture - 24 Multiple Label Switching(MPLS)


Learning about ILS - Intercluster Lookup Service in CUCM

One of the good source for me is to learn from Cisco Live On Demand session.

This session is applicable to ILS.

BRKCCIE-3509 - Intercluster Lookup Service in Cisco Unified Communications Manager Release 10 (2014 San Francisco)

New Features in CUCM

The following documents are the good source of listing the new feature for each CUCM version.   It is often found as part of the release notes set of document.

CUCM Release Notes page can be found here.

Search for "New and Changed"

Here are some examples of such documentation.

New and Changed Document for Cisco Unified Communications Manager Release 7.1(1)
New and Changed Information for Cisco Unified Communications Manager 8.0(x)
New and Changed for Cisco Unified Communications Manager 8.5(1)
New and Changed Information for Cisco Unified Communications Manager Release 8.6(2)
New and Changed Information for Cisco Unified Communications Manager Release 8.6(1)
New and Changed Information for Cisco Unified Communications Manager, Release 10.0(1)

I also found that the CUCM Features add Services Guide Documentation is a good documentation to find out the list of all features.  From there we can derive a set of new feature set.

List of all Features and Services Guide can be found from Manage and Operate Guides page.

Search for "Features and Services" on the page.