230 likes | 241 Views
This presentation outlines the background and motivation of BGP, as well as the development approach and features of BGP++. It also discusses the problem-prone characteristics of BGP and the future plans for BGP++.
E N D
Modeling the Border Gateway Protocol Xenofontas Dimitropoulos George Riley Georgia Institute of Technology
Outline • BGP background and motivation. • Modeling BGP. • BGP++ development approach. • BGP++ features. • Work in progress and future plans. MANIACS
BGP routers What is BGP ? • is the default interdomain routing protocol of the Internet. • “is the glue that holds the Internet together”. • is a protocol of critical importance. MANIACS
BGP increased interest • BGP does not work well. • Delayed convergence • Divergence issues • Incompatible vendor implementations • Misbehavior of flap dampening • Correlation between worm propagation and Internet instability. • 20-25% of paths are inflated. Taken from Craig Labovitz, G. Robert Malan, Farham Jahanian MANIACS
BGP problem prone characteristics Distributed nature of BGP Irregular abrupt growth of the Internet “BGP is not a well understood protocol” Flexibility left to the operator in the form of policies MANIACS
Outline • BGP background and motivation. • Modeling BGP, • BGP++ development approach. • BGP++ features. • Work in progress and future plans. MANIACS
Zebra deamon bgpd ripd ospfd bgpd Unix routing table ns node GNU Zebra software architecture Agent Port Classifier Add. Classifier Figure 1. Zebra bgpd and ns-2 integration. What is BGP++ ? • C++ implementation of BGPv4, developed for ns-2. • BGP++ is GNU Zebra bgpd patched to work with ns-2. MANIACS
Development Approach Outline • To incorporate GNU Zebra bgpd in ns-2: • Convert C code to C++. • Interleave Zebra scheduler with simulator scheduler. • Use FullTcp API instead of BSD sockets. • Modify configuration and logging facilities MANIACS
Convert C code to C++. • C functions are converted into C++ functions, members of the BGP class. • C global variables are converted into member variables of the BGP class. MANIACS
main() { } main() { } initializations initializations select() fetch execute execute Zebra bgpd vs ns-2 scheduling Multiplex IO streams Scheduler queue MANIACS
ns2 scheduler queue bgpd start event bgp_main() pre_select() post_select() Interleaved scheduling main() { } initializations select() execute MANIACS
Replace BSD sockets with TcpFull • Dynamically tear up/down of tcp connections. • Slightly modify tcp-full to notify the application when the connection moves: • From SYN_RCVD to ESTABLISHED • From SYN_SENT to ESTABLISHED • From ESTABLISHED to CLOSE_WAIT MANIACS
Further modifications • Modify Zebra facilities to support OO environment, e.g. logging and configuration. • Get rid of all unnecessary features, e.g. telnet interface. • Dig in the code. MANIACS
Outline • BGP background and motivation. • Modeling BGP, • BGP++ development approach. • BGP++ features. • Work in progress and future plans. MANIACS
BGP++ configuration ns-2 BGP routers set r [new BgpRegistry] set fin 400 ; # finish time set BGP1 [new Application/Route/Bgp] $BGP1 register $r $BGP1 finish-time $fin $BGP1 config-file /sth/bgpd1.conf $BGP1 attach-node $n1 configuration configuration configuration configuration configuration configuration .tcl MANIACS
BGP++ configuration • Use router configuration commands that are used by Zebra to configure simulated routers. • Approximately 320 supported commands. • Only few new ns-2 commands added. MANIACS
Configuring BGP instances [xdimi@enzo example1]$ more bgpd1.conf !Local AS and local IP address router bgp 1 bgp router-id 192.38.14.1 !Neighbors neighbor 192.38.14.2 remote-as 2 !Networks advertised network 190.0.0.0 mask 255.0.0.0 network 189.0.0.0 mask 255.0.0.0 log file bgpd1.log MANIACS
Run time configuration instead of telnet interface. $ns at 10 “$BGP1 execute \”no neighbor 192.38.14.2\”” $ns at 15 “$BGP3 execute \”show ip bgp\”” $ns at 20 “$BGP2 execute \”neighbor 192.38.14.3 \ advertisement-interval 20\”” MANIACS
BGP++, configuring policies • Route Maps “route-map” • Access Lists “ip access-list” • Community Lists “ip community-list” • AS path access lists “ip as-path access-list” • Prefix Lists “ip prefix list” MANIACS
Validation • Run several simple validation tests. • Recreate same topology in lab and compare. • Minimum modifications on “core” of Zebra software. MANIACS
Future Work • Use BGP++ with pdns to see how large we can get. • Examine BGP convergence time at scales. • Integrate BGP++ with GTNetS. MANIACS
Recap • Big scale simulations are necessary in BGP research. • BGP++: a BGP implementation for ns-2 • Development approach. • Features MANIACS
Questions ? MANIACS