network programming
play

network programming NAT Low latency High throughput (10-100Gbps) - PowerPoint PPT Presentation

Using C# for high performance network programming NAT Low latency High throughput (10-100Gbps) Jonny Shipton CL, University of Cambridge 1 What is a NAT? Reality Alice www.google.co.uk Bob NAT www.bbc.co.uk Cathy 212.58.244.26:80 2


  1. Using C# for high performance network programming NAT Low latency High throughput (10-100Gbps) Jonny Shipton CL, University of Cambridge 1

  2. What is a NAT? Reality Alice www.google.co.uk Bob NAT www.bbc.co.uk Cathy 212.58.244.26:80 2

  3. What is a NAT? Client’s POV Alice www.google.co.uk Bob www.bbc.co.uk Cathy 3

  4. What is a NAT? Server’s POV www.google.co.uk Nathan www.bbc.co.uk 4

  5. Why C#? Verilog C# ✓✓✓ ✓ Performance ✓✓✓ ✓ Scalableto 100Gbps+ Skill base Small Large ✓✓✓  Comfy language features 5

  6. Why C#? Methods LINQ Generics Loops OOP Memory Management Exceptions Concurrency Lambdas Also iterators, properties, inheritance, libraries, dynamic variables, safe expressive type system, … 6

  7. Why C#? Time (mins) to compile and run Hardware Verilog simulation C# 0 5 10 15 20 25 30 35 40 7

  8. Compile C# to Verilog?! Sequential/Synchronous Semantics Concurrent Semantics Kiwi Compile Synthesis C# CIL Verilog Hardware Compile F# 8

  9. Look at the code 9

  10. Look at the code Object wrapping raw data array … Intuitive enum … Property 10

  11. Limitations • No truly dynamic allocation (yet) • Array sizes must be determined statically • Objects can be allocated and used within loops • Library support less mature • Complexity -> longer compile times • No reflection, dynamic invoke, etc. • Clock cycles are more precious, so we want to do more in each one • Asynchronous – Kiwi flattens code 11

  12. Thanks to: Kiwi • Nik Sultana Google “Kiwi compiler” http://www.cl.cam.ac.uk/~djg11/kiwi/ • Salvator Galea http://www.cl.cam.ac.uk/research/srg/han/hprls/orangepath/kiwic.html • David Greaves • Networks-as-a-Service (Naas-project.org) • EPSRC • Kynesim NetFPGA-SUME http://netfpga.org/site/#/systems/1netfpga-sume/details/ 12

Recommend


More recommend