Top Banner
Tech Tutorial:Let’s build mpls router using SDN Vikram Dham, Kamboi Technologies [email protected] Bay Area Network Virtualization Hosted by Cablelabs, Sunnyvale, Dec 2014
20
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Tech Tutorial:Let’s build mplsrouter using SDN

Vikram Dham, Kamboi Technologies

[email protected]

Bay Area Network Virtualization

Hosted by Cablelabs, Sunnyvale, Dec 2014

Page 2: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

About me

• Present -• Co-Founder & CTO Kamboi Technologies

• Working on exciting networking projects!

• Past -• Sling Media

• Built the core P2P software for connecting millions of boxes

• UDP tunnels carrying video and control traffic

• ECI Telecom, Avaya Research Labs, Raytheon, Nextone• 802.11e EDCA & HCCA, WF2Q+, TCP Ack reconstruction in asymmetrical networks

• MS Virginia Tech

Kamboi Technologies 2

Page 3: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Some things about the project..

• Customer PoC• Explore MPLS LDP implementation using Open Flow

• Built using Open Source components• Amazing how much code is in open source!

Kamboi Technologies 3

Page 4: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Control basics

• Centralized controllers –policies, traffic engineering

• Peer to peer protocols such as BGP/LDP – Peering

• Hybrid – Peer to peer + Centralized == Peering, Traffic Engineering & Policing• Work done by leading

researchers to build Software Defined Exchanges (SDX)

Today we will see peering protocols in action!

Kamboi Technologies 4

Page 5: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

RouteFlow Architecture

• Quagga running inside lxccontainers

• rfclient intercepts quagganetlink messages and sends to rfserver

• rfserver – intelligence

• rfproxy – light weight interface between rfserver& OF switches

Kamboi Technologies 5RouteFlow Architecture [1]

Page 6: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Demo test-bed

Kamboi Technologies 6

mininet-vm

routeflow-vm

lxc instances running Quagga

rfvmDrfvmA rfvmB rfvmC rfproxy

A B C D

Quagga + ldp + FPM enabled

Page 7: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

About the vms

• mn.nvirters.org• ubuntu 14.04 based

• Contains mininet & Open vSwitch version 2.3.90

• wireshark with OF dissector, xterm, git-core

• rf.nvirters.org• ubuntu 12.04 based

• Contains RouteFlow, Open vSwitch version 2.3.90

• wireshark, xterm, git-core

Kamboi Technologies 7

Page 8: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Let’s run the ip router

• Import the virtual machines mn.nvirters.org & rf.nvirters.org• Ensure X is running on your host machines (access control is not checked)• Login as nvirters/nvirters• sudo su• ./start_hintf• ./start_xterm• Use ping to test their connectivity• On mn.nvirters.org ./rftest.mn• On rf.nvirters.org cd RouteFlow/rftest; ./rftest2• Take deep breath and let RouteFlow do the magic….

Kamboi Technologies 8

Page 9: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

MPLS 101• Incoming label based switching

• NHLFE -> Next Hop Label Forwarding Entry

• FTN -> FEC to NHLFE mapping

• Advantages• Ability to install custom LSPs

• Faster switching compared to longest prefix match

Kamboi Technologies 9

MPLS

IP

LSR LSR LERLER

FTN

IP Label

NHLFE

11 12

NHLFE

12 14

NHLFE

14 pop & route

IP IP11 IP12 IP12 IP

Page 10: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

RouteFlow modifications to enable LDP

• Used Quagga ldpdimplementation from [3]• Modifications

• Enable user space Forwarding Plane Manager (FPM) interface

• Send NHLFEs & FTNs to RouteFlow

• ldpd config files

• RouteFlow modifications• Forward LDP related traffic to

CONTROLLER• Handle instructions for

multiple tables• Handle mpls related Flow

Mods

• Used FIMSIM code from [4] for interfacing Quagga & RouteFlow using FPM

Kamboi Technologies 10

Quagga •Sends NHLFE & FTN using FPM

rfclient•Converts NHLFE & FTN to OF Flow Mods

rfserver•Maps vm id & port to dp_id & port and inserts into Of Flow Mods

rfproxy

Page 11: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

LDP related Flow Entries

• Send LDP traffic to Quagga lxc containers• UDP packets for saying HELLO

