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
What is a NAT? Client’s POV Alice www.google.co.uk Bob www.bbc.co.uk Cathy 3
What is a NAT? Server’s POV www.google.co.uk Nathan www.bbc.co.uk 4
Why C#? Verilog C# ✓✓✓ ✓ Performance ✓✓✓ ✓ Scalableto 100Gbps+ Skill base Small Large ✓✓✓ Comfy language features 5
Why C#? Methods LINQ Generics Loops OOP Memory Management Exceptions Concurrency Lambdas Also iterators, properties, inheritance, libraries, dynamic variables, safe expressive type system, … 6
Why C#? Time (mins) to compile and run Hardware Verilog simulation C# 0 5 10 15 20 25 30 35 40 7
Compile C# to Verilog?! Sequential/Synchronous Semantics Concurrent Semantics Kiwi Compile Synthesis C# CIL Verilog Hardware Compile F# 8
Look at the code 9
Look at the code Object wrapping raw data array … Intuitive enum … Property 10
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
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