2
0
mirror of https://github.com/knorrie/network-examples synced 2025-08-28 13:08:51 +00:00

bgp-contd: swap R10,R11, add hosts file

When swapping the place of R10 and R11, traffic flow between AS65000 and
AS65010 will be asymmetric by default. It's nice to be able to show this
when introducing the possibility of traffic taking multiple paths.
This commit is contained in:
Hans van Kranenburg 2015-11-28 15:46:21 +01:00
parent f8deaa5300
commit dd0dd1af98
20 changed files with 362 additions and 138 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

@ -18,7 +18,7 @@ protocol ospf {
stubnet 2001:db8::ff/128;
interface "lan" {
};
interface "ebgp_r10" {
interface "ebgp_r11" {
stub;
};
};
@ -48,29 +48,29 @@ protocol pipe p_master_to_bgp {
}
##############################################################################
# eBGP R10
# eBGP R11
#
table t_r10;
table t_r11;
protocol static originate_to_r10 {
table t_r10;
protocol static originate_to_r11 {
table t_r11;
import all; # originate here
route 2001:db8::/48 blackhole;
}
protocol bgp ebgp_r10 {
table t_r10;
protocol bgp ebgp_r11 {
table t_r11;
local 2001:db8:0:3::ff as 65000;
neighbor 2001:db8:0:3::10 as 65010;
neighbor 2001:db8:0:3::11 as 65010;
import all;
export all;
}
protocol pipe p_bgp_to_r10 {
protocol pipe p_bgp_to_r11 {
table t_bgp;
peer table t_r10;
import where proto = "ebgp_r10";
peer table t_r11;
import where proto = "ebgp_r11";
export none;
}

View File

@ -0,0 +1,32 @@
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
2001:db8::ff lo.r0 r0
2001:db8:0:1::ff lan.r0
2001:db8:0:3::ff ebgp_r11.r0
2001:db8:10::10 lo.r10 r10
2001:db8:10:2::10 lan.r10
2001:db8:10:4::10 ebgp_r1.r10
2001:db8:10::11 lo.r11 r11
2001:db8:10:2::11 lan.r11
2001:db8:0:3::11 ebgp_r0.r11
2001:db8:10:6::11 ebgp_r20.r11
2001:db8:10::12 lo.r12 r12
2001:db8:10:2::12 lan.r12
2001:db8::1 lo.r1 r1
2001:db8:0:1::1 lan.r1
2001:db8:10:4::1 ebgp_r10.r1
2001:db8:0:5::1 ebgp_r20.r1
2001:db8:20::20 lo.r20 r20
2001:db8:0:5::20 ebgp_r1.r20
2001:db8:10:6::20 ebgp_r11.r20
2001:db8::2 lo.r2 r2
2001:db8:0:1::2 lan.r2

View File

@ -10,9 +10,9 @@ iface lan inet manual
down ip addr del 2001:db8:0:1::ff/120 dev lan
down ip link set down dev lan
auto ebgp_r10
iface ebgp_r10 inet manual
up ip link set up dev ebgp_r10
up ip addr add 2001:db8:0:3::ff/120 dev ebgp_r10
down ip addr del 2001:db8:0:3::ff/120 dev ebgp_r10
down ip link set down dev ebgp_r10
auto ebgp_r11
iface ebgp_r11 inet manual
up ip link set up dev ebgp_r11
up ip addr add 2001:db8:0:3::ff/120 dev ebgp_r11
down ip addr del 2001:db8:0:3::ff/120 dev ebgp_r11
down ip link set down dev ebgp_r11

View File

@ -18,7 +18,7 @@ protocol ospf {
stubnet 2001:db8::1/128;
interface "lan" {
};
interface "ebgp_r11" {
interface "ebgp_r10" {
stub;
};
interface "ebgp_r20" {
@ -51,29 +51,29 @@ protocol pipe p_master_to_bgp {
}
##############################################################################
# eBGP R11
# eBGP R10
#
table t_r11;
table t_r10;
protocol static originate_to_r11 {
table t_r11;
protocol static originate_to_r10 {
table t_r10;
import all; # originate here
route 2001:db8::/48 blackhole;
}
protocol bgp ebgp_r11 {
table t_r11;
protocol bgp ebgp_r10 {
table t_r10;
local 2001:db8:10:4::1 as 65000;
neighbor 2001:db8:10:4::11 as 65010;
neighbor 2001:db8:10:4::10 as 65010;
import all;
export all;
}
protocol pipe p_bgp_to_r11 {
protocol pipe p_bgp_to_r10 {
table t_bgp;
peer table t_r11;
import where proto = "ebgp_r11";
peer table t_r10;
import where proto = "ebgp_r10";
export none;
}

View File

@ -0,0 +1,32 @@
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
2001:db8::ff lo.r0 r0
2001:db8:0:1::ff lan.r0
2001:db8:0:3::ff ebgp_r11.r0
2001:db8:10::10 lo.r10 r10
2001:db8:10:2::10 lan.r10
2001:db8:10:4::10 ebgp_r1.r10
2001:db8:10::11 lo.r11 r11
2001:db8:10:2::11 lan.r11
2001:db8:0:3::11 ebgp_r0.r11
2001:db8:10:6::11 ebgp_r20.r11
2001:db8:10::12 lo.r12 r12
2001:db8:10:2::12 lan.r12
2001:db8::1 lo.r1 r1
2001:db8:0:1::1 lan.r1
2001:db8:10:4::1 ebgp_r10.r1
2001:db8:0:5::1 ebgp_r20.r1
2001:db8:20::20 lo.r20 r20
2001:db8:0:5::20 ebgp_r1.r20
2001:db8:10:6::20 ebgp_r11.r20
2001:db8::2 lo.r2 r2
2001:db8:0:1::2 lan.r2

View File

@ -10,12 +10,12 @@ iface lan inet manual
down ip addr del 2001:db8:0:1::1/120 dev lan
down ip link set down dev lan
auto ebgp_r11
iface ebgp_r11 inet manual
up ip link set up dev ebgp_r11
up ip addr add 2001:db8:10:4::1/120 dev ebgp_r11
down ip addr del 2001:db8:10:4::1/120 dev ebgp_r11
down ip link set down dev ebgp_r11
auto ebgp_r10
iface ebgp_r10 inet manual
up ip link set up dev ebgp_r10
up ip addr add 2001:db8:10:4::1/120 dev ebgp_r10
down ip addr del 2001:db8:10:4::1/120 dev ebgp_r10
down ip link set down dev ebgp_r10
auto ebgp_r20
iface ebgp_r20 inet manual

View File

@ -18,10 +18,7 @@ protocol ospf {
stubnet 2001:db8:10::10/128;
interface "lan" {
};
interface "ebgp_r0" {
stub;
};
interface "ebgp_r20" {
interface "ebgp_r1" {
stub;
};
};
@ -51,56 +48,29 @@ protocol pipe p_master_to_bgp {
}
##############################################################################
# eBGP R0
# eBGP R1
#
table t_r0;
table t_r1;
protocol static originate_to_r0 {
table t_r0;
protocol static originate_to_r1 {
table t_r1;
import all; # originate here
route 2001:db8:10::/48 blackhole;
}
protocol bgp ebgp_r0 {
table t_r0;
local 2001:db8:0:3::10 as 65010;
neighbor 2001:db8:0:3::ff as 65000;
protocol bgp ebgp_r1 {
table t_r1;
local 2001:db8:10:4::10 as 65010;
neighbor 2001:db8:10:4::1 as 65000;
import all;
export all;
}
protocol pipe p_bgp_to_r0 {
protocol pipe p_bgp_to_r1 {
table t_bgp;
peer table t_r0;
import where proto = "ebgp_r0";
export none;
}
##############################################################################
# eBGP R20
#
table t_r20;
protocol static originate_to_r20 {
table t_r20;
import all; # originate here
route 2001:db8:10::/48 blackhole;
}
protocol bgp ebgp_r20 {
table t_r20;
local 2001:db8:10:6::10 as 65010;
neighbor 2001:db8:10:6::20 as 65020;
import all;
export all;
}
protocol pipe p_bgp_to_r20 {
table t_bgp;
peer table t_r20;
import where proto = "ebgp_r20";
peer table t_r1;
import where proto = "ebgp_r1";
export none;
}

View File

@ -0,0 +1,32 @@
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
2001:db8::ff lo.r0 r0
2001:db8:0:1::ff lan.r0
2001:db8:0:3::ff ebgp_r11.r0
2001:db8:10::10 lo.r10 r10
2001:db8:10:2::10 lan.r10
2001:db8:10:4::10 ebgp_r1.r10
2001:db8:10::11 lo.r11 r11
2001:db8:10:2::11 lan.r11
2001:db8:0:3::11 ebgp_r0.r11
2001:db8:10:6::11 ebgp_r20.r11
2001:db8:10::12 lo.r12 r12
2001:db8:10:2::12 lan.r12
2001:db8::1 lo.r1 r1
2001:db8:0:1::1 lan.r1
2001:db8:10:4::1 ebgp_r10.r1
2001:db8:0:5::1 ebgp_r20.r1
2001:db8:20::20 lo.r20 r20
2001:db8:0:5::20 ebgp_r1.r20
2001:db8:10:6::20 ebgp_r11.r20
2001:db8::2 lo.r2 r2
2001:db8:0:1::2 lan.r2

View File

@ -10,16 +10,9 @@ iface lan inet manual
down ip addr del 2001:db8:10:2::10/120 dev lan
down ip link set down dev lan
auto ebgp_r0
iface ebgp_r0 inet manual
up ip link set up dev ebgp_r0
up ip addr add 2001:db8:0:3::10/120 dev ebgp_r0
down ip addr del 2001:db8:0:3::10/120 dev ebgp_r0
down ip link set down dev ebgp_r0
auto ebgp_r20
iface ebgp_r20 inet manual
up ip link set up dev ebgp_r20
up ip addr add 2001:db8:10:6::10/120 dev ebgp_r20
down ip addr del 2001:db8:10:6::10/120 dev ebgp_r20
down ip link set down dev ebgp_r20
auto ebgp_r1
iface ebgp_r1 inet manual
up ip link set up dev ebgp_r1
up ip addr add 2001:db8:10:4::10/120 dev ebgp_r1
down ip addr del 2001:db8:10:4::10/120 dev ebgp_r1
down ip link set down dev ebgp_r1

View File

@ -18,7 +18,10 @@ protocol ospf {
stubnet 2001:db8:10::11/128;
interface "lan" {
};
interface "ebgp_r1" {
interface "ebgp_r0" {
stub;
};
interface "ebgp_r20" {
stub;
};
};
@ -48,29 +51,56 @@ protocol pipe p_master_to_bgp {
}
##############################################################################
# eBGP R1
# eBGP R0
#
table t_r1;
table t_r0;
protocol static originate_to_r1 {
table t_r1;
protocol static originate_to_r0 {
table t_r0;
import all; # originate here
route 2001:db8:10::/48 blackhole;
}
protocol bgp ebgp_r1 {
table t_r1;
local 2001:db8:10:4::11 as 65010;
neighbor 2001:db8:10:4::1 as 65000;
protocol bgp ebgp_r0 {
table t_r0;
local 2001:db8:0:3::11 as 65010;
neighbor 2001:db8:0:3::ff as 65000;
import all;
export all;
}
protocol pipe p_bgp_to_r1 {
protocol pipe p_bgp_to_r0 {
table t_bgp;
peer table t_r1;
import where proto = "ebgp_r1";
peer table t_r0;
import where proto = "ebgp_r0";
export none;
}
##############################################################################
# eBGP R20
#
table t_r20;
protocol static originate_to_r20 {
table t_r20;
import all; # originate here
route 2001:db8:10::/48 blackhole;
}
protocol bgp ebgp_r20 {
table t_r20;
local 2001:db8:10:6::10 as 65010;
neighbor 2001:db8:10:6::20 as 65020;
import all;
export all;
}
protocol pipe p_bgp_to_r20 {
table t_bgp;
peer table t_r20;
import where proto = "ebgp_r20";
export none;
}

View File

@ -0,0 +1,32 @@
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
2001:db8::ff lo.r0 r0
2001:db8:0:1::ff lan.r0
2001:db8:0:3::ff ebgp_r11.r0
2001:db8:10::10 lo.r10 r10
2001:db8:10:2::10 lan.r10
2001:db8:10:4::10 ebgp_r1.r10
2001:db8:10::11 lo.r11 r11
2001:db8:10:2::11 lan.r11
2001:db8:0:3::11 ebgp_r0.r11
2001:db8:10:6::11 ebgp_r20.r11
2001:db8:10::12 lo.r12 r12
2001:db8:10:2::12 lan.r12
2001:db8::1 lo.r1 r1
2001:db8:0:1::1 lan.r1
2001:db8:10:4::1 ebgp_r10.r1
2001:db8:0:5::1 ebgp_r20.r1
2001:db8:20::20 lo.r20 r20
2001:db8:0:5::20 ebgp_r1.r20
2001:db8:10:6::20 ebgp_r11.r20
2001:db8::2 lo.r2 r2
2001:db8:0:1::2 lan.r2

View File

@ -10,9 +10,16 @@ iface lan inet manual
down ip addr del 2001:db8:10:2::11/120 dev lan
down ip link set down dev lan
auto ebgp_r1
iface ebgp_r1 inet manual
up ip link set up dev ebgp_r1
up ip addr add 2001:db8:10:4::11/120 dev ebgp_r1
down ip addr del 2001:db8:10:4::11/120 dev ebgp_r1
down ip link set down dev ebgp_r1
auto ebgp_r0
iface ebgp_r0 inet manual
up ip link set up dev ebgp_r0
up ip addr add 2001:db8:0:3::11/120 dev ebgp_r0
down ip addr del 2001:db8:0:3::11/120 dev ebgp_r0
down ip link set down dev ebgp_r0
auto ebgp_r20
iface ebgp_r20 inet manual
up ip link set up dev ebgp_r20
up ip addr add 2001:db8:10:6::11/120 dev ebgp_r20
down ip addr del 2001:db8:10:6::11/120 dev ebgp_r20
down ip link set down dev ebgp_r20

View File

@ -0,0 +1,32 @@
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
2001:db8::ff lo.r0 r0
2001:db8:0:1::ff lan.r0
2001:db8:0:3::ff ebgp_r11.r0
2001:db8:10::10 lo.r10 r10
2001:db8:10:2::10 lan.r10
2001:db8:10:4::10 ebgp_r1.r10
2001:db8:10::11 lo.r11 r11
2001:db8:10:2::11 lan.r11
2001:db8:0:3::11 ebgp_r0.r11
2001:db8:10:6::11 ebgp_r20.r11
2001:db8:10::12 lo.r12 r12
2001:db8:10:2::12 lan.r12
2001:db8::1 lo.r1 r1
2001:db8:0:1::1 lan.r1
2001:db8:10:4::1 ebgp_r10.r1
2001:db8:0:5::1 ebgp_r20.r1
2001:db8:20::20 lo.r20 r20
2001:db8:0:5::20 ebgp_r1.r20
2001:db8:10:6::20 ebgp_r11.r20
2001:db8::2 lo.r2 r2
2001:db8:0:1::2 lan.r2

View File

@ -0,0 +1,32 @@
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
2001:db8::ff lo.r0 r0
2001:db8:0:1::ff lan.r0
2001:db8:0:3::ff ebgp_r11.r0
2001:db8:10::10 lo.r10 r10
2001:db8:10:2::10 lan.r10
2001:db8:10:4::10 ebgp_r1.r10
2001:db8:10::11 lo.r11 r11
2001:db8:10:2::11 lan.r11
2001:db8:0:3::11 ebgp_r0.r11
2001:db8:10:6::11 ebgp_r20.r11
2001:db8:10::12 lo.r12 r12
2001:db8:10:2::12 lan.r12
2001:db8::1 lo.r1 r1
2001:db8:0:1::1 lan.r1
2001:db8:10:4::1 ebgp_r10.r1
2001:db8:0:5::1 ebgp_r20.r1
2001:db8:20::20 lo.r20 r20
2001:db8:0:5::20 ebgp_r1.r20
2001:db8:10:6::20 ebgp_r11.r20
2001:db8::2 lo.r2 r2
2001:db8:0:1::2 lan.r2

View File

@ -19,7 +19,7 @@ protocol ospf {
interface "ebgp_r1" {
stub;
};
interface "ebgp_r10" {
interface "ebgp_r11" {
stub;
};
};
@ -76,28 +76,28 @@ protocol pipe p_bgp_to_r1 {
}
##############################################################################
# eBGP R10
# eBGP R11
#
table t_r10;
table t_r11;
protocol static originate_to_r10 {
table t_r10;
protocol static originate_to_r11 {
table t_r11;
import all; # originate here
route 2001:db8:20::/48 blackhole;
}
protocol bgp ebgp_r10 {
table t_r10;
protocol bgp ebgp_r11 {
table t_r11;
local 2001:db8:10:6::20 as 65020;
neighbor 2001:db8:10:6::10 as 65010;
neighbor 2001:db8:10:6::11 as 65010;
import all;
export all;
}
protocol pipe p_bgp_to_r10 {
protocol pipe p_bgp_to_r11 {
table t_bgp;
peer table t_r10;
import where proto = "ebgp_r10";
peer table t_r11;
import where proto = "ebgp_r11";
export none;
}

View File

@ -0,0 +1,32 @@
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
2001:db8::ff lo.r0 r0
2001:db8:0:1::ff lan.r0
2001:db8:0:3::ff ebgp_r11.r0
2001:db8:10::10 lo.r10 r10
2001:db8:10:2::10 lan.r10
2001:db8:10:4::10 ebgp_r1.r10
2001:db8:10::11 lo.r11 r11
2001:db8:10:2::11 lan.r11
2001:db8:0:3::11 ebgp_r0.r11
2001:db8:10:6::11 ebgp_r20.r11
2001:db8:10::12 lo.r12 r12
2001:db8:10:2::12 lan.r12
2001:db8::1 lo.r1 r1
2001:db8:0:1::1 lan.r1
2001:db8:10:4::1 ebgp_r10.r1
2001:db8:0:5::1 ebgp_r20.r1
2001:db8:20::20 lo.r20 r20
2001:db8:0:5::20 ebgp_r1.r20
2001:db8:10:6::20 ebgp_r11.r20
2001:db8::2 lo.r2 r2
2001:db8:0:1::2 lan.r2

View File

@ -10,9 +10,9 @@ iface ebgp_r1 inet manual
down ip addr del 2001:db8:0:5::20/120 dev ebgp_r1
down ip link set down dev ebgp_r1
auto ebgp_r10
iface ebgp_r10 inet manual
up ip link set up dev ebgp_r10
up ip addr add 2001:db8:10:6::20/120 dev ebgp_r10
down ip addr del 2001:db8:10:6::20/120 dev ebgp_r10
down ip link set down dev ebgp_r10
auto ebgp_r11
iface ebgp_r11 inet manual
up ip link set up dev ebgp_r11
up ip addr add 2001:db8:10:6::20/120 dev ebgp_r11
down ip addr del 2001:db8:10:6::20/120 dev ebgp_r11
down ip link set down dev ebgp_r11

View File

@ -13,7 +13,7 @@ lxc.network.script.down = /etc/lxc/lxc-openvswitch
lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = ebgp_r10
lxc.network.name = ebgp_r11
lxc.network.veth.pair = r0.3
lxc.network.script.up = /etc/lxc/lxc-openvswitch
lxc.network.script.down = /etc/lxc/lxc-openvswitch
@ -30,7 +30,7 @@ lxc.network.script.down = /etc/lxc/lxc-openvswitch
lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = ebgp_r11
lxc.network.name = ebgp_r10
lxc.network.veth.pair = r1.4
lxc.network.script.up = /etc/lxc/lxc-openvswitch
lxc.network.script.down = /etc/lxc/lxc-openvswitch
@ -64,15 +64,8 @@ lxc.network.script.down = /etc/lxc/lxc-openvswitch
lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = ebgp_r0
lxc.network.veth.pair = r10.3
lxc.network.script.up = /etc/lxc/lxc-openvswitch
lxc.network.script.down = /etc/lxc/lxc-openvswitch
lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = ebgp_r20
lxc.network.veth.pair = r10.6
lxc.network.name = ebgp_r1
lxc.network.veth.pair = r10.4
lxc.network.script.up = /etc/lxc/lxc-openvswitch
lxc.network.script.down = /etc/lxc/lxc-openvswitch
EOF
@ -88,8 +81,15 @@ lxc.network.script.down = /etc/lxc/lxc-openvswitch
lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = ebgp_r1
lxc.network.veth.pair = r11.4
lxc.network.name = ebgp_r0
lxc.network.veth.pair = r11.3
lxc.network.script.up = /etc/lxc/lxc-openvswitch
lxc.network.script.down = /etc/lxc/lxc-openvswitch
lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = ebgp_r20
lxc.network.veth.pair = r11.6
lxc.network.script.up = /etc/lxc/lxc-openvswitch
lxc.network.script.down = /etc/lxc/lxc-openvswitch
EOF
@ -115,7 +115,7 @@ lxc.network.script.down = /etc/lxc/lxc-openvswitch
lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = ebgp_r10
lxc.network.name = ebgp_r11
lxc.network.veth.pair = r20.6
lxc.network.script.up = /etc/lxc/lxc-openvswitch
lxc.network.script.down = /etc/lxc/lxc-openvswitch