SlideShare a Scribd company logo
1 of 57
Download to read offline
PLNOG 3, Kraków, Sep 10th 2009
<elzbieta.jasinska@ams-ix.net>
From the Earth to the Moon
From a Quagga-based Route Server to OpenBGPd
PLNOG 3, Kraków, Sep 10th 2009
Agenda
• Why Route Servers?
• What do Route Servers do?
• IX Requirements
• Current Implementations
• OpenBGPd Testing
PLNOG 3, Kraków, Sep 10th 2009
Agenda
• Why Route Servers?
• What do Route Servers do?
• IX Requirements
• Current Implementations
• OpenBGPd Testing
PLNOG 3, Kraków, Sep 10th 2009
Why Route Servers?
• Internet Exchange (e.g.AMS-IX)
• Peering platform for many parties
• Route Servers for the participants
PLNOG 3, Kraków, Sep 10th 2009
Why Route Servers?
• Peer with as many parties as possible
➡ Maintaining lots of BGP sessions
PLNOG 3, Kraków, Sep 10th 2009
Why Route Servers?
• Reach a lot of parties with just one BGP
session
PLNOG 3, Kraków, Sep 10th 2009
Why Route Servers?
• Redundancy ... in case your sessions die ...
PLNOG 3, Kraków, Sep 10th 2009
Why Route Servers?
• Redundancy ... in case the Route Server dies ...
PLNOG 3, Kraków, Sep 10th 2009
Why Route Servers?
• Easy entry point for new members to the
Exchange - immediate traffic
PLNOG 3, Kraków, Sep 10th 2009
Agenda
• Why Route Servers?
• What do Route Servers do?
• IX Requirements
• Current Implementations
• OpenBGPd Testing
PLNOG 3, Kraków, Sep 10th 2009
What do route servers do?
• Receive UPDATEs from every participant
19:58:33.721679 IP (tos 0x0, ttl 64, id 44576, offset 0, flags [DF], proto TCP (6),
length 117) 10.23.0.5.58880 > 10.23.0.1.179: P, cksum 0xb892 (correct), 48:113(65) ack
61 win 1460 <nop,nop,timestamp 1976783474 3177206804>: BGP, length: 65
Update Message (2), length: 65
...
AS Path (2), length: 10, Flags [T]: 65499 11 12 13
...
Next Hop (3), length: 4, Flags [T]: 10.23.0.5
...
Updated routes:
2.0.5.0/24
19:58:33.723897 IP (tos 0x0, ttl 64, id 42762, offset 0, flags [DF], proto TCP (6),
length 117) 10.23.0.4.33349 > 10.23.0.1.179: P, cksum 0xb033 (correct), 48:113(65) ack
61 win 1460 <nop,nop,timestamp 1976783474 1916183085>: BGP, length: 65
Update Message (2), length: 65
...
AS Path (2), length: 10, Flags [T]: 65500 11 12 13
...
Next Hop (3), length: 4, Flags [T]: 10.23.0.4
...
Updated routes:
2.0.4.0/24
PLNOG 3, Kraków, Sep 10th 2009
What do route servers do?
• Apply filters for the receiving peers
from AS65500 accept ANY
to AS65500 announce AS65499
from AS65499 accept ANY
to AS65499 announce AS65500
PLNOG 3, Kraków, Sep 10th 2009
What do route servers do?
• Perform “best path” selection for every peer
• Store Routing Information Base (RIB) for
every peer
flags destination gateway lpref med aspath origin
*> 2.0.4.0/24 10.23.0.4 100 200 65500 11 12 13 i
*> 2.0.5.0/24 10.23.0.5 100 200 65499 11 12 13 i
PLNOG 3, Kraków, Sep 10th 2009
What do route servers do?
• Forward the RIB contents to the desired peer
19:58:33.901718 IP (tos 0xc0, ttl 1, id 15745, offset 0, flags [DF], proto TCP (6),
length 103) 10.23.0.1.179 > 10.23.0.4.33349: P, cksum 0x2b21 (correct), 61:112(51) ack
114 win 17376 <nop,nop,timestamp 1916183105 1976783474>: BGP, length: 51
Update Message (2), length: 51
...
AS Path (2), length: 10, Flags [T]: 65499 11 12 13
...
Next Hop (3), length: 4, Flags [T]: 10.23.0.5
...
Updated routes:
2.0.5.0/24
19:58:33.903463 IP (tos 0xc0, ttl 1, id 12268, offset 0, flags [DF], proto TCP (6),
length 103) 10.23.0.1.179 > 10.23.0.5.58880: P, cksum 0x377e (correct), 61:112(51) ack
114 win 17376 <nop,nop,timestamp 3177206824 1976783474>: BGP, length: 51
Update Message (2), length: 51
...
AS Path (2), length: 10, Flags [T]: 65500 11 12 13
...
Next Hop (3), length: 4, Flags [T]: 10.23.0.4
...
Updated routes:
2.0.4.0/24
PLNOG 3, Kraków, Sep 10th 2009
What do route servers do?
Source: Quagga Route Server model description
PLNOG 3, Kraków, Sep 10th 2009
Agenda
• Why Route Servers?
• What do Route Servers do?
• IX Requirements
• Current Implementations
• OpenBGPd Testing
PLNOG 3, Kraków, Sep 10th 2009
Requirements
• Stability
• Performance
• Stability
• Performance
• Stability
• Performance
PLNOG 3, Kraków, Sep 10th 2009
Requirements
• Allow for peering policies to be maintained
• Stability
• Performance
• Stability
• Performance
• ...
PLNOG 3, Kraków, Sep 10th 2009
Agenda
• Why Route Servers?
• What do Route Servers do?
• IX Requirements
• Current Implementations
• OpenBGPd Testing
PLNOG 3, Kraków, Sep 10th 2009
Current Implementations
• Quagga
• OpenBGPd
• BIRD
PLNOG 3, Kraków, Sep 10th 2009
Quagga
• Two Quagga instances currently in use at
AMS-IX
• Each ~ 200 BGP sessions, announcing
~ 25.000 prefixes
• Single threaded implementation
• Issues with performing its tasks on time
PLNOG 3, Kraków, Sep 10th 2009
OpenBGPd
• Multi threaded implementation
• ... more details in a moment
PLNOG 3, Kraków, Sep 10th 2009
BIRD
• Mentioned for the sake of completeness
• ... research on the TODO list ...
PLNOG 3, Kraków, Sep 10th 2009
Agenda
• Why Route Servers?
• What do Route Servers do?
• IX Requirements
• Current Implementations
• OpenBGPd Testing
PLNOG 3, Kraków, Sep 10th 2009
OpenBGPd Testing
“I don’t know...A proof is a proof.What
kind of a proof? It’s a proof.A proof is a
proof, and when you have a good proof,
it’s because it’s proven.”
-- Jean Cheretien
Thanks to
Arnoud Vermeer and Leon Weber
PLNOG 3, Kraków, Sep 10th 2009
OpenBGPd Testing
• Basic functionality
• BGP protocol
• Route selection
• Stress testing / performance
• Amount of peering sessions
• Amount of prefixes
• Amount of UPDATEs
PLNOG 3, Kraków, Sep 10th 2009
Test Setup #1
PLNOG 3, Kraków, Sep 10th 2009
IPv6 Bug
• Upon “clearing” one peers session, other IPv6
sessions died
• It took some time to realize it had to do with
withdraw messages
• IPv6 withdraws in OpenBGPd were erroneous
• Fixed since March 11th 2009
Mar 10 04:41:45 routeertnix bgpd[25100]: neighbor 2001:db8:1::a506:5502:1
(laborantix v6) AS65502: withdraw 2001:db8:97::/64
Mar 10 04:41:45 routeertnix bgpd[12120]: neighbor 2001:db8:1::a506:5504:1
(junix v6): received notification: error in UPDATE message, attribute list error
Mar 10 04:41:45 routeertnix bgpd[12120]: neighbor 2001:db8:1::a506:5504:1
(junix v6): state change Established -> Idle, reason: NOTIFICATION received
PLNOG 3, Kraków, Sep 10th 2009
Per-Peer RIBs
announces 23.23.23.0/24
receives 23.23.23.0/24 via
AS65503 and AS65504,
AS65503 will be selected
as best path
denies routes via AS65503,
will never receive
23.23.23.0/24
PLNOG 3, Kraków, Sep 10th 2009
Per-Peer RIBs
• OpenBGPd so far only provided a global “best
path” selection and RIB
• Client side filtering would not be applicable
• Per-Peer configurable RIBs have been
implemented on request as of June 8th 2009
PLNOG 3, Kraków, Sep 10th 2009
Test Setup #2
• Test Server - Experimentix
• Directly connected to the Route Server
• Lots of IP aliases on its interface
• Runs a Perl script based on Net::BGP to
simulate BGP speakers
(http://www.ams-ix.net/downloads/)
PLNOG 3, Kraków, Sep 10th 2009
Test Setup #2
PLNOG 3, Kraków, Sep 10th 2009
Open File Limit
• Establishing over 1024 BGP sessions to the
Route Server caused:
• Default open file limit on OpenBSD: 1024
• Starting the daemon with an increased
“ulimit -n” helps
Sep 8 22:04:01 routeertnix bgpd[19382]: connection from non-peer (unknown) refused
Sep 8 22:04:01 routeertnix bgpd[19382]: accept: Too many open files
# ulimit -a
...
open files (-n) 1024
...
(ulimit -n 128000; bgpd -vv)
PLNOG 3, Kraków, Sep 10th 2009
First UPDATEs
• We were ready to go...
• Setup was prepared
• Sessions were coming UP
• Different bgpd.conf files were prepared
• Graphing scripts were written
to plot CPU/Mem usage with different
configs
PLNOG 3, Kraków, Sep 10th 2009
Test Sequence
• Increase # of sessions: 253, 506, 1012 per test
• Test single and multiple RIBs
• Increase # of unique announcements/
withdraws: 1,2,4,8,16,32,64 within one test,
separated by a defined interval
PLNOG 3, Kraków, Sep 10th 2009
Test #1 - CPU
0
10
20
30
40
50
60
70
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
cpuusage(percent)
time (seconds)
OpenBGPd cpu usage
single-rib; 253 sessions established at t=0
1/2/4/8/16/32/64 updates per sess every 10min
announce/withdraw 1 unique prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
cpu route decision engine
cpu session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #1 - Mem
0
10000
20000
30000
40000
50000
60000
70000
80000
90000
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
memusage(bytes)
time (seconds)
OpenBGPd mem usage
single-rib; 253 sessions established at t=0
1/2/4/8/16/32/64 updates per sess every 10min
announce/withdraw 1 unique prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
mem route decision engine
mem session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #2 - CPU
0
10
20
30
40
50
60
70
80
0 2000 4000 6000 8000 10000 12000 14000 16000 18000
cpuusage(percent)
time (seconds)
OpenBGPd cpu usage
single-rib; 506 sessions established at t=0
1/2/4/8/16/32/64 updates/withdraws per sess every 10min
announce 1 unique prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
cpu route decision engine
cpu session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #2 - Mem
0
50000
100000
150000
200000
250000
300000
350000
0 2000 4000 6000 8000 10000 12000 14000 16000 18000
memusage(bytes)
time (seconds)
OpenBGPd mem usage
single-rib; 506 sessions established at t=0
1/2/4/8/16/32/64 updates/withdraws per sess every 10min
announce 1 unique prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
mem route decision engine
mem session engine
PLNOG 3, Kraków, Sep 10th 2009
Mbufs
• Suddenly the Route Server became
unreachable...
• Defaults
• Change them
WARNING: mclpool limit reached; increase kern.maxclusters
# sysctl kern.maxclusters
kern.maxclusters=6144
# sysctl kern.maxclusters=240000
kern.maxclusters: 6144 -> 240000
PLNOG 3, Kraków, Sep 10th 2009
Mbufs
• We are now also plotting mbuf usage
• Buffer usage peaks are still being looked into
by the developers
0
2000
4000
6000
8000
10000
12000
14000
16000
18000
20000
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
mbufs
time (seconds)
routeertnix.lab.ams-ix.net
mbuf usage
mbufs used
PLNOG 3, Kraków, Sep 10th 2009
Test #2 again - CPU
0
10
20
30
40
50
60
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
cpuusage(percent)
time (seconds)
OpenBGPd cpu usage
single-rib; 506 sessions established at t=0
1/2/4/8/16/32/64 updates per sess every 10min
announce/withdraw 1 unique prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
cpu route decision engine
cpu session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #2 again - Mem
0
50000
100000
150000
200000
250000
300000
350000
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
memusage(bytes)
time (seconds)
OpenBGPd mem usage
single-rib; 506 sessions established at t=0
1/2/4/8/16/32/64 updates per sess every 10min
announce/withdraw 1 unique prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
mem route decision engine
mem session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #3 - CPU
0
10
20
30
40
50
60
0 2000 4000 6000 8000 10000 12000 14000
cpuusage(percent)
time (seconds)
OpenBGPd cpu usage
single-rib; 1012 sessions established at t=0
1/2/4/8/16/32/64 updates per sess every 30min
announce/withdraw 1 unique prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
cpu route decision engine
cpu session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #3 - Mem
0
100000
200000
300000
400000
500000
600000
0 2000 4000 6000 8000 10000 12000 14000
memusage(bytes)
time (seconds)
OpenBGPd mem usage
single-rib; 1012 sessions established at t=0
1/2/4/8/16/32/64 updates per sess every 30min
announce/withdraw 1 unique prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
mem route decision engine
mem session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #4 - CPU
0
10
20
30
40
50
60
70
80
0 5000 10000 15000 20000 25000
cpuusage(percent)
time (seconds)
OpenBGPd cpu usage
multiple-rib; 253 sessions established at t=0
sent 1/2/4/8/16/32/64 updates per session beginning t=600s at a 600s interval
announce/withdraw 1 prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
cpu route decision engine
cpu session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #4 - Mem
0
100000
200000
300000
400000
500000
600000
0 5000 10000 15000 20000 25000
memusage(bytes)
time (seconds)
OpenBGPd mem usage
multiple-rib; 253 sessions established at t=0
sent 1/2/4/8/16/32/64 updates per session beginning t=600s at a 600s interval
announce/withdraw 1 prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
mem route decision engine
mem session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #5 - CPU
0
10
20
30
40
50
60
70
80
0 2000 4000 6000 8000 10000 12000 14000 16000 18000
cpuusage(percent)
time (seconds)
OpenBGPd cpu usage
multiple-rib; 506 sessions established at t=0
1/2/4/8/16/32/64 updates per sess every 30min
announce/withdraw 1 unique prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
cpu route decision engine
cpu session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #5 - Mem
0
100000
200000
300000
400000
500000
600000
0 2000 4000 6000 8000 10000 12000 14000 16000 18000
memusage(bytes)
time (seconds)
OpenBGPd mem usage
multiple-rib; 506 sessions established at t=0
1/2/4/8/16/32/64 updates per sess every 30min
announce/withdraw 1 unique prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
mem route decision engine
mem session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #6 - CPU
0
10
20
30
40
50
60
70
80
90
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
cpuusage(percent)
time (seconds)
OpenBGPd cpu usage
multiple-rib; 1012 sessions established at t=0
sent 1/2/4/8/16/32/64 updates per session beginning t=1800s at a 1800s interval
announce/withdraw 1 prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
cpu route decision engine
cpu session engine
PLNOG 3, Kraków, Sep 10th 2009
Test #6 - Mem
0
100000
200000
300000
400000
500000
600000
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
memusage(bytes)
time (seconds)
OpenBGPd mem usage
multiple-rib; 1012 sessions established at t=0
sent 1/2/4/8/16/32/64 updates per session beginning t=1800s at a 1800s interval
announce/withdraw 1 prefix each
Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class)
mem route decision engine
mem session engine
PLNOG 3, Kraków, Sep 10th 2009
Memory Usage
• Increased memory usage with the amount of
UPDATEs
• But wait... the server has 1GB memory and it
crashed with 500MB!?
• Data segment size on OpenBSD: ~500MB
• But this is not the issue...
Jul 9 04:58:59 routeertnix bgpd[9200]: fatal in RDE: up_generate: Cannot allocate memory
Jul 9 04:58:59 routeertnix bgpd[7848]: Lost child: route decision engine exited
Jul 9 04:58:59 routeertnix bgpd[14688]: fatal in SE: pipe write error: Broken pipe
Jul 9 04:58:59 routeertnix bgpd[7848]: Terminating
# ulimit -a
...
data seg size (kbytes, -d) 524288
...
PLNOG 3, Kraków, Sep 10th 2009
Memory Usage
• Underlying issue seems like OpenBGPd
buffers the messages before sending them
• Is the test server too slow receiving? Or
OpenBSD too slow sending? Or is it the
Route Server itself?
• First, lets rule out the test server, since this is
what we have control over....
PLNOG 3, Kraków, Sep 10th 2009
Memory Usage
• Perl too slow?
• Replaced socket implementation in Net::BGP
with some C code
• After establishing all sessions the file
descriptors are passed on to the C part
• It shows that there is not much data coming in
during the time the memory occupation
grows
PLNOG 3, Kraków, Sep 10th 2009
Memory Usage vs. Net Load
0
100
200
300
400
500
600
700
800
0 1000 2000 3000 4000 5000 6000 7000 8000 9000
memusage(Mbytes)
time (seconds)
OpenBGPd mem usage
multiple-rib; 253 sessions established at t=0
900
sent 1/2/4/8/16/32/64 pre session beginning at t=900 at a 900s interval
routeertnix.lab.ams-ix.net
1x Intel(R) Pentium(R) III CPU family 1133MHz
mem route decision engine
mem session engine
free memory
0
1000
2000
3000
4000
5000
6000
0 1000 2000 3000 4000 5000 6000 7000 8000 9000
netusage(KByte/s)
time (seconds)
OpenBGPd net usage
multiple-rib; 253 sessions established at t=0
900
sent 1/2/4/8/16/32/64 pre session beginning at t=900 at a 900s interval
routeertnix.lab.ams-ix.net
1x Intel(R) Pentium(R) III CPU family 1133MHz
input
output
PLNOG 3, Kraków, Sep 10th 2009
Summary
• This is work in progress
• Many issues are still subject to investigation
• Results are not conclusive yet
• More research and updates will follow...
PLNOG 3, Kraków, Sep 10th 2009
<elzbieta.jasinska@ams-ix.net>
Thank you!
Questions?

