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

network programming
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

Using C# for high performance network programming

Jonny Shipton CL, University of Cambridge

1

Low latency High throughput (10-100Gbps) NAT

slide-2
SLIDE 2

What is a NAT?

www.google.co.uk www.bbc.co.uk

Alice NAT Cathy Bob Reality

2

212.58.244.26:80

slide-3
SLIDE 3

What is a NAT?

www.google.co.uk www.bbc.co.uk Alice Cathy Bob Client’s POV

3

slide-4
SLIDE 4

What is a NAT?

www.google.co.uk www.bbc.co.uk Nathan Server’s POV

4

slide-5
SLIDE 5

Why C#?

Verilog C# Performance ✓✓✓ ✓ Scalableto 100Gbps+ ✓✓✓ ✓ Skill base Small Large Comfy language features

✓✓✓

5

slide-6
SLIDE 6

Why C#?

Methods Loops Exceptions LINQ Generics Concurrency OOP Memory Management Also iterators, properties, inheritance, libraries, dynamic variables, safe expressive type system, … Lambdas

6

slide-7
SLIDE 7

Why C#?

7 5 10 15 20 25 30 35 40 C# Verilog simulation Hardware

Time (mins) to compile and run

slide-8
SLIDE 8

Compile C# to Verilog?!

Sequential/Synchronous Semantics Concurrent Semantics C# CIL Verilog Hardware F# Synthesis Compile Compile

Kiwi

8

slide-9
SLIDE 9

Look at the code

9

slide-10
SLIDE 10

Look at the code

10

Object wrapping raw data array Property Intuitive enum

… …

slide-11
SLIDE 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

slide-12
SLIDE 12

Thanks to:

  • Nik Sultana
  • Salvator Galea
  • David Greaves
  • Networks-as-a-Service

(Naas-project.org)

  • EPSRC
  • Kynesim

12

Kiwi

Google “Kiwi compiler”

http://www.cl.cam.ac.uk/~djg11/kiwi/ http://www.cl.cam.ac.uk/research/srg/han/hprls/orangepath/kiwic.html

NetFPGA-SUME

http://netfpga.org/site/#/systems/1netfpga-sume/details/