-
Notifications
You must be signed in to change notification settings - Fork 1
/
pitch.txt
38 lines (28 loc) · 1.46 KB
/
pitch.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Record-oriented TCP
Goal: Create new records API in the OS on top of TCP sockets.
Features:
1) No changes on the wire in the network layer.
2) Record pinning, prioritization, broadcasting, unsend
3) Security/memory usage attacks
The current networking stack in the OS and network layers make two assumptions:
1) Units of work are demarcated by some ending signal (e.g. a flow closing, a process finishing, etc)
2) Data flows from point to point.
Both of these problems have had solutions in the prior literature.
1) Prioritization of packets [1], QoS work in the networking literature
2) TCP/IP Multicast
However, the networking literature largely assumes that the network design can be changed which is very difficult to
do on the wide area network.
Additionally, custom networking protocols are not always TCP-friendly and may have strange interactions with other
protocols.
Additional thoughts:
- TCP stack has lots of hacks due to the mismatch between app and network layers. For example, socket reuse, priority
sending.
- Complicates the app layer, needs specialized knowledge to leverage these fully.
- Makes network QoS guarantees more difficult (e.g. some elephant flows may be a series of short flows that are not clearly demarcated)
Application:
1) Web Server serving many requests for the same object.
2) Memcached/Redis
3) PBFT/cryptocurrency broadcast
4) DNS servers
References:
[1] Cyclic-UDP: A Priority-Driven Best-Effort Protocol by Brian C. Smith.