More Related Content

What's hot

Open vSwitch - Stateful Connection Tracking & Stateful NAT
Open vSwitch - Stateful Connection Tracking & Stateful NATOpen vSwitch - Stateful Connection Tracking & Stateful NAT
Open vSwitch - Stateful Connection Tracking & Stateful NATThomas Graf
 
Comprehensive XDP Off‌load-handling the Edge Cases
Comprehensive XDP Off‌load-handling the Edge CasesComprehensive XDP Off‌load-handling the Edge Cases
Comprehensive XDP Off‌load-handling the Edge CasesNetronome
 
Не так страшен терабит / Вячеслав Ольховченков (Integros)
Не так страшен терабит / Вячеслав Ольховченков (Integros)Не так страшен терабит / Вячеслав Ольховченков (Integros)
Не так страшен терабит / Вячеслав Ольховченков (Integros)Ontico
 
LF_OVS_17_OVS/OVS-DPDK connection tracking for Mobile usecases
LF_OVS_17_OVS/OVS-DPDK connection tracking for Mobile usecasesLF_OVS_17_OVS/OVS-DPDK connection tracking for Mobile usecases
LF_OVS_17_OVS/OVS-DPDK connection tracking for Mobile usecasesLF_OpenvSwitch
 
flowspec @ APF 2013
flowspec @ APF 2013flowspec @ APF 2013
flowspec @ APF 2013Tom Paseka
 