• cookie=0x0, duration=3120.954s, table=2, n_packets=1869, n_bytes=142044, priority=32800,udp,tp_src=646,tp_dst=646 actions=CONTROLLER:65509

• TCP packets for label exchange• cookie=0x0, duration=3120.955s, table=2, n_packets=341, n_bytes=27219,

priority=32800,tcp,tp_dst=646 actions=CONTROLLER:65509

Kamboi Technologies 11

Page 12: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Demo test-bed

Kamboi Technologies 12

mininet-vm

routeflow-vm

lxc instances running Quagga

rfvmDrfvmA rfvmB rfvmC rfproxy

A B C D

Quagga + ldp + FPM enabled

Page 13: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Let’s run the mpls router

• Import the virtual machines mn.nvirters.org & rf.nvirters.org• Ensure X is running on your host machines (access control is not checked)• Login as nvirters/nvirters• sudo su• ./start_hintf• ./start_xterm• Use ping to test their connectivity• On mn.nvirters.org ./rftest.mn• On rf.nvirters.org cd RouteFlow/rftest; ./rftest2• Take deep breath and let RouteFlow do the magic….

Kamboi Technologies 13

Page 14: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Sample LDP packet capture

Kamboi Technologies 14

LDP Hello packets over UDP

LDP label mapping packets over TCP

Page 15: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Sample MPLS packet capture

Kamboi Technologies 15

Packet capture of iperf traffic in the mpls network

Page 16: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

MPLS routing – multiple tables

Kamboi Technologies 16

table=0, mpls actions=goto_table:1table=0, actions=goto_table:2

table=1, mpls,in_port=1,dl_dst=X,mpls_label=10 actions=set_field:Y->eth_src,set_field:Z->eth_dst,set_field:3->mpls_label,output:3table=1, mpls,in_port=1,dl_dst=X,mpls_label=3 actions=pop_mpls:0x800,goto_table:2……

table=2, priority=32700,ip,in_port=2,dl_dst=X,nw_dst=20.0.0.0/24 actions=set_field:Y->eth_src,set_field:Z->eth_dst,push_mpls:0x8847,set_field:5->mpls_label,output:3table=2, priority=32700,ip,in_port=2,dl_dst=Y,nw_dst=40.0.0.0/24 actions=set_field:Y->eth_src,set_field:Z->eth_dst,push_mpls:0x8847,set_field:7->mpls_label,output:3……

Page 17: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

LSR vs LER requirements

• LSR can be implemented using a single table• Possible to combine table 0, table 1 & table 2

• Possible to use commodity OF switches such as Pica8 which have basic mplsactions

• LER needs support of multiple tables• Cannot combine table 1 & table 2

• Use costlier OF switches which utilize FPGAs or NPU based pipelines

• Or, push LER to software switches on the edge – software switch in hypervisor

Kamboi Technologies 17

Page 18: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Takeaways

• Keep as much intelligence & complexity as possible outside the core and push it to the edge!

• Keep the code interfacing with the controller as light as possible

• Software OF switch != Hardware OF switch

• Need software tools for merging Flow Mods from different modules

• Open Flow & Open vSwitch – Giant leap for networking• Helps avoid vendor lock in

• Customer can pick (any 2 out of the 3) from the platter –speed, functionality, cost – ASIC, NPU, FPGA, software switches

Kamboi Technologies 18

More and more functionality to the edge

Page 19: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Yes, I want it to try it!

• Open Source• https://github.com/vdham/RouteFlow

• One touch build compiles and installs all the required components [Fear not the build process]• Base ubuntu 12.04 + build command == RouteFlow Instance with OSPF + LDP

Kamboi Technologies 19

Page 20: Tech Tutorial by Vikram Dham: Let's build MPLS router using SDN

Thanks

• Credits• Teaching Assistants: Thomas E. Kee & Joe Stringer• James Liao±, Dr. Christian Esteve Rothenburg¥, Josh Bailey§, David Liu±, Joe Stringerφ

• ± Pica8

• ¥ University of Campinas (UNICAMP), Brazil

• § Google

• φ VMware

• Cablelabs, Sunnyvale for hosting this workshop

• References [TBD]1. https://sites.google.com/site/routeflow2. http://routeflow.github.io/RouteFlow3. https://github.com/CPqD/RouteFlow/wiki4. https://github.com/ofisher/fimsim5. https://github.com/rwestphal/public-quagga

Kamboi Technologies 20