![Page 1: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/1.jpg)
Network Programming Languages
Robert SouléUniversity of Lugano
1
![Page 2: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/2.jpg)
Languages
A programming language provides abstractions and ways to compose those abstractions
The programming languages you are familiar with are models of computer systems
They provide abstractions for data and computation
2
![Page 3: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/3.jpg)
Abstractions
3
abstractions compositions
Assembly languages addresses, registers, instructions, labels sequences of instructions
Procedural languages booleans, arithmetic, loops, arrays, procedures
sequences of statements, procedure calls
OO languages objects, methods, fields, classes
method invocation, inheritance
Functional languages first-class functions, algebraic data types
function application, type constructors
![Page 4: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/4.jpg)
Domain Specific Languages
A general-purpose language provides abstractions for modeling computation
A domain-specific language provides abstractions for other domains
4
![Page 5: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/5.jpg)
Benefits of a DSL
Can enable optimizations
Can ensure program correctness
Provide abstractions tailored to a particular domain
Allow programmers to use emerging technologies
5
![Page 6: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/6.jpg)
Enabling Optimizations
6
float->float pipeline ABC { add float->float filter A() { work pop … push 2 { /*details elided*/ } } add float->float filter B() { work pop 3 push 1 { /*details elided*/ } } add float->float filter C() { work pop 2 push … { /*details elided*/ } } }
A
B
C
2 3
1 2
…
…
FIFO queue
B pops 3 per firing
B pushes 1 per firing
Statically known push/pop rates for every operator.
StreamIt: a streaming language designed forstatic optimization
![Page 7: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/7.jpg)
Enabling Optimizations
7
A
B
C
…
…
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
2 3
1 2
Steady-state schedule means fixed queue sizes and scalarization.
![Page 8: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/8.jpg)
Program Correctness
8
Safety Profitability
Variations
Example
Parallelize computations.
No state or disjoint state Merge in order, if needed
Round-robin (no state) Hash by key (disjoint state) Duplicate MapReduce languages
0
2
4
6
1 2 3 4 5 6
Th
rou
gh
pu
t
Number of Cores
Fission
p/s/o = 1/1/0 p/s/o = 1/0/1 p/s/o = 1/0/0
![Page 9: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/9.jpg)
Abstractions For A Particular Domain
9
Plant
PK P#
PnameCityMargin
Customer
PK C#
CnameCity
FK1 P#
Invoice
PK I#
AmtIdate
FK1 C#
select * from customer, plant where plant.pid = customer.pid and city=“milan”
![Page 10: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/10.jpg)
Emerging Technologies
10
![Page 11: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/11.jpg)
Example of DSLs
11
abstractions compositions
SQL relations, tuples, queries
joins, selection, projection
make files, build rules dependencies
lex characters, strings sequences, alternation (|), repetition (*)
yacc tokens, nonterminal symbols grammar rules
OpenSCAD shapes union, intersection, linear transformations
![Page 12: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/12.jpg)
What Abstractions Do WeNeed for Networking?
12
![Page 13: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/13.jpg)
Network Devices
13
Server
Switch
Server
Switch
Server
Switch
Server
Middlebox
![Page 14: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/14.jpg)
Network Devices
13
Server
Switch
Server
Switch
Server
Switch
Server
Middlebox
Send and receive traffic
![Page 15: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/15.jpg)
Network Devices
13
Server
Switch
Server
Switch
Server
Switch
Server
Middlebox
Send and receive traffic
Forward traffic
![Page 16: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/16.jpg)
Network Devices
13
Server
Switch
Server
Switch
Server
Switch
Server
Middlebox
Send and receive traffic
Forward traffic
Additional processing
(e.g., NAT, DPI, IDS)
![Page 17: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/17.jpg)
What Abstractions Do WeNeed for Networking?
It depends on what we want to do.
Authorization needs principals and privileges
DPI needs patterns and packet payload
State queries might need tables and relations
What do we need to model forwarding?
What do we need to model switch hardware?
14
![Page 18: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/18.jpg)
Device Configuration
15
SSH to switch or router
Configure with a vendor-specific DSL
Route traffic to middle box for additional processing
Server
Switch
Server
Switch
Server
Switch
Server
Middlebox
![Page 19: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/19.jpg)
Device Configuration
16
Campus network has 100s of switches
Datacenter network has 1000s of switches
Hard to manage! Hard to verify!
![Page 20: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/20.jpg)
Software Defined Networking
17
Standardization: switches support a vendor-agnostic, open API
Off-device control: software program manages the switches
Big idea: separate control logic from the data plane
Server
Switch
Server
Switch
Server
Switch
Server
Middlebox
![Page 21: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/21.jpg)
Software Defined Networking
17
Standardization: switches support a vendor-agnostic, open API
Off-device control: software program manages the switches
Big idea: separate control logic from the data plane
Server
Switch
Server
Switch
Server
Switch
Server
Middlebox Controller
![Page 22: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/22.jpg)
What Abstractions for SDN?
18
OpenFlow provides abstractions to match headers, forward/drop packets, and collect simple statistics
Often referred to as “match-action” abstraction in literature
Is this a good abstraction?
Models the “basic functionality” of a switch
Amenable to efficient hardware implementations
Is it enough? (i.e., what else does the network do?)
![Page 23: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/23.jpg)
Network LanguagesQuery network state (e.g., Sophia)
Authorization (e.g., NAL, SAFE)
Overlays (e.g., P2, MACE, Teacup)
Forwarding/Routing (e.g., Frenetic, Pyretic, Maple)
Traffic Engineering (e.g., Merlin)
Program switch hardware (e.g., P4)
Implement routers (e.g., Click)
…and many more!
19
![Page 24: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/24.jpg)
SDN (control plane) languagesFatTire
Flog
FlowLog
FML
Frenetic
HFT
Maple
20
Merlin
nlog
NetCore
NetKat
Nettle
Procura
Pyretic
Kinetic
and more….
![Page 25: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/25.jpg)
Programming ParadigmsFatTire
Flog
FlowLog
FML
Frenetic
HFT
Maple
21
Merlin
nlog
NetCore
NetKat
Nettle
Procura
Pyretic
Kinetic
and more….
Imperative Functional Logic DataFlow FRP
![Page 26: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/26.jpg)
Imperative
A programming paradigm in which programs are written as a sequence of statements that may modify state
Models the “Von Neumann architecture”
Examples: C, Java, Pyretic
22
![Page 27: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/27.jpg)
Imperative Example
23
Pyretic: round-robin load balancer.
![Page 28: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/28.jpg)
Logic-Based Languages
A programming paradigm in which programs are based on formal logic
Programs are often written as a set of rules in the form of a Horn clause (i.e., a disjunction of literals with at most one negated literal)
Examples: Prolog, Datalog, Flowlog
24
![Page 29: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/29.jpg)
Logic Example
25
FlowLog: forwarding example and rule clause.
![Page 30: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/30.jpg)
Functional Languages
A programming paradigm in which computation is based on mathematical functions (often avoiding mutable state)
Programs are typically written as compositions of functions
Examples: Lisp, Racket, OCaml, Haskell, Frenetic
26
![Page 31: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/31.jpg)
Functional Example
27
Frenetic (2011): amount of incoming web traffic every 30 seconds.
![Page 32: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/32.jpg)
Dataflow Languages
A programming paradigm in which programs are modeled as a directed graph of operations
Programs are usually written as names of operations and arrows
Examples: SISAL, nesC, Click
28
![Page 33: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/33.jpg)
DataFlow Example
29
![Page 34: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/34.jpg)
Functional Reactive Programming (FRP)
Combines asynchronous dataflow programming (i.e., reactive programming) with functional programming
Distinguishes between discrete and continuous events. Programs manipulate streams of values.
Examples: Elm, Flapjax, Yampa, Nettle, Frenetic (2010)
30
![Page 35: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/35.jpg)
FRP Example
31
Frenetic (2010): amount of incoming web traffic every 30 seconds.
![Page 36: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/36.jpg)
Software Defined Networking
32
![Page 37: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/37.jpg)
Technological Influences
Control vs. Data Plane
Network Virtualization
Active Networks
33
![Page 38: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/38.jpg)
Separate Control From Data
34
![Page 39: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/39.jpg)
Control and Data
Control plane: includes system configuration, management, routing table information, etc. Also called the “signaling” of the network.
Control plane packets are processed by the switch/router.
Data plane: forwards traffic to the next hop. Also called the “forwarding” plane.
Data plane packets pass through the switch/router.
35
![Page 40: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/40.jpg)
In-Band Signalling
Send metadata in the same band or channel
Certain frequencies (e.g., 2600 Hz) could reset phone trunk lines, route calls, etc.
Insecure, end users have access to control signals
36
![Page 41: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/41.jpg)
Out-of-band SignalingSend metadata in a separate, dedicated channel
In telephone networks, introduced in the 1970s (SS6) and 1980 (SS7)
Example: In 1981, AT&T introduced the Network Control Point (NCP)
A centralized server that could send commands to switches
Reduces expenditures (shorter circuit holding time, quickly determine busy/idle status)
Allows rapid introduction of new services (only implemented once at server)
37
![Page 42: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/42.jpg)
Benefits of Central Control
Network-wide vantage point
Can directly observe network wide behavior
Independent evolution of infrastructure, data, and services
Services and resource allocation decisions can be made based on customer data, network load, etc.
38
![Page 43: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/43.jpg)
Network Virtualization
39
![Page 44: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/44.jpg)
Network Virtualization
Represent one or more logical topologies on the same physical infrastructure
Many different instantiations
VLANs
Slicing, etc.
VMWare, Nicira, etc.
40
![Page 45: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/45.jpg)
Benefits
Sharing
Multiple logical routers on single platform
Resource isolation in CPU, memory, bandwidth, forwarding tables
Customizability
Can easily modify routing and forwarding software
General purpose CPUs for the control plane
Network processors and FPGAs for data plane
41
![Page 46: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/46.jpg)
Examples
Tempest: Switchlets (1998)
Separation of control framework from switches
Virtualization of the switch
VINI: A virtual network infrastructure (2006)
Virtualization of the network infrastructure
Cabo: Separates infrastructure, services (2007)
42
![Page 47: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/47.jpg)
Active Networks
43
![Page 48: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/48.jpg)
Active Networks
Goal: create networking technologies that can evolve and support application-specific customization
Key idea: It would be easier to support these goals if the network were programmable
Realization: switches perform custom computation on packets
Examples: trace program running at each router, firewalls, proxies, application services
44
![Page 49: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/49.jpg)
Active Networks History
Vigorous area of research when DARPA began funding (1994-1995)
A confluence of ideas from O.S., P.L., Networking, Distributed Systems
45
![Page 50: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/50.jpg)
Two ApproachesCapsules (“integrated”)
Packets carried procedures. Active nodes evaluate content carried in packets.
Code dispatched to execution environment.
Programmable Switches (“discrete”)
Custom processing functions run on the router
Packets routed through programmable nodes
Program depends on packet header
46
![Page 51: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/51.jpg)
What went wrong?
Wrong time
No clear application
Hardware was expensive
Missteps
Security, special languages for safe code, packets carrying code
End user as programmer (vs. network operator)
Interoperability
47
![Page 52: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/52.jpg)
What went right for SDN?
Motivating use case (virtualization):
Nicira’s Network Virtualization Platform
Pragmatic
Minimal functionality (API) that can be efficiently implemented on a variety of hardware
Industry support
48
![Page 53: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/53.jpg)
49
![Page 54: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/54.jpg)
Reading List
Nick Feamster, Jennifer Rexford, and Ellen Zegura, “The Road to SDN: An Intellectual History of Programmable Networks”, ACM SITCOM CCR, April 2014
Jonathan M. Smith and Scott M. Nettles, “Active Networking: One View of the Past, Present, and Future”, IEEE Transactions on Systems, Man, and Cybernetics, March 2003
50
![Page 55: Network Programming Languages - USI Informatics · Network Programming Languages Robert Soulé University of Lugano 1. Languages A programming language provides abstractions and ways](https://reader034.vdocument.in/reader034/viewer/2022042319/5f0843267e708231d4212393/html5/thumbnails/55.jpg)
51