Building Scalable Data Centers: BGP is the Better IGP
In the video Building Scalable Data Centers: BGP is the Better IGP, Petr Lapukhov tells us why BGP is chosen.
Firstly, he states the situation as the problem statement:
- many servers with 1G/10G NICs
- traffic is East-West as well as North-South
The objective:
- simple physical topology
- simple routing protocol
- well supported by vendors
The justification of choosing BGP is given:
- better vendor support
- simple enough
- per-hop traffic engineering. (In this context, he means the next hop route can be easily controlled. Not the traffic engineering in the context of RSVP.)
- easy to troubleshoot
- the event propagation is more constrained. That is to say, link failure is limited to the two routers of the link. In the case of OSPF, all the routers need to do SPF calculations.
- the information is straight forward, just the various RIB’s. For OSPF, the link state database needs to be consulted.
Down sides
The comma operator (almost made me have a coma to understand it.)
I tried to understand the comma operator. I have tried the following small program:
#include <iostream>
int main ()
{
int j = 0;
int k = 0;
j = 4,5;
k = (4,5);
std::cout << "j: " << j << std::endl;
std::cout << "k: " << k << std::endl;
return 0;
}The compiler does give some warnings, despite a little bit different:
warning: expression result unused [-Wunused-value]
8 | j = 4,5;
| ^
warning: left operand of comma operator has no effect [-Wunused-value]
9 | k = (4,5);
| ^ and the result is:
What is folding expression?
I have got a very brief idea about what a fold expression is. Basically from this video and cpp referecences.
I have not completely understand it. All I know so far is:
- it is related to templates
- it is deal with a list of parameters
I will go back to here and update a bit more later, just like a JRPG.
One More Thing
I have been bitching about hugo and antora in my last post. Actually there is one more thing.
It is not as powerful as hugo. It cannot even be considered as a full fledged package. It is just a wrapper around the mdbook crate. The biggest pro is tight integration with Rust. All documentation including about Rust, for example, the book, is generated by mdbook. Another good example is neovide website.
neovide (github) is an interesting project that enlightens me in may ways.
So Far So Good
In the last a couple of days, I have been researching about writing in markdown and asciidoc. The general approach is to get the respective toolchain working, then find a hosting site.
My ultimate goal is to have a blog that supports
- markdown
- asciidoc
- mermaid
- hosting in, say, netlify, github pages, gitlab pages, with automated CI/CD
- resize the image properly
Hugo does have asciidoc support but why another blog?Under the hood, hugo uses asciidoctor as and extension or add-on functionalities to render the asciidoc. That is to say, it does not support asciidoc natively, viz., the functionality is not built-in has part of the single hugo binary.
Mermaid at Last
At last I have got mermaid working! The bad news is that the the official guide doesn’t work. I am following the recipe from this post. It is not that difficult, but it needs to be set up each and everytime. May be I can custom a theme myself. This is the mermaid flowchart documentation.
Graph
Sequence Diagram
prevail! John-->>Alice: Great! John->>Bob: How about you? Bob-->>John: Jolly good!
E-R Diagram
Class Diagram
Why I Use Hugo
This blog is generated by Hugo hosted in github as a github page. This post answers the questions:
- why i do it this way?
- how?
I have been blogging since 2000’s. My primary platform was google’s blogger. It was a good platform. Yet it is geared towards blogging with a desktop computer. the 2000’s saw the rise of smart phones or iPhones. I am an iPhone user since 3GS. I did have a period of time that carrying two smart phones with me. One iOS and one Android most of the time.
My Gears
These are my gears.

On the top is my M2 Macbook Air with which I am writing this blog. Below it is my M1 14-inch macbook Pro.
餃子 - the M2 Macbook - is my personal laptop. My previous Macbook Air was a Core2Duo 2010 model. It was still in good shape, solid build, the keyboard, screen display and wifi are all working good in excellent condition. The overall performance is the only reason to retire it.
Some routing links
Getting Started with BIRD Routing Software
Modular, Pure Layer 3 Network for Kubernetes: The Implementation
BIRD
Intro to BGP with BIRD
cilium - Using BIRD to run BGP
FRRouting, OpenBSDd and BIRD
BGP Open Source Tools
Comparing Open Source BGP Stacks
Followup Measuring BGP Stacks Performance
Oreilly BGP in the Data Centre