Académique Documents
Professionnel Documents
Culture Documents
Computer Networks
journal homepage: www.elsevier.com/locate/comnet
a r t i c l e i n f o a b s t r a c t
Article history: With the advent of SDN technologies, fine-granular steering and dynamic controlling of network flows
Received 16 July 2017 can be possible. Such features can be appropriately utilized to enhance the network performance. In
Revised 9 March 2018
this paper, we present a composite system-level implementation framework for aggregation and splitting
Accepted 21 March 2018
of TCP flows. Our framework is featured to work in an end-user agnostic manner that doesn’t involve
Available online 21 March 2018
intervention or modification from the end-user.
Keywords: While most existing works are focused either on aggregation-only or split-only frameworks, we pro-
TCP pose a more practical ‘join-and-split’ working prototype using SDN. To the best of our knowledge, for the
SDN first time, we implement a composite join-and-split TCP architecture that uses efficient mechanisms to
Flow aggregation and splitting synchronize different join and split network points. We have used a ‘linked-ACK’ mechanism to preserve
Implementation framework the end-to-end semantics of flows that are separated by the join and split network points. With extensive
Performance evaluation study
performance evaluation study, we show the improved performance achieved by our framework in both
wired and wireless environments. We describe the implementation of aggregation/splitting of TCP flows
intuitively through state diagram. We are hopeful that this paper serves as system-level guide for the
research community.
© 2018 Elsevier B.V. All rights reserved.
https://doi.org/10.1016/j.comnet.2018.03.022
1389-1286/© 2018 Elsevier B.V. All rights reserved.
W. Guo et al. / Computer Networks 137 (2018) 160–172 161
a seamless manner without user interference. The aggregated flow 2. Related work
must be routed between the join and the split points of the net-
work in a user agnostic manner. A few recent studies have focused on improving the TCP
Our framework maintains synchronized TCP session states be- throughput performance through the technique of combining dif-
tween the clients-to-join part of the flows, and the associated split- ferent flows in the network. In [8], the authors with the help
point-to-server part of the flows. TCP connections carry state infor- of simulation experiments improve the smart grid meters’ traffic
mation in the form of TCP options that are negotiated during the through a flow-aggregation framework. Along similar lines, in a
connection setup time [4], such as enabling selected ACK, enabling LTE-based wireless smart grid scenario [9], we showed that with
timestamp, and in the case of multipath TCP enabling MPTCP [5]. appropriate TCP aggregation and scheduling, fairness among the
These options (when not suitably taken care of) are lost when the TCP flows can be achieved (in addition to obtaining improved
TCP flows are modified during aggregation or splitting. In this pa- throughput performance).
per, we enable the SDN controller to perform Deep Packet Inspec- In a different work [10], we proposed an integration of IoT-
tion (DPI) [6] on each SYN segments from clients, parse TCP op- based MQTT messages at the edge switches (known as fog nodes)
tions information, and synchronize this learnt information to the for achieving improved delivery performance. The aforementioned
split TCP point (proxy) node. This split-proxy node then establishes works in common support the logic of simple flow-aggregation
a (fake) TCP connection to the server with same options as re- frameworks that cannot be non-trivially extended and applied to
quired by the client. generic network scenarios that involve both flow joining and flow
The two proxy points in the network divide the TCP flows splitting. In a different work [11], we proposed split-only frame-
into three non-overlapping independent flows. These separated work that separates each flows into a chain of two flows with first
flows will have different throughputs, and unless properly han- flow providing a congestion-free wireless transport, and the sec-
dled would break the end-to-end flow semantics [7]. In this work, ond (part of the) wired-network flow providing regular congestion
we propose a new concept of Linked-ACK, wherein the ACKs of based TCP transport.
server side flows are sent along the path from the server to the Unlike the existing works that independently address either
client. Therefore, the clients receive ACKs only when the packet is aggregation-only [9] or split-only [11] TCP frameworks, in this pa-
received at the server. The Linked-ACK mechanism therefore can per, we propose a unified join-and-split TCP framework that pro-
help in maintaining the end-to-end flow semantics. In addition, the vides an effective information synchronization capabilities between
Linked-ACK limits the total buffered data proportional to the maxi- the join and fork proxy points in the network. This feature enables
mum (sender) congestion window size of the corresponding flows. aggregation and split functionality to work at different points of
In this manner, the buffers of the join and split proxy nodes are the same network.
protected from a potential overflow. Works such as [12–14] exploit the idea of preserving end-to-
While a number of recent works have attempted to improve end semantics of flows by caching the ACK segments, with the help
TCP performance by tuning the server-side TCP parameters, our of proxy nodes. However, they do not focus on aggregating multi-
framework provides the designers more control to fine-tune the ple TCP flows. On the other hand, MPTCP flow-based ‘proxy’ frame-
TCP flow and achieve better performance. Thanks to SDN technolo- work has been proposed in [15]. However, this work did not pro-
gies, with the help of SDN controller we can provide global view vide the details of preserving end-to-end semantics in the MPTCP
and control of the network information which can be appropriately proxy. We in this paper integrate the MPTCP proxy into our ‘join-
utilized to improve the network performance. For instance, to sup- and-split’ framework along with a concept of Linked-ACK to main-
port Multi-Path TCP (MPTCP), end-users are required to upgrade to tain the TCP end-to-end semantics.
a compatible kernel-code. On the other hand, our framework facil- Flow aggregation techniques as such in SDN are addressed in
itates the ‘join’ proxy to be used as MPTCP proxy point and help the literature from a different flow management perspective. To re-
the end-users to benefit from the advantages of MPTCP without duce the installation of flow rules in the switches, studies have en-
modifying end-user side kernel codes. We believe this will provide couraged the use of flow aggregation. To name a few, Zhang et al.
a flexible and scalable solution for the legacy systems in the net- [16], Mizuyama et al. [17], and Kosugiyama et al. [18] have encour-
work. aged flow aggregation for efficient SDN operation. The Zhang et al.
In summary, the main contributions of this work are as follows: [16] work identifies flows affected by link failures in the network,
and aggregates them and send the aggregated flow through a local
1. Develop and implement a novel ‘join and split’ TCP framework reroute path so as to reduce the flow management operations in
based on SDN that seamlessly joins and splits TCP flows to the SDN.
achieve better performance. The SDN control information linearly increases with the num-
2. Linked-ACK concept is proposed and implemented to maintain ber of flows which severly limits the performance in a wireless
the TCP end-to-end semantics, and also control the buffer usage network scenario. To combat this scenario, the authors in [17] use
of the proxy network points. flow aggregation to reduce the SDN control traffic. The authors
3. Provide a platform to offload TCP fine tuning from clients and in [18] propose a heuristic algorithm for composition and aggre-
servers to ‘join and split’ proxy points, for better controllability. gation of flows in order to minimize end-to-end delay of flows.
All of these work do not show how an aggregation is performed
The remainder of this paper is organized as follows. in a real experiment, and also do not provide the necessary infor-
Section 2 discusses some of the related works and positions mation of splitting them at the server-side of the network. On the
our work with respect to the state-of-the-art. In Section 3, we other hand, the aggregation is performed only for the benefit of
provide the system model that we use throughout the paper. In SDN operations. However, we demonstrate the benefit of flow ag-
Section 4, we provide our SDN-based join and split framework gregation/and split for the benefit of clients (by ensuring through-
with Linked-ACK. Section 5 discusses our performance evaluation put fairness and improved throughput performance).
results done on different application scenarios such as wireless
client, and MPTCP applications. In this section, we also describe 3. System design and implementation
the working of fairness integrated framework that is used to
enable fairness among the network flows. Finally, we conclude our Fig. 1 shows the system model used throughout the paper.
work with future directions in Section 7. Each switch is considered to support SDN’s OpenFlow protocol.
162 W. Guo et al. / Computer Networks 137 (2018) 160–172
Step2:
1) Generate new Unique ID (UID) of C1 to S
2) Generate new Source Transport (NSrcPort) of C1 to S
Proxy1 Proxy2
client1
Step3: Step5:
1) Get UID by matching source IP and port 1) Get UID, length, data by parsing packets
2) construct new packet UID+length+data 2) Get Socket by matching UID
3) Create Socket with NSrcPort if Socket is NULL
4) Send(Socket, data, length)
Proxy1 Proxy2
Step2: Step6:
c1 to Proxy1 Proxy2 to s
Step4:
Step1: Proxy1 to Proxy2 Step7:
c1 to s UID+length+data c1 to s
the specific fields of data link layer, network layer, and transport of the resultant split flows will have its own TCP congestion state,
layer of the incoming flow from the client. This modified TCP flow and throughput rate. Assuming the client is sending data at a con-
can be accepted by the TCP server of join-proxy and vice versa. In stant rate, the join-proxy maintains a buffer to store the received
a similar way, another fake TCP connection is established between data from the client. While a larger buffer size is expensive, a small
split-proxy and the server. This TCP connection fakes the TCP client buffer size on the other hand negatively impacts with a reduced
information (which typically comes with an arbitrary source port TCP throughput.
number assigned by the client’s OS). It is worthwhile to note that Our proposed ‘Linked-ACK’ provides a better solution, and
the TCP flow from split-proxy to the server with random source bounds the buffer to a finite size. For brevity, let us repre-
port can’t be associated with the client information in the SDN sent the different ACK messages along a server-client network
controller. Therefore, split-proxy starts the TCP connection with a path as follows: (i) The ACK message ‘from server to split-proxy’
given source port NSrcPort for SDN controller to retrieve client in- be represented as ACK_split, the ACK message from ‘split-proxy
formation. to join proxy’ be represented as ACK_join, and the ACK mes-
After the flow tables are configured, the join-proxy receives sage from ‘join-proxy to client’ be represented as ACK_client. Our
data from clients and retrieves the UID and the client’s informa- ‘Linked-ACK’ framework operates in a lock-step fashion wherein
tion (i.e., source IP address, and port number). Then it constructs a the ACK_join is not released until its associated ACK_split packet
new packet containing the following application layer information: is released. In a similar way, an ACK_client is received only
“UID+length+data”, where ‘length’ is the total length of the con- upon the release of its associated ACK_join. We customize the
structed packet). Split-proxy point retrieves the UID and data, and standard OpenFlow protocol, and add the following four actions:
pushes the data to a pre-established socket, as shown as Fig. 3. caching ACK_join, caching ACK_client, release ACK_join, and release
We consider a 2-Byte UID thereby supporting a maximum of ACK_client. The modified flow table entries for routing the ACK
65, 532 concurrent TCP flows, and use ‘source IP and port-number’ packets are shown in step1 and step2 in Fig. 4. The ACK_client is
information to identify these flows. The TCP flows that come with cached (instead of being released) after the fake TCP connection is
different TCP options should be handled appropriately at the split- established on the switch-1. This fake TCP connection directly con-
proxy node. With the help of SDN technologies, we can perform nects to the join-proxy node. In a similar way, ACK_join is cached
deep-packet inspection on these packets, and forward the neces- on the switch-2.
sary TCP header configuration information to the split-proxy. The The ACK_join, and the ACK_client are stored in a FIFO queue
split-proxy point can then establish a TCP flow with same con- data structure, with an exception to the SYN+ACK segment which
figuration as if it was an original client exchanging packets with will be released immediately to complete the three-way hand-
the server (hence the name ‘proxy’ points). The SDN controller shake. To guarantee that no ACK segments are lost, the length of
is capable to inspect the application-layer information over TCP. the FIFO queue is set to a size larger than the sender’s total conges-
Therefore, by extending application layer functionality, our system tion window (CWND) size. Even when sender-side CWND is large,
(in future) can also support application-layer join and split frame- our approach works due to the TCP’s ‘cumulative ACK’ mechanism
works. wherein one ACK message represents the summary of received in-
order bytes.
4.2. Preserving end-to-end flow semantics with ‘Linked-ACK’ The Algorithm 1 describes the release of ACK-join segment on
split proxy node to the join proxy node. We maintain an aggre-
In this section, we describe the “Linked-ACK” framework that gated ACK (namely, aggregateACK) for all TCP-split segments. This
we have developed to maintain the end-to-end semantics of the is done because the delayed ACK has to combine several ACK re-
flows. As the TCP flow is split into 3 independent TCP flows, each
164 W. Guo et al. / Computer Networks 137 (2018) 160–172
switch1 switch2
Proxy1 to c1
Proxy1 to c2 Proxy2 to Proxy1
Enqueue Enqueue
Proxy1 to c3 If(SYN==1) skip
If(SYN==1) skip
Release ACK_Client Release ACK_Join
s to c1
Aggregated ACK s to c2
Join ACK - extra ACK s to c3
+ extra ACK
If(SYN==1) skip
Algorithm 1 Release ACK function that runs on the split-proxy ference: the added extra ACK has to be removed to tally extra
node. (UID+length) data cached in the join-proxy node.
1: increasedACK_join += IncreasedACKValue(ACK_split)
2: aggregateACK += extraACK(ACK_split)
3: while true do 4.3. Linked-ACK framework based TCP state machine
4: if increasedACK_join > aggregateACK then
5: return Fig. 5 shows the extended TCP state diagram with Linked-ACK
6: end if implemented on the join-proxy node. The traditional TCP state di-
7: aggregateACK -= increasedACK_join agram [20] describes the different states of a TCP sender/receiver.
8: pop and send ACK_join On the other hand, our extended state diagram in Fig. 5 de-
9: end while scribes the TCP sender and TCP receiver inside the join-proxy
node. In the join proxy node, the TCP receiver (server) receives TCP
segments from end host (clients). An application aggregates TCP
flows, and buffers the received segments and generated ACK mes-
sages, on the respective data and ACK buffers. A TCP sender in the
sponses together into a single response. As TCP uses the cumula- join-proxy node maintains a connection with the TCP split proxy
tive ACKs, our ‘Linked-ACK’ releases ACKs based on the increased node. Fig. 5 shows the exchange of data and ACK segments be-
ACK value, not on the number of ACK segments. To this end, the tween senders and receivers. In addition to the traditional states,
IncreasedACKValue() function returns the increased ACK value by the following extra states are used: i) PROXY RECEIVER ESTAB-
comparing ACK values with the previous ACKs. For a corner case, LISHED, ii) PROXY SENDER ESTABLISHED, iii) DATA_BUFFERED, iv)
this function returns 0 if the ACK number is 0, which is caused by RECEIVER_RCVD, v) SENDER_SENT, AND vi) ACK_BUFFERED.
SYN or RST flag. In PROXY RECEIVER ESTABLISHED state, the TCP server accepts
The extra information such as UID and length which is attached TCP connections from end-host clients. In the RECEIVER_RCVD
to the data message has to be taken into account in the byte-count state the received data from the clients are pushed into a buffer,
of ACK_join. Therefore, a function called extraACK() adds an extra and the TCP server transitions to DATA_BUFFERED state. TCP sender
ACK value to the aggregated ACK. Subsequently, by using a loop in DATA_BUFFERED state reads data from the buffer that are fed
this algorithm keeps checking for an increased ACK value in the by the receivers. In PROXY RECEIVER ESTABLISHED state, when
ACK_join message stored in a queue. If ACK_join has smaller in- ACK_split message is received from the split proxy node, the join
creased ACK value than the aggregated ACK segment, the ACK-join proxy node’s TCP receiver transitions to ACK_BUFFERED state and
is dequeued and sent to the join-proxy. releases the buffered ACK_join messages to the appropriate re-
The release ACK_Client function which runs on join-proxy ceivers. To guarantee that no data segments are lost in the buffer,
nodes works in a similar fashion. This function releases the ACK- the minimum buffer size is set to the maximum receiver CWND
client messages to the clients. However, with the following dif- size.
W. Guo et al. / Computer Networks 137 (2018) 160–172 165
starng point
appl: passive open
LISTEN CLOSED
send: SYN
appl: acve open
appl:close or meout
rcvd: SYN; SYN_SENT
send: SYN,ACK
rcvd: SYN,ACK;
SYN_RCVD send: ACK
send: FIN
appl: close
rcvd: FIN
PROXY SENDER ESTABLISHED
send: ACK
rcvd: ACK;
send: <nothing>
rcvd: FIN
PROXY RECEIVER ESTABLISHED CLOSE_WAIT
send: ACK
send: FIN send: FIN
appl:new ACK_split received
appl: release ACK_join
rcvd: ACK_split
appl: release ack_join
ACK_BUFFERED
appl: released
Transions for join proxy-node's TCP client toward split proxy node
Transions for join proxy node’s TCP server serving end-host TCP clients
appl: Acons performed by the applicaon
send: Segment is sent
rcvd: Segment is received
·106
client
150
Split-proxy
1 100
50
0.5
client 0
0 server
0 5 10 15 20 25 30
0 5 10 15 20 25 30 Time (in secs)
Time (in secs) Fig. 9. Linked-ACK client congestion window size and two proxies queue size. The
queue size of each proxy is always smaller than the congestion window size.
Fig. 7. Linked-ACK throughput of the client to the join-proxy (shown as client), the
split-proxy to the server (shown as server). These two flows synchronized by our
‘Linked-ACK’ framework.
5.3. Proxy buffer analysis
Map Map
Client Info UID UID Client Info
WFQ
Proxy1 Proxy2
client1
Forwarding Forwarding
client1 server
switch1 switch2
Fig. 10. Schematic diagram showing the flow of data segments between clients and server in our Proposed network framework with flow aggregation using Weighted Fair
Queue (WFQ).
Proxy1 Proxy2
client1
Forwarding Forwarding
client1
Fake TCP Connecon
Aggregate
Fake TCP
&
Release Connecon
Release
client1 server
switch1 switch2
Fig. 11. Schematic diagram showing the flow of ACK segments between clients and server in our Proposed network framework with flow aggregation using Weighted Fair
Queue (WFQ).
·105 ·105
8 client1 client1
6
Throughput in Bytes/s
Throughput in Bytes/s
client2 client2
client3 client3
6
4
4
2
2
0 0
0 5 10 15 20 25 30 0 5 10 15 20 25 30
Time (in secs) Time (in secs)
Fig. 12. Throughput performance of three TCP clients’ flows in a traditional frame- Fig. 13. Throughput performance of three TCP flows in a framework with Weighted
work with no aggregation and split proxy nodes. Round Robin data structure based proxy aggregation node.
168 W. Guo et al. / Computer Networks 137 (2018) 160–172
·106
1
client1
Throughput in Bytes/s
0.8 client2
Fairness index
6 client3
0.6 UDP
4
0.4
2
0.2 Proposed with WRR
Regular TCP
0 0
0 5 10 15 20 25 30
Time (in secs) 0 5 10 15 20 25 30
Fig. 14. Jain’s fairness index ranges from 1/3 to 1. Weighted Round Robin (WRR) Time (in secs)
application provides better fairness than the regular counterpart.
Fig. 16. Throughput performance of three TCP flows in the presence of UDP back-
ground flow using our proposed flow aggregation and split framework. Background
·106 traffic is added at time T = 15 s.
client1
Throughput in Bytes/s
6 client2 1
client3
UDP
0.8
Fairness index
4
0.6
2
0.4
·106 ·106
3 client1 2 Proxy
Throughput in Bytes/s
Throughput in Bytes/s
client2 No proxy
client3
2 1.5
1
1
0.5
0
0
0 20 40 60 80 100 120 140 0 20 40 60 80
Time (in secs) Time (in secs)
Fig. 18. Throughput performance of dynamic addition/removal of TCP flows in our Fig. 19. TCP throughput performance in a wireless network environment.
proposed flow aggregation and split framework. Client2 flow arrives at time T =
20 s, and client3 arrives time T = 40 s. Client 1 and client 2 leave the network at
respective times of T = 100 s and T = 130 s. 150
TCP delay in milliseconds
5.5. Wireless application
[10] Y. Xu, V. Mahendran, S. Radhakrishnan, Towards SDN-based fog computing: [17] K. Mizuyama, Y. Taenaka, K. Tsukamoto, Estimation based adaptable flow ag-
MQTT broker virtualization for effective and reliable delivery, in: COMSNETS gregation method for reducing control traffic on software defined wireless
’16: Proceedings of the 8th International Conference on Communication Sys- networks, in: PerCom Workshops ’17: Proceedings of the IEEE International
tems and Networks, 2016, pp. 1–6. Conference on Pervasive Computing and Communications Workshops, 2017,
[11] W. Guo, V. Mahendran, S. Radhakrishnan, Improved video throughput and re- pp. 363–368.
duced gaming delay in WLAN through seamless SDN-based traffic steering, [18] T. Kosugiyama, K. Tanabe, H. Nakayama, T. Hayashi, K. Yamaoka, A flow aggre-
CCNC ’17: Proceedings of the IEEE Consumer Communications and Network- gation method based on end-to-end delay in SDN, in: ICC ’17: Proceedings of
ing Conference, 2017, pp. 1–4. the IEEE International Conference on Communications, 2017, pp. 1–6.
[12] I. Moiseenko, D. Oran, TCP/ICN: Carrying TCP over content centric and named [19] W. Guo, V. Mahendran, S. Radhakrishnan, End-user agnostic join and fork
data networks, in: ACM-ICN ’16: Proceedings of the 3rd ACM Conference on framework for TCP flows in SDN, CCNC Demo ’17: Proceedings of the IEEE Con-
Information-Centric Networking, 2016, pp. 112–121. sumer Communications and Networking Conference, 2017, pp. 616–617.
[13] G. Hasegawa, M. Nakata, H. Nakano, Receiver-based ACK splitting mechanism [20] RFC 793 - transmission control protocol - protocol specification, 1981, (https:
for TCP over wired/wireless heterogeneous networks, IEICE Trans. Commun. //tools.ietf.org/html/rfc793).
E90-B (5) (2007) 1132–1141. [21] Mininet virtual network emulation environment, 2018, Last accessed: 7
[14] J. Navarro-Ortiz, P. Ameigeiras, J.J. Ramos-Munoz, J. Lopez-Soler, Removing re- March(http://mininet.org).
dundant TCP functionalities in wired-cum-wireless networks with IEEE 802.11e [22] Project floodlight, 2018, Last accessed: 7 March 2018, (http://projectfloodlight.
HCCA support, Int. J. Commun. Syst. 27 (11) (2014) 3352–3367. org/floodlight/).
[15] T. Klein, H. Georg, Mptcp proxies and anchors, 2012, (https://tools.ietf.org/ [23] MultiPath TCP Project, Last accessed: 7 March 2018, (http://multipath-tcp.org).
html/drafthampelmptcpproxiesanchors00). [24] J. Padhye, V. Firoiu, D. Towsley, J. Kurose, Modeling TCP throughput: A Simple
[16] X. Zhang, Z. Cheng, R. Lin, L. He, S. Yu, H. Luo, Local fast reroute with flow model and its empirical validation, SIGCOMM Comput. Commun. Rev. 28 (4)
aggregation in software defined networks, IEEE Commun. Lett. 21 (4) (2017) (1998) 303–314.
785–788. [25] W. Li, F. Lin, G. Sun, SDIG: Toward software-defined ipsec gateway, in: ICNP
’16: Proceedings of the International Conference on Network Protocols, 2016,
pp. 1–8.
172 W. Guo et al. / Computer Networks 137 (2018) 160–172
Wei Guo received his Ph. D. degree in Computer Science from the University of Oklahoma, USA in 2017. He received his Masters degree in Computer
Science from Beijing University of Posts and Telecommunications (BUPT), Beijing, China in 2013. His research interests include Software-Defined
Networks (SDNs), data center networks, and network security.
V. Mahendran is an Assistant Professor in the department of computer science and engineering at the Indian Institute of Technology Tirupati, India.
He obtained his Ph.D., degree in Computer Science and Engineering from the Indian Institute of Technology Madras in 2013. He received his B.E.
degree in Computer Science and Engineering from the Periyar University, India, in 2002 and M.E. degree in Embedded System Technologies from
College of Engineering, Guindy (CEG), Anna University, India, in 2007. His research interests include Software- Defined Networks, RFID Systems,
Delay-Tolerant Networks, and Mobile Ad-hoc Networks.
Sridhar Radhakrishnan is a Professor in the School of Computer Science at the University of Oklahoma, which he joined in 1990. He received
his Ph.D. in Computer Science from Louisiana State University in 1990. He received his undergraduate degrees from Vivekananda College, Chennai,
India and from University of South Alabama, Mobile, Alabama. His research interest is in the design of protocols for broadband, wireless and mobile
networks. He has published many research articles in journals, conference proceedings, and book chapters.