Coder Social home page Coder Social logo

eswnwind / segment-routing-demo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from perimore/segment-routing-demo

0.0 1.0 0.0 8 KB

Vagrant project containing everything you need to try out segment routing. Includes russellkelly's SR controller found here: https://github.com/russellkelly/SR_Demo_Repo

Shell 100.00%

segment-routing-demo's Introduction

Segment-Routing-Demo

This Vagrant project should allow you to deploy a simple segment routing topology with a controller to get to grips with the configuration involved. Included are 6 Arista vEOS VMs, an Ubuntu 14 VM running Exabgp and a nice graphical controller courtesy of @russellkelly.

References

Requirements

  • Vagrant
  • VirtualBox
  • Around 9GB of RAM when running in a MacOS environment.

You may find lower memory utilisation on Windows or Linux due to support of memory balooning. This is a known limitation on Mac when using virtualised environments, at least with VirtualBox.

Pre-Installation Steps

After installing Vagrant and VirtualBox are installed, we need to add the vEOS virtualbox image to Vagrant. Download the following image from https://www.arista.com/en/support/software-download (user registration required):

vEOS-lab/4.20/vEOS-lab-4.20.1F-virtualbox.box

Change directory to the download location and run the following:

vagrant box add vEOS-lab-4.20.1F-virtualbox.box

The box should now be listed as available in Vagrant:

[sean@Seans-MacBook-Pro] Segment-Routing-Demo $ vagrant box list
vEOS-lab-4.20.1F       (virtualbox, 0)

Note that Ubuntu doesn't need to added, it will be automatically found by Vagrant.

Installation

Providing the vEOS box has been successfully added to Vagrant, we can now go ahead and start building the topology.

git clone https://github.com/perimore/Segment-Routing-Demo.git
cd Segment-Routing-Demo
vagrant up

This will now build the vEOS devices and controller. When finished, log into the devices using:

vagrant ssh controller
vagrant ssh bb1
vagrant ssh bb2
vagrant ssh bb3
vagrant ssh bb4
vagrant ssh bb5
vagrant ssh bb6

vEOS CLI Access

vagrant ssh bb1
...
Arista Networks EOS shell

-bash-4.3# FastCli

bb1.16:58:37>en
bb1.16:58:38#

No configuration changes should need to be made.

Controller Access

To use the controller we need to start Exabgp and the controller script. Open two ssh sessions and start the following in each:

Session 1:
cd SR_Demo_Repo
exabgp srdemo.conf

Session 2:
SR_Demo_Repo
./sr_demo.py -a 1.1.1.1 -u admin -p admin

The GUI can now be accessed here as port 5001 of the controller vm has been forwarded to 5002 on your local system: http://localhost:5002/

Controller Operation

Once up and running an LU tunnel can be signalled to the bb1 vEOS device. Use the following to push a FEC path and service prefix to bb6:

Tunnel FEC

  • Dest FEC: 6.6.6.66 (Lo1 on bb6)
  • Dest FEC NH: 12.0.0.2 (NH of bb2)
  • Select Primary to push the path to bb1
  • Click the nodes in the topology diagram to chose the path taken. I.e. bb5 and bb6.

Service Prefix

  • Dest Prefix: 9.9.9.9/32 (can be any prefix not already used)
  • Dest Next hop: 6.6.6.66 (NH of the tunnel destination as above)

Note that vEOS does not support data path forwarding of traffic over MPLS. Therefore this is just a control plane test. Once pushed, the label path and service prefix can be seen installed on bb1:

bb1.17:30:13#show ip bgp
BGP routing table information for VRF default
Router identifier 1.1.1.1, local AS number 64512
Route status codes: s - suppressed, * - valid, > - active, # - not installed, E - ECMP head, e - ECMP
                    S - Stale, c - Contributing to ECMP, b - backup, L - labeled-unicast
Origin codes: i - IGP, e - EGP, ? - incomplete
AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop

        Network                Next Hop              Metric  LocPref Weight  Path
 * #  L 6.6.6.66/32            12.0.0.2              0       100     0       i
 * >    9.9.9.9/32             6.6.6.66              0       100     0       i


bb1.17:30:10#show ip bgp detail
BGP routing table information for VRF default
Router identifier 1.1.1.1, local AS number 64512
BGP routing table entry for 6.6.6.66/32
 Paths: 1 available
  Local
    12.0.0.2 labels [ 800004 800005 800006 ] from 10.10.10.10 (10.10.10.10)
      Origin IGP, metric 0, localpref 100, IGP metric 1, weight 0, received 00:00:12 ago, valid, internal, not installed (better AD route present)
      Rx path id: 0x0
      Rx SAFI: Labels
      Tunnel RIB eligible
BGP routing table entry for 9.9.9.9/32
 Paths: 1 available
  Local
    6.6.6.66 from 10.10.10.10 (10.10.10.10)
      Origin IGP, metric 0, localpref 100, IGP metric 0, weight 0, received 00:00:12 ago, valid, internal, best
      Rx path id: 0x0
      Rx SAFI: Unicast
      
      
bb1.17:30:56#show mpls tunnel fib
   Tunnel Type         Index       Endpoint           Nexthop        Interface      Labels
------------------- ----------- ------------------ -------------- ----------------- -----------------
...
   BGP LU              1           6.6.6.66/32        12.0.0.2       'Ethernet1'    [ 800004 800005 800006 ]
   
bb1.17:33:10#show mpls segment-routing bindings
1.1.1.1/32
   Local binding:  Label: imp-null
   Remote binding: Peer ID: 0002.0002.0002, Label: 800001
   Remote binding: Peer ID: 0003.0003.0003, Label: 800001
2.2.2.2/32
   Local binding:  Label: 800002
   Remote binding: Peer ID: 0002.0002.0002, Label: imp-null
   Remote binding: Peer ID: 0003.0003.0003, Label: 800002
3.3.3.3/32
   Local binding:  Label: 800003
   Remote binding: Peer ID: 0002.0002.0002, Label: 800003
   Remote binding: Peer ID: 0003.0003.0003, Label: imp-null
4.4.4.4/32
   Local binding:  Label: 800004
   Remote binding: Peer ID: 0002.0002.0002, Label: 800004
   Remote binding: Peer ID: 0003.0003.0003, Label: 800004
5.5.5.5/32
   Local binding:  Label: 800005
   Remote binding: Peer ID: 0002.0002.0002, Label: 800005
   Remote binding: Peer ID: 0003.0003.0003, Label: 800005
6.6.6.6/32
   Local binding:  Label: 800006
   Remote binding: Peer ID: 0002.0002.0002, Label: 800006
   Remote binding: Peer ID: 0003.0003.0003, Label: 800006

bb1.17:31:02#show ip route 9.9.9.9/32

VRF: default
Codes: C - connected, S - static, K - kernel,
       O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
       E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
       N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP,
       R - RIP, I L1 - IS-IS level 1, I L2 - IS-IS level 2,
       O3 - OSPFv3, A B - BGP Aggregate, A O - OSPF Summary,
       NG - Nexthop Group Static Route, V - VXLAN Control Service,
       DH - Dhcp client installed default route

 B I    9.9.9.9/32 [200/0] via 12.0.0.2, Ethernet1 label **800004 800005 800006**

segment-routing-demo's People

Contributors

perimore avatar

Watchers

eswnwind avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.