YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

VirtualizedPEforBGP/MPLSL3-VPNusingOpen-SourceSoftwareNANOG74(October2018)

BilalAnwer,RobertBays,VijayGopalakrishnan,BoHan,DewiMorgan,PatrickRuddy,AmanShaikh,SusheelaVaidya,ChengweiWangandGeorgeWilkie

Page 2: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

2

IntroductionObjective•  DemonstratefeasibilityofcreatingaBGP/MPLSL3-VPNvPEusingopen-sourcesoftware

Motivation•  Use-caseforAT&T’sDANOS(DisaggregatedNetworkOS)•  WhyL3-VPNvPEfromopen-sourcesoftware?–  L3-VPN•  Allowscreationofmultiplelayer-3virtualnetworksontopofasharedservice-providernetwork

•  Widelyusedservicebyenterprises

–  vPE•  EnablerVNFwhichactsastheingressandegressforL3-VPNtrafficintheservice-providernetwork

–  Opensourcesoftware•  Allowsincreasedagilityinprovidingnewfeatureswhilereducingthecost

Challenges•  Requiredfunctionalandintegration-relatedextensionstoopen-sourcecomponents

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

Page 3: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

3

SoftwareComponentsofOpenSourcevPE Control-plane•  FRR(5.1-dev,snapshote8f9540)forOSPF,LDPandZebra•  GoBGP(version1.31.1=version1.31+ourenhancements)

Data-plane•  AT&T-Vyatta’s(DPDK-based)data-plane

• Wealsoverifiedfeasibilitywith…–  Linuxdata-plane(kernel4.14.4-mpls)

–  VPPdata-plane(release1801+routerplug-inwithourenhancementswhichhavebeenup-streamed)

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

DANOSUse-Case

Page 4: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

4

SoftwareArchitectureofDANOSOpenSourcevPE

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

Control-plane

FRROSPF

FRRLDPGoBGP

AT&T-VyattaDPDKbasedData-plane

FRRZebrazserv.api

vPE

LinuxForwardingTable

RIB

NIC

KernelFIB

NetLinkLinuxNetworkingStack

TAPInterface

LinuxUserSpace

LinuxKernelSpace

FIB

AT&T-VyattaRouteBrokerReliable&highscaleroutedownload

Existingclientsofnetlink

Page 5: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

vCEred_east

Videoserver

172.16.0.2

RedEastOffice

5

VerifyingFeasibility

•  Demonstratedfeasibilitybyconcurrentlyrunningtwovideostreams–  KeepvideotrafficseparatedespitesameIPaddressesbeingusedbytwocustomers

–  Eachclient/serverhasastaticroutepointingtoitsupstreamCE

–  EachCEadvertisesappropriateprefixtothePENANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

Corerouter+

VPNv4RR

vPEwest vPEeast

OSPFLDP

VPNv4BGP

OSPFLDP

VPNv4BGP

VRFred VRFred

VRFblue VRFblue

ServiceProvider

SameIPaddress SameIPaddress

vCEblue_west

Videoclient

172.16.0.1

BlueWestOffice

vCEred_west

Videoclient

172.16.0.1

RedWestOffice

Videoserver

172.16.0.2

BlueEastOfficevCE

blue_east

Videostream

Videostream

Page 6: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

6

PacketCaptureatCoreRouterduringVideoStreaming

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

`CorerouterClients vCEs

vPEeast

vPEwest ServersvCEs

redserver→redclient

redclient→redserver

blueclient→blueserver

blueserver→blueclient

Page 7: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

7

ConfigurationDetailsEstablishLSP(LabelSwitchedPaths)betweenPEs•  EnableIPandMPLSforwarding

•  ConfigureOSPFandLDPonserviceproviderrouters

EnableL3-VPNservice•  ConfigureVRFs•  ConfigureeBGPsessionsbetweenPEsandCEs•  ConfigureiBGPsessionsbetweenPEsandroutereflector

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

Note:WeusedAT&T/DANOSYangModulesforconfiguringvPEswherepossible,butshowequivalentLinux,FRRandGoBGPcommandsinsubsequentslides

Page 8: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

8

TaleofTwoLoopbacksConfiguredtwoloopbackaddressesonvPEsandcorerouter•  Loopback1–  UsedforIPtrafficincludingcontrol-planetraffic•  Loopback2–  UsedforMPLStraffic•  HencealltrafficfromVPNcustomers

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

Page 9: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

9

vPEEast:ConfiguringMPLSForwarding

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

`CorerouterClients vCEs

vPEeast

vPEwest ServersvCEs

# Enable IPv4 forwarding $ sudo sysctl –w net.ipv4.ip_forward=1 # Load MPLS modules $ sudo modprobe mpls_router $ sudo modprobe mpls_iptunnel # Enable MPLS forwarding on the interface facing the core router $ sudo sysctl -w net.mpls.conf.ens4.input=1 # Allocate entries in MPLS label table $ sudo sysctl -w net.mpls.platform_labels=1048575

Page 10: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