BGP Peering Test Report - IP Infusion
BGP Peering Test Report - IP InfusionBGP Peering Test Report - IP Infusion
BGP Peering Test Report - IP InfusionDhiman Chowdhury
 
LF_OVS_17_Ingress Scheduling
LF_OVS_17_Ingress SchedulingLF_OVS_17_Ingress Scheduling
LF_OVS_17_Ingress SchedulingLF_OpenvSwitch
 
Cilium - Fast IPv6 Container Networking with BPF and XDP
Cilium - Fast IPv6 Container Networking with BPF and XDPCilium - Fast IPv6 Container Networking with BPF and XDP
Cilium - Fast IPv6 Container Networking with BPF and XDPThomas Graf
 
Primer to Browser Netwroking
Primer to Browser NetwrokingPrimer to Browser Netwroking
Primer to Browser NetwrokingShuya Osaki
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUICShuya Osaki
 
Linux Native, HTTP Aware Network Security
Linux Native, HTTP Aware Network SecurityLinux Native, HTTP Aware Network Security
Linux Native, HTTP Aware Network SecurityThomas Graf
 
Disaggregation a Primer: Optimizing design for Edge Cloud & Bare Metal applic...
Disaggregation a Primer: Optimizing design for Edge Cloud & Bare Metal applic...Disaggregation a Primer: Optimizing design for Edge Cloud & Bare Metal applic...
Disaggregation a Primer: Optimizing design for Edge Cloud & Bare Metal applic...Netronome
 
