15
Bringing External Connectivity and Experimenters to GENI Nick Feamster

Bringing External Connectivity and Experimenters to GENI Nick Feamster

Embed Size (px)

Citation preview

Page 1: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Bringing External Connectivity and Experimenters to GENI

Nick Feamster

Page 2: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Cluster

• Goal: Bring external connectivity to experiments through seamless integration with experiments on virtual networks

Page 3: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Background: BGP

Route Advertisement

Autonomous Systems

Session

Traffic

Page 4: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Problem

• Virtual networks need upstream connectivity– Ability to receive routes for rest of internet– Ability to advertise routes

• But, experiments using virtual networks may also be transient– High overhead for setting up new sessions– Transient nature of BGP sessions may create global

instability

Page 5: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Individual Sessions Not Scalable

AS1 AS2

GENI, ProtoGENI, VINIGENI, ProtoGENI, VINI

Virtual AS1

Virtual AS2

BGP Sessions

Page 6: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Solution: BGP Mux

AS1 AS2

BGP-Mux

GENI, ProtoGENI, VINIGENI, ProtoGENI, VINI

Virtual AS2

Virtual AS1

Page 7: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Design Requirements

• Session transparency: BGP updates should appear as they would with direct connection

• Session stability: Upstreams should not see transient behavior

• Isolation: Individual networks should be able to set their own policies, forward independently, etc.

• Scalability: Mux should support many networks

Page 8: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Control-Plane Implementation: Quagga

• Quagga Routing Suite– Open-source BGP

daemon– Cisco like CLI support– Used by real ISPs

• Salient features– Multiple BGP views– Local-AS change– Transparent updates

Page 9: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Configuration

AS1AS1 AS2AS2

External IPExternal IP

IP1IP1 IP2IP2

Virtual AS1

Virtual AS2

Page 10: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Configuration: Quagga

bgp multiple-instance!router bgp 64512 view Verio bgp router-id 147.28.7.21 network 168.62.16.0/21 neighbor 147.28.0.4 remote-as 3130 neighbor 147.28.0.4 description PSG0 - Verio neighbor 147.28.0.4 route-map BLOCK out!router bgp 64512 view ATT bgp router-id 147.28.0.212 network 168.62.16.0/21 neighbor 147.28.0.1 remote-as 3130 neighbor 147.28.0.1 description ATT neighbor 147.28.0.1 route-map BLOCK out!

Page 11: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Scaling with Multiple Views

AS1AS1 AS2AS2

External IPExternal IP

Page 12: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Work in Progress

• VINI Deployment: Two locations– Washington– Virginia– Waiting for upstream connectivity

• Test clients in Emulab network– The number of clients– Memory consumption– CPU consumption– Update propagation speed

Page 13: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Next Steps

• Internet2/ProtoGENI deployment

• Upstream Connectivity– Ability to advertise prefixes

(need to get prefixes from I2 for ProtoGENI)– Data Plane Integration

• Integration with Emulab/ProtoGENI

Page 14: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Summary

• Virtual networks need upstream connectivity– Transparent to experiments– Stable, from the appearance of the upstream ISP

• BGP-Mux– Easy to implement– Easy to deploy – Scales

Page 15: Bringing External Connectivity and Experimenters to GENI Nick Feamster

Other Aspect of Project

• Ethernet GRE Tunnels within ProtoGENI• Ability to instantiate Ethernet GRE tunnels with

– OpenVZ Kernel– Trellis Kernel