Statistics
| Branch: | Tag: | Revision:

root / docs / design / flows.rst @ 3c3fe96e

History | View | Annotate | Download (3.7 kB)

1
Ο ορισμός για τα flows είναι πιο μακρυά από εκείνον των network traffic flows
2
[1] :
3

    
4
"Traffic flow, packet flow or network flow is a sequence of packets from a
5
source computer to a destination, which may be another host, a multicast group,
6
or a broadcast domain".
7

    
8
αλλά είναι αρκετά κοντά στον "ορισμό" των flows από το openflow [2]:
9

    
10
"flows are broadly defined, and are limited only by the capabilities of the
11
particular implementation of the Flow Table. For example, a flow could be a TCP
12
connection, or all packets from a particular MAC address or IP address, or all
13
packets with the same VLAN tag, or all packets from the same switch port. For
14
experiments involving non-IPv4 packets, a flow could be defined as all packets
15
matching a specific (but non-standard) header".
16

    
17
To IO flow ακολουθεί ένα διαφορετικό approach, αρκετά περιοριστικό (και ποιο
18
IaaS-cloudικο) κατά τη γνώμη μου [3]:
19
"Flows are named using a four-tuple comprising human-friendly high-level
20
identifiers: { VMs, operations, files, shares }. "
21
.
22
[1] http://en.wikipedia.org/wiki/Traffic_flow_%28computer_networking%29
23
[2] OpenFlow: Enabling Innovation in Campus Networks
24
http://ccr.sigcomm.org/online/files/p69-v38n2n-mckeown.pdf
25
[3] IOFlow: A Software-Defined Storage Architecture
26
http://research.microsoft.com/pubs/198941/ioflow-sosp13.pdf
27

    
28
-----------------------------------
29

    
30
Archipelago is consisted of peers. North bound endpoints create requests that
31
are passed between the peers in a specific way in order to meet the south bound
32
endpoints, essentially forming flows following a path. This path is not
33
necessarily the same for all requests, but can be altered dynamically by
34
applying policies on the requests.
35

    
36
What is a flow and why we need them
37
-----------------------------------
38

    
39
In general we can define a flow as a set of requests that are related in some
40
way. In Archipelago we are interested in identifying the requests that form
41
flows based on relations we desire. Some of the relations can be extracted by
42
the inherent attributes of the requests (such as type of operation, length of
43
the request), while for others we need a way to tag the requests and later
44
identify the requests we are interested in.
45

    
46
Example of relations based on inherent attributes: All the READ requests, all
47
the 4K I/O requests, all the 4k READ requests, etc.
48

    
49
But we would like to categorize requests and identify flows in other ways too.
50
We identify four basic relations we would like to categorize requests:
51

    
52
# The resource on which the requests operate.
53
# The endpoint that originated from.
54
# The peer that created the request.
55
# The action that triggered a specific request (e.g. snapshot).
56

    
57
In order to identify the above we propose tagging each request on creation with
58
the following ids:
59

    
60
- **Resource id** : which is unique for every resource. This can be a
61
  monotonically increased 64-bit integer, assigned on resource creation.
62
- **Peer id** : which is unique for every peer type supported by Archipelago.
63
- **Flow id** : Extra tag to group requests in an arbitrary way.
64

    
65
Having each request tagged with the above ids, we can identify flows by more
66
complex relations such as: All the requests that belong on the same resource,
67
all the requests originated from the same endpoint, all the requests specially
68
tagged, all the requests the mapper created for a specific resource, all the I/O
69
requests of a specific resource, etc.
70

    
71
By having a way to identify these relationships, we can later get traces on the
72
parts we are interested, apply policies on certain flows (on certain requests
73
matching our criteria) and in general change dynamically the path of a request.