LF_OVS_17_OVS-DPDK Installation and Gotchas
LF_OVS_17_OVS-DPDK Installation and GotchasLF_OVS_17_OVS-DPDK Installation and Gotchas
LF_OVS_17_OVS-DPDK Installation and GotchasLF_OpenvSwitch
 
The analysis of Microburs (Burstiness) on Virtual Switch
The analysis of Microburs (Burstiness) on Virtual SwitchThe analysis of Microburs (Burstiness) on Virtual Switch
The analysis of Microburs (Burstiness) on Virtual SwitchChunghan Lee
 
LF_OVS_17_OVS Performance on Steroids - Hardware Acceleration Methodologies
LF_OVS_17_OVS Performance on Steroids - Hardware Acceleration MethodologiesLF_OVS_17_OVS Performance on Steroids - Hardware Acceleration Methodologies
LF_OVS_17_OVS Performance on Steroids - Hardware Acceleration MethodologiesLF_OpenvSwitch
 
LF_OVS_17_OVN and Containers - An update.
LF_OVS_17_OVN and Containers - An update.LF_OVS_17_OVN and Containers - An update.
LF_OVS_17_OVN and Containers - An update.LF_OpenvSwitch
 
GoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPdGoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPdPavel Odintsov
 
Technical Overview of QUIC
Technical  Overview of QUICTechnical  Overview of QUIC
Technical Overview of QUICshigeki_ohtsu
 
OpenStack networking juno l3 h-a, dvr
OpenStack networking   juno l3 h-a, dvrOpenStack networking   juno l3 h-a, dvr
OpenStack networking juno l3 h-a, dvrSim Janghoon
 

What's hot (20)

Open vSwitch - Stateful Connection Tracking & Stateful NAT
Open vSwitch - Stateful Connection Tracking & Stateful NATOpen vSwitch - Stateful Connection Tracking & Stateful NAT
Open vSwitch - Stateful Connection Tracking & Stateful NAT
 
Comprehensive XDP Off‌load-handling the Edge Cases
Comprehensive XDP Off‌load-handling the Edge CasesComprehensive XDP Off‌load-handling the Edge Cases
Comprehensive XDP Off‌load-handling the Edge Cases
 
Не так страшен терабит / Вячеслав Ольховченков (Integros)
Не так страшен терабит / Вячеслав Ольховченков (Integros)Не так страшен терабит / Вячеслав Ольховченков (Integros)
Не так страшен терабит / Вячеслав Ольховченков (Integros)
 
LF_OVS_17_OVS/OVS-DPDK connection tracking for Mobile usecases
LF_OVS_17_OVS/OVS-DPDK connection tracking for Mobile usecasesLF_OVS_17_OVS/OVS-DPDK connection tracking for Mobile usecases
LF_OVS_17_OVS/OVS-DPDK connection tracking for Mobile usecases
 
flowspec @ APF 2013
flowspec @ APF 2013flowspec @ APF 2013
flowspec @ APF 2013
 
BGP Peering Test Report - IP Infusion
BGP Peering Test Report - IP InfusionBGP Peering Test Report - IP Infusion
BGP Peering Test Report - IP Infusion
 
LF_OVS_17_Ingress Scheduling
LF_OVS_17_Ingress SchedulingLF_OVS_17_Ingress Scheduling
LF_OVS_17_Ingress Scheduling
 
Cilium - Fast IPv6 Container Networking with BPF and XDP
Cilium - Fast IPv6 Container Networking with BPF and XDPCilium - Fast IPv6 Container Networking with BPF and XDP
Cilium - Fast IPv6 Container Networking with BPF and XDP
 
Primer to Browser Netwroking
Primer to Browser NetwrokingPrimer to Browser Netwroking
Primer to Browser Netwroking
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUIC
 
Linux Native, HTTP Aware Network Security
Linux Native, HTTP Aware Network SecurityLinux Native, HTTP Aware Network Security
Linux Native, HTTP Aware Network Security
 
Disaggregation a Primer: Optimizing design for Edge Cloud & Bare Metal applic...
Disaggregation a Primer: Optimizing design for Edge Cloud & Bare Metal applic...Disaggregation a Primer: Optimizing design for Edge Cloud & Bare Metal applic...
Disaggregation a Primer: Optimizing design for Edge Cloud & Bare Metal applic...
 
LF_OVS_17_OVS-DPDK Installation and Gotchas
LF_OVS_17_OVS-DPDK Installation and GotchasLF_OVS_17_OVS-DPDK Installation and Gotchas
LF_OVS_17_OVS-DPDK Installation and Gotchas
 
The analysis of Microburs (Burstiness) on Virtual Switch
The analysis of Microburs (Burstiness) on Virtual SwitchThe analysis of Microburs (Burstiness) on Virtual Switch
The analysis of Microburs (Burstiness) on Virtual Switch
 
Google QUIC
Google QUICGoogle QUIC
Google QUIC
 
LF_OVS_17_OVS Performance on Steroids - Hardware Acceleration Methodologies
LF_OVS_17_OVS Performance on Steroids - Hardware Acceleration MethodologiesLF_OVS_17_OVS Performance on Steroids - Hardware Acceleration Methodologies
LF_OVS_17_OVS Performance on Steroids - Hardware Acceleration Methodologies
 
LF_OVS_17_OVN and Containers - An update.
LF_OVS_17_OVN and Containers - An update.LF_OVS_17_OVN and Containers - An update.
LF_OVS_17_OVN and Containers - An update.
 
GoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPdGoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPd
 
Technical Overview of QUIC
Technical  Overview of QUICTechnical  Overview of QUIC
Technical Overview of QUIC
 
OpenStack networking juno l3 h-a, dvr
OpenStack networking   juno l3 h-a, dvrOpenStack networking   juno l3 h-a, dvr
OpenStack networking juno l3 h-a, dvr
 

Similar to PLNOG 3: Ela Jasińska - From the Earth to the Moon From a Quagga-based Route Server to OpenBGPd

PLNOG 4: Ela Jasińska - (Ab)Using Route Servers
PLNOG 4: Ela Jasińska -  (Ab)Using Route ServersPLNOG 4: Ela Jasińska -  (Ab)Using Route Servers
PLNOG 4: Ela Jasińska - (Ab)Using Route ServersPROIDEA
 
Demystifying Networking Webinar Series- Routing on the Host
Demystifying Networking Webinar Series- Routing on the HostDemystifying Networking Webinar Series- Routing on the Host
Demystifying Networking Webinar Series- Routing on the HostCumulus Networks
 
Automotive network and gateway simulation
Automotive network and gateway simulationAutomotive network and gateway simulation
Automotive network and gateway simulationDeepak Shankar
 
A Study on MPTCP for Tolerating Packet Reordering and Path Heterogeneity in W...
A Study on MPTCP for Tolerating Packet Reordering and Path Heterogeneity in W...A Study on MPTCP for Tolerating Packet Reordering and Path Heterogeneity in W...
A Study on MPTCP for Tolerating Packet Reordering and Path Heterogeneity in W...Communication Systems & Networks
 
Cisco Connect Toronto 2017 - Model-driven Telemetry
Cisco Connect Toronto 2017 - Model-driven TelemetryCisco Connect Toronto 2017 - Model-driven Telemetry
Cisco Connect Toronto 2017 - Model-driven TelemetryCisco Canada
 
Building Scalable Data Center Networks
Building Scalable Data Center NetworksBuilding Scalable Data Center Networks
Building Scalable Data Center NetworksCumulus Networks
 
Exploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTCExploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTCGrgur Grisogono
 
PLNOG 4: Emil Gągała - Deploying Next-Generation Multicast VPN
PLNOG 4: Emil Gągała - Deploying Next-Generation Multicast VPNPLNOG 4: Emil Gągała - Deploying Next-Generation Multicast VPN
PLNOG 4: Emil Gągała - Deploying Next-Generation Multicast VPNPROIDEA
 
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introductionCodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introductionCodiLime
 
BIRD Routing Daemon
BIRD Routing DaemonBIRD Routing Daemon
BIRD Routing DaemonAPNIC
 
Bruno Decraene - Improving network availability through the graceful shutdown...
Bruno Decraene - Improving network availability through the graceful shutdown...Bruno Decraene - Improving network availability through the graceful shutdown...
Bruno Decraene - Improving network availability through the graceful shutdown...PROIDEA
 
IoT Field Area Network Solutions & Integration of IPv6 Standards by Patrick G...
IoT Field Area Network Solutions & Integration of IPv6 Standards by Patrick G...IoT Field Area Network Solutions & Integration of IPv6 Standards by Patrick G...
IoT Field Area Network Solutions & Integration of IPv6 Standards by Patrick G...gogo6
 
Cisco EuroMPI'13 vendor session presentation
Cisco EuroMPI'13 vendor session presentationCisco EuroMPI'13 vendor session presentation
Cisco EuroMPI'13 vendor session presentationJeff Squyres
 
Evaluating the networking performance of linux based home router platforms fo...
Evaluating the networking performance of linux based home router platforms fo...Evaluating the networking performance of linux based home router platforms fo...
Evaluating the networking performance of linux based home router platforms fo...Alpen-Adria-Universität
 
CoAP Course for m2m and Internet of Things scenarios
CoAP Course for m2m and Internet of Things scenariosCoAP Course for m2m and Internet of Things scenarios
CoAP Course for m2m and Internet of Things scenarioscarlosralli
 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...Aman Kohli
 

Similar to PLNOG 3: Ela Jasińska - From the Earth to the Moon From a Quagga-based Route Server to OpenBGPd (20)

PLNOG 4: Ela Jasińska - (Ab)Using Route Servers
PLNOG 4: Ela Jasińska -  (Ab)Using Route ServersPLNOG 4: Ela Jasińska -  (Ab)Using Route Servers
PLNOG 4: Ela Jasińska - (Ab)Using Route Servers
 
Demystifying Networking Webinar Series- Routing on the Host
Demystifying Networking Webinar Series- Routing on the HostDemystifying Networking Webinar Series- Routing on the Host
Demystifying Networking Webinar Series- Routing on the Host
 
Bgp
BgpBgp
Bgp
 
Automotive network and gateway simulation
Automotive network and gateway simulationAutomotive network and gateway simulation
Automotive network and gateway simulation
 
10 routing-bgp
10 routing-bgp10 routing-bgp
10 routing-bgp
 
A Study on MPTCP for Tolerating Packet Reordering and Path Heterogeneity in W...
A Study on MPTCP for Tolerating Packet Reordering and Path Heterogeneity in W...A Study on MPTCP for Tolerating Packet Reordering and Path Heterogeneity in W...
A Study on MPTCP for Tolerating Packet Reordering and Path Heterogeneity in W...
 
BGP
BGPBGP
BGP
 
BGP Monitoring Protocol
BGP Monitoring ProtocolBGP Monitoring Protocol
BGP Monitoring Protocol
 
Cisco Connect Toronto 2017 - Model-driven Telemetry
Cisco Connect Toronto 2017 - Model-driven TelemetryCisco Connect Toronto 2017 - Model-driven Telemetry
Cisco Connect Toronto 2017 - Model-driven Telemetry
 
Building Scalable Data Center Networks
Building Scalable Data Center NetworksBuilding Scalable Data Center Networks
Building Scalable Data Center Networks
 
Exploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTCExploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTC
 
PLNOG 4: Emil Gągała - Deploying Next-Generation Multicast VPN
PLNOG 4: Emil Gągała - Deploying Next-Generation Multicast VPNPLNOG 4: Emil Gągała - Deploying Next-Generation Multicast VPN
PLNOG 4: Emil Gągała - Deploying Next-Generation Multicast VPN
 
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introductionCodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
 
BIRD Routing Daemon
BIRD Routing DaemonBIRD Routing Daemon
BIRD Routing Daemon
 
Bruno Decraene - Improving network availability through the graceful shutdown...
Bruno Decraene - Improving network availability through the graceful shutdown...Bruno Decraene - Improving network availability through the graceful shutdown...
Bruno Decraene - Improving network availability through the graceful shutdown...
 