10

vPEEast:FRROSPFandLDPConfigurations

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

`CorerouterClients vCEs

vPEeast

vPEwest ServersvCEs

OSPFConfiguration LDPConfiguration

Page 11: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

11

vPEEast:VRFConfiguration

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

`CorerouterClients vCEs

vPEeast

vPEwest ServersvCEs

# Create VRF blue and bring it up $ sudo ip link add blue type vrf table 1 $ sudo ip route add table 1 unreachable default metric 4278198272 $ sudo ip link set dev blue up # Add interface to vCE blue-east to VRF blue $ sudo ip link set dev ens6 master blue # Allow BGP to listen on port 179 over the VRF-bound interface $ sudo sysctl –w net.ipv4.tcp_l3mdev_accept=1 $ sudo sysctl –w net.ipv4.udp_l3mdev_accept=1

Page 12: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

12

vCEBlueEast:FRRBGPConfiguration

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

`CorerouterClients vCEs

vPEeast

vPEwest ServersvCEs

AllowsconfigurationofeBGPsessiontovPEEastloopback

Page 13: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

13

vPEEast:GoBGPConfiguration

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

`CorerouterClients vCEs

vPEeast

vPEwest ServersvCEs

Useofpolicyforsettingnext-hop-selfrequirespolicy

CommunicatetoLinuxkernelandVyattadata-planeviaFRRZebra

iBGPsessionwithRoute-Reflector

Page 14: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

14

vPEEast:Defining“SetNext-HopSelf”policy

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

`CorerouterClients vCEs

vPEeast

vPEwest ServersvCEs

Matchontheroutereflectorasneighbor

Setloopback2ofthisPEasthenext-hop

Page 15: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

15

vPEEast:AddingVRFandeBGPNeighborviaGoBGPCLI

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

`CorerouterClients vCEs

vPEeast

vPEwest ServersvCEs

CommandsforaddingblueVRFandeBGPsessiontovCEeast-blue

$ ip link show blue

11: blue: <NOARP,MASTER,UP,LOWER_UP> mtu 65536 qdisc noqueue state UP

mode DEFAULT group default qlen 1000

link/ether ae:07:ef:a3:f3:f7 brd ff:ff:ff:ff:ff:ff

$ gobgp add vrf blue id 11 rd 100:1 rt both 100:1

$ gobgp nei add 10.31.4.10 as 65101 vrf blue

UseofifIndexvalueassignedbyLinuxasVRFid

Page 16: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

16

GoBGPConfigurationforRouterReflector

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

`CorerouterClients vCEs

vPEeast

vPEwest ServersvCEs

NoneedtocommunicatewithFRRZebrasinceVPNv4routesarenotinstalledinforwardingtable

Page 17: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

17

Implementation:L3-VPNSupportinGoBGPKeybuildingblocks•  InternetroutingwithBGP–  Messagehandling,routecomputation,andpolicies

•  PartitionofroutingtableintoglobalandVRF–  AssignBGPsessionstoappropriatepartition•  VPNv(4|6)BGPaddressfamily–  IPprefix,RouteDistinguisher(RD)andMPLSlabel

•  Routetargets(RTs)–  ToassociaterouteswithVRF(s)

Interactionwith“outsideworld”•  AllowconfigurationofVRF(s)–  AssociateaneBGPsessionwithCEtoaVRF•  HandlearoutereceivedfromaCE

•  HandlearoutereceivedfromRR(orremotePEs)

•  CommunicatewithZebraNANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

Existingsupportwasadequate

Neededsomeenhancements

Page 18: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

18

GoBGP:HandlingaRouteReceivedfromanAdjacentCE•  InstalltherouteinVRFforwardingtableviaZebra–  AllowsvPEtosendtrafficcomingfromotherPEstotheCE

•  AttachVRFlabeltotheroutebeforesendingtoRR

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

GoBGPpullrequest1587

vCEVRF VRF Global

Control-plane

FRRZebra

ZebraAPI

vPE

GoBGP

Data-plane

VRF VRF GlobalRIB

VRF VRF GlobalFIB

VRF VRF GlobalBGPtable

RR

IPv4BGProuteforprefixpp

Ourenhancement;pullrequest1572acceptedintoGoBGPupstreamrepository

VPNv4BGProuteforprefixpwithblueRDandbluelabel

p

p

RouteBroker

p

p

p

Page 19: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

19

GoBGP:HandlingaRouteReceivedfromanRRoraPE•  PreventtheroutefrombeinginstalledinglobalFIB

•  ImporttherouteintoappropriateVRFbasedonroutetarget

•  InstalltheroutewithlabelinLinuxVRFforwardingtableviaZebra•  SendtheroutetoadjacentCE(s)belongingtotheVRF

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

vCEVRF VRF Global

Control-plane

FRRZebra

ZebraAPI

vPE

GoBGP

Data-plane

VRF VRF GlobalRIB

VRF VRF GlobalFIB

VRF VRF GlobalBGPtable

RR

IPv4BGProuteforprefixpp

VPNv4BGProuteforprefixpwithblueRDandbluelabel

p

p

p IPv4BGProuteforprefixpwithbluelabel

p

OurenhancementtoGoBGP

Wefixedthis

RouteBroker

p

p

p

Page 20: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

20

SummaryDemonstratedfeasibilityofcreatinganL3-VPNvPEusingOpen

SourceSoftware•  Control-plane:–  GoBGP,FRR(OSPF,LDPandZebra)•  Data-plane:–  AT&T-VyattaDPDKbaseddata-plane–  AlsoverifiedfeasibilitywithVPPandLinuxdata-planes

RequiredustomakesomeenhancementstoGoBGP1.31•  ProperinstallationofroutesintoFIB•  AssignMPLSlabelstoVPNv4routes

• ModificationsavailableonGithubat:https://github.com/amanshaikh75/gobgp/tree/zapi_version_5

DANOSURL:https://www.danosproject.org/

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

Page 21: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

21

AcknowledgementsAT&T•  BillBenson,RamanaChinnapa,KennethDuell,JenniferYates

CumulusNetworks•  DavidAhern(forexplaininghowLinuxVRFswork)FRR•  DonaldSharp,RenatoWestphal,RussWhite,https://github.com/paulzlabn

GoBGP•  IwaseYusukeVPP• MichaelBorokhovich,PierrePfister,JeffShaw

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

Page 22: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

Backup

Page 23: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

23

Open-SourceSoftwareacrosstheFeasibilityTest-bed

Control-plane•  GoBGP1.31.1=version1.31+ourenhancements

•  FRR5.1-dev=snapshote8f9540WhenLinuxisusedasdata-planeonvPE•  vPEOS:Ubuntu16.04.3LTS,Linuxkernel4.14.4-mpls

WhenVPPisusedasdata-planeonvPE•  vPEdata-plane:VPPrelease1801+ourenhancementstorouterplug-in

•  OS:sameaswhenLinuxisusedasdata-plane

NetworkFunction VNFOS Control-plane Data-plane

vCE Ubuntu16.04.2LTSLinuxKernel4.4.0-64generic

FRR5.1-devBGPandZebra Linux

vPE Debian4.14.62-0Vyatta1+9.1LinuxKernel4.14.0-trunk-vyatta-amd64…(DANOS)

GoBGP1.31.1FRR5.1-devOSPF,LDPandZebra(snapshote8f9540)

AT&T-VyattaDPDK

Corerouter Ubuntu16.04.3LTSLinuxkernel4.14.4-mpls(customconfiguration)

GoBGP1.31.1FRR5.1-devOSPF,LDPandZebra(snapshote8f9540)

Linux

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

Page 24: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

24

GoBGP:ConfigurationofVRFandAssociatedCESessionsImportmatchingVPNv4routesintoVRF•  RoutesreceivedfromRRsand/orotherPEs

•  Outstandingissue;weuseaworkaroundObtainuniquelabelforVRFfromZebra•  Zebraactsasacentralagentforlabelassignment

–  PreventslabelcollisionbetweendifferentprotocolslikeBGPandLDP

•  Pullrequest1587toGoBGPrepositoryInstallanMPLSrouteforthelabelin

Linuxdefaultforwardingtable•  AllowsvPEtohandletrafficfromotherPEs

• WeenhancedGoBGPcode

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

VRF VRF Global

Control-plane

FRRZebra

ZebraAPI

vPE

GoBGP

Data-plane

VRF VRF GlobalRIB

VRF VRF GlobalFIB

VRF VRF GlobalBGPtable

ConfigureblueVRFandaddBGPsessiontoCE

ImportrelevantroutesfromglobaltableintoblueVRF

AssignMPLSlabel

# Example of MPLS route installed # in Linux kernel by GoBGP $ ip -f mpls route 144 dev blue proto bgp

RouteBroker

InstallMPLSlabelroute

InstallMPLSlabelroute

InstallMPLSlabelroute

Page 25: Virtualized PE for BGP/MPLS L3-VPN using Open …...Virtualized PE for BGP/MPLS L3-VPN using Open-Source Software NANOG 74 (October 2018) Bilal Anwer, Robert Bays, Vijay Gopalakrishnan,

25

GoBGP:InteractingwithZebraGoBGPbydefaultusesAPIversion4for

interactionwithZebra•  APIversion4doesnothaveallfeaturestosupportL3-VPN

–  Example:lackofsupportformulti-levelrecursivenext-hoplookup

•  RequiredustoupgradetoZebraAPIversion5AddedpartialsupportforAPIversion5

inGoBGP•  SupportforpartsrequiredforL3-VPN,noteverything

NANOG74:OpenSourcevPEforBGP/MPLSL3-VPN

VRF VRF Global

Control-plane

FRRZebra

ZebraAPIVersion5

vPE

GoBGP

Data-plane

VRF VRF GlobalRIB

VRF VRF GlobalFIB

VRF VRF GlobalBGPtable

RouteBroker


Related Documents