Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
How to Build Complex, Large-ScaleEmulated Networks
TridentCom 2010
Hung Nguyen, Matthew Roughan, Simon KnightNick Falkner, Olaf Maennel, Randy Bush
Data Networks
• Routers, Links, Autonomous Systems
AutonomousSystem
Internetwork
AS2
AS3
AS1
Router A Router B
Router C
2 / 19
Small Internet
• Real Internet: 1000s of ASes, 10-100 routers each
3 / 19
Research Platforms
Simulation
Realism
Scale
Emulation
Hardware
4 / 19
Emulation
• Virtual routers in software emulate hardware routers• Realism, but need configuration
Host Machine
Virtual Machine 1 Virtual Machine 2 Virtual Machine 3
RoutingProcess
RoutingProcess
RoutingProcess
Router 1 Router 2 Router 3
5 / 19
Configuration Problem
• Need to configure large number of devices• Many lines of code• Low-level configuration language• and allocate resources (IPs, AS numbers)
• Repeated trials difficult• Limits results
• Time consuming, tedious, doesn’t scale to largenetworks
• Error-prone
6 / 19
Configuration Errors
• Valid syntax, wrong semantics• E.g. link IP addresses
A B
D C
192.168.0.1 129.168.0.2
192.168.3.1
192.168.3.2
192.168.1.1
192.168.1.2
192.168.2.1 192.168.2.2
7 / 19
Configuration Errors
• Link from A to B has address wrong• Link will not carry traffic
A B
D C
192.168.0.1 129.168.0.2
8 / 19
Configuration Errors
• Network automatically routes around problem• User may not realise, but results impacted
A B
D C
9 / 19
Netkit
• Quagga real software router• VM: Virtual machine• UML: User-mode Linux• Requires configurations
Linux Host Machine
UML VM1 UML VM2 UML VM3
Quagga Routing
Quagga Routing
Quagga Routing
10 / 19
AutoNetkit
Generates Netkit configurations
CompilerNetwork Model
PolicyFragments
NetkitConfiguration
Files
Verification
Netkit Host
NetworkDescription
ResourceAllocation
Deployment
Plugins
Physical & LogicalTopologies
11 / 19
AutoNetkit: Creating Networks
myInternet
myAS
myInternet = Internetwork() myAS = myInternet.addAS(1234)
12 / 19
AutoNetkit: Adding Routers
myInternet
myAS
rA rB
rC
rA = myAS.addRouter("Router_A")rB = myAS.addRouter("Router_B") rC = myAS.addRouter("Router_C")
13 / 19
AutoNetkit: Adding Links
myInternet
myAS
rA rB
rC
myAS.addLink(rA, rB)myAS.addLink(rA, rC) myAS.addLink(rB, rC)
14 / 19
AutoNetkit: Configuring and Deploying
myInternet
myAS
rA rB
rC
myInternet.compile()myInternet.addRouting() myNk =Netkit("myHost", "sknight")myNk.deploy(myInternet)
Netkit HostmyHost
Configs
15 / 19
Verification
• Measurement: automated traceroute tests• Tests both paths and end-to-end connectivity
• Topology plots
Plot of AS 1234
Router_B
Router_C
1.0.0.8/30
.10eth0
.9eth1
Router_A
1.0.0.12/30
.13eth0
.14eth0
1.0.0.4 /30
.5eth1
.6eth1
16 / 19
Performance
• Comparison: Created a 200 node test network• Using BGP, OSPF, DNS
• Manual Configuration• 2 days to write configurations• thousands of lines of low-level router configuration
code• another day to test by running traceroutes
• AutoNetkit• 1 hour to write high-level AutoNetkit code• hundreds of lines of descriptive code• automatic testing: myInternet.runTraceroutes()
17 / 19
Future Work
CompilerNetwork Model
PolicyFragments
NetkitConfiguration
Files
Verification
Netkit Host
NetworkDescription
ResourceAllocation
Deployment
Plugins
Physical & LogicalTopologies
Support moreRouting Protocols
(RIP, IS-IS)
Deploy to Ciscoand Juniper routers
Add GUI,Network Design
Formal Methodsfor Verification
New Plugins(Optimisation,
Analysis)
18 / 19
Conclusion
• AutoNetkit• Tool to simplify configure of complex, large-scale
emulated networks• Enables low-cost research of ISP size networks
• Questions?
19 / 19