IoT Field Area Network Solutions & Integration of IPv6 Standards by Patrick G...
IoT Field Area Network Solutions & Integration of IPv6 Standards by Patrick G...IoT Field Area Network Solutions & Integration of IPv6 Standards by Patrick G...
IoT Field Area Network Solutions & Integration of IPv6 Standards by Patrick G...
 
Cisco EuroMPI'13 vendor session presentation
Cisco EuroMPI'13 vendor session presentationCisco EuroMPI'13 vendor session presentation
Cisco EuroMPI'13 vendor session presentation
 
Evaluating the networking performance of linux based home router platforms fo...
Evaluating the networking performance of linux based home router platforms fo...Evaluating the networking performance of linux based home router platforms fo...
Evaluating the networking performance of linux based home router platforms fo...
 
CoAP Course for m2m and Internet of Things scenarios
CoAP Course for m2m and Internet of Things scenariosCoAP Course for m2m and Internet of Things scenarios
CoAP Course for m2m and Internet of Things scenarios
 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
 

Recently uploaded

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 

Recently uploaded (20)

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 

PLNOG 3: Ela Jasińska - From the Earth to the Moon From a Quagga-based Route Server to OpenBGPd

  • 1. PLNOG 3, Kraków, Sep 10th 2009 <elzbieta.jasinska@ams-ix.net> From the Earth to the Moon From a Quagga-based Route Server to OpenBGPd
  • 2. PLNOG 3, Kraków, Sep 10th 2009 Agenda • Why Route Servers? • What do Route Servers do? • IX Requirements • Current Implementations • OpenBGPd Testing
  • 3. PLNOG 3, Kraków, Sep 10th 2009 Agenda • Why Route Servers? • What do Route Servers do? • IX Requirements • Current Implementations • OpenBGPd Testing
  • 4. PLNOG 3, Kraków, Sep 10th 2009 Why Route Servers? • Internet Exchange (e.g.AMS-IX) • Peering platform for many parties • Route Servers for the participants
  • 5. PLNOG 3, Kraków, Sep 10th 2009 Why Route Servers? • Peer with as many parties as possible ➡ Maintaining lots of BGP sessions
  • 6. PLNOG 3, Kraków, Sep 10th 2009 Why Route Servers? • Reach a lot of parties with just one BGP session
  • 7. PLNOG 3, Kraków, Sep 10th 2009 Why Route Servers? • Redundancy ... in case your sessions die ...
  • 8. PLNOG 3, Kraków, Sep 10th 2009 Why Route Servers? • Redundancy ... in case the Route Server dies ...
  • 9. PLNOG 3, Kraków, Sep 10th 2009 Why Route Servers? • Easy entry point for new members to the Exchange - immediate traffic
  • 10. PLNOG 3, Kraków, Sep 10th 2009 Agenda • Why Route Servers? • What do Route Servers do? • IX Requirements • Current Implementations • OpenBGPd Testing
  • 11. PLNOG 3, Kraków, Sep 10th 2009 What do route servers do? • Receive UPDATEs from every participant 19:58:33.721679 IP (tos 0x0, ttl 64, id 44576, offset 0, flags [DF], proto TCP (6), length 117) 10.23.0.5.58880 > 10.23.0.1.179: P, cksum 0xb892 (correct), 48:113(65) ack 61 win 1460 <nop,nop,timestamp 1976783474 3177206804>: BGP, length: 65 Update Message (2), length: 65 ... AS Path (2), length: 10, Flags [T]: 65499 11 12 13 ... Next Hop (3), length: 4, Flags [T]: 10.23.0.5 ... Updated routes: 2.0.5.0/24 19:58:33.723897 IP (tos 0x0, ttl 64, id 42762, offset 0, flags [DF], proto TCP (6), length 117) 10.23.0.4.33349 > 10.23.0.1.179: P, cksum 0xb033 (correct), 48:113(65) ack 61 win 1460 <nop,nop,timestamp 1976783474 1916183085>: BGP, length: 65 Update Message (2), length: 65 ... AS Path (2), length: 10, Flags [T]: 65500 11 12 13 ... Next Hop (3), length: 4, Flags [T]: 10.23.0.4 ... Updated routes: 2.0.4.0/24
  • 12. PLNOG 3, Kraków, Sep 10th 2009 What do route servers do? • Apply filters for the receiving peers from AS65500 accept ANY to AS65500 announce AS65499 from AS65499 accept ANY to AS65499 announce AS65500
  • 13. PLNOG 3, Kraków, Sep 10th 2009 What do route servers do? • Perform “best path” selection for every peer • Store Routing Information Base (RIB) for every peer flags destination gateway lpref med aspath origin *> 2.0.4.0/24 10.23.0.4 100 200 65500 11 12 13 i *> 2.0.5.0/24 10.23.0.5 100 200 65499 11 12 13 i
  • 14. PLNOG 3, Kraków, Sep 10th 2009 What do route servers do? • Forward the RIB contents to the desired peer 19:58:33.901718 IP (tos 0xc0, ttl 1, id 15745, offset 0, flags [DF], proto TCP (6), length 103) 10.23.0.1.179 > 10.23.0.4.33349: P, cksum 0x2b21 (correct), 61:112(51) ack 114 win 17376 <nop,nop,timestamp 1916183105 1976783474>: BGP, length: 51 Update Message (2), length: 51 ... AS Path (2), length: 10, Flags [T]: 65499 11 12 13 ... Next Hop (3), length: 4, Flags [T]: 10.23.0.5 ... Updated routes: 2.0.5.0/24 19:58:33.903463 IP (tos 0xc0, ttl 1, id 12268, offset 0, flags [DF], proto TCP (6), length 103) 10.23.0.1.179 > 10.23.0.5.58880: P, cksum 0x377e (correct), 61:112(51) ack 114 win 17376 <nop,nop,timestamp 3177206824 1976783474>: BGP, length: 51 Update Message (2), length: 51 ... AS Path (2), length: 10, Flags [T]: 65500 11 12 13 ... Next Hop (3), length: 4, Flags [T]: 10.23.0.4 ... Updated routes: 2.0.4.0/24
  • 15. PLNOG 3, Kraków, Sep 10th 2009 What do route servers do? Source: Quagga Route Server model description
  • 16. PLNOG 3, Kraków, Sep 10th 2009 Agenda • Why Route Servers? • What do Route Servers do? • IX Requirements • Current Implementations • OpenBGPd Testing
  • 17. PLNOG 3, Kraków, Sep 10th 2009 Requirements • Stability • Performance • Stability • Performance • Stability • Performance
  • 18. PLNOG 3, Kraków, Sep 10th 2009 Requirements • Allow for peering policies to be maintained • Stability • Performance • Stability • Performance • ...
  • 19. PLNOG 3, Kraków, Sep 10th 2009 Agenda • Why Route Servers? • What do Route Servers do? • IX Requirements • Current Implementations • OpenBGPd Testing
  • 20. PLNOG 3, Kraków, Sep 10th 2009 Current Implementations • Quagga • OpenBGPd • BIRD
  • 21. PLNOG 3, Kraków, Sep 10th 2009 Quagga • Two Quagga instances currently in use at AMS-IX • Each ~ 200 BGP sessions, announcing ~ 25.000 prefixes • Single threaded implementation • Issues with performing its tasks on time
  • 22. PLNOG 3, Kraków, Sep 10th 2009 OpenBGPd • Multi threaded implementation • ... more details in a moment
  • 23. PLNOG 3, Kraków, Sep 10th 2009 BIRD • Mentioned for the sake of completeness • ... research on the TODO list ...
  • 24. PLNOG 3, Kraków, Sep 10th 2009 Agenda • Why Route Servers? • What do Route Servers do? • IX Requirements • Current Implementations • OpenBGPd Testing
  • 25. PLNOG 3, Kraków, Sep 10th 2009 OpenBGPd Testing “I don’t know...A proof is a proof.What kind of a proof? It’s a proof.A proof is a proof, and when you have a good proof, it’s because it’s proven.” -- Jean Cheretien Thanks to Arnoud Vermeer and Leon Weber
  • 26. PLNOG 3, Kraków, Sep 10th 2009 OpenBGPd Testing • Basic functionality • BGP protocol • Route selection • Stress testing / performance • Amount of peering sessions • Amount of prefixes • Amount of UPDATEs
  • 27. PLNOG 3, Kraków, Sep 10th 2009 Test Setup #1
  • 28. PLNOG 3, Kraków, Sep 10th 2009 IPv6 Bug • Upon “clearing” one peers session, other IPv6 sessions died • It took some time to realize it had to do with withdraw messages • IPv6 withdraws in OpenBGPd were erroneous • Fixed since March 11th 2009 Mar 10 04:41:45 routeertnix bgpd[25100]: neighbor 2001:db8:1::a506:5502:1 (laborantix v6) AS65502: withdraw 2001:db8:97::/64 Mar 10 04:41:45 routeertnix bgpd[12120]: neighbor 2001:db8:1::a506:5504:1 (junix v6): received notification: error in UPDATE message, attribute list error Mar 10 04:41:45 routeertnix bgpd[12120]: neighbor 2001:db8:1::a506:5504:1 (junix v6): state change Established -> Idle, reason: NOTIFICATION received
  • 29. PLNOG 3, Kraków, Sep 10th 2009 Per-Peer RIBs announces 23.23.23.0/24 receives 23.23.23.0/24 via AS65503 and AS65504, AS65503 will be selected as best path denies routes via AS65503, will never receive 23.23.23.0/24
  • 30. PLNOG 3, Kraków, Sep 10th 2009 Per-Peer RIBs • OpenBGPd so far only provided a global “best path” selection and RIB • Client side filtering would not be applicable • Per-Peer configurable RIBs have been implemented on request as of June 8th 2009
  • 31. PLNOG 3, Kraków, Sep 10th 2009 Test Setup #2 • Test Server - Experimentix • Directly connected to the Route Server • Lots of IP aliases on its interface • Runs a Perl script based on Net::BGP to simulate BGP speakers (http://www.ams-ix.net/downloads/)
  • 32. PLNOG 3, Kraków, Sep 10th 2009 Test Setup #2
  • 33. PLNOG 3, Kraków, Sep 10th 2009 Open File Limit • Establishing over 1024 BGP sessions to the Route Server caused: • Default open file limit on OpenBSD: 1024 • Starting the daemon with an increased “ulimit -n” helps Sep 8 22:04:01 routeertnix bgpd[19382]: connection from non-peer (unknown) refused Sep 8 22:04:01 routeertnix bgpd[19382]: accept: Too many open files # ulimit -a ... open files (-n) 1024 ... (ulimit -n 128000; bgpd -vv)
  • 34. PLNOG 3, Kraków, Sep 10th 2009 First UPDATEs • We were ready to go... • Setup was prepared • Sessions were coming UP • Different bgpd.conf files were prepared • Graphing scripts were written to plot CPU/Mem usage with different configs
  • 35. PLNOG 3, Kraków, Sep 10th 2009 Test Sequence • Increase # of sessions: 253, 506, 1012 per test • Test single and multiple RIBs • Increase # of unique announcements/ withdraws: 1,2,4,8,16,32,64 within one test, separated by a defined interval
  • 36. PLNOG 3, Kraków, Sep 10th 2009 Test #1 - CPU 0 10 20 30 40 50 60 70 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 cpuusage(percent) time (seconds) OpenBGPd cpu usage single-rib; 253 sessions established at t=0 1/2/4/8/16/32/64 updates per sess every 10min announce/withdraw 1 unique prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) cpu route decision engine cpu session engine
  • 37. PLNOG 3, Kraków, Sep 10th 2009 Test #1 - Mem 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 memusage(bytes) time (seconds) OpenBGPd mem usage single-rib; 253 sessions established at t=0 1/2/4/8/16/32/64 updates per sess every 10min announce/withdraw 1 unique prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) mem route decision engine mem session engine
  • 38. PLNOG 3, Kraków, Sep 10th 2009 Test #2 - CPU 0 10 20 30 40 50 60 70 80 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 cpuusage(percent) time (seconds) OpenBGPd cpu usage single-rib; 506 sessions established at t=0 1/2/4/8/16/32/64 updates/withdraws per sess every 10min announce 1 unique prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) cpu route decision engine cpu session engine
  • 39. PLNOG 3, Kraków, Sep 10th 2009 Test #2 - Mem 0 50000 100000 150000 200000 250000 300000 350000 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 memusage(bytes) time (seconds) OpenBGPd mem usage single-rib; 506 sessions established at t=0 1/2/4/8/16/32/64 updates/withdraws per sess every 10min announce 1 unique prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) mem route decision engine mem session engine
  • 40. PLNOG 3, Kraków, Sep 10th 2009 Mbufs • Suddenly the Route Server became unreachable... • Defaults • Change them WARNING: mclpool limit reached; increase kern.maxclusters # sysctl kern.maxclusters kern.maxclusters=6144 # sysctl kern.maxclusters=240000 kern.maxclusters: 6144 -> 240000
  • 41. PLNOG 3, Kraków, Sep 10th 2009 Mbufs • We are now also plotting mbuf usage • Buffer usage peaks are still being looked into by the developers 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 20000 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 mbufs time (seconds) routeertnix.lab.ams-ix.net mbuf usage mbufs used
  • 42. PLNOG 3, Kraków, Sep 10th 2009 Test #2 again - CPU 0 10 20 30 40 50 60 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 cpuusage(percent) time (seconds) OpenBGPd cpu usage single-rib; 506 sessions established at t=0 1/2/4/8/16/32/64 updates per sess every 10min announce/withdraw 1 unique prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) cpu route decision engine cpu session engine
  • 43. PLNOG 3, Kraków, Sep 10th 2009 Test #2 again - Mem 0 50000 100000 150000 200000 250000 300000 350000 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 memusage(bytes) time (seconds) OpenBGPd mem usage single-rib; 506 sessions established at t=0 1/2/4/8/16/32/64 updates per sess every 10min announce/withdraw 1 unique prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) mem route decision engine mem session engine
  • 44. PLNOG 3, Kraków, Sep 10th 2009 Test #3 - CPU 0 10 20 30 40 50 60 0 2000 4000 6000 8000 10000 12000 14000 cpuusage(percent) time (seconds) OpenBGPd cpu usage single-rib; 1012 sessions established at t=0 1/2/4/8/16/32/64 updates per sess every 30min announce/withdraw 1 unique prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) cpu route decision engine cpu session engine
  • 45. PLNOG 3, Kraków, Sep 10th 2009 Test #3 - Mem 0 100000 200000 300000 400000 500000 600000 0 2000 4000 6000 8000 10000 12000 14000 memusage(bytes) time (seconds) OpenBGPd mem usage single-rib; 1012 sessions established at t=0 1/2/4/8/16/32/64 updates per sess every 30min announce/withdraw 1 unique prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) mem route decision engine mem session engine
  • 46. PLNOG 3, Kraków, Sep 10th 2009 Test #4 - CPU 0 10 20 30 40 50 60 70 80 0 5000 10000 15000 20000 25000 cpuusage(percent) time (seconds) OpenBGPd cpu usage multiple-rib; 253 sessions established at t=0 sent 1/2/4/8/16/32/64 updates per session beginning t=600s at a 600s interval announce/withdraw 1 prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) cpu route decision engine cpu session engine
  • 47. PLNOG 3, Kraków, Sep 10th 2009 Test #4 - Mem 0 100000 200000 300000 400000 500000 600000 0 5000 10000 15000 20000 25000 memusage(bytes) time (seconds) OpenBGPd mem usage multiple-rib; 253 sessions established at t=0 sent 1/2/4/8/16/32/64 updates per session beginning t=600s at a 600s interval announce/withdraw 1 prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) mem route decision engine mem session engine
  • 48. PLNOG 3, Kraków, Sep 10th 2009 Test #5 - CPU 0 10 20 30 40 50 60 70 80 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 cpuusage(percent) time (seconds) OpenBGPd cpu usage multiple-rib; 506 sessions established at t=0 1/2/4/8/16/32/64 updates per sess every 30min announce/withdraw 1 unique prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) cpu route decision engine cpu session engine
  • 49. PLNOG 3, Kraków, Sep 10th 2009 Test #5 - Mem 0 100000 200000 300000 400000 500000 600000 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 memusage(bytes) time (seconds) OpenBGPd mem usage multiple-rib; 506 sessions established at t=0 1/2/4/8/16/32/64 updates per sess every 30min announce/withdraw 1 unique prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) mem route decision engine mem session engine
  • 50. PLNOG 3, Kraków, Sep 10th 2009 Test #6 - CPU 0 10 20 30 40 50 60 70 80 90 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 cpuusage(percent) time (seconds) OpenBGPd cpu usage multiple-rib; 1012 sessions established at t=0 sent 1/2/4/8/16/32/64 updates per session beginning t=1800s at a 1800s interval announce/withdraw 1 prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) cpu route decision engine cpu session engine
  • 51. PLNOG 3, Kraków, Sep 10th 2009 Test #6 - Mem 0 100000 200000 300000 400000 500000 600000 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 memusage(bytes) time (seconds) OpenBGPd mem usage multiple-rib; 1012 sessions established at t=0 sent 1/2/4/8/16/32/64 updates per session beginning t=1800s at a 1800s interval announce/withdraw 1 prefix each Intel(R) Pentium(R) III CPU family 1133MHz (GenuineIntel 686-class) mem route decision engine mem session engine
  • 52. PLNOG 3, Kraków, Sep 10th 2009 Memory Usage • Increased memory usage with the amount of UPDATEs • But wait... the server has 1GB memory and it crashed with 500MB!? • Data segment size on OpenBSD: ~500MB • But this is not the issue... Jul 9 04:58:59 routeertnix bgpd[9200]: fatal in RDE: up_generate: Cannot allocate memory Jul 9 04:58:59 routeertnix bgpd[7848]: Lost child: route decision engine exited Jul 9 04:58:59 routeertnix bgpd[14688]: fatal in SE: pipe write error: Broken pipe Jul 9 04:58:59 routeertnix bgpd[7848]: Terminating # ulimit -a ... data seg size (kbytes, -d) 524288 ...
  • 53. PLNOG 3, Kraków, Sep 10th 2009 Memory Usage • Underlying issue seems like OpenBGPd buffers the messages before sending them • Is the test server too slow receiving? Or OpenBSD too slow sending? Or is it the Route Server itself? • First, lets rule out the test server, since this is what we have control over....
  • 54. PLNOG 3, Kraków, Sep 10th 2009 Memory Usage • Perl too slow? • Replaced socket implementation in Net::BGP with some C code • After establishing all sessions the file descriptors are passed on to the C part • It shows that there is not much data coming in during the time the memory occupation grows
  • 55. PLNOG 3, Kraków, Sep 10th 2009 Memory Usage vs. Net Load 0 100 200 300 400 500 600 700 800 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 memusage(Mbytes) time (seconds) OpenBGPd mem usage multiple-rib; 253 sessions established at t=0 900 sent 1/2/4/8/16/32/64 pre session beginning at t=900 at a 900s interval routeertnix.lab.ams-ix.net 1x Intel(R) Pentium(R) III CPU family 1133MHz mem route decision engine mem session engine free memory 0 1000 2000 3000 4000 5000 6000 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 netusage(KByte/s) time (seconds) OpenBGPd net usage multiple-rib; 253 sessions established at t=0 900 sent 1/2/4/8/16/32/64 pre session beginning at t=900 at a 900s interval routeertnix.lab.ams-ix.net 1x Intel(R) Pentium(R) III CPU family 1133MHz input output
  • 56. PLNOG 3, Kraków, Sep 10th 2009 Summary • This is work in progress • Many issues are still subject to investigation • Results are not conclusive yet • More research and updates will follow...
  • 57. PLNOG 3, Kraków, Sep 10th 2009 <elzbieta.jasinska@ams-ix.net> Thank you! Questions?