# A Brief Review of Multipath TCP for Vehicular Networks
## 2 TCP and MPTCP
### Overview of Multipath TCP  
Nowadays, most user devices have multiple interfaces and server machines are multihomed. Meanwhile, in order to ensure reliability, data center networks utilize extra infrastructures to provide many redundant paths between any two servers. However, conventional single path TCP cannot utilize these multiple paths efficiently due to failing to couple data streams efficiently. To overcome this limitation, multipath TCP (MPTCP) is developed. MPTCP allows the end-hosts to transfer a single data stream through multiple paths. It standardizes and implements a deployable multipath extension to TCP. As shown in Figure 1, the end hosts can transmit data across a number of TCP subflows simultaneously in a MPTCP connection. Before MPTCP, there were many attempts that attempted to transmit data across multiple path simultaneously. For example, the SCTP [3] is a transport layer connection-oriented protocol, which can achieve reliable transmissions. Similar with TCP's three-way handshake, SCTP conducts a four-way handshake to establish the association between two end points. TCP is vulnerable to denial of service (DoS) attacks. However, SCTP can increase security by utilizing the cookie mechanism and is able to better respond to this problem. SCTP supports multi-homing, so that each of its end points can hold multiple IP addresses. Therefore, multiple paths can exist in one SCTP association. However, only the primary path is allowed to transmit data while other paths are for backup use. SCTP combines the advantages of TCP and UDP. Concurrent multipath transfer using SCTP (CMT-SCTP) [24] is an extension of SCTP, which supports multi-path data transmission within a SCTP association. Packets are allocated to different path by round robin (RR) manner in CMT-SCTP. However, this method will bring packet disordering when encountering heterogeneous paths. MPTCP architectural guideline was discussed in [25]. In [26], [PERSON] et al. implemented experiments and showed that MPTCP is able to switch the transmission path between different paths with only a small delay. In January 2013, the Internet Engineering Task Force (IETF) published the MPTCP specification for TCP extensions [4]. MPTCP is mainly designed to achieve three purposes, specifically, improving throughput, being TCP friendly, balancing congestion, and improving resiliency in the event of failure. In both the academic and industrial world, many studies regarding MPTCP were conducted. In MPTCP, each subflow is a standard TCP connection. As illustrated in Figure 2, in the MPTCP connection establishment state, an initial subflow has to be established. Similar with TCP, it also conducts a three-way handshake to initiate an initial subflow. At first, the sender sends the SYN packet that includes the MP_CAPABLE option, sender's key, and flags to the receiver. The MP_CAPABLE option indicates that the sender supports MPTCP and wants to start MPTCP. Then, if the receiver also supports MPTCP, it will reply with a SYN/ACK packet that also includes the MP_CAPABLE option, receiver's key, and flags. Then, the sender replies with a final ACK that includes the MP_CAPABLE option, sender's key, receiver's key and flags, and successfully sets up a MPTCP capable session. However, at the SYN/ACK sending phase, if the receiver does not support MPTCP or does not add a \begin{table}
\begin{tabular}{c c c c c c c} \hline \hline  & **Implementation** & **Type** & **Efficiency** & **RTT Fairness** & **TCP Fairness** & \begin{tabular}{c} **Dynamically** \\ **Adjusting** \\ \end{tabular} \\ \hline CTCP & \begin{tabular}{c} Adding a delay-based \\ component to \\ standard TCP \\ \end{tabular} & Hybrid & High & Yes & Yes & No \\ \hline QTCP & \
\begin{tabular}{c} Sender learn the optimal \\ congestion control \\ according to the network \\ condition \\ \end{tabular} & Learning-based & High & Yes & Yes & Yes \\ \hline TCP-RL &
\begin{tabular}{c} Configuring IW and CC \\ dynamically \\ \end{tabular} & Learning-based & High & Yes & Yes & Yes \\ \hline \hline \end{tabular}
\end{table}