91
Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group netkit lab bgp: transit as Version 1.7.1 (compact) Author(s) Luca Cittadini, Giuseppe Di Battista, Massimo Rimondini E-mail [email protected] Web http://www.netkit.org/ Description possible architectures for a transit provider, bad interactions between igp and bgp routing protocols, configuration of tunnels

Università degli Studi Roma Tre Dipartimento di ...wiki.netkit.org/.../netkit-lab_bgp-transit-as_compact.pdfUniversità degli Studi Roma Tre Dipartimento di Informatica e Automazione

Embed Size (px)

Citation preview

Università degli Studi Roma TreDipartimento di Informatica e AutomazioneComputer Networks Research Group

netkit lab

bgp: transit asVersion 1.7.1 (compact)

Author(s) Luca Cittadini, Giuseppe Di Battista, Massimo Rimondini

E-mail [email protected]

Web http://www.netkit.org/

Description possible architectures for a transit provider, bad interactions between igp and bgp routing protocols, configuration of tunnels

copyright notice

� All the pages/slides in this presentation, including but not limited to, images, photos, animations, videos, sounds, music, and text (hereby referred to as “material”) are protected by copyright.

� This material, with the exception of some multimedia elements licensed by other organizations, is property of the authors and/or organizations appearing in the first slide.

� This material, or its parts, can be reproduced and used for didactical purposes within universities and schools, provided that this happens for

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

purposes within universities and schools, provided that this happens for non-profit purposes.

� Information contained in this material cannot be used within network design projects or other products of any kind.

� Any other use is prohibited, unless explicitly authorized by the authors on the basis of an explicit agreement.

� The authors assume no responsibility about this material and provide this material “as is”, with no implicit or explicit warranty about the correctness and completeness of its contents, which may be subject to changes.

� This copyright notice must always be redistributed together with the material, or its portions.

disclaimer

� this is a rather complex lab

� observed phenomena may be due to zebra-specific implementation choices and may not apply to more recent releases of

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

may not apply to more recent releases of zebra and/or to physical routers

� please read carefully through this documentation before concluding that the lab is not working properly

scenario

� a transit as

� receives and propagates the full bgp routing table from/to its neighbors(customers, peers, providers)

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

(customers, peers, providers)

� receives and forwards traffic across its neighbors

transit as: degrees of freedom

� internal routers must support traffic flows from/to neighboring ases

� choice 1: redistribute bgp routes into the igp

overgrowth of igp routing tables

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� overgrowth of igp routing tables

� update churn from bgp affects the igp

� choice 2: route traffic flowing through via an ad-hoc overlay� internal routers know about border routers only

Università degli Studi Roma TreDipartimento di Informatica e AutomazioneComputer Networks Research Group

choice 1

redistribution

a reason to redistribute

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

A B

a reason to redistribute

port 4

port 3

port 2

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

port 2

A B

port 1

BGP

a reason to redistribute

port 4

port 3

port 2

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

port 2

A B

port 1

deliver me to

a reason to redistribute

port 4

port 3

port 2

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

port 2

A B

port 1

a reason to redistribute

port 4

port 3

port 2

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

port 2

A B

port 1

?!? What...?

how to redistributebgp � rip

router ripnetwork eth1redistribute connectedredistribute bgp

zebra rip configuration file

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

redistribute bgp

beware ofredistributing ibgp!

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

A Bbest igp path to

router performing redistribution

beware ofredistributing ibgp!

consistentrouting

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

A Bbest igp path to

router performing redistribution

beware ofredistributing ibgp!

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

A Bbest igp path to

router performing redistribution

beware ofredistributing ibgp!

messed uprouting

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

A Bbest igp path to

router performing redistribution

beware of redistributing ibgp!

� cisco (and juniper) say:

By default, iBGP redistribution into IGP is disabled. To enable redistribution of iBGP routes into IGP, issue thebgp redistribute-internal command. Precautions should be taken to redistribute

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

Precautions should be taken to redistribute specific routes using route maps into IGP.Note: Redistributing internal Border Gateway Protocol (iBGP) routes into an Interior Gateway Protocol may cause routing loops within the Autonomous System (AS). This is not recommended. Route filters should be set to control the information which is imported into the IGP.https://supportforums.cisco.com/document/8621/unable-redistribute-ibgp-learnt-routes-igp-such-eigrp-ospf-and

how to redistributeebgp � rip

� no way in zebra to say “redistribute ebgp” but...

� ...route -maps can be applied on redistributed

routes...� ...for example based on recognizing ebgp next-hops

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� ...for example based on recognizing ebgp next-hops

ip prefix-list myNeighbors permit 12.0.0.0/30 le 32route-map eBGP permit 10

match ip next-hop prefix-list myNeighborsrouter rip

network eth1redistribute connectedredistribute bgp route-map eBGP

zebra rip configuration file

how to redistributeebgp � rip

� no way in zebra to say “redistribute ebgp” but...

� ...route -maps can be applied on redistributed

routes...� ...for example based on recognizing ebgp next-hops

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� ...for example based on recognizing ebgp next-hops

ip prefix-list myNeighbors permit 12.0.0.0/30 le 32route-map eBGP permit 10

match ip next-hop prefix-list myNeighborsrouter rip

network eth1redistribute connectedredistribute bgp route-map eBGP

zebra rip configuration file

how to redistributeebgp � rip

� no way in zebra to say “redistribute ebgp” but...

� ...route -maps can be applied on redistributed

routes...� ...for example based on recognizing ebgp next-hops

this is the BGP next-hop (i.e., before the recursive lookup)

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� ...for example based on recognizing ebgp next-hops

ip prefix-list myNeighbors permit 12.0.0.0/30 le 32route-map eBGP permit 10

match ip next-hop prefix-list myNeighborsrouter rip

network eth1redistribute connectedredistribute bgp route-map eBGP

zebra rip configuration file

how to redistributeebgp � rip

� no way in zebra to say “redistribute ebgp” but...

� ...route -maps can be applied on redistributed

routes...� ...for example based on recognizing ebgp next-hops

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� ...for example based on recognizing ebgp next-hops

ip prefix-list myNeighbors permit 12.0.0.0/30 le 32route-map eBGP permit 10

match ip next-hop prefix-list myNeighborsrouter rip

network eth1redistribute connectedredistribute bgp route-map eBGP

zebra rip configuration file

how to redistributeebgp � rip

� no way in zebra to say “redistribute ebgp” but...

� ...route -maps can be applied on redistributed

routes...� ...for example based on recognizing ebgp next-hops

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� ...for example based on recognizing ebgp next-hops

ip prefix-list myNeighbors permit 12.0.0.0/30 le 32route-map eBGP permit 10

match ip next-hop prefix-list myNeighborsrouter rip

network eth1redistribute connectedredistribute bgp route-map eBGP

zebra rip configuration file

match all the more specifics of the 12.0.0.0/30 network

(next-hops are single ip addresses)

beware ofredistributing *bgp

as10r6as10r6as10r6as10r6----ripd> show ip ripripd> show ip ripripd> show ip ripripd> show ip ripCodes: R Codes: R Codes: R Codes: R ---- RIP, C RIP, C RIP, C RIP, C ---- connected, O connected, O connected, O connected, O ---- OSPF, B OSPF, B OSPF, B OSPF, B ---- BGPBGPBGPBGP

(n) (n) (n) (n) ---- normal, (s) normal, (s) normal, (s) normal, (s) ---- static, (d) static, (d) static, (d) static, (d) ---- default, (r) default, (r) default, (r) default, (r) ---- redistribute,redistribute,redistribute,redistribute,(i) (i) (i) (i) ---- interfaceinterfaceinterfaceinterface

Network Next Hop Metric From TimeNetwork Next Hop Metric From TimeNetwork Next Hop Metric From TimeNetwork Next Hop Metric From TimeR(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:58R(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:58R(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:58R(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:58R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:43R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:43R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:43R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:43

as10r6as10r6

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:43R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:43R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:43R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:43R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:55R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:55R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:55R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:55R(n) 10.0.0.0/30 10.0.0.10 2 10.0.0.10 02:58R(n) 10.0.0.0/30 10.0.0.10 2 10.0.0.10 02:58R(n) 10.0.0.0/30 10.0.0.10 2 10.0.0.10 02:58R(n) 10.0.0.0/30 10.0.0.10 2 10.0.0.10 02:58C(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfR(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:58R(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:58R(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:58R(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:58R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:43R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:43R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:43R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:43C(i) 11.0.0.8/30 0.0.0.0 1 selfC(i) 11.0.0.8/30 0.0.0.0 1 selfC(i) 11.0.0.8/30 0.0.0.0 1 selfC(i) 11.0.0.8/30 0.0.0.0 1 selfR(n) 12.0.0.0/30 10.0.0.5 3 10.0.0.5 02:43R(n) 12.0.0.0/30 10.0.0.5 3 10.0.0.5 02:43R(n) 12.0.0.0/30 10.0.0.5 3 10.0.0.5 02:43R(n) 12.0.0.0/30 10.0.0.5 3 10.0.0.5 02:43R(n) 12.0.0.4/30 11.0.0.10 2 11.0.0.10 02:55R(n) 12.0.0.4/30 11.0.0.10 2 11.0.0.10 02:55R(n) 12.0.0.4/30 11.0.0.10 2 11.0.0.10 02:55R(n) 12.0.0.4/30 11.0.0.10 2 11.0.0.10 02:55R(n) 12.0.0.8/30 11.0.0.10 2 11.0.0.10 02:55R(n) 12.0.0.8/30 11.0.0.10 2 11.0.0.10 02:55R(n) 12.0.0.8/30 11.0.0.10 2 11.0.0.10 02:55R(n) 12.0.0.8/30 11.0.0.10 2 11.0.0.10 02:55R(n) 12.0.0.12/30 11.0.0.10 2 11.0.0.10 02:55R(n) 12.0.0.12/30 11.0.0.10 2 11.0.0.10 02:55R(n) 12.0.0.12/30 11.0.0.10 2 11.0.0.10 02:55R(n) 12.0.0.12/30 11.0.0.10 2 11.0.0.10 02:55R(n) 20.0.0.0/8 10.0.0.5 3 10.0.0.5 02:43R(n) 20.0.0.0/8 10.0.0.5 3 10.0.0.5 02:43R(n) 20.0.0.0/8 10.0.0.5 3 10.0.0.5 02:43R(n) 20.0.0.0/8 10.0.0.5 3 10.0.0.5 02:43R(n) 30.0.0.0/8 11.0.0.10 2 11.0.0.10 02:55R(n) 30.0.0.0/8 11.0.0.10 2 11.0.0.10 02:55R(n) 30.0.0.0/8 11.0.0.10 2 11.0.0.10 02:55R(n) 30.0.0.0/8 11.0.0.10 2 11.0.0.10 02:55R(n) 100.0.0.0/8 11.0.0.10 2 11.0.0.10 02:55R(n) 100.0.0.0/8 11.0.0.10 2 11.0.0.10 02:55R(n) 100.0.0.0/8 11.0.0.10 2 11.0.0.10 02:55R(n) 100.0.0.0/8 11.0.0.10 2 11.0.0.10 02:55as10r6as10r6as10r6as10r6----ripd> █ripd> █ripd> █ripd> █

routing tables of the internal routers become unnecessarily large

Università degli Studi Roma TreDipartimento di Informatica e AutomazioneComputer Networks Research Group

choice 2

overlay

overlay

� ebgp is not redistributed into the igp

� smaller routing tables

� less igp churn

� ebgp next hops are reached via a direct

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� ebgp next hops are reached via a direct link (tunnel)

hopcount

getting through the tunnel

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

to C

hopcount

getting through the tunnel

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

to C to B

hopcount

getting through the tunnel

to C to B

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

hopcount

getting through the tunnel

to C

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

getting through the tunnel

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

completely isolatingbgp from the igp

recursive lookups may still fail...

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

Università degli Studi Roma TreDipartimento di Informatica e AutomazioneComputer Networks Research Group

network topology

AS10

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

AS20 AS30

AS100

AS10

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

AS20 AS30

AS100

RIP

iBGP

10.0.0.w

AS10

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

12.0.0.y

11.0.0.x

AS20 AS30

AS100

10.0.0.w

AS1013.0.0.z

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

12.0.0.y

11.0.0.x

AS20 AS30

AS100

13.0.0.0/3013.0.0.4/30

eth02

AS10eth0

1A 11.0.0.0/30

eth11

eth210

eth02

eth09

5 9

D 10.0.0.8/3010.0.0.0/30 E

10.0.0.4/3011.0.0.4/30 11.0.0.8/30

lo1.1.1.1

r1r25

r1r32

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

AS20 AS30

AS100

eth15

eth16 eth2

5eth1

6 eth29

eth110F

B C

eth02

H Ieth0

6

eth05

eth19

eth010

eth114

eth113

eth21

M

100.0.0.0/8

lo2.2.2.2

lo3.3.3.3

12.0.0.0/30 12.0.0.4/30

eth01

r2r16

r2r39

r3r210

r3r11

13.0.0.8/30

G L

12.0.0.12/3012.0.0.8/30

transit as: bgp peerings

� bgp peerings are established on loopback interfaces� improved resiliency

� the peering stays up even if all the router’s physical interfaces are down

� two loopbacks for each border router of as10

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� two loopbacks for each border router of as10� ifconfig lo:1 2.2.2.2 netmask 255.255.255.255 up

� lo:1 is an ip alias used for the peerings

� the usual loopback address, lo , is still available

� beware: using ifconfig lo:1 2.2.2.2/32 sets up a /0netmask instead(!)� a default route would unexpectedly be announced when

loopback interfaces are redistributed in an igp

transit as: bgp peerings

� be careful when configuring peerings on the loopbacks

� bgp complains if the source address of OPEN messages from a neighbor does not match the neighbor’s address configured in the peering (in this

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

neighbor’s address configured in the peering (in this case, the loopback address)

� bgp messages come out of a physical interface, whose address is different from the loopback’s

� need to force the source address of bgp messages� update-source

� cisco says:You only have to use the update-source command when someone is peering to your loopback address

transit as: bgp peerings

router bgp 10network 10.0.0.0/8network 12.0.0.0/30neighbor 1.1.1.1 remote-as 10neighbor 1.1.1.1 update-source 2.2.2.2neighbor 1.1.1.1 description as10rt1(iBGP)

zebra bgp configuration file

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� note� update-source accepts an ip address or an interface

name� zebra does not allow to set the update-source to an alias

interface (e.g., lo:1 )

neighbor 1.1.1.1 description as10rt1(iBGP)neighbor 3.3.3.3 remote-as 10neighbor 3.3.3.3 update-source 2.2.2.2neighbor 3.3.3.3 description as10rt3(iBGP)

as100r1:~# less /etc/zebra/bgpd.confas100r1:~# less /etc/zebra/bgpd.confas100r1:~# less /etc/zebra/bgpd.confas100r1:~# less /etc/zebra/bgpd.confhostname as100r1hostname as100r1hostname as100r1hostname as100r1----bgpdbgpdbgpdbgpdpassword zebrapassword zebrapassword zebrapassword zebra!!!!ip prefixip prefixip prefixip prefix----list mineOut permit 100.0.0.0/8list mineOut permit 100.0.0.0/8list mineOut permit 100.0.0.0/8list mineOut permit 100.0.0.0/8!!!!routerouterouteroute----map lowerPreference permit 10map lowerPreference permit 10map lowerPreference permit 10map lowerPreference permit 10

transit as: some other flavouring

as100r1as100r1

M

G L

primary backup

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

set localset localset localset local----preference 10preference 10preference 10preference 10!!!!router bgp 100router bgp 100router bgp 100router bgp 100

network 100.0.0.0/8network 100.0.0.0/8network 100.0.0.0/8network 100.0.0.0/8neighbor 12.0.0.9 remoteneighbor 12.0.0.9 remoteneighbor 12.0.0.9 remoteneighbor 12.0.0.9 remote----as 20as 20as 20as 20neighbor 12.0.0.9 description as20r1neighbor 12.0.0.9 description as20r1neighbor 12.0.0.9 description as20r1neighbor 12.0.0.9 description as20r1neighbor 12.0.0.9 prefixneighbor 12.0.0.9 prefixneighbor 12.0.0.9 prefixneighbor 12.0.0.9 prefix----list mineOut outlist mineOut outlist mineOut outlist mineOut outneighbor 12.0.0.13 remoteneighbor 12.0.0.13 remoteneighbor 12.0.0.13 remoteneighbor 12.0.0.13 remote----as 30as 30as 30as 30neighbor 12.0.0.13 description as30r1neighbor 12.0.0.13 description as30r1neighbor 12.0.0.13 description as30r1neighbor 12.0.0.13 description as30r1neighbor 12.0.0.13 prefixneighbor 12.0.0.13 prefixneighbor 12.0.0.13 prefixneighbor 12.0.0.13 prefix----list mineOut outlist mineOut outlist mineOut outlist mineOut outneighbor 12.0.0.13 routeneighbor 12.0.0.13 routeneighbor 12.0.0.13 routeneighbor 12.0.0.13 route----map lowerPreference inmap lowerPreference inmap lowerPreference inmap lowerPreference in

/etc/zebra/bgpd.conf/etc/zebra/bgpd.conf/etc/zebra/bgpd.conf/etc/zebra/bgpd.conf

the customer prefers using link G

M

as10rt2:~# less /etc/zebra/bgpd.conf as10rt2:~# less /etc/zebra/bgpd.conf as10rt2:~# less /etc/zebra/bgpd.conf as10rt2:~# less /etc/zebra/bgpd.conf hostname as10rt2hostname as10rt2hostname as10rt2hostname as10rt2----bgpdbgpdbgpdbgpdpassword zebrapassword zebrapassword zebrapassword zebra............!!!!routerouterouteroute----map dePref permit 10map dePref permit 10map dePref permit 10map dePref permit 10

set localset localset localset local----preference 10preference 10preference 10preference 10

transit as: some other flavouring

as10rt2as10rt2

© Computer Networks Research Group Roma Tre

B

H

FC

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

!!!!router bgp 10router bgp 10router bgp 10router bgp 10

network 10.0.0.0/8network 10.0.0.0/8network 10.0.0.0/8network 10.0.0.0/8network 12.0.0.0/30network 12.0.0.0/30network 12.0.0.0/30network 12.0.0.0/30neighbor 1.1.1.1 remoteneighbor 1.1.1.1 remoteneighbor 1.1.1.1 remoteneighbor 1.1.1.1 remote----as 10as 10as 10as 10neighbor 1.1.1.1 updateneighbor 1.1.1.1 updateneighbor 1.1.1.1 updateneighbor 1.1.1.1 update----source losource losource losource loneighbor 1.1.1.1 description as10rt1(iBGP)neighbor 1.1.1.1 description as10rt1(iBGP)neighbor 1.1.1.1 description as10rt1(iBGP)neighbor 1.1.1.1 description as10rt1(iBGP)neighbor 3.3.3.3 remoteneighbor 3.3.3.3 remoteneighbor 3.3.3.3 remoteneighbor 3.3.3.3 remote----as 10as 10as 10as 10neighbor 3.3.3.3 updateneighbor 3.3.3.3 updateneighbor 3.3.3.3 updateneighbor 3.3.3.3 update----source losource losource losource loneighbor 3.3.3.3 description as10rt3(iBGP)neighbor 3.3.3.3 description as10rt3(iBGP)neighbor 3.3.3.3 description as10rt3(iBGP)neighbor 3.3.3.3 description as10rt3(iBGP)neighbor 12.0.0.2 remoteneighbor 12.0.0.2 remoteneighbor 12.0.0.2 remoteneighbor 12.0.0.2 remote----as 20as 20as 20as 20neighbor 12.0.0.2 description as20r1(eBGP)neighbor 12.0.0.2 description as20r1(eBGP)neighbor 12.0.0.2 description as20r1(eBGP)neighbor 12.0.0.2 description as20r1(eBGP)neighbor 12.0.0.2 routeneighbor 12.0.0.2 routeneighbor 12.0.0.2 routeneighbor 12.0.0.2 route----map dePref inmap dePref inmap dePref inmap dePref inneighbor 12.0.0.2 prefixneighbor 12.0.0.2 prefixneighbor 12.0.0.2 prefixneighbor 12.0.0.2 prefix----list noDefault inlist noDefault inlist noDefault inlist noDefault in

/etc/zebra/bgpd.conf/etc/zebra/bgpd.conf/etc/zebra/bgpd.conf/etc/zebra/bgpd.conf

as10rt2 prefers

using the egress router as10rt3

H

configuring a tunnel

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

configuring a tunnel

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

r2r3

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

endpoint name(appears as a virtual

interface on the router

configuring a tunnel

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

r2r3

encapsulation type(IP in IP)

configuring a tunnel

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

r2r3

tunnel endpoints

lo2.2.2.2

lo3.3.3.3

configuring a tunnel

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

r2r3

ttl of the external envelope when a packet is encapsulated

(will expectedly travel through at most 4 hops, so any value >=4 should be fine)

lo2.2.2.2

lo3.3.3.3

configuring a tunnel

© Computer Networks Research Group Roma Tre

the default value, inherit , breaks traceroutes

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

r2r3

ttl of the external envelope when a packet is encapsulated

(will expectedly travel through at most 4 hops, so any value >=4 should be fine)

lo2.2.2.2

lo3.3.3.3

traceroutes

configuring a tunnel

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

r2r3

rip uses multicast packets

lo2.2.2.2

lo3.3.3.3

configuring a tunnel

© Computer Networks Research Group Roma Tre

“13.0.0.8/30”

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

r2r39

assign an ip address to the tunnel interface

lo2.2.2.2

lo3.3.3.3

configuring a tunnel

© Computer Networks Research Group Roma Tre

“13.0.0.8/30”

�note: this is a pointopoint interface

�speaking of “network” is senseless

we do it nevertheless

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

r2r39

assign an ip address to the tunnel interface

lo2.2.2.2

lo3.3.3.3

�we do it nevertheless to simplify the graphical layout

configuring a tunnel

© Computer Networks Research Group Roma Tre

“13.0.0.8/30”

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

r2r39

for a pointopoint interface we can set the address of

the other endpoint

lo2.2.2.2

lo3.3.3.3 10

configuring a tunnel

© Computer Networks Research Group Roma Tre

“13.0.0.8/30”

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

r2r39

for a pointopoint interface we can set the address of

the other endpoint

lo2.2.2.2

lo3.3.3.3 10

automatically inserts an entry in the routing table for 13.0.0.10

configuring a tunnel

© Computer Networks Research Group Roma Tre

“13.0.0.8/30”note: failure to set the peer’s address prevents

rip from recognizing packets coming from the tunnel (possibly because it cannot match the sender’s address with any of the local interface’s subnets)

2007/10/30 11:27:25 RIP: RECV packet from 13.0.0.10 port 520 on unknown

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

10

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

r2r39

for a pointopoint interface we can set the address of

the other endpoint

lo2.2.2.2

lo3.3.3.3

13.0.0.10 port 520 on unknown

2007/10/30 11:27:25 RIP: packet comes from unknown interface

automatically inserts an entry in the routing table for 13.0.0.10

interface name expected here

configuring a tunnel

© Computer Networks Research Group Roma Tre

“13.0.0.8/30”

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

ip tunnel add r2r3 mode ipip remote 3.3.3.3 local 2.2.2.2 ttl 10ip link set r2r3 multicast onip addr add dev r2r3 13.0.0.9 peer 13.0.0.10ifconfig r2r3 upip tunnel add r2r1 mode ipip remote 1.1.1.1 local 2.2.2.2 ttl 10ip link set r2r1 multicast onip addr add dev r2r1 13.0.0.6 peer 13.0.0.5ifconfig r2r1 up

as10rt2 configuration

r2r39

switch the tunnel interface on

lo2.2.2.2

lo3.3.3.3

tunnels and routing

router ripredistribute connectednetwork eth1network r2r3network r2r1distribute-list externalNetworks out r2r1

as10rt2 ripd configuration

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

distribute-list externalNetworks out r2r3distribute-list internalNetworks out eth1route 0.0.0.0/0

!access-list externalNetworks permit 12.0.0.0/30access-list externalNetworks deny anyaccess-list internalNetworks deny 13.0.0.0/24access-list internalNetworks deny 12.0.0.0/24access-list internalNetworks permit any

tunnels and routing

router ripredistribute connectednetwork eth1network r2r3network r2r1distribute-list externalNetworks out r2r1

as10rt2 ripd configuration

talk rip even on tunnel interfaces

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

distribute-list externalNetworks out r2r3distribute-list internalNetworks out eth1route 0.0.0.0/0

!access-list externalNetworks permit 12.0.0.0/30access-list externalNetworks deny anyaccess-list internalNetworks deny 13.0.0.0/24access-list internalNetworks deny 12.0.0.0/24access-list internalNetworks permit any

tunnels and routing

router ripredistribute connectednetwork eth1network r2r3network r2r1distribute-list externalNetworks out r2r1

as10rt2 ripd configuration

distribute also lo:1 ’s address

(but not lo ’s address because it is within the

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

distribute-list externalNetworks out r2r3distribute-list internalNetworks out eth1route 0.0.0.0/0

!access-list externalNetworks permit 12.0.0.0/30access-list externalNetworks deny anyaccess-list internalNetworks deny 13.0.0.0/24access-list internalNetworks deny 12.0.0.0/24access-list internalNetworks permit any

because it is within the reserved 127.0.0.0/8 )

tunnels and routing

router ripredistribute connectednetwork eth1network r2r3network r2r1distribute-list externalNetworks out r2r1

as10rt2 ripd configuration

propagate a statically configured default route

inside the transit as

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

distribute-list externalNetworks out r2r3distribute-list internalNetworks out eth1route 0.0.0.0/0

!access-list externalNetworks permit 12.0.0.0/30access-list externalNetworks deny anyaccess-list internalNetworks deny 13.0.0.0/24access-list internalNetworks deny 12.0.0.0/24access-list internalNetworks permit any

inside the transit as(offers Internet connectivity

to internal routers, if required)

tunnels and routing

router ripredistribute connectednetwork eth1network r2r3network r2r1distribute-list externalNetworks out r2r1

as10rt2 ripd configuration

beware of what you say to whom

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

distribute-list externalNetworks out r2r3distribute-list internalNetworks out eth1route 0.0.0.0/0

!access-list externalNetworks permit 12.0.0.0/30access-list externalNetworks deny anyaccess-list internalNetworks deny 13.0.0.0/24access-list internalNetworks deny 12.0.0.0/24access-list internalNetworks permit any

tunnels and routing

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� we cannot announce the tunnel’s endpoints inside the tunnel

lo3.3.3.3

lo2.2.2.2

tunnels and routing

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� we cannot announce the tunnel’s endpoints inside the tunnel

� that would tear down the tunnel!

lo3.3.3.3

lo2.2.2.2

tunnels and routing

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� we shouldn’t announce the tunnel’s interfaces outside the tunnel

r2r39

r3r210

tunnels and routing

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� we shouldn’t announce the tunnel’s interfaces outside the tunnel

� traffic might flow outside the tunnel

r2r39

r3r210

tunnels and routing

router ripredistribute connectednetwork eth1network r2r3network r2r1distribute-list externalNetworks out r2r1

as10rt2 ripd configuration

access-list s

instruct rip about

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

distribute-list externalNetworks out r2r3distribute-list internalNetworks out eth1route 0.0.0.0/0

!access-list externalNetworks permit 12.0.0.0/30access-list externalNetworks deny anyaccess-list internalNetworks deny 13.0.0.0/24access-list internalNetworks deny 12.0.0.0/24access-list internalNetworks permit any

instruct rip about what to propagate

tunnels and routing

router ripredistribute connectednetwork eth1network r2r3network r2r1distribute-list externalNetworks out r2r1

as10rt2 ripd configuration

ebgp next hops (in this case as20r1 ) are announced

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

distribute-list externalNetworks out r2r3distribute-list internalNetworks out eth1route 0.0.0.0/0

!access-list externalNetworks permit 12.0.0.0/30access-list externalNetworks deny anyaccess-list internalNetworks deny 13.0.0.0/24access-list internalNetworks deny 12.0.0.0/24access-list internalNetworks permit any

as20r1 ) are announced

inside the tunnel

tunnels and routing

router ripredistribute connectednetwork eth1network r2r3network r2r1distribute-list externalNetworks out r2r1

as10rt2 ripd configuration

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

distribute-list externalNetworks out r2r3distribute-list internalNetworks out eth1route 0.0.0.0/0

!access-list externalNetworks permit 12.0.0.0/30access-list externalNetworks deny anyaccess-list internalNetworks deny 13.0.0.0/24access-list internalNetworks deny 12.0.0.0/24access-list internalNetworks permit any

ebgp next hops (in this case as20r1 ) are not announced

outside the tunnel

tunnels and routing

router ripredistribute connectednetwork eth1network r2r3network r2r1distribute-list externalNetworks out r2r1

as10rt2 ripd configuration

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

distribute-list externalNetworks out r2r3distribute-list internalNetworks out eth1route 0.0.0.0/0

!access-list externalNetworks permit 12.0.0.0/30access-list externalNetworks deny anyaccess-list internalNetworks deny 13.0.0.0/24access-list internalNetworks deny 12.0.0.0/24access-list internalNetworks permit any

note: the same routing behavior could be obtained using static routes

tunnels and routing� check the zebra routing table on as10rt3

Router> show ip routeRouter> show ip routeRouter> show ip routeRouter> show ip routeCodes: K Codes: K Codes: K Codes: K ---- kernel route, C kernel route, C kernel route, C kernel route, C ---- connected, S connected, S connected, S connected, S ---- static, R static, R static, R static, R ---- RIP, O RIP, O RIP, O RIP, O ---- OSPF,OSPF,OSPF,OSPF,

B B B B ---- BGP, > BGP, > BGP, > BGP, > ---- selected route, * selected route, * selected route, * selected route, * ---- FIB routeFIB routeFIB routeFIB route

R>* 1.1.1.1/32 [120/4] via 11.0.0.9, eth1, 03:27:03R>* 1.1.1.1/32 [120/4] via 11.0.0.9, eth1, 03:27:03R>* 1.1.1.1/32 [120/4] via 11.0.0.9, eth1, 03:27:03R>* 1.1.1.1/32 [120/4] via 11.0.0.9, eth1, 03:27:03R>* 2.2.2.2/32 [120/4] via 11.0.0.9, eth1, 03:27:03R>* 2.2.2.2/32 [120/4] via 11.0.0.9, eth1, 03:27:03R>* 2.2.2.2/32 [120/4] via 11.0.0.9, eth1, 03:27:03R>* 2.2.2.2/32 [120/4] via 11.0.0.9, eth1, 03:27:03C>* 3.3.3.3/32 is directly connected, loC>* 3.3.3.3/32 is directly connected, loC>* 3.3.3.3/32 is directly connected, loC>* 3.3.3.3/32 is directly connected, loR>* 10.0.0.0/30 [120/3] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.0/30 [120/3] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.0/30 [120/3] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.0/30 [120/3] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.4/30 [120/2] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.4/30 [120/2] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.4/30 [120/2] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.4/30 [120/2] via 11.0.0.9, eth1, 03:27:03

as10rt3as10rt3

© Computer Networks Research Group Roma Tre

destinations routed through the tunnel

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

R>* 10.0.0.4/30 [120/2] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.4/30 [120/2] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.4/30 [120/2] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.4/30 [120/2] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.8/30 [120/2] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.8/30 [120/2] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.8/30 [120/2] via 11.0.0.9, eth1, 03:27:03R>* 10.0.0.8/30 [120/2] via 11.0.0.9, eth1, 03:27:03R>* 11.0.0.0/30 [120/3] via 11.0.0.9, eth1, 03:27:03R>* 11.0.0.0/30 [120/3] via 11.0.0.9, eth1, 03:27:03R>* 11.0.0.0/30 [120/3] via 11.0.0.9, eth1, 03:27:03R>* 11.0.0.0/30 [120/3] via 11.0.0.9, eth1, 03:27:03R>* 11.0.0.4/30 [120/3] via 11.0.0.9, eth1, 03:27:03R>* 11.0.0.4/30 [120/3] via 11.0.0.9, eth1, 03:27:03R>* 11.0.0.4/30 [120/3] via 11.0.0.9, eth1, 03:27:03R>* 11.0.0.4/30 [120/3] via 11.0.0.9, eth1, 03:27:03C>* 11.0.0.8/30 is directly connected, eth1C>* 11.0.0.8/30 is directly connected, eth1C>* 11.0.0.8/30 is directly connected, eth1C>* 11.0.0.8/30 is directly connected, eth1R>* 12.0.0.0/30 [120/2] via 13.0.0.9, r3r2, 03:26:44R>* 12.0.0.0/30 [120/2] via 13.0.0.9, r3r2, 03:26:44R>* 12.0.0.0/30 [120/2] via 13.0.0.9, r3r2, 03:26:44R>* 12.0.0.0/30 [120/2] via 13.0.0.9, r3r2, 03:26:44B 12.0.0.0/30 [200/0] via 2.2.2.2, recursive via 11.0.0.9, eth1, 03:26:58B 12.0.0.0/30 [200/0] via 2.2.2.2, recursive via 11.0.0.9, eth1, 03:26:58B 12.0.0.0/30 [200/0] via 2.2.2.2, recursive via 11.0.0.9, eth1, 03:26:58B 12.0.0.0/30 [200/0] via 2.2.2.2, recursive via 11.0.0.9, eth1, 03:26:58C>* 12.0.0.4/30 is directly connected, eth0C>* 12.0.0.4/30 is directly connected, eth0C>* 12.0.0.4/30 is directly connected, eth0C>* 12.0.0.4/30 is directly connected, eth0B>* 12.0.0.8/30 [200/0] via 12.0.0.2, recursive via 13.0.0.9, r3r2, 03:26:38B>* 12.0.0.8/30 [200/0] via 12.0.0.2, recursive via 13.0.0.9, r3r2, 03:26:38B>* 12.0.0.8/30 [200/0] via 12.0.0.2, recursive via 13.0.0.9, r3r2, 03:26:38B>* 12.0.0.8/30 [200/0] via 12.0.0.2, recursive via 13.0.0.9, r3r2, 03:26:38B>* 12.0.0.12/30 [20/0] via 12.0.0.6, eth0, 03:26:24B>* 12.0.0.12/30 [20/0] via 12.0.0.6, eth0, 03:26:24B>* 12.0.0.12/30 [20/0] via 12.0.0.6, eth0, 03:26:24B>* 12.0.0.12/30 [20/0] via 12.0.0.6, eth0, 03:26:24C>* 13.0.0.2/32 is directly connected, r3r1C>* 13.0.0.2/32 is directly connected, r3r1C>* 13.0.0.2/32 is directly connected, r3r1C>* 13.0.0.2/32 is directly connected, r3r1C>* 13.0.0.9/32 is directly connected, r3r2C>* 13.0.0.9/32 is directly connected, r3r2C>* 13.0.0.9/32 is directly connected, r3r2C>* 13.0.0.9/32 is directly connected, r3r2B>* 20.0.0.0/8 [200/0] via 12.0.0.2, recursive via 13.0.0.9, r3r2, 03:26:38B>* 20.0.0.0/8 [200/0] via 12.0.0.2, recursive via 13.0.0.9, r3r2, 03:26:38B>* 20.0.0.0/8 [200/0] via 12.0.0.2, recursive via 13.0.0.9, r3r2, 03:26:38B>* 20.0.0.0/8 [200/0] via 12.0.0.2, recursive via 13.0.0.9, r3r2, 03:26:38B>* 30.0.0.0/8 [20/0] via 12.0.0.6, eth0, 03:26:24B>* 30.0.0.0/8 [20/0] via 12.0.0.6, eth0, 03:26:24B>* 30.0.0.0/8 [20/0] via 12.0.0.6, eth0, 03:26:24B>* 30.0.0.0/8 [20/0] via 12.0.0.6, eth0, 03:26:24B>* 100.0.0.0/8 [20/0] via 12.0.0.6, eth0, 03:26:24B>* 100.0.0.0/8 [20/0] via 12.0.0.6, eth0, 03:26:24B>* 100.0.0.0/8 [20/0] via 12.0.0.6, eth0, 03:26:24B>* 100.0.0.0/8 [20/0] via 12.0.0.6, eth0, 03:26:24C>* 127.0.0.0/8 is directly connected, loC>* 127.0.0.0/8 is directly connected, loC>* 127.0.0.0/8 is directly connected, loC>* 127.0.0.0/8 is directly connected, lo

tunnels and routing

� as10rt2 prefers the egress point as10rt3

as10rt2as10rt2

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

as10rt2:~# traceroute as10rt2:~# traceroute as10rt2:~# traceroute as10rt2:~# traceroute ----s 12.0.0.1 100.0.0.1s 12.0.0.1 100.0.0.1s 12.0.0.1 100.0.0.1s 12.0.0.1 100.0.0.1traceroute to 100.0.0.1 (100.0.0.1) from 12.0.0.1, 64 hops max, 40 traceroute to 100.0.0.1 (100.0.0.1) from 12.0.0.1, 64 hops max, 40 traceroute to 100.0.0.1 (100.0.0.1) from 12.0.0.1, 64 hops max, 40 traceroute to 100.0.0.1 (100.0.0.1) from 12.0.0.1, 64 hops max, 40 byte packetsbyte packetsbyte packetsbyte packets1 13.0.0.10 (13.0.0.10) 3 ms 3 ms 2 ms1 13.0.0.10 (13.0.0.10) 3 ms 3 ms 2 ms1 13.0.0.10 (13.0.0.10) 3 ms 3 ms 2 ms1 13.0.0.10 (13.0.0.10) 3 ms 3 ms 2 ms2 12.0.0.6 (12.0.0.6) 2 ms 4 ms 5 ms2 12.0.0.6 (12.0.0.6) 2 ms 4 ms 5 ms2 12.0.0.6 (12.0.0.6) 2 ms 4 ms 5 ms2 12.0.0.6 (12.0.0.6) 2 ms 4 ms 5 ms3 100.0.0.1 (100.0.0.1) 2 ms 2 ms 2 ms3 100.0.0.1 (100.0.0.1) 2 ms 2 ms 2 ms3 100.0.0.1 (100.0.0.1) 2 ms 2 ms 2 ms3 100.0.0.1 (100.0.0.1) 2 ms 2 ms 2 ms

as10rt2as10rt2

tunnels and routing

� as10rt2 prefers the egress point as10rt3

as10rt2as10rt2

did we already mention you should use a source address

that is reachable from outside the transit as?

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� now as10rt3 is directly reached via the

tunnel

as10rt2:~# traceroute as10rt2:~# traceroute as10rt2:~# traceroute as10rt2:~# traceroute ----s 12.0.0.1 100.0.0.1s 12.0.0.1 100.0.0.1s 12.0.0.1 100.0.0.1s 12.0.0.1 100.0.0.1traceroute to 100.0.0.1 (100.0.0.1) from 12.0.0.1, 64 hops max, 40 traceroute to 100.0.0.1 (100.0.0.1) from 12.0.0.1, 64 hops max, 40 traceroute to 100.0.0.1 (100.0.0.1) from 12.0.0.1, 64 hops max, 40 traceroute to 100.0.0.1 (100.0.0.1) from 12.0.0.1, 64 hops max, 40 byte packetsbyte packetsbyte packetsbyte packets1 1 1 1 13.0.0.1013.0.0.1013.0.0.1013.0.0.10 (13.0.0.10) 3 ms 3 ms 2 ms(13.0.0.10) 3 ms 3 ms 2 ms(13.0.0.10) 3 ms 3 ms 2 ms(13.0.0.10) 3 ms 3 ms 2 ms2 12.0.0.6 (12.0.0.6) 2 ms 4 ms 5 ms2 12.0.0.6 (12.0.0.6) 2 ms 4 ms 5 ms2 12.0.0.6 (12.0.0.6) 2 ms 4 ms 5 ms2 12.0.0.6 (12.0.0.6) 2 ms 4 ms 5 ms3 100.0.0.1 (100.0.0.1) 2 ms 2 ms 2 ms3 100.0.0.1 (100.0.0.1) 2 ms 2 ms 2 ms3 100.0.0.1 (100.0.0.1) 2 ms 2 ms 2 ms3 100.0.0.1 (100.0.0.1) 2 ms 2 ms 2 ms

as10rt2as10rt2the transit as?

tunnels and routing

� a look outside the tunnel

as10rt2:~# ip tunnel show r2r3as10rt2:~# ip tunnel show r2r3as10rt2:~# ip tunnel show r2r3as10rt2:~# ip tunnel show r2r3r2r3: ip/ip remote 3.3.3.3 local 2.2.2.2 ttl 10 r2r3: ip/ip remote 3.3.3.3 local 2.2.2.2 ttl 10 r2r3: ip/ip remote 3.3.3.3 local 2.2.2.2 ttl 10 r2r3: ip/ip remote 3.3.3.3 local 2.2.2.2 ttl 10 as10rt2:~# ip link show eth0as10rt2:~# ip link show eth0as10rt2:~# ip link show eth0as10rt2:~# ip link show eth0

as10rt2as10rt2

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

1: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 10001: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 10001: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 10001: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000link/ether fe:fd:0c:00:00:01 brd ff:ff:ff:ff:ff:fflink/ether fe:fd:0c:00:00:01 brd ff:ff:ff:ff:ff:fflink/ether fe:fd:0c:00:00:01 brd ff:ff:ff:ff:ff:fflink/ether fe:fd:0c:00:00:01 brd ff:ff:ff:ff:ff:ff

as10rt2:~# ip link show r2r3as10rt2:~# ip link show r2r3as10rt2:~# ip link show r2r3as10rt2:~# ip link show r2r37: r2r3@NONE: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1480 qdisc noqueue 7: r2r3@NONE: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1480 qdisc noqueue 7: r2r3@NONE: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1480 qdisc noqueue 7: r2r3@NONE: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1480 qdisc noqueue

link/ipip 2.2.2.2 peer 3.3.3.3link/ipip 2.2.2.2 peer 3.3.3.3link/ipip 2.2.2.2 peer 3.3.3.3link/ipip 2.2.2.2 peer 3.3.3.3as10rt2:~# █as10rt2:~# █as10rt2:~# █as10rt2:~# █

the tunnel is active

as10rt2:~# ip tunnel show r2r3as10rt2:~# ip tunnel show r2r3as10rt2:~# ip tunnel show r2r3as10rt2:~# ip tunnel show r2r3r2r3: ip/ip remote 3.3.3.3 local 2.2.2.2 ttl 10 r2r3: ip/ip remote 3.3.3.3 local 2.2.2.2 ttl 10 r2r3: ip/ip remote 3.3.3.3 local 2.2.2.2 ttl 10 r2r3: ip/ip remote 3.3.3.3 local 2.2.2.2 ttl 10 as10rt2:~# ip link show eth0as10rt2:~# ip link show eth0as10rt2:~# ip link show eth0as10rt2:~# ip link show eth0

as10rt2as10rt2

tunnels and routing

� a look outside the tunnel

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

1: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 10001: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 10001: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 10001: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000link/ether fe:fd:0c:00:00:01 brd ff:ff:ff:ff:ff:fflink/ether fe:fd:0c:00:00:01 brd ff:ff:ff:ff:ff:fflink/ether fe:fd:0c:00:00:01 brd ff:ff:ff:ff:ff:fflink/ether fe:fd:0c:00:00:01 brd ff:ff:ff:ff:ff:ff

as10rt2:~# ip link show r2r3as10rt2:~# ip link show r2r3as10rt2:~# ip link show r2r3as10rt2:~# ip link show r2r37: r2r3@NONE: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1480 qdisc noqueue 7: r2r3@NONE: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1480 qdisc noqueue 7: r2r3@NONE: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1480 qdisc noqueue 7: r2r3@NONE: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1480 qdisc noqueue

link/ipip 2.2.2.2 peer 3.3.3.3link/ipip 2.2.2.2 peer 3.3.3.3link/ipip 2.2.2.2 peer 3.3.3.3link/ipip 2.2.2.2 peer 3.3.3.3as10rt2:~# █as10rt2:~# █as10rt2:~# █as10rt2:~# █

the tunnel’s mtu is

20 bytes smaller because of the

additional ip header

tunnels and routing� a look inside the tunnel

as10rt2:~# ping as10rt2:~# ping as10rt2:~# ping as10rt2:~# ping ----I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms████

as10rt2as10rt2

as10r5as10r5

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

as10r5:~# tcpdump as10r5:~# tcpdump as10r5:~# tcpdump as10r5:~# tcpdump ----i eth1i eth1i eth1i eth1tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use ----v or v or v or v or ----vv for full protocol vv for full protocol vv for full protocol vv for full protocol decodedecodedecodedecodelistening on eth1, linklistening on eth1, linklistening on eth1, linklistening on eth1, link----type EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytes14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 64: echo request seq 27 (ipip64: echo request seq 27 (ipip64: echo request seq 27 (ipip64: echo request seq 27 (ipip----protoprotoprotoproto----4)4)4)4)14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 64: echo request seq 28 (ipip64: echo request seq 28 (ipip64: echo request seq 28 (ipip64: echo request seq 28 (ipip----protoprotoprotoproto----4)4)4)4)████

as10r5as10r5

packets are encapsulated

tunnels and routing� a look inside the tunnel

as10rt2:~# ping as10rt2:~# ping as10rt2:~# ping as10rt2:~# ping ----I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms████

as10rt2as10rt2

as10r5as10r5

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

as10r5:~# tcpdump as10r5:~# tcpdump as10r5:~# tcpdump as10r5:~# tcpdump ----i eth1i eth1i eth1i eth1tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use ----v or v or v or v or ----vv for full protocol vv for full protocol vv for full protocol vv for full protocol decodedecodedecodedecodelistening on eth1, linklistening on eth1, linklistening on eth1, linklistening on eth1, link----type EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytes14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 64: echo request seq 27 (ipip64: echo request seq 27 (ipip64: echo request seq 27 (ipip64: echo request seq 27 (ipip----protoprotoprotoproto----4)4)4)4)14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 64: echo request seq 28 (ipip64: echo request seq 28 (ipip64: echo request seq 28 (ipip64: echo request seq 28 (ipip----protoprotoprotoproto----4)4)4)4)████

as10r5as10r5

outer ip addresses correspond to the tunnel endpoints

tunnels and routing� a look inside the tunnel

as10rt2:~# ping as10rt2:~# ping as10rt2:~# ping as10rt2:~# ping ----I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.43 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms64 bytes from 100.0.0.1: icmp_seq=3 ttl=63 time=1.41 ms████

as10rt2as10rt2

as10r5as10r5

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

as10r5:~# tcpdump as10r5:~# tcpdump as10r5:~# tcpdump as10r5:~# tcpdump ----i eth1i eth1i eth1i eth1tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use ----v or v or v or v or ----vv for full protocol vv for full protocol vv for full protocol vv for full protocol decodedecodedecodedecodelistening on eth1, linklistening on eth1, linklistening on eth1, linklistening on eth1, link----type EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytes14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:30.602023 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 64: echo request seq 27 (ipip64: echo request seq 27 (ipip64: echo request seq 27 (ipip64: echo request seq 27 (ipip----protoprotoprotoproto----4)4)4)4)14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 14:58:31.612680 IP 2.2.2.2 > 3.3.3.3: IP 12.0.0.1 > 100.0.0.1: icmp 64: echo request seq 28 (ipip64: echo request seq 28 (ipip64: echo request seq 28 (ipip64: echo request seq 28 (ipip----protoprotoprotoproto----4)4)4)4)████

as10r5as10r5

inner ip addresses correspond to the real source and destination

transit as: routing tables

as10r6as10r6as10r6as10r6----ripd> show ip ripripd> show ip ripripd> show ip ripripd> show ip ripCodes: R Codes: R Codes: R Codes: R ---- RIP, C RIP, C RIP, C RIP, C ---- connected, O connected, O connected, O connected, O ---- OSPF, B OSPF, B OSPF, B OSPF, B ---- BGPBGPBGPBGP

(n) (n) (n) (n) ---- normal, (s) normal, (s) normal, (s) normal, (s) ---- static, (d) static, (d) static, (d) static, (d) ---- default, (r) default, (r) default, (r) default, (r) ---- redistribute,redistribute,redistribute,redistribute,(i) (i) (i) (i) ---- interfaceinterfaceinterfaceinterface

Network Next Hop Metric From TimeNetwork Next Hop Metric From TimeNetwork Next Hop Metric From TimeNetwork Next Hop Metric From TimeR(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48

as10r6as10r6

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:59R(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:59R(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:59R(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:59R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:49R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:49R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:49R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:49R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:48R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:48R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:48R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:48R(n) 10.0.0.0/30 10.0.0.5 2 10.0.0.5 02:49R(n) 10.0.0.0/30 10.0.0.5 2 10.0.0.5 02:49R(n) 10.0.0.0/30 10.0.0.5 2 10.0.0.5 02:49R(n) 10.0.0.0/30 10.0.0.5 2 10.0.0.5 02:49C(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfR(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:59R(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:59R(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:59R(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:59R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:49R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:49R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:49R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:49C(i) 11.0.0.8/30 0.0.0.0 1 selfC(i) 11.0.0.8/30 0.0.0.0 1 selfC(i) 11.0.0.8/30 0.0.0.0 1 selfC(i) 11.0.0.8/30 0.0.0.0 1 selfas10r6as10r6as10r6as10r6----ripd> ripd> ripd> ripd> ████

transit as: routing tables

as10r6as10r6as10r6as10r6----ripd> show ip ripripd> show ip ripripd> show ip ripripd> show ip ripCodes: R Codes: R Codes: R Codes: R ---- RIP, C RIP, C RIP, C RIP, C ---- connected, O connected, O connected, O connected, O ---- OSPF, B OSPF, B OSPF, B OSPF, B ---- BGPBGPBGPBGP

(n) (n) (n) (n) ---- normal, (s) normal, (s) normal, (s) normal, (s) ---- static, (d) static, (d) static, (d) static, (d) ---- default, (r) default, (r) default, (r) default, (r) ---- redistribute,redistribute,redistribute,redistribute,(i) (i) (i) (i) ---- interfaceinterfaceinterfaceinterface

Network Next Hop Metric From TimeNetwork Next Hop Metric From TimeNetwork Next Hop Metric From TimeNetwork Next Hop Metric From TimeR(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48

as10r6as10r6

internal routers only

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 0.0.0.0/0 11.0.0.10 2 11.0.0.10 02:48R(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:59R(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:59R(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:59R(n) 1.1.1.1/32 10.0.0.10 3 10.0.0.10 02:59R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:49R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:49R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:49R(n) 2.2.2.2/32 10.0.0.5 3 10.0.0.5 02:49R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:48R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:48R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:48R(n) 3.3.3.3/32 11.0.0.10 2 11.0.0.10 02:48R(n) 10.0.0.0/30 10.0.0.5 2 10.0.0.5 02:49R(n) 10.0.0.0/30 10.0.0.5 2 10.0.0.5 02:49R(n) 10.0.0.0/30 10.0.0.5 2 10.0.0.5 02:49R(n) 10.0.0.0/30 10.0.0.5 2 10.0.0.5 02:49C(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.4/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfC(i) 10.0.0.8/30 0.0.0.0 1 selfR(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:59R(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:59R(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:59R(n) 11.0.0.0/30 10.0.0.10 2 10.0.0.10 02:59R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:49R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:49R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:49R(n) 11.0.0.4/30 10.0.0.5 2 10.0.0.5 02:49C(i) 11.0.0.8/30 0.0.0.0 1 selfC(i) 11.0.0.8/30 0.0.0.0 1 selfC(i) 11.0.0.8/30 0.0.0.0 1 selfC(i) 11.0.0.8/30 0.0.0.0 1 selfas10r6as10r6as10r6as10r6----ripd> ripd> ripd> ripd> ████

internal routers only know about internal destinations(the default route is only there to offer Internet access, if required)

transit as: asymmetric routing

� bgp routing policies make routing asymmetric

© Computer Networks Research Group Roma Tre

AS10 force source

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

AS10

AS20 AS30

AS100

as10rt2:~# ping as10rt2:~# ping as10rt2:~# ping as10rt2:~# ping ----I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1I 12.0.0.1 100.0.0.1PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.PING 100.0.0.1 (100.0.0.1) from 12.0.0.1 : 56(84) bytes of data.64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.42 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.42 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.42 ms64 bytes from 100.0.0.1: icmp_seq=1 ttl=63 time=1.42 ms64 bytes from 100.0.0.1: icmp_seq=2 ttl=63 time=1.19 ms64 bytes from 100.0.0.1: icmp_seq=2 ttl=63 time=1.19 ms64 bytes from 100.0.0.1: icmp_seq=2 ttl=63 time=1.19 ms64 bytes from 100.0.0.1: icmp_seq=2 ttl=63 time=1.19 ms████

as10rt2as10rt2

force source address

transit as: asymmetric routing

� bgp routing policies make routing asymmetric

© Computer Networks Research Group Roma Tre

AS10

echo requests

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

AS10

AS20 AS30

AS100

prefer egress via as10rt3

transit as: asymmetric routing

� bgp routing policies make routing asymmetric

© Computer Networks Research Group Roma Tre

AS10

echo requests

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

AS10

AS20 AS30

AS100

transit as: asymmetric routing

� bgp routing policies make routing asymmetric

© Computer Networks Research Group Roma Tre

AS10

echo requests

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

AS10

AS20 AS30

AS100

eth010

eth114

as100r1:~# tcpdump as100r1:~# tcpdump as100r1:~# tcpdump as100r1:~# tcpdump ----i eth1 icmpi eth1 icmpi eth1 icmpi eth1 icmptcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use ----v or v or v or v or ----vv for full protocol decodevv for full protocol decodevv for full protocol decodevv for full protocol decodelistening on eth1, linklistening on eth1, linklistening on eth1, linklistening on eth1, link----type EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytes00:21:37.045327 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:37.045327 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:37.045327 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:37.045327 IP 12.0.0.1 > 100.0.0.1: icmp 64: echo requestecho requestecho requestecho request seq 10seq 10seq 10seq 1000:21:38.049737 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:38.049737 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:38.049737 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:38.049737 IP 12.0.0.1 > 100.0.0.1: icmp 64: echo requestecho requestecho requestecho request seq 11seq 11seq 11seq 11████

as100r1as100r1

transit as: asymmetric routing

� bgp routing policies make routing asymmetric

© Computer Networks Research Group Roma Tre

AS10

echo requests

echo replies

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

AS10

AS20 AS30

AS100

eth010

eth114

eth114

eth010

prefer primary link for outgoing traffic

as100r1:~# tcpdump as100r1:~# tcpdump as100r1:~# tcpdump as100r1:~# tcpdump ----i eth1 icmpi eth1 icmpi eth1 icmpi eth1 icmptcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use ----v or v or v or v or ----vv for full protocol decodevv for full protocol decodevv for full protocol decodevv for full protocol decodelistening on eth1, linklistening on eth1, linklistening on eth1, linklistening on eth1, link----type EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytes00:21:37.045327 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:37.045327 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:37.045327 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:37.045327 IP 12.0.0.1 > 100.0.0.1: icmp 64: echo requestecho requestecho requestecho request seq 10seq 10seq 10seq 1000:21:38.049737 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:38.049737 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:38.049737 IP 12.0.0.1 > 100.0.0.1: icmp 64: 00:21:38.049737 IP 12.0.0.1 > 100.0.0.1: icmp 64: echo requestecho requestecho requestecho request seq 11seq 11seq 11seq 11████

as100r1as100r1as100r1:~# tcpdump as100r1:~# tcpdump as100r1:~# tcpdump as100r1:~# tcpdump ----i eth0 icmpi eth0 icmpi eth0 icmpi eth0 icmptcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use tcpdump: verbose output suppressed, use ----v or v or v or v or ----vv for full protocol decodevv for full protocol decodevv for full protocol decodevv for full protocol decodelistening on eth0, linklistening on eth0, linklistening on eth0, linklistening on eth0, link----type EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytestype EN10MB (Ethernet), capture size 96 bytes00:21:41.076353 IP 100.0.0.1 > 12.0.0.1: icmp 64: 00:21:41.076353 IP 100.0.0.1 > 12.0.0.1: icmp 64: 00:21:41.076353 IP 100.0.0.1 > 12.0.0.1: icmp 64: 00:21:41.076353 IP 100.0.0.1 > 12.0.0.1: icmp 64: echo replyecho replyecho replyecho reply seq 14seq 14seq 14seq 1400:21:42.084171 IP 100.0.0.1 > 12.0.0.1: icmp 64: 00:21:42.084171 IP 100.0.0.1 > 12.0.0.1: icmp 64: 00:21:42.084171 IP 100.0.0.1 > 12.0.0.1: icmp 64: 00:21:42.084171 IP 100.0.0.1 > 12.0.0.1: icmp 64: echo replyecho replyecho replyecho reply seq 15seq 15seq 15seq 15████

as100r1as100r1

transit as: asymmetric routing

� bgp routing policies make routing asymmetric

AS10

© Computer Networks Research Group Roma Tre

echo requests

echo replies

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

AS10

AS20 AS30

AS100

as20r1:~# telnet localhost bgpdas20r1:~# telnet localhost bgpdas20r1:~# telnet localhost bgpdas20r1:~# telnet localhost bgpdTrying 127.0.0.1...Trying 127.0.0.1...Trying 127.0.0.1...Trying 127.0.0.1...

as20r1as20r1

transit as: playing with the backup

� let’s bring as100 ’s primary link down� expected result: traffic from as20r1 to as100r1

should traverse the transit as

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

Trying 127.0.0.1...Trying 127.0.0.1...Trying 127.0.0.1...Trying 127.0.0.1...Connected to as20r1.Connected to as20r1.Connected to as20r1.Connected to as20r1.Escape character is '^]'.Escape character is '^]'.Escape character is '^]'.Escape character is '^]'.

Hello, this is zebra (version 0.94).Hello, this is zebra (version 0.94).Hello, this is zebra (version 0.94).Hello, this is zebra (version 0.94).............as20r1as20r1as20r1as20r1----bgpd> enable bgpd> enable bgpd> enable bgpd> enable as20r1as20r1as20r1as20r1----bgpd# configure terminal bgpd# configure terminal bgpd# configure terminal bgpd# configure terminal as20r1as20r1as20r1as20r1----bgpd(config)# router bgp 20bgpd(config)# router bgp 20bgpd(config)# router bgp 20bgpd(config)# router bgp 20as20r1as20r1as20r1as20r1----bgpd(configbgpd(configbgpd(configbgpd(config----router)# neighbor 12.0.0.10 shutdown █router)# neighbor 12.0.0.10 shutdown █router)# neighbor 12.0.0.10 shutdown █router)# neighbor 12.0.0.10 shutdown █

AS20

AS100

G LAS30

as20r1as20r1

transit as: playing with the backup

� wait for the routing to converge

� fingers crossed...

� check the reachability of 100.0.0.0/8

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

as20r1:~# traceroute 100.0.0.1as20r1:~# traceroute 100.0.0.1as20r1:~# traceroute 100.0.0.1as20r1:~# traceroute 100.0.0.1traceroute to 100.0.0.1 (100.0.0.1), 64 hops max, 40 byte packetstraceroute to 100.0.0.1 (100.0.0.1), 64 hops max, 40 byte packetstraceroute to 100.0.0.1 (100.0.0.1), 64 hops max, 40 byte packetstraceroute to 100.0.0.1 (100.0.0.1), 64 hops max, 40 byte packets1 12.0.0.1 (12.0.0.1) 2 ms 2 ms 1 ms1 12.0.0.1 (12.0.0.1) 2 ms 2 ms 1 ms1 12.0.0.1 (12.0.0.1) 2 ms 2 ms 1 ms1 12.0.0.1 (12.0.0.1) 2 ms 2 ms 1 ms2 13.0.0.10 (13.0.0.10) 2 ms 3 ms 2 ms2 13.0.0.10 (13.0.0.10) 2 ms 3 ms 2 ms2 13.0.0.10 (13.0.0.10) 2 ms 3 ms 2 ms2 13.0.0.10 (13.0.0.10) 2 ms 3 ms 2 ms3 12.0.0.6 (12.0.0.6) 3 ms 3 ms 3 ms3 12.0.0.6 (12.0.0.6) 3 ms 3 ms 3 ms3 12.0.0.6 (12.0.0.6) 3 ms 3 ms 3 ms3 12.0.0.6 (12.0.0.6) 3 ms 3 ms 3 ms4 100.0.0.1 (100.0.0.1) 3 ms 3 ms 3 ms4 100.0.0.1 (100.0.0.1) 3 ms 3 ms 3 ms4 100.0.0.1 (100.0.0.1) 3 ms 3 ms 3 ms4 100.0.0.1 (100.0.0.1) 3 ms 3 ms 3 msas20r1:~# █as20r1:~# █as20r1:~# █as20r1:~# █

as20r1as20r1

� traffic is now traversing the transit as!

AS10

© Computer Networks Research Group Roma Treactual traffic path

path seen by routers

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

AS20 AS30

AS100

as10r5as10r5

transit as: “rubbery” tunnels

� breaking an internal link does not tear the tunnels down

� (as long as the transit as is not partitioned)

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

as10r5:~# ifconfig eth2 downas10r5:~# ifconfig eth2 downas10r5:~# ifconfig eth2 downas10r5:~# ifconfig eth2 down

as10r5:~# traceroute 10.0.0.6as10r5:~# traceroute 10.0.0.6as10r5:~# traceroute 10.0.0.6as10r5:~# traceroute 10.0.0.6traceroute to 10.0.0.6 (10.0.0.6), 64 hops max, 40 byte packetstraceroute to 10.0.0.6 (10.0.0.6), 64 hops max, 40 byte packetstraceroute to 10.0.0.6 (10.0.0.6), 64 hops max, 40 byte packetstraceroute to 10.0.0.6 (10.0.0.6), 64 hops max, 40 byte packets1 10.0.0.1 (10.0.0.1) 1 ms 1 ms 1 ms1 10.0.0.1 (10.0.0.1) 1 ms 1 ms 1 ms1 10.0.0.1 (10.0.0.1) 1 ms 1 ms 1 ms1 10.0.0.1 (10.0.0.1) 1 ms 1 ms 1 ms2 10.0.0.6 (10.0.0.6) 1 ms 2 ms 2 ms2 10.0.0.6 (10.0.0.6) 1 ms 2 ms 2 ms2 10.0.0.6 (10.0.0.6) 1 ms 2 ms 2 ms2 10.0.0.6 (10.0.0.6) 1 ms 2 ms 2 msas10r5:~# █as10r5:~# █as10r5:~# █as10r5:~# █

AS10

© Computer Networks Research Group Roma Tre

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

AS20 AS30

AS100

� wait for the routing to converge

� be really patient

� check the reachability of 100.0.0.0/8

as20r1as20r1

transit as: “rubbery” tunnels

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� traffic is still able to traverse the transit as

as20r1:~# traceroute 100.0.0.1as20r1:~# traceroute 100.0.0.1as20r1:~# traceroute 100.0.0.1as20r1:~# traceroute 100.0.0.1traceroute to 100.0.0.1 (100.0.0.1), 64 hops max, 40 byte packetstraceroute to 100.0.0.1 (100.0.0.1), 64 hops max, 40 byte packetstraceroute to 100.0.0.1 (100.0.0.1), 64 hops max, 40 byte packetstraceroute to 100.0.0.1 (100.0.0.1), 64 hops max, 40 byte packets1 12.0.0.1 (12.0.0.1) 1 ms 1 ms 1 ms1 12.0.0.1 (12.0.0.1) 1 ms 1 ms 1 ms1 12.0.0.1 (12.0.0.1) 1 ms 1 ms 1 ms1 12.0.0.1 (12.0.0.1) 1 ms 1 ms 1 ms2 13.0.0.10 (13.0.0.10) 2 ms 4 ms 2 ms2 13.0.0.10 (13.0.0.10) 2 ms 4 ms 2 ms2 13.0.0.10 (13.0.0.10) 2 ms 4 ms 2 ms2 13.0.0.10 (13.0.0.10) 2 ms 4 ms 2 ms3 12.0.0.6 (12.0.0.6) 3 ms 3 ms 3 ms3 12.0.0.6 (12.0.0.6) 3 ms 3 ms 3 ms3 12.0.0.6 (12.0.0.6) 3 ms 3 ms 3 ms3 12.0.0.6 (12.0.0.6) 3 ms 3 ms 3 ms4 100.0.0.1 (100.0.0.1) 6 ms 3 ms 4 ms4 100.0.0.1 (100.0.0.1) 6 ms 3 ms 4 ms4 100.0.0.1 (100.0.0.1) 6 ms 3 ms 4 ms4 100.0.0.1 (100.0.0.1) 6 ms 3 ms 4 msas20r1:~# █as20r1:~# █as20r1:~# █as20r1:~# █

as20r1as20r1

conclusions

� an overlay network is better� smaller routing tables on internal routers

� less churn

� predictable interplay between igp and egp

© Computer Networks Research Group Roma Tre last update: Dec 2014netkit – [ lab: bgp-transit-as ]

� predictable interplay between igp and egp

� sample implementation: tunnels� directed to the egress points

� observations� bgp peerings could be established on the

tunnel interfaces

� tunnels are as robust as the underlying igp