XS Boston 2008 Network Topology
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

XS Boston 2008 Network Topology

on

  • 972 views

Rolf Neugebauer: Network Topology Offload

Rolf Neugebauer: Network Topology Offload

Statistics

Views

Total Views
972
Views on SlideShare
972
Embed Views
0

Actions

Likes
0
Downloads
27
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

XS Boston 2008 Network Topology Presentation Transcript

  • 1. Network Topology Offload with  Intelligent NICs Rolf Neugebauer (rolf.neugebauer@netronome.com) XenSummit June 2008
  • 2. Motivation • NICs with multiple queues and Virtualization support: • VMDq, Solarflare, Neterion, PCI­SIG SR­IOV etc • Several physical ports (separate PCI functions) • Larger number of virtual endpoints: 16, 32, ... • How are these connected? Typically: • Ingress: perform simple classification to determine  queue: MAC, VLAN, IP header fields, ... • Egress: basic scheduling © 2008 Netronome Systems, Inc. 2
  • 3. Current Xen support © 2008 Netronome Systems, Inc. 3
  • 4. Current Xen support (cont.) • Complex and difficult to comprehend  • e.g. TX switch in FE • Management of endpoints? SR­IOV? • (see other talks in this session) • Support for different network setup? • Firewall, NAT, Load Balancing, Routing • Support for VLANs? • Multiple physical ports? • Different types of endpoints? • TAP, (iSCSI), ... • More complex “flow processing” • Cut­Through, early drop, ... • Intelligent, programmable NPU can help © 2008 Netronome Systems, Inc. 4
  • 5. Netronome NFP3200 SRAM DDR2/3 NFP­3200 SRAM DDR2/3 Controller Controller 10G 10G 8x PCIe PHY SERDES PCIe Root 10G 10G SPI 4.2 / Fabric PHY SERDES CSIX ARM 11 Crypto Microengine CPU Clusters • NFP­3200 evolved from Intel® IXP 28xx family • 40 RISC microengines for increased performance  and functionality • Cost­effective DDR2/3 memory • PCIe/SPI for dataplane applications • Line interfaces with support for 10G Ethernet © 2008 Netronome Systems, Inc. 5
  • 6. Topology offload vs acceleration • Network Processors allows complete topology offload • Connect VMs using common network elements • Ethernet switch, firewall, load­balancer, ... • Network element's data­path entirely on NP • Controlled by user software in control VM • Some functions can't be offloaded, but accelerated • “Very stateful” firewall/NAT: FTP, SIP etc • TCP­Splice/Flow Cut­Through for proxies • Approach: accelerate standard Linux functionality • e.g. iptables and connection tracking • Pass minimum number of packets to host • Offer API to process rest on the NP © 2008 Netronome Systems, Inc. 6
  • 7. A simple switch example • InterVM traffic either via device or separate network • NB: plenty of spare ME resources for this config © 2008 Netronome Systems, Inc. 7
  • 8. A simple IDS example • TAP can perform filtering based on rules • Can be extended to IPS with a TX component per VM © 2008 Netronome Systems, Inc. 8
  • 9. NAT: Topology acceleration • Previous examples were offload • Full stateful NAT requires parsing of  flow content for some protocols: • FTP, SIP, etc • Existing implementations in Linux • Difficult to do on Mes • Let Linux NAT take care of this! • Pass all flows up to a VM • Once connection has been  established and is deemed “safe” • Instruct NAT block on device to “cut­through” and modify flow • Not new :) ­> StoreLink 351x © 2008 Netronome Systems, Inc. 9
  • 10. Topology configuration • Topology is modeled a Nodes connected by Links • Potentially can implement arbitrary topologies • Topology elements need to be configured • Designing a topology description language • Developing a control daemon • Daemon has model of topology • Topology description • Configures elements on the device • API and cmdline © 2008 Netronome Systems, Inc. 10
  • 11. Conclusions • Programmable network processors offer new  functionality for network IO virtualisation • Complete topology offload • Accelerate networking features • Existing netchannel architecture does not support these  type of network devices • But very little support in Xen required • NFP3200 has significant resources to implement  complex topologies. • Will provide some example topologies • SDK will be available to roll your own © 2008 Netronome Systems, Inc. 11
  • 12. Questions? Also thanks to Espen Skoglund Joshua LeVasseur
  • 13. Sample topology description d = NFE3200() # This is for a NFE3200 # Wire everything up # First the functional blocks lkpp1 = BiLink(quot;lkflr1quot;, flr1, 0, d.pep[0], 0) # Phys to FC eth1 = Switch(quot;eth1quot;, 4) lkpp2 = BiLink(quot;lkflr2quot;, flr2, 0, d.pep[1], 0) flst = FlowState(quot;flstquot;) flr1 = FlowRouter(quot;flr1quot;, 2, flst) lk1 = BiLink(quot;lki1quot;, eth1, 0, flr1, 1) # FC port 1 to switch flr2 = FlowRouter(quot;flr2quot;, 2, flst) lk2 = BiLink(quot;lki2quot;, eth1, 1, flr2, 1) lb = LoadBalancer(quot;lb1quot;, 2) lkv1 = BiLink(quot;lkv1quot;, eth1, 2, d.vep[0], 0) # Switch ports 2 & 3 to  # the next two line are ony needed to  VNICS make the backends simpler lkv2 = BiLink(quot;lkv2quot;, eth1, 3, d.vep[1], 0) d.add_table(flst) d.add_nodes((eth1, flr1, flr2, lb)) lkv3 = BiLink(quot;lkv3quot;, flr1, 2, d.vep[2], 0) # Tap from flr1 to a  Capture VNIC # Instantiate some NICS and VNICS  d.pep[0] = MAC10g(quot;mac0quot;)  lkl3 = Link(quot;lkl3quot;, flr2, 2, lb, 0)  # Tap from flr2 to load balancer d.pep[1] = MAC10g(quot;mac1quot;) lkv4 = Link(quot;lkv4quot;, lb, 1, d.vep[3], 0)   # Load balance across  d.vep[0] = VNIC(quot;vnic1quot;)  two Tap VNICs d.vep[1] = VNIC(quot;vnic2quot;) lkv5 = Link(quot;lkv5quot;, lb, 2, d.vep[4], 0) d.vep[2] = CaptureVNIC(quot;tap1quot;) # the next two line are ony needed to make the backends  d.vep[3] = TapVNIC(quot;tap2quot;) simpler d.vep[4] = TapVNIC(quot;tap3quot;) d.add_links((lkpp1, lkpp2, lk1, lk2, lkv1, lkv2, lkv3, lkl3, lkv4,  lkv5))
  • 14. Topology (auto generated) • Generated from topology description (using graphviz)