--- /dev/null
+This is the swift structures:
+// swift interface
+typedef struct swift {
+ int socketListener, socketData;
+ struct sockaddr_in socketListenerAddr;
+} *Swift;
+
+// swift_addr structure similar with in_addr
+struct swift_addr {
+ unsigned short N; // e.g. number of s_addr
+ unsigned long s_addr[MAX_IPs]; // i.p. ip list
+};
+
+// swift struct similar with sock_addr
+typedef struct sockSwiftaddr {
+ short sin_family; // e.g. AF_INET
+ unsigned short sin_port; // e.g. htons(3490)
+ struct swift_addr sin_addr; // see struct swift_addr, below
+} *SockSwiftaddr;
+
+// list of swift_addr
+struct listsockaddr {
+ unsigned short N;
+ struct sockaddr_in sa[MAX_IPs];
+};
+
+With this new structures we modify the normal socket api and the new api is:
+
+// Function to create a Swift socket
+Swift socketSwift();
+
+// Function to close a Swift socket
+void closeSwift(Swift);
+
+// Function to listen to a port
+int listenfromSwift (Swift s, void *buf, size_t len, int flags,
+ struct sockSwiftaddr * __restrict__ from, socklen_t *fromlen);
+
+// Function to bind a port for swift socket
+int bindSwift(Swift s, const struct sockSwiftaddr *my_addr, socklen_t addrlen);
+
+// Function to receive a message
+ssize_t recvFromSwift(Swift s, void *buf, size_t len, int flags,
+ struct sockSwiftaddr *from, socklen_t *fromlen);
+
+// Function to send a message
+ssize_t sendToSwift(Swift s, const void *buf, size_t len, int flags,
+ const struct sockSwiftaddr *to, socklen_t tolen);
--- /dev/null
+BASENAME = my-report
+PDF = $(addsuffix .pdf, $(BASENAME))
+DVI = $(addsuffix .dvi, $(BASENAME))
+TEX = $(addsuffix .tex, $(BASENAME))
+BIB = $(addsuffix .bib, $(BASENAME))
+LATEX = latex
+PDFLATEX = pdflatex
+BIBTEX = bibtex
+
+.PHONY: all clean
+
+all: $(PDF)
+
+$(DVI): $(TEX) $(BIB) src/
+ $(LATEX) $<
+ $(BIBTEX) $(BASENAME)
+ # Twice, so TOC is also updated
+ $(LATEX) $<
+ $(LATEX) $<
+
+$(PDF): $(TEX) $(BIB) src/
+ $(PDFLATEX) $<
+ $(BIBTEX) $(BASENAME)
+ # Twice, so TOC is also updated
+ $(PDFLATEX) $<
+ $(PDFLATEX) $<
+
+clean:
+ -rm -f *~ *.aux *.log *.blg *.bbl *.out *.pdf src/*~ *.backup src/*.backup
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute name="background">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="pagebreak">
+ <dia:color val="#000099"/>
+ </dia:attribute>
+ <dia:attribute name="paper">
+ <dia:composite type="paper">
+ <dia:attribute name="name">
+ <dia:string>#Letter#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="tmargin">
+ <dia:real val="2.5399999618530273"/>
+ </dia:attribute>
+ <dia:attribute name="bmargin">
+ <dia:real val="2.5399999618530273"/>
+ </dia:attribute>
+ <dia:attribute name="lmargin">
+ <dia:real val="2.5399999618530273"/>
+ </dia:attribute>
+ <dia:attribute name="rmargin">
+ <dia:real val="2.5399999618530273"/>
+ </dia:attribute>
+ <dia:attribute name="is_portrait">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="scaling">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="fitto">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="grid">
+ <dia:composite type="grid">
+ <dia:attribute name="width_x">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="width_y">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="visible_x">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="visible_y">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:composite type="color"/>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#d8e5e5"/>
+ </dia:attribute>
+ <dia:attribute name="guides">
+ <dia:composite type="guides">
+ <dia:attribute name="hguides"/>
+ <dia:attribute name="vguides"/>
+ </dia:composite>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer name="Background" visible="true" active="true">
+ <dia:object type="Standard - Box" version="0" id="O0">
+ <dia:attribute name="obj_pos">
+ <dia:point val="18.7875,10.65"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="18.7375,10.6;53.1875,15"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="18.7875,10.65"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="34.349999999999994"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4.2999999999999972"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O1">
+ <dia:attribute name="obj_pos">
+ <dia:point val="35.9625,12.8"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="31.3513,12.2725;40.5738,13.3275"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#Application (libswift)#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.1288888454437256"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="35.9625,13.1125"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O0" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O2">
+ <dia:attribute name="obj_pos">
+ <dia:point val="18.7875,17.8126"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="18.7375,17.7626;53.1875,22.1626"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="18.7875,17.8126"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="34.349999999999994"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4.2999999999999972"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O3">
+ <dia:attribute name="obj_pos">
+ <dia:point val="18.7375,24.9752"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="18.6875,24.9252;53.1375,29.3252"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="18.7375,24.9752"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="34.349999999999994"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4.2999999999999972"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O4">
+ <dia:attribute name="obj_pos">
+ <dia:point val="57.9,10.65"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="57.85,10.6;64.45,22.15"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="57.9,10.65"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="6.5000000000000071"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="11.449999999999999"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O5">
+ <dia:attribute name="obj_pos">
+ <dia:point val="35.9625,19.9626"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="30.4087,19.4351;41.5162,20.4901"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#wrapper library (swiftlib)#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.1288888454437256"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="35.9625,20.2751"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O2" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O6">
+ <dia:attribute name="obj_pos">
+ <dia:point val="35.9125,27.1252"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="20.4225,26.5977;51.4025,27.6527"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#Multiparty protocol (Tranport Layer) (raw sockets) (state automaton)#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.1288888454437256"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="35.9125,27.4377"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O3" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O7">
+ <dia:attribute name="obj_pos">
+ <dia:point val="61.15,16.375"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="58.2275,15.4199;64.0725,17.3301"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#peer discovery
+overlay#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.98777773976325989"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="61.15,16.1549"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O4" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O8">
+ <dia:attribute name="obj_pos">
+ <dia:point val="23.1125,15.0003"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="22.7507,14.9503;23.4743,17.8741"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="23.1125,15.0003"/>
+ <dia:point val="23.1125,17.7623"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O9">
+ <dia:attribute name="obj_pos">
+ <dia:point val="31.6868,15.01"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="31.325,14.96;32.0486,17.8838"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="31.6868,15.01"/>
+ <dia:point val="31.6868,17.772"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O10">
+ <dia:attribute name="obj_pos">
+ <dia:point val="40.1118,14.97"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="39.75,14.92;40.4736,17.8438"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="40.1118,14.97"/>
+ <dia:point val="40.1118,17.732"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O11">
+ <dia:attribute name="obj_pos">
+ <dia:point val="48.0868,14.93"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="47.725,14.88;48.4486,17.8038"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="48.0868,14.93"/>
+ <dia:point val="48.0868,17.692"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O12">
+ <dia:attribute name="obj_pos">
+ <dia:point val="22.9368,22.1303"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="22.575,22.0803;23.2986,25.0041"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="22.9368,22.1303"/>
+ <dia:point val="22.9368,24.8923"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O13">
+ <dia:attribute name="obj_pos">
+ <dia:point val="31.5111,22.14"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="31.1493,22.09;31.8729,25.0138"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="31.5111,22.14"/>
+ <dia:point val="31.5111,24.902"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O14">
+ <dia:attribute name="obj_pos">
+ <dia:point val="39.9361,22.1"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="39.5743,22.05;40.2979,24.9738"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="39.9361,22.1"/>
+ <dia:point val="39.9361,24.862"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O15">
+ <dia:attribute name="obj_pos">
+ <dia:point val="47.9111,22.11"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="47.5493,22.06;48.2729,24.9838"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="47.9111,22.11"/>
+ <dia:point val="47.9111,24.872"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O16">
+ <dia:attribute name="obj_pos">
+ <dia:point val="53.1875,12.8"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="53.137,12.3961;57.8505,13.1539"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="53.1875,12.8"/>
+ <dia:point val="57.8,12.75"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O0" connection="4"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O17">
+ <dia:attribute name="obj_pos">
+ <dia:point val="53.1375,19.9626"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="53.0865,19.5185;57.889,20.3093"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="53.1375,19.9626"/>
+ <dia:point val="57.838,19.8652"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O2" connection="4"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O18">
+ <dia:attribute name="obj_pos">
+ <dia:point val="20.95,23.6"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="19.2325,23.2263;22.6675,23.9737"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#sys_socket#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="20.95,23.8212"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O19">
+ <dia:attribute name="obj_pos">
+ <dia:point val="29.5,23.6"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="28.1187,23.2263;30.8812,23.9737"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#sys_bind#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="29.5,23.8212"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O20">
+ <dia:attribute name="obj_pos">
+ <dia:point val="37.6,23.55"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="35.4862,23.1763;39.7137,23.9238"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#sys_recvfrom#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="37.6,23.7713"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O21">
+ <dia:attribute name="obj_pos">
+ <dia:point val="45.5887,23.5838"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="43.815,23.2101;47.3625,23.9576"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#sys_sendto#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="45.5887,23.8051"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O22">
+ <dia:attribute name="obj_pos">
+ <dia:point val="21.05,16.45"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="19.2288,16.0763;22.8712,16.8238"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#socketSwift#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="21.05,16.6713"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O23">
+ <dia:attribute name="obj_pos">
+ <dia:point val="29.15,16.35"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="26.7512,15.9763;31.5487,16.7238"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#listenfromSwift#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="29.15,16.5713"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O24">
+ <dia:attribute name="obj_pos">
+ <dia:point val="37.6,16.4"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="35.3825,16.0263;39.8175,16.7737"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#recvfromSwift#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="37.6,16.6212"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O25">
+ <dia:attribute name="obj_pos">
+ <dia:point val="46.05,16.45"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="44.1562,16.0763;47.9438,16.8238"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#sendToSwift#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="46.05,16.6713"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O26">
+ <dia:attribute name="obj_pos">
+ <dia:point val="55.4,12.1"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="54.6325,11.7262;56.1675,12.4737"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#hash#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="55.4,12.3212"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O27">
+ <dia:attribute name="obj_pos">
+ <dia:point val="55.4175,13.7338"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="54.5212,13.36;56.3137,14.1075"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#peers#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="55.4175,13.955"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O28">
+ <dia:attribute name="obj_pos">
+ <dia:point val="55.3537,19.0838"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="54.5862,18.7101;56.1212,19.4576"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#hash#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="55.3537,19.3051"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O29">
+ <dia:attribute name="obj_pos">
+ <dia:point val="55.3713,20.7175"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="54.475,20.3438;56.2675,21.0912"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#peers#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="55.3713,20.9387"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">\r
+<!-- Generated by Microsoft Visio 11.0, SVG Export, v1.0 App_Fin.svg Page-1 -->\r
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="8.26772in"\r
+ height="11.6929in" viewBox="0 0 595.276 841.89" xml:space="preserve" color-interpolation-filters="sRGB" class="st16">\r
+ <v:documentProperties v:langID="1033" v:viewMarkup="false">\r
+ <v:userDefs>\r
+ <v:ud v:nameU="msvNoAutoConnect" v:val="VT0(1):26"/>\r
+ </v:userDefs>\r
+ </v:documentProperties>\r
+\r
+ <style type="text/css">\r
+ <![CDATA[\r
+ .st1 {fill:#96afcf;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}\r
+ .st2 {fill:#ff0000;font-family:Arial;font-size:1.00001em}\r
+ .st3 {fill:#dde2cd;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}\r
+ .st4 {fill:#ff0000;font-family:Calibri;font-size:1.00001em}\r
+ .st5 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}\r
+ .st6 {fill:#000000;font-family:Calibri;font-size:0.666664em}\r
+ .st7 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}\r
+ .st8 {font-size:1em}\r
+ .st9 {marker-end:url(#mrkr4-24);marker-start:url(#mrkr10-22);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}\r
+ .st10 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.08695652173913}\r
+ .st11 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72}\r
+ .st12 {fill:#000000;font-family:Calibri;font-size:1.00001em}\r
+ .st13 {fill:#edcdcb;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}\r
+ .st14 {fill:#000000;font-family:Arial;font-size:0.666664em}\r
+ .st15 {fill:#f1eef4;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}\r
+ .st16 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}\r
+ ]]>\r
+ </style>\r
+\r
+ <defs id="Markers">\r
+ <g id="lend10">\r
+ <path\r
+ d="M 0 0.75 C -0.414214 0.75 -0.75 0.414214 -0.75 -0 -0.75 -0.414214 -0.414214 -0.75 -0 -0.75 0.414214 -0.75 0.75 -0.414214 0.75 -0 0.75 0.414214 0.414214 0.75 0 0.75 Z "\r
+ style="stroke:none"/>\r
+ </g>\r
+ <marker id="mrkr10-22" class="st10" v:arrowType="10" v:arrowSize="2" v:setback="7.125" refX="7.125" orient="auto"\r
+ markerUnits="strokeWidth">\r
+ <use xlink:href="#lend10" transform="scale(11.5) "/>\r
+ </marker>\r
+ <g id="lend4">\r
+ <path d="M 2 1 L -0 0 L 2 -1 L 2 1 " style="stroke:none"/>\r
+ </g>\r
+ <marker id="mrkr4-24" class="st10" v:arrowType="4" v:arrowSize="2" v:setback="23" refX="-23" orient="auto"\r
+ markerUnits="strokeWidth">\r
+ <use xlink:href="#lend4" transform="scale(-11.5,-11.5) "/>\r
+ </marker>\r
+ </defs>\r
+ <g v:mID="0" v:index="1" v:groupContext="foregroundPage">\r
+ <title>Page-1</title>\r
+ <v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"\r
+ v:shadowOffsetY="-8.50394"/>\r
+ <v:layer v:name="Annotations" v:index="0"/>\r
+ <g id="shape3-1" v:mID="3" v:groupContext="shape" transform="translate(138.898,-538.583)">\r
+ <title>Rounded rectangle.3</title>\r
+ <desc>Kernel Space</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="136.063" cy="778.11" width="272.13" height="127.559"/>\r
+ <path d="M257.95 841.89 A14.1733 14.1733 -180 0 0 272.13 827.72 L272.13 728.5 A14.1733 14.1733 -180 0 0 257.95 714.33\r
+ L14.17 714.33 A14.1733 14.1733 -180 0 0 -0 728.5 L0 827.72 A14.1733 14.1733 -180 0 0 14.17 841.89 L257.95\r
+ 841.89 Z" class="st1"/>\r
+ <text x="4" y="781.71" class="st2" v:langID="1033"><v:paragraph/><v:tabList/>Kernel Space</text> </g>\r
+ <g id="shape2-4" v:mID="2" v:groupContext="shape" transform="translate(141.732,-717.165)">\r
+ <title>Rounded rectangle</title>\r
+ <desc>User Space</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="134.646" cy="789.449" width="269.3" height="104.882"/>\r
+ <path d="M255.12 841.89 A14.1733 14.1733 -180 0 0 269.29 827.72 L269.29 751.18 A14.1733 14.1733 -180 0 0 255.12 737.01\r
+ L14.17 737.01 A14.1733 14.1733 -180 0 0 0 751.18 L0 827.72 A14.1733 14.1733 -180 0 0 14.17 841.89 L255.12\r
+ 841.89 Z" class="st3"/>\r
+ <text x="4" y="793.05" class="st4" v:langID="1033"><v:paragraph/><v:tabList/>User Space</text> </g>\r
+ <g id="shape1-7" v:mID="1" v:groupContext="shape" transform="translate(248.031,-425.197)">\r
+ <title>Cloud</title>\r
+ <desc>Internet</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(1,1,1,1)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="49.6063" cy="806.457" width="99.22" height="70.8661"/>\r
+ <path d="M2.15 806.53 A4.11071 4.37684 0 0 1 3.55 798.49 A5.58712 5.94883 0 0 1 8.84 789.46 A6.41543 6.83077 0 0 1 17.91\r
+ 781.74 A4.37825 4.6617 0 0 1 25.82 777.73 A4.80773 5.11898 0 0 1 34.27 775.06 A9.49887 10.1138 0 0 1 47.47\r
+ 773.38 A2.83791 3.02163 0 0 1 53.02 773.47 A3.16289 2.80085 38.87 0 1 58.9 773.36 A2.88433 2.03141 9.83\r
+ 0 1 63.97 775.06 A5.38682 3.78202 13.74 0 1 74.29 777.75 A3.32082 2.23215 138.75 0 1 77.96 780.35 A5.45372\r
+ 5.80679 0 0 1 86.69 786.63 A6.04052 4.24731 12.33 0 1 90.22 792.02 A7.71029 5.44445 176.96 0 1 95.43 801\r
+ A4.4562 3.14752 0 0 1 96.09 806.53 A2.22409 2.36808 0 1 1 95.73 810.65 A4.78543 5.09524 0 0 1 92.59 819.09\r
+ A3.15768 2.6659 177.55 1 1 89.39 823.6 A6.41543 6.83077 0 0 1 80.32 831.33 A5.01636 3.54317 0 0 1 72.42\r
+ 835.34 A3.98821 4.24641 0 0 1 64.78 837.63 A4.16392 3.38295 7.87 0 1 56.84 839.26 A3.9331 2.77804 0 0 1\r
+ 49.12 839.71 A5.03056 3.5532 0 0 1 39.54 839.01 A4.596 3.22656 14.33 0 1 31.51 835.56 A3.98256 2.41128 11.15\r
+ 1 1 24.43 833.04 A4.70418 5.00874 0 0 1 17.81 827.27 A6.42064 6.83632 0 0 1 9.98 827.27 A11.2897 7.95527\r
+ 8.91 0 1 5.65 819.09 A4.44141 4.72895 0 0 1 1.58 810.93 A4.37974 3.07437 14.02 0 1 2.15 806.53 Z"\r
+ class="st5"/>\r
+ <text x="36.34" y="808.86" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Internet</text> </g>\r
+ <g id="shape6-10" v:mID="6" v:groupContext="shape" transform="translate(1097.01,107.717) rotate(90)">\r
+ <title>Data store</title>\r
+ <desc>Swift Socket (Data transfer)</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(1,1,1,1)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="41.1024" cy="827.717" width="82.21" height="28.3465"/>\r
+ <path d="M0 841.89 L82.2 841.89" class="st7"/>\r
+ <path d="M0 813.54 L82.2 813.54" class="st7"/>\r
+ <text x="21.24" y="825.32" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Swift Socket<v:newlineChar/><tspan\r
+ x="17.22" dy="1.2em" class="st8">(</tspan>Data transfer)</text> </g>\r
+ <g id="shape10-16" v:mID="10" v:groupContext="shape" transform="translate(481.803,1024.39) rotate(165.379)">\r
+ <title>Pointer (1-D)</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L28.17 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape11-25" v:mID="11" v:groupContext="shape" transform="translate(1078.58,238.11) rotate(90)">\r
+ <title>Pointer (1-D).11</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L2.98 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape12-32" v:mID="12" v:groupContext="shape" transform="translate(777.133,-350.722) rotate(39.9364)">\r
+ <title>Pointer (1-D).12</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L73.96 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape13-39" v:mID="13" v:groupContext="shape" transform="translate(1078.58,266.457) rotate(90)">\r
+ <title>Pointer (1-D).13</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L2.98 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape14-46" v:mID="14" v:groupContext="shape" transform="translate(1193.39,107.717) rotate(90)">\r
+ <title>Data store.14</title>\r
+ <desc>UDP Socket (Information update)</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(1,1,1,1)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="41.1024" cy="827.717" width="82.21" height="28.3465"/>\r
+ <path d="M0 841.89 L82.2 841.89" class="st7"/>\r
+ <path d="M0 813.54 L82.2 813.54" class="st7"/>\r
+ <text x="22.32" y="825.32" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>UDP Socket<v:newlineChar/><tspan\r
+ x="6.81" dy="1.2em" class="st8">(</tspan>Information update)</text> </g>\r
+ <g id="shape19-52" v:mID="19" v:groupContext="shape" transform="translate(1206.14,209.764) rotate(90)">\r
+ <title>Pointer (1-D).19</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L2.98 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape20-59" v:mID="20" v:groupContext="shape" transform="translate(1206.14,238.11) rotate(90)">\r
+ <title>Pointer (1-D).20</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L2.98 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape21-66" v:mID="21" v:groupContext="shape" transform="translate(1206.14,266.457) rotate(90)">\r
+ <title>Pointer (1-D).21</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L2.98 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape22-73" v:mID="22" v:groupContext="shape" transform="translate(876.186,963.161) rotate(142.549)">\r
+ <title>Pointer (1-D).22</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L78.39 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape27-80" v:mID="27" v:groupContext="shape" transform="translate(1145.2,266.457) rotate(90)">\r
+ <title>Pointer (1-D).27</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L2.98 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape28-87" v:mID="28" v:groupContext="shape" transform="translate(1143.78,238.11) rotate(90)">\r
+ <title>Pointer (1-D).28</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L2.98 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape29-94" v:mID="29" v:groupContext="shape" transform="translate(481.803,-604.863) rotate(14.6209)">\r
+ <title>Pointer (1-D).29</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L28.17 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape30-101" v:mID="30" v:groupContext="shape" v:layerMember="0" transform="translate(262.205,-602.362)">\r
+ <title>12pt. text</title>\r
+ <desc>…</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>\r
+ <v:ud v:nameU="AutoWidth" v:val="VT0(0.19685039370079):24"/>\r
+ <v:ud v:nameU="WidthIncrement" v:val="VT0(0.098425196850394):24"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="7.08661" cy="834.803" width="14.18" height="14.1732"/>\r
+ <rect x="0" y="827.717" width="14.1732" height="14.1732" class="st11"/>\r
+ <text x="2.94" y="838.4" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>…</text> </g>\r
+ <g id="shape32-104" v:mID="32" v:groupContext="shape" v:layerMember="0" transform="translate(262.205,-574.016)">\r
+ <title>12pt. text.32</title>\r
+ <desc>…</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>\r
+ <v:ud v:nameU="AutoWidth" v:val="VT0(0.19685039370079):24"/>\r
+ <v:ud v:nameU="WidthIncrement" v:val="VT0(0.098425196850394):24"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="7.08661" cy="834.803" width="14.18" height="14.1732"/>\r
+ <rect x="0" y="827.717" width="14.1732" height="14.1732" class="st11"/>\r
+ <text x="2.94" y="838.4" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>…</text> </g>\r
+ <g id="shape33-107" v:mID="33" v:groupContext="shape" transform="translate(1140.87,364.718) rotate(94.7636)">\r
+ <title>Pointer (1-D).33</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L45.68 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape31-114" v:mID="31" v:groupContext="shape" v:layerMember="0" transform="translate(262.205,-545.669)">\r
+ <title>12pt. text.31</title>\r
+ <desc>…</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>\r
+ <v:ud v:nameU="AutoWidth" v:val="VT0(0.19685039370079):24"/>\r
+ <v:ud v:nameU="WidthIncrement" v:val="VT0(0.098425196850394):24"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="7.08661" cy="834.803" width="14.18" height="14.1732"/>\r
+ <rect x="0" y="827.717" width="14.1732" height="14.1732" class="st11"/>\r
+ <text x="2.94" y="838.4" class="st12" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>…</text> </g>\r
+ <g id="shape34-117" v:mID="34" v:groupContext="shape" transform="translate(218.268,-734.173)">\r
+ <title>Rounded rectangle.34</title>\r
+ <desc>Swift Library</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="89.2913" cy="826.299" width="178.59" height="31.1811"/>\r
+ <path d="M164.41 841.89 A14.1733 14.1733 -180 0 0 178.58 827.72 L178.58 824.88 A14.1733 14.1733 -180 0 0 164.41 810.71\r
+ L14.17 810.71 A14.1733 14.1733 -180 0 0 0 824.88 L0 827.72 A14.1733 14.1733 -180 0 0 14.17 841.89 L164.41\r
+ 841.89 Z" class="st13"/>\r
+ <text x="67.29" y="828.7" class="st14" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Swift Library</text> </g>\r
+ <g id="shape23-120" v:mID="23" v:groupContext="shape" transform="translate(218.268,-779.528)">\r
+ <title>Rounded rectangle.23</title>\r
+ <desc>Application which uses SWIFT Library</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="89.2913" cy="826.299" width="178.59" height="31.1811"/>\r
+ <path d="M164.41 841.89 A14.1733 14.1733 -180 0 0 178.58 827.72 L178.58 824.88 A14.1733 14.1733 -180 0 0 164.41 810.71\r
+ L14.17 810.71 A14.1733 14.1733 -180 0 0 0 824.88 L0 827.72 A14.1733 14.1733 -180 0 0 14.17 841.89 L164.41\r
+ 841.89 Z" class="st15"/>\r
+ <text x="28.94" y="828.7" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Application which uses SWIFT Library</text> </g>\r
+ <g id="shape35-123" v:mID="35" v:groupContext="shape" transform="translate(1149.45,62.3622) rotate(90)">\r
+ <title>Pointer (1-D).35</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M1.71 841.89 L2.07 841.89 L8.65 841.89" class="st9"/>\r
+ </g>\r
+ <g id="shape36-130" v:mID="36" v:groupContext="shape" transform="translate(212.598,-632.126)">\r
+ <title>Rounded rectangle.36</title>\r
+ <desc>Swift Transport Layer</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="56.6929" cy="831.969" width="113.39" height="19.8425"/>\r
+ <path d="M103.46 841.89 A9.92134 9.92134 -180 0 0 113.39 831.97 A9.92134 9.92134 -180 0 0 103.46 822.05 L9.92 822.05\r
+ A9.92134 9.92134 -180 0 0 0 831.97 A9.92134 9.92134 -180 0 0 9.92 841.89 L103.46 841.89 Z" class="st15"/>\r
+ <text x="48.52" y="829.57" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Swift <v:newlineChar/><tspan\r
+ x="31.12" dy="1.2em" class="st8">Transport Layer </tspan> </text> </g>\r
+ <g id="shape37-134" v:mID="37" v:groupContext="shape" transform="translate(212.598,-603.78)">\r
+ <title>Rounded rectangle.37</title>\r
+ <desc>IP 1</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="24.0945" cy="831.969" width="48.19" height="19.8425"/>\r
+ <path d="M38.27 841.89 A9.92134 9.92134 -180 0 0 48.19 831.97 A9.92134 9.92134 -180 0 0 38.27 822.05 L9.92 822.05 A9.92134\r
+ 9.92134 -180 0 0 0 831.97 A9.92134 9.92134 -180 0 0 9.92 841.89 L38.27 841.89 Z" class="st15"/>\r
+ <text x="18.09" y="834.37" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>IP 1</text> </g>\r
+ <g id="shape38-137" v:mID="38" v:groupContext="shape" transform="translate(212.598,-547.087)">\r
+ <title>Rounded rectangle.38</title>\r
+ <desc>Physical Layer 1</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="24.0945" cy="831.969" width="48.19" height="19.8425"/>\r
+ <path d="M38.27 841.89 A9.92134 9.92134 -180 0 0 48.19 831.97 A9.92134 9.92134 -180 0 0 38.27 822.05 L9.92 822.05 A9.92134\r
+ 9.92134 -180 0 0 0 831.97 A9.92134 9.92134 -180 0 0 9.92 841.89 L38.27 841.89 Z" class="st15"/>\r
+ <text x="11.11" y="829.57" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Physical <tspan\r
+ x="12.37" dy="1.2em" class="st8">Layer </tspan>1</text> </g>\r
+ <g id="shape39-141" v:mID="39" v:groupContext="shape" transform="translate(212.598,-575.433)">\r
+ <title>Rounded rectangle.39</title>\r
+ <desc>Data Link 1</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="24.0945" cy="831.969" width="48.19" height="19.8425"/>\r
+ <path d="M38.27 841.89 A9.92134 9.92134 -180 0 0 48.19 831.97 A9.92134 9.92134 -180 0 0 38.27 822.05 L9.92 822.05 A9.92134\r
+ 9.92134 -180 0 0 0 831.97 A9.92134 9.92134 -180 0 0 9.92 841.89 L38.27 841.89 Z" class="st15"/>\r
+ <text x="6.11" y="834.37" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Data Link 1</text> </g>\r
+ <g id="shape7-144" v:mID="7" v:groupContext="shape" transform="translate(277.795,-575.433)">\r
+ <title>Rounded rectangle.7</title>\r
+ <desc>Data Link N</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="24.0945" cy="831.969" width="48.19" height="19.8425"/>\r
+ <path d="M38.27 841.89 A9.92134 9.92134 -180 0 0 48.19 831.97 A9.92134 9.92134 -180 0 0 38.27 822.05 L9.92 822.05 A9.92134\r
+ 9.92134 -180 0 0 0 831.97 A9.92134 9.92134 -180 0 0 9.92 841.89 L38.27 841.89 Z" class="st15"/>\r
+ <text x="5.55" y="834.37" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Data Link N</text> </g>\r
+ <g id="shape8-147" v:mID="8" v:groupContext="shape" transform="translate(277.795,-603.78)">\r
+ <title>Rounded rectangle.8</title>\r
+ <desc>IP N</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="24.0945" cy="831.969" width="48.19" height="19.8425"/>\r
+ <path d="M38.27 841.89 A9.92134 9.92134 -180 0 0 48.19 831.97 A9.92134 9.92134 -180 0 0 38.27 822.05 L9.92 822.05 A9.92134\r
+ 9.92134 -180 0 0 0 831.97 A9.92134 9.92134 -180 0 0 9.92 841.89 L38.27 841.89 Z" class="st15"/>\r
+ <text x="17.53" y="834.37" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>IP N</text> </g>\r
+ <g id="shape9-150" v:mID="9" v:groupContext="shape" transform="translate(277.795,-547.087)">\r
+ <title>Rounded rectangle.9</title>\r
+ <desc>Physical Layer 1</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="24.0945" cy="831.969" width="48.19" height="19.8425"/>\r
+ <path d="M38.27 841.89 A9.92134 9.92134 -180 0 0 48.19 831.97 A9.92134 9.92134 -180 0 0 38.27 822.05 L9.92 822.05 A9.92134\r
+ 9.92134 -180 0 0 0 831.97 A9.92134 9.92134 -180 0 0 9.92 841.89 L38.27 841.89 Z" class="st15"/>\r
+ <text x="11.11" y="829.57" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Physical <tspan\r
+ x="12.37" dy="1.2em" class="st8">Layer </tspan>1</text> </g>\r
+ <g id="shape5-154" v:mID="5" v:groupContext="shape" transform="translate(331.654,-632.126)">\r
+ <title>Rounded rectangle.5</title>\r
+ <desc>UDP Transport Layer</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="32.5984" cy="831.969" width="65.2" height="19.8425"/>\r
+ <path d="M55.28 841.89 A9.92134 9.92134 -180 0 0 65.2 831.97 A9.92134 9.92134 -180 0 0 55.28 822.05 L9.92 822.05 A9.92134\r
+ 9.92134 -180 0 0 0 831.97 A9.92134 9.92134 -180 0 0 9.92 841.89 L55.28 841.89 Z" class="st15"/>\r
+ <text x="25.5" y="829.57" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>UDP <v:newlineChar/><tspan\r
+ x="7.03" dy="1.2em" class="st8">Transport Layer </tspan> </text> </g>\r
+ <g id="shape15-158" v:mID="15" v:groupContext="shape" transform="translate(331.654,-575.433)">\r
+ <title>Rounded rectangle.15</title>\r
+ <desc>Data Link</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="32.5984" cy="831.969" width="65.2" height="19.8425"/>\r
+ <path d="M55.28 841.89 A9.92134 9.92134 -180 0 0 65.2 831.97 A9.92134 9.92134 -180 0 0 55.28 822.05 L9.92 822.05 A9.92134\r
+ 9.92134 -180 0 0 0 831.97 A9.92134 9.92134 -180 0 0 9.92 841.89 L55.28 841.89 Z" class="st15"/>\r
+ <text x="17.54" y="834.37" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Data Link</text> </g>\r
+ <g id="shape24-161" v:mID="24" v:groupContext="shape" transform="translate(331.654,-603.78)">\r
+ <title>Rounded rectangle.24</title>\r
+ <desc>IP</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="32.5984" cy="831.969" width="65.2" height="19.8425"/>\r
+ <path d="M55.28 841.89 A9.92134 9.92134 -180 0 0 65.2 831.97 A9.92134 9.92134 -180 0 0 55.28 822.05 L9.92 822.05 A9.92134\r
+ 9.92134 -180 0 0 0 831.97 A9.92134 9.92134 -180 0 0 9.92 841.89 L55.28 841.89 Z" class="st15"/>\r
+ <text x="29.52" y="834.37" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>IP</text> </g>\r
+ <g id="shape16-164" v:mID="16" v:groupContext="shape" transform="translate(331.654,-547.087)">\r
+ <title>Rounded rectangle.16</title>\r
+ <desc>Physical Layer</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="32.5984" cy="831.969" width="65.2" height="19.8425"/>\r
+ <path d="M55.28 841.89 A9.92134 9.92134 -180 0 0 65.2 831.97 A9.92134 9.92134 -180 0 0 55.28 822.05 L9.92 822.05 A9.92134\r
+ 9.92134 -180 0 0 0 831.97 A9.92134 9.92134 -180 0 0 9.92 841.89 L55.28 841.89 Z" class="st15"/>\r
+ <text x="9.92" y="834.37" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Physical Layer</text> </g>\r
+ </g>\r
+</svg>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">\r
+<!-- Generated by Microsoft Visio 11.0, SVG Export, v1.0 RD.svg Page-1 -->\r
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="8.26772in"\r
+ height="11.6929in" viewBox="0 0 595.276 841.89" xml:space="preserve" color-interpolation-filters="sRGB" class="st8">\r
+ <v:documentProperties v:langID="1033" v:viewMarkup="false">\r
+ <v:userDefs>\r
+ <v:ud v:nameU="msvNoAutoConnect" v:val="VT0(1):26"/>\r
+ </v:userDefs>\r
+ </v:documentProperties>\r
+\r
+ <style type="text/css">\r
+ <![CDATA[\r
+ .st1 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}\r
+ .st2 {fill:#000000;font-family:Arial;font-size:0.666664em}\r
+ .st3 {font-size:1em}\r
+ .st4 {marker-end:url(#mrkr4-14);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}\r
+ .st5 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.08695652173913}\r
+ .st6 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72}\r
+ .st7 {fill:#000000;font-family:Arial;font-size:1.00001em}\r
+ .st8 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}\r
+ ]]>\r
+ </style>\r
+\r
+ <defs id="Markers">\r
+ <g id="lend4">\r
+ <path d="M 2 1 L -0 0 L 2 -1 L 2 1 " style="stroke:none"/>\r
+ </g>\r
+ <marker id="mrkr4-14" class="st5" v:arrowType="4" v:arrowSize="2" v:setback="23" refX="-23" orient="auto"\r
+ markerUnits="strokeWidth">\r
+ <use xlink:href="#lend4" transform="scale(-11.5,-11.5) "/>\r
+ </marker>\r
+ </defs>\r
+ <g v:mID="0" v:index="1" v:groupContext="foregroundPage">\r
+ <title>Page-1</title>\r
+ <v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"\r
+ v:shadowOffsetY="-8.50394"/>\r
+ <v:layer v:name="Annotations" v:index="0"/>\r
+ <g id="shape1-1" v:mID="1" v:groupContext="shape" transform="translate(56.6929,-651.969)">\r
+ <title>Function / subroutine</title>\r
+ <desc>Swift Application</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(1,1,1,1)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="21.2598" cy="820.63" width="42.52" height="42.5197"/>\r
+ <rect x="0" y="799.37" width="42.5197" height="42.5197" class="st1"/>\r
+ <text x="12.59" y="818.23" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Swift <tspan x="1.69"\r
+ dy="1.2em" class="st3">Application</tspan></text> </g>\r
+ <g id="shape2-5" v:mID="2" v:groupContext="shape" transform="translate(134.646,-651.969)">\r
+ <title>Function / subroutine.2</title>\r
+ <desc>Swift Library</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(1,1,1,1)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="20.5512" cy="820.63" width="41.11" height="42.5197"/>\r
+ <rect x="0" y="799.37" width="41.1024" height="42.5197" class="st1"/>\r
+ <text x="11.88" y="818.23" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Swift <tspan x="8.32"\r
+ dy="1.2em" class="st3">Library</tspan></text> </g>\r
+ <g id="shape3-9" v:mID="3" v:groupContext="shape" transform="translate(99.2126,-683.858)">\r
+ <title>Invocation</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="CH" v:val="VT0(5):26"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M0 841.89 L29.91 841.89" class="st4"/>\r
+ </g>\r
+ <g id="shape4-15" v:mID="4" v:groupContext="shape" transform="translate(134.646,1021.18) rotate(180)">\r
+ <title>Invocation.4</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="CH" v:val="VT0(5):26"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M0 841.89 L29.91 841.89" class="st4"/>\r
+ </g>\r
+ <g id="shape5-20" v:mID="5" v:groupContext="shape" transform="translate(216.142,-651.969)">\r
+ <title>Function / subroutine.5</title>\r
+ <desc>Kernel Space</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(1,1,1,1)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="22.3228" cy="820.63" width="44.65" height="42.5197"/>\r
+ <rect x="0" y="799.37" width="44.6457" height="42.5197" class="st1"/>\r
+ <text x="10.76" y="818.23" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Kernel <tspan\r
+ x="10.98" dy="1.2em" class="st3">Space</tspan></text> </g>\r
+ <g id="shape6-24" v:mID="6" v:groupContext="shape" transform="translate(297.638,-694.488)">\r
+ <title>Function / subroutine.6</title>\r
+ <desc>Kernel Space 1</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(1,1,1,1)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="21.2598" cy="820.63" width="42.52" height="42.5197"/>\r
+ <rect x="0" y="799.37" width="42.5197" height="42.5197" class="st1"/>\r
+ <text x="9.7" y="818.23" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Kernel <tspan x="6.58"\r
+ dy="1.2em" class="st3">Space </tspan>1</text> </g>\r
+ <g id="shape7-28" v:mID="7" v:groupContext="shape" transform="translate(-375.42,-393.348) rotate(-49.0856)">\r
+ <title>Invocation.7</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="CH" v:val="VT0(5):26"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M0 841.89 L50.75 841.89" class="st4"/>\r
+ </g>\r
+ <g id="shape8-33" v:mID="8" v:groupContext="shape" transform="translate(933.845,677.521) rotate(130.914)">\r
+ <title>Invocation.8</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="CH" v:val="VT0(5):26"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M0 841.89 L50.75 841.89" class="st4"/>\r
+ </g>\r
+ <g id="shape9-38" v:mID="9" v:groupContext="shape" transform="translate(297.638,-623.622)">\r
+ <title>Function / subroutine.9</title>\r
+ <desc>Kernel Space N</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(1,1,1,1)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="21.2598" cy="820.63" width="42.52" height="42.5197"/>\r
+ <rect x="0" y="799.37" width="42.5197" height="42.5197" class="st1"/>\r
+ <text x="9.7" y="818.23" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Kernel <tspan x="5.92"\r
+ dy="1.2em" class="st3">Space N</tspan></text> </g>\r
+ <g id="shape13-42" v:mID="13" v:groupContext="shape" transform="translate(774.097,-498.641) rotate(37.5686)">\r
+ <title>Invocation.13</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="CH" v:val="VT0(5):26"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M0 841.89 L40.97 841.89" class="st4"/>\r
+ </g>\r
+ <g id="shape15-47" v:mID="15" v:groupContext="shape" v:layerMember="0" transform="translate(99.2126,-687.402)">\r
+ <title>12pt. text</title>\r
+ <desc>Request</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>\r
+ <v:ud v:nameU="AutoWidth" v:val="VT0(0.49212598425197):24"/>\r
+ <v:ud v:nameU="WidthIncrement" v:val="VT0(0.098425196850394):24"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="17.7165" cy="834.803" width="35.44" height="14.1732"/>\r
+ <rect x="0" y="827.717" width="35.4331" height="14.1732" class="st6"/>\r
+ <text x="2.82" y="837.2" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Request</text> </g>\r
+ <g id="shape16-50" v:mID="16" v:groupContext="shape" v:layerMember="0" transform="translate(177.165,-687.402)">\r
+ <title>12pt. text.16</title>\r
+ <desc>SysCall</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>\r
+ <v:ud v:nameU="AutoWidth" v:val="VT0(0.49212598425197):24"/>\r
+ <v:ud v:nameU="WidthIncrement" v:val="VT0(0.098425196850394):24"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="17.7165" cy="834.803" width="35.44" height="14.1732"/>\r
+ <rect x="0" y="827.717" width="35.4331" height="14.1732" class="st6"/>\r
+ <text x="4.16" y="837.2" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>SysCall</text> </g>\r
+ <g id="shape17-53" v:mID="17" v:groupContext="shape" v:layerMember="0" transform="translate(291.26,-673.228)">\r
+ <title>12pt. text.17</title>\r
+ <desc>………..</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>\r
+ <v:ud v:nameU="AutoWidth" v:val="VT0(0.68897637795276):24"/>\r
+ <v:ud v:nameU="WidthIncrement" v:val="VT0(0.098425196850394):24"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="29.0551" cy="834.803" width="58.12" height="14.1732"/>\r
+ <rect x="0" y="827.717" width="58.1102" height="14.1732" class="st6"/>\r
+ <text x="7.72" y="838.4" class="st7" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>………..</text> </g>\r
+ <g id="shape18-56" v:mID="18" v:groupContext="shape" transform="translate(175.748,-683.858)">\r
+ <title>Invocation.18</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="CH" v:val="VT0(5):26"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M0 841.89 L34.87 841.89" class="st4"/>\r
+ </g>\r
+ <g id="shape19-61" v:mID="19" v:groupContext="shape" transform="translate(216.142,1021.18) rotate(180)">\r
+ <title>Invocation.19</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="CH" v:val="VT0(5):26"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M0 841.89 L34.87 841.89" class="st4"/>\r
+ </g>\r
+ <g id="shape20-66" v:mID="20" v:groupContext="shape" v:layerMember="0" transform="translate(240.945,-722.835)">\r
+ <title>12pt. text.20</title>\r
+ <desc>Network communication</desc>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="AntiScale" v:val="VT0(1):26"/>\r
+ <v:ud v:nameU="AutoWidth" v:val="VT0(0.78740157480315):24"/>\r
+ <v:ud v:nameU="WidthIncrement" v:val="VT0(0.098425196850394):24"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>\r
+ <v:textRect cx="28.3465" cy="834.803" width="56.7" height="14.1732"/>\r
+ <rect x="0" y="827.717" width="56.6929" height="14.1732" class="st6"/>\r
+ <text x="13.68" y="832.4" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Network <v:newlineChar/><tspan\r
+ x="1.45" dy="1.2em" class="st3">communication</tspan></text> </g>\r
+ <g id="shape10-70" v:mID="10" v:groupContext="shape" transform="translate(-215.671,874.94) rotate(-142.431)">\r
+ <title>Invocation.10</title>\r
+ <v:userDefs>\r
+ <v:ud v:nameU="CH" v:val="VT0(5):26"/>\r
+ <v:ud v:nameU="visVersion" v:val="VT0(12):26"/>\r
+ </v:userDefs>\r
+ <path d="M0 841.89 L40.97 841.89" class="st4"/>\r
+ </g>\r
+ </g>\r
+</svg>\r
--- /dev/null
+# sample entry
+@inproceedings{large-scale-p2p-sim,
+ author = {Dinh, Tien Tuan Anh and Theodoropoulos, Georgios and Minson, Rob},
+ title = {{Evaluating Large Scale Distributed Simulation of P2P Networks}},
+ booktitle = {DS-RT '08: Proceedings of the 2008 12th IEEE/ACM International Symposium on Distributed Simulation and Real-Time Applications},
+ year = {2008},
+ isbn = {978-0-7695-3425-1},
+ pages = {51--58},
+ doi = {http://dx.doi.org/10.1109/DS-RT.2008.36},
+ publisher = {IEEE Computer Society},
+ address = {Washington, DC, USA},
+}
+
+@misc{binmaps,
+ author = {V. Grishchenko, J. Pouwelse},
+ title = {{Binmaps: hybridizing bitmaps and binary trees}},
+ year = {2009},
+ howpublished = {http://bouillon.math.usu.ru/articles/binmaps-alenex.pdf},
+}
+
+@misc{merkle,
+ author = {R. Merkle},
+ title = {{A Digital Signature Based on a Conventional Encryption Function}},
+ booktitle = {Proceedings CRYPTO'87},
+ year = {1987},
+ pages = {369--378},
+ address = {Santa Barbara, CA, USA},
+}
+
+@misc{bittorrent,
+ author = {Bram Cohen},
+ title = {{Incentives Build Robustness in BitTorrent}},
+ howpublished = {http://www.bittorrent.org/bittorrentecon.pdf},
+}
+
+@misc{merkle-ext,
+ author = {Arno Bakker},
+ title = {{Merkle hash torrent extension}},
+ booktitle = {BEP 30},
+ howpublished = {http://bittorrent.org/beps/bep\_0030.html},
+}
+
+@misc{ledbat,
+ author = {S. Shalunov},
+ title = {{Low Extra Delay Background Transport (LEDBAT)}},
+ howpublished = {http://www.ietf.org/id/draft-ietf-ledbat-congestion-00.txt},
+ year = {2009},
+}
+
+@misc{ledbat2,
+ author = {S. Shalunov, G. Hazel},
+ title = {{Low Extra Delay Background Transport (LEDBAT)}},
+ howpublished = {http://tools.ietf.org/html/draft-ietf-ledbat-congestion-03},
+ year = {2010},
+}
+
+
+@misc{peer-to-peer,
+ author = {B. Ford, P. Srisuresh, D. Kegel},
+ title = {{Peer-to-Peer Communication Across Network Address Translators}},
+ howpublished = {http://www.brynosaurus.com/pub/net/p2pnat/},
+}
+
+@misc{cdnwiki,
+ title = {{Wikipedia Content Delivery Network(CDN) page}},
+ howpublished = {http://en.wikipedia.org/wiki/Content_delivery_network},
+}
+
+@misc{kernel,
+ author = {R. Love},
+ title = {{Linux Kernel Development}},
+ booktitle = {{Talking Directly to the Kernel and C Library}},
+ year = {2004},
+}
+
+@misc{socket,
+ author = {R. Stevens},
+ title = {{UNIX Network Programming, Volume 2, Second Edition}},
+ booktitle = {{Interprocess Communications}},
+ year = {1999},
+}
\ No newline at end of file
--- /dev/null
+% vim: set tw=78 sts=2 sw=2 ts=8 aw et ai:
+\documentclass[12pt]{article}
+
+\usepackage[paper=a4paper, top=2cm, bottom=3cm, left=2.5cm, right=2.5cm]{geometry}
+
+\usepackage{ucs}
+\usepackage[utf8x]{inputenc}
+\usepackage[english]{babel}
+\usepackage{hyperref} % use \url{http://$URL} or \href{http://$URL}{Name}
+\usepackage{underscore} % underscores need not be escaped
+\usepackage{subfigure}
+\usepackage{verbatim}
+\usepackage{float}
+\usepackage{booktabs}
+
+% Support for including graphics
+\usepackage{graphicx}
+\DeclareGraphicsExtensions{.pdf,.png,.jpg}
+
+\usepackage{hyperref}
+
+\hypersetup{%
+ colorlinks=true,
+ linkcolor=blue,
+ anchorcolor=black,
+ citecolor=black,
+ urlcolor=blue,
+ bookmarks=true,
+ bookmarksnumbered=true
+}
+\urlstyle{same}
+
+\newcommand{\labelindexref}[2]{\hyperref[#2]{#1~\ref*{#2}}}
+% command for inserting labeled figures
+\newcommand{\image}[4][]{
+\begin{figure}[htb]
+\begin{center}
+\includegraphics[#1]{#2}
+\caption{#4 \label{#3}}
+\end{center}
+\end{figure}
+}
+
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{2ex}
+
+
+\title{\bfseries{SWIFT in the Linux Kernel\\
+\large{\vspace*{0.4cm}Scientific supervisor: Nicolae Țăpuș\\ Technical supervisor: Răzvan Deaconescu}}}
+
+\author{Oana Baron, Bogdan Druțu\\
+Automatic Control and Computers Faculty\\
+University Politehnica of Bucharest\\
+Splaiul Independenței nr. 313, Bucharest, Romania \\
+\emph{\{oana.baron, bogdan.drutu\}@cti.pub.ro}}
+
+\date{\today}
+
+\begin{document}
+
+\maketitle
+
+%\begin{abstract}
+%\input{src/abstract}
+%\end{abstract}
+
+{\bf \hspace*{0.8cm} \textbf{\emph{Keywords}} -- bittorrent, multiparty, transport protocol, linux kernel,\\
+\hspace*{0.8cm} Merkle hash trees, binmaps}
+
+\section{Introduction}
+\label{sec:introduction}
+\input{src/intro}
+
+\section{Preliminary Work}
+\label{sec:preliminarywork}
+\input{src/preliminarywork}
+
+%\pagebreak
+
+\section{Architecture}
+\label{sec:arch}
+\input{src/arch}
+
+\section{Raw Sockets}
+\label{sec:rawsock}
+\input{src/rawsock}
+
+\section{Testing and Evaluation}
+\label{sec:testing}
+\input{src/testing}
+
+
+\section{Conclusion and Further Work}
+\label{sec:summary}
+\input{src/summary}
+
+%\section*{Acknowledgment}
+%\label{sec:acknowledgment}
+
+%The authors would like to thank XYZ for their support and dedication.
+
+\pagebreak
+
+\bibliographystyle{abbrv}
+\bibliography{my-report}
+
+\end{document}
--- /dev/null
+%\section{\fontfamily{phv}\selectfont{\large{\bfseries{INTRODUCTION}}}}
+
+The \emph{swift} protocol is a generic multiparty transport protocol. Its mission is to disseminate content among a
+swarm of peers. Basically, it answers one and only one request: \emph{'Here is a hash! Give me data for it!'}. Such
+entities as storage, servers and connections are abstracted and are virtually invisible at the API layer. Given a hash,
+the data is received from whatever source available and data integrity is checked cryptographically with Merkle hash
+trees.
+
+If you need some data it is somewhat faster and/or cheaper downloading it from a nearby well-provisioned replica, but
+on the other hand, this process requires that multiple parties (e.g. consumers, the data sources, CDN
+sites\cite{cdnwiki} , mirrors, peers) have to be coordinate. As the Internet content is in a continuous increasing
+nowadays, the overhead of peer/replica coordination becomes higher then the mass of the download itself. Thus, the niche
+for multiparty transfers expands. Still, current, relevant technologies are tightly coupled to a single use case or even
+infrastructure of a particular corporation. These are the reasons of the \emph{swift} protocol appearance with its
+primary goal to act as a generic content-centric multiparty transport protocol that allows seamless, effortless data
+dissemination on the big cloud represented by the Internet.
+
+// TODO - swift description paragraph
+
+\textbf{Contribution}. // TODO
+
+\begin{comment}
+Our main objective is to integrate \emph{swift} as a transport protocol in the Linux kernel
+networking stack. This will provide notable performance improvement regarding data transfer. We intend to do this with
+minimal intrusion effect in the Linux kernel and also to change as little as possible the current \emph{swift}
+implementation. Another goal is to provide a transparent API between the kernel and the user space. A developer will use
+a socket-like interface when building an application on top of the \emph{swift} protocol.
+\end{comment}
+
+\textbf{Outline}. The rest of the paper is organized as follows. In section \ref{sec:preliminarywork} we discuss some
+previous approaches in designing the system with their sthrengths and weaknesess. In section \ref{sec:arch}
+ presents our current approach to integrate the \emph{swift} protocol as a transport layer protocol into the Linux
+kernel. Section \ref{sec:rawsock} presents a preliminary implementation using raw socktes that prepares the ground for
+the final stage of the project. We describe our testing scenariou in detail in section \ref{sec:testing}. Section
+\ref{sec:summary} concludes the article and refers to future work.
--- /dev/null
+While designing our system, we have tackled a few different ideas, each with its strengths and weaknesees. We present
+now some of those preliminary ideas that lead to the our current desing choice.
+
+The first approach we thought of was to include all of the swift protocol into the kernel space. This
+approach had the advantage of simplicity and would have implied minimal architectural changes. The current user space
+implementation could have been ported to a kernel module.
+
+Though simple, this approach could not be implemented because of the restriction of memory size in the kernel.
+For the integrity check the swift protocol relies on Merkle hash tree. Keeping this tree in the kernel space memory is
+not scalable. The Internet content is too large to be stored in kernel. Even if the tree retains only hashes of the data
+disseminated, the space is insufficient.
+
+
+
+The second approach of the swift implementation is represent in the \labelindexref{Figure}{img:tree}.
+
+\image[scale=0.45]{img/tree}{img:tree}{Tree}
+
+The swift transport should have been a new kernel interface allowing the creation of specialized swift sockets. It
+should have implemented the multiparty protocol allowing piece transport to/from other hosts in a peer-to-peer fashion.
+
+That implementation should have had specialized "request queues", metadata queues, to/from user space. Specialized
+system call API should have allowed user space applications to interact with the above
+mentioned queues and, thus, with the multiparty transport protocol implementation.
+
+Innate differences from a classical one-to-one communication such as UDP or TCP means the system call API shouldn't have
+followed the classical send/receive paradigm. In order to compensate this and to provide a rather "friendly" interface
+to user space applications, a library was designed that to provide a simpler interface. Peer and piece discovery should
+have been the responsibility of the user space application. The SWIFT Library may also provide wrappers over a UDP-based
+channel for discovery.
+
+Merkle hashes should have stored and computed in user space. This approach couldn't be implemented because of the
+restriction of the library implementations (e.g. a users application design would be more restrictive). Moreover the
+kernel implementation should have been like an UDP which support multicast transfer.
+
+
+The third approach of the swift implementation was to detach the transport layer from the original swift implementation
+and to manage it. When we started to implement this we found a lot of inconvenience like our code duplicate a lot of
+application code, we cannot implement the discovery protocol, and again our kernel implementation should have been like
+a multicast-UDP.
+
+This approach also couldn't be implemented because of the complexity of the transport layer management, moreover we
+didn't find strengths to confirm that our implementation could be better than original implementation.
\ No newline at end of file
--- /dev/null
+%\section{\fontfamily{phv}\selectfont{\large{\bfseries{SUMMARY}}}}
+
+The \emph{swift} protocol is a multiparty content-centric protocol that aims to disseminate content among a swarm of
+peers. This paper proposes an approach for the optimization of the currently \emph{swift} protocol. The integration of
+the communication in the kernel space as a multiparty transport protocol that is solely responsible for getting the
+bits moving improves the over all protocol performance. It ensures maximum efficiency of data transfer by decreasing
+switches between user and kernel space and eliminating some performance penalties due to context switches.
+
+\subsection*{Directions for Future Work}
+
+
+After we complete the implementation and the functional tests, we want to test extensively our new features in a real
+environment. We plan to do stress tests using a cluster. This tests will help us to make an overview about our
+implementation and we could compare with the user-space implementation of the \emph{swift} to determine exactly what
+performance we encountered. If the results are satisfactory, we will continue to optimize our program and we will add
+new features.
+
+It will be very useful to have a real application on top of the \emph{swift} protocol. If not, one solution would be to
+port an application strictly for this task. This would give us the opportunity to extend and refine our implementation,
+and also to extend the library API.
+