WINLAB Demos March 27, 2007
Demos Overview Wired-Wireless testbed Integration –Demo 1: PL to Orbit –Demo 1b: Vini to Orbit –Demo 2: Orbit to PL (2 videos) Virtualization of nodes (slivers) –Demo 3: VMAC –Demo 4: Virtualization in frequency Scientific Experiments –Demo 5: Instrumented oil field management
Wired-Wireless Testbed Integration PlanetLab Wired Orbit Wireless
PlanetLab Users: Conducting a Planetlab experiment with Orbit Provision of a proxy that handles requests for wireless resources PlanetLab Wired Orbit Wireless
Console Support services PL-Orbit Proxy Internet 2 1 START 3 sliver
Demo 1: Bandwidth Analysis Wired PlanetLab Wireless Orbit Packet forwarding priority through end-to-end measurement Information Dissemination in Uncooperative Environments Peer to peer media streaming Example Scenario: Online content distribution
Demo 1: Mapping of Orbit nodes to slivers PlanetLab Node Orbit Nodes sliver GRE PL-Orbit Proxy
Demo 1: PlanetLab to Orbit Integration Bandwidth Analysis Wired PlanetLab Wireless Orbit Iperf Sender Iperf Receiver Sniffer AP sliver
Demo 1b: Integrating Vini and Orbit IP Mobility Ability to use VINI and carry layer 3 based experiments Demonstrate video handoff
Video Handoff: PlanetLab Nodes Running VINI LOS ANGELES HOUSTON SEATTLE OpenVPN Ethernet Tunnel AP1 Video Server Mobile Client /30 AP2 OpenVPN Ethernet Tunnel
Orbit users: Conducting an Orbit experiment in PLanetLab Extending orbit framework with PL nodes Integration of control and management Single programming interface and experimental methodology PlanetLab Wired Orbit Wireless
Console Support services PL-Orbit Proxy Internet 2 1 Experiment Script START NodeAgents sliver NodeHandler
Demo 2: Video on Demand Wired PlanetLab Wireless Orbit Washington Georgia Spectrum allocation Bandwidth management Video communication algorithms Inter-access point communication protocols Example Scenario: Acquire data from Internet at a coffee shop
Demo 2: Video on Demand Wired PlanetLab Wireless Orbit Washington Georgia Servers Clients
Experiment Script defNodes('ap1', [2,7]) {|node| node.prototype("test:proto:mvlcrelay", { 'duration' => prop.duration }) node.net.w0.mode = "master" # Master Mode node.net.w0.type='a'node.net.w0.channel="48“ node.net.w0.essid = "link1"node.net.w0.ip=" " } defNodes('client1', [7,7]) {|node| # Video streaming #1 node.prototype("test:proto:mvlcdest", { 'duration' => prop.duration }) node.net.w0.mode = "managed" # MastererMode node.net.w0.type='a'node.net.w0.channel="48" node.net.w0.essid = "link1"node.net.w0.ip=" " } defNodes('ap2', [2,3]) {|node| node.prototype("test:proto:mvlcrelay", { 'duration' => prop.duration }) node.net.w0.mode = "master" # Master Mode node.net.w0.type='a'node.net.w0.channel="48“ node.net.w0.essid = "link2"node.net.w0.ip=" " } defNodes('client2', [7,3]) {|node| # Video streaming #2 node.prototype("test:proto:mvlcdest", { 'duration' => prop.duration }) node.net.w0.mode = "managed" # MastererMode node.net.w0.type='a'node.net.w0.channel="48" node.net.w0.essid = "link2"node.net.w0.ip=" " } First flow Orbit configuration Second flow Orbit configuration
defPNodes('planet.cc.gt.atl.ga.us','planetlab01.cs. washington.edu') WhenPLReady() { defPApplication('bash /home/orbit_pkamat/PLDEMO1'){} wait 125 defPApplication('bash /home/orbit_pkamat/PLDEMO2'){} PLexpdone() } Define the PL nodes Experiment Script Start the applications on the PL nodes
Virtualization in Wireless Networks
Typical Grid Utilization
Virtualization Support concurrent experiments Support both short-term and long-term service experiments Allow fine-grained control over radio parameters and topology Used a combination of methods –Virtual MAC (VMAC), Space division, Frequency division, Time division
Virtualize a Wireless node - VMAC Virtual Access Point 1 Essid:1 Exp. 1 Exp. 2 Essid:2 Ch. y Access Point Essid:1 Exp. 1 Exp. 2 Ch. y Access Point Essid:2 Ch. x Virtual Access Point 2 Sliver 1 Sliver 2
Demo 3: VMAC Virtualization Exp. 1 Exp. 3 Exp. 2 Exp. 1 Exp. 2 Exp. 3 WiredWireless Servers Mobile Clients Channel x 3 VAPs Accommodate up to 4 VAPs
Demo 3: Without VMAC Virtualization Exp. 1 Exp. 3 Exp. 2 Exp. 1 Exp. 2 Exp. 3 WiredWireless Servers Mobile Clients
Demo 3: VMAC – Virtualization Exp. 1 Exp. 3 Exp. 2 Exp. 1 Exp. 2 Exp. 3 WiredWireless Servers Mobile Clients Channel x 3 VAPs Operation, Traffic Shaping Real Life Scenario: Airport Deployment
Step1: Initial Traffic Experiment 1,2 Experiment 3
Step 2: Increasing Offered Traffic Experiment 1,2 Experiment 3
Step 3: Traffic Shaping Experiment 1,2 Experiment 3
Virtualize a node in frequency Two concurrent experiments can coexist using the same hardware Exp. 1 Exp. 2 Exp. 1
Demo 4: Virtualize a node in Frequency Host virtualization via Xen, VMWare, UML Split a node’s interfaces among virtual machines/ experiments Exp. 2 Channel x Channel y Exp. 1
Demo 4: Slicing a wired and wireless network Virtualization in Frequency Wired PlanetLab Wireless Orbit
Demo 4: Slicing a wired and wireless network Virtualization in Frequency Channel x Channel y Slice 1 Slice 2 Wired PlanetLab Wireless Orbit
Appendix
PlanetLab Nodes Running VINI LOSAHSTNSTTL OpenVPN Ethernet Tunnel Access Point Access Point Video Server Mobile Client
PlanetLab Nodes Running VINI LOSAHSTNSTTL OpenVPN Ethernet Tunnel Access Point Access Point Video Server Mobile Client / / /30 ( /30)
Problems & Challenges When using IP tunneling (rather than Ethernet tunneling), OpenVPN must know the IP ranges that it is responsible for routing in advance. This makes it impossible to use IP tunneling for mobile nodes or topologies where IP ranges change. When using Ethernet tunneling, ARP proxying must be enabled on the VINI/ORBIT gateways. There is no perfect method of detecting client timeouts to trigger disconnection of a client and the retraction of it’s associated route. Assigning each mobile node a /30 wastes IP addresses. Each mobile client will need a unique: Network address, Broad cast address, Gateway address and Host address. Only 64 mobile IP clients can be assigned per Class C (256 IP addresses)
Experiment Script defNodes(‘VAP', [4,6]) {|node| node.prototype("test:proto:vlcrelay", { 'duration' => prop.duration }) node.net.w0.mode = "master" node.net.w0.type = 'a' node.net.w0.channel="36" node.net.w0.essid = "net01" node.net.w0.ip = “ " node.net.w1.mode = "master" node.net.w1.type = 'a' node.net.w1.channel="36" node.net.w1.essid = "net02" node.net.w1.ip = “ " node.net.w2.mode = "master" node.net.w2.type = 'a' node.net.w2.channel="36" node.net.w2.essid = "net03" node.net.w2.ip = “ " } VAP #1 set up VAP #2 set up VAP #3 set up
defNodes(‘client1', [1,5]) {|node| node.prototype("test:proto:vlcdest", { 'duration' => prop.duration }) node.net.w0.mode = "managed" node.net.w0.type = 'a' node.net.w0.channel="36" node.net.w0.essid = "net01" node.net.w0.ip = " " } defNodes(‘client2', [4,9]) {|node| node.prototype("test:proto:receiver1", { 'duration' => prop.duration }) node.net.w0.mode = "managed" node.net.w0.type = 'a' node.net.w0.channel="36" node.net.w0.essid = "net02" node.net.w0.ip = “ " } defNodes(‘client3', [4,1]) {|node| node.prototype("test:proto:receiver2", { 'duration' => prop.duration }) node.net.w0.mode = "managed" node.net.w0.type = 'a' node.net.w0.channel="36" node.net.w0.essid = "net03" node.net.w0.ip = “ " } Experiment Script VAP #1 ‘s Client : Streaming Video VAP #2 ‘s Client : Traffic Receiver VAP #3 ‘s Client : Traffic Receiver