- Research Article
- Open Access
Quality-Aware SCTP in Wireless Networks
© Jen-Yi Pan et al. 2010
- Received: 4 August 2009
- Accepted: 17 February 2010
- Published: 7 April 2010
SCTP (Stream control transmission protocol) is a new transport layer protocol that was published as RFC2960 by IETF (the Internet Engineering Task Force) in October 2000 and amended in RFC4960 in September 2007. SCTP provides reliable ordered and unordered transport services. The congestion control and flow control mechanisms for SCTP are very similar to those for TCP (transmission control protocol). SCTP can apply more than one IP address when establishing associations. SCTP multihoming can support multiple paths in association. These features provide SCTP with some network-level fault tolerance through network address redundancy. SCTP multihoming has tremendous transmission potential. However, SCTP path management is very simple in RFC4960 and therefore cannot effectively distinguish path conditions; it also has no path switch strategy appropriate for wireless networking. These factors all degrade SCTP performance. This study proposes a new path management (quality-aware SCTP) for wireless networks; this includes a new path failure detection method and ICE (idle path congestion window size estimation) mechanism. An experiment using NS2 was performed, showing that quality-aware SCTP can effectively improve the network performance. Quality-aware SCTP is simple and provides a more effective performance than SCTP alone.
- Wireless Network
- Packet Loss
- Packet Transmission
- Transmission Efficiency
- Packet Loss Rate
SCTP is a new transport layer protocol that was published as RFC2960/RFC4960  by the IETF  in October 2000/September 2007. The design was inspired by the PSTN (public switched telephone network). SCTP was originally designed to provide transport services for SS7 signaling messages over IP networks.
SCTP, TCP, and UDP are transport layer protocols in IP (network layer) architecture. SCTP is a connection-oriented transport protocol similar to TCP. The congestion control and flow control mechanisms of SCTP are very similar to those of TCP, including slow start, congestion avoidance, and fast retransmission. Other significant features of SCTP include multihoming, multistream, SACK (selective acknowledgement), and reliable ordered/unordered transmission service.
SCTP supports the multihoming communication scheme. An SCTP association has a broader concept than a TCP connection. SCTP can apply more than one IP address to establish associations, while TCP simply connects two endpoints using addresses and port numbers. The SCTP multihoming feature supports a path transfer to alternative paths without disconnecting, thus providing some network-level fault tolerance.
An SCTP node needs to perform a setup procedure to establish a communication relationship by exchanging state information. This relationship, called an SCTP association, uses a four-way handshake and an extra cookie mechanism for security (to prevent SYN flooding attacks).
Many modern portable devices have multiple network interfaces to communicate with different devices. For instance, many portable computers can use more than one NIC (wireless network interface card) to connect with different wireless/heterogeneous networks.
A portable device transmits data using only one of the interfaces at a time even when it has multiple interfaces. Therefore, selecting a path from associations for transmitting data is a very important issue. SCTP multihoming increases the flexibility of paths and thus improves the transmission efficiency.
An association between two multihoming endpoints creates many paths between them. The path that transmits data is called the primary path; the others are secondary paths and are for alternative paths and fault tolerance. If an error occurs for the primary path and there is a data transmission failure, then the SCTP automatically changes the data transmission path to one of the secondary paths.
A secondary path is simply an alternative path in multihoming, and also named as idle path in the following because of no actual data transmission on it. However, the approach of checking whether the primary path condition is active or inactive influences the timing of the switch to the secondary path.
This study described how to identify the primary path condition and also analyzed the defects of SCTP in path management for wireless networks to propose a new solution termed quality-aware SCTP, which is simple and improves the efficiency of the path selection mechanism. A two-state Markov chain was applied as the loss model to simulate the channel error in a wireless network . Experiments were performed using NS2 , to demonstrate that the proposed solution performs better than the original mechanism at minimizing the degradation of transmission.
The remainder of this study is organized as follows. Section 2 describes related work, and Section 3 introduces SCTP path management; Section 4 then describes the proposed quality-aware SCTP path management. Experimental and simulation results are presented in Section 5. Conclusions are drawn in Section 6.
In transport mobility management, a CN (corresponding node) and an MN (mobile node) may communicate with each other via SCTP. An MN has more than one interface card to connect to different wireless networks. Since the MN has many available network interfaces, the link between the CN and MN has many independent transmission paths (multihoming). The CN can select one of the IP addresses in the MN as the transmission destination to allow different paths for data transmission. Once the CN connects with the MN, one pair of IP addresses is used to establish a link as the primary path for data transmission, while all other possible pairs of IP addresses constitute alternative paths. Thus, the SCTP path measurement mechanism is very important in a wireless network and strongly affects the transmission efficiency.
The condition of a wireless network changes rapidly. Therefore, users have bad surfing experiences if they do not reselect appropriate networks (i.e., communication paths) at the appropriate time. For example, although IEEE 802.11 has a layer-2 expiration, which increases the transmission success rate, it still has a much higher PLR (packet loss rate) in a wireless network than current ethernet standards for a wired network; this is due to unexpected handoffs and signal instability. Weak signal strength, handoff, and noise result in packet loss in a wireless network.
Multihoming can improve network transmission performance . When the primary path fails, SCTP either retransmits data across a secondary path or replaces the primary path. Both approaches decrease the transmission performance.
SCTP has a congestion control mechanism like TCP, and it has a multihoming feature that TCP lacks. Therefore, two factors influence SCTP transmission efficiency: the size of the congestion window size of each transmission path and the active status of each path. Most studies focus on optimizing the congestion window size. Some have proposed various path management strategies [6, 7].
Packet loss in wired networks is mainly the result of network congestion. SCTP congestion control must adjust the congestion window size. Conversely, packet loss in a wireless network is mainly from channel noise or temporary disconnections (e.g., handoffs). If the SCTP congestion control adjusts the congestion window size in wireless network due to other factors instead of network congestion, then performance falls. Huang and Tsai  focused on handover issues while adopting multipath transmission in wireless mobile networks. This paper addressed and resolved three concerns related to path handover: spurious retransmissions, retransmissions of data lost, and reordering problem.
On the other hand, WiSE  applies bottleneck bandwidth estimation techniques to infer whether losses are a result of congestion or radio channel errors. If the packet loss is due to channel errors, WiSE does not adjust the congestion window size. W-A SCTP  determines the reason for packet loss from the packet's label. When the network becomes congested, W-A SCTP labels followup packets with ECN (explicit congestion notification). The reason for packet loss is identified from whether packets have this label.
However, the advantages in the use of multiple wireless interfaces and multihoming will waste without an efficient management of available paths. AISLE  proposes an autonomic mechanism that enables nodes to select the optimum radio interface. The authors evaluated the bottleneck bandwidth to choose the primary path for transmitting data in general conditions that maximize the throughput of multiinterface stations. Nevertheless, AISLE's selection does not reflect transmission error or packet loss. With packet loss in a wireless network, the throughput does not only depend on the bottleneck bandwidth. Thus, our study takes transmission error and packet loss into consideration.
In addition, other factors also affect SCTP transmission efficiency. In SACK , SCTP multihoming leads to stalling due to errors in some cases. Consequently, the error decisions by SACK disturb packet transmission. Stalling dampens transmission efficiency due to unnecessary waiting. Two main conditions lead to stalling: alternative paths that underestimate the RTO (retransmission timeout) value, and the SCTP sender not knowing that the path is active when a network error causes only SACK packet losses.
Besides a reliable transmission service, SCTP provides a partial reliable transmission service that is similar to UDP (user datagram protocol). This partial reliable transmission service is called the Part Reliability extension of the stream control transmission protocol . PR-SCTP  applies partial reliable transmission to transmit SIP messages.
There have been some studies on SCTP focused on improving the applied performance. From the application perspective, using HTTP (hypertext transfer protocol) over the SCTP multistream service reduces the lengthy mean response time that results from TCP's head-of-line blocking problem. Lee et al.  used an analytical model to compare the mean response time of both HTTP over TCP and HTTP over SCTP in wireless networks. Caro et al.  used the multiple fast retransmit algorithm as a retransmission strategy to reduce the number of timeouts to improve the performance. Kim et al.  proposed an efficient file transfer system using the SCTP multiple file transfer and modified SCTP congestion control mechanism to solve the problems such as server overloading due to multiple connection and the HOL (Head-Of-Line) blocking that exists in TCP-based file transfer. These studies mainly focused on using SCTP instead of TCP to improve application performance but were not concerned about the SCTP operation mechanism details that our study addresses.
The original SCTP path management judges a path failure only depending on consecutive transmission timeouts. This simple criterion, however, does not consider packet errors and hence possibly misjudge the path condition in a wireless environment. Furthermore, the SCTP prefers only the primary path, which is default but may not have better transmission efficiency comparing with other paths in the use of multiple wireless interfaces and multihoming. Therefore, we proposed QA-SCTP (quality-aware SCTP) to enhance the SCTP operation mechanism to improve performance.
As stated in the introduction, SCTP multihoming can apply different destination IP addresses to establish independent associations simultaneously. To achieve this, SCTP defines a path management mechanism to ensure that transmission is performed successfully. However, the original mechanism still has some drawbacks for wireless networks that we describe later.
SCTP Original Path Failure Detection Mechanism
When SCTP is initiated, the error count value is zero and the path condition is "active." The counter value is incremented by 1 each time a packet transmission for a path times out. The path condition for "inactive" activates when the counter value exceeds the value of Path_Max_Retrans.
If the transmitter receives the SACK sent by the receiver, then the transmission is successful and the error count returns to zero. The path is then changed from "inactive" to "active."
The counter is incremented by 1 after the heartbeat packet is transmitted in an idle path if the transmitter does not receive a response in time and the path is not "inactive." If error_counter_value >Path_Max_Retrans, then the path status is changed to "inactive."
If the transmitter receives HEARTBEAT-ACK, then the counter value is changed to zero and the path status is changed from "inactive" to "active."
The SCTP original path failure detection mechanism must take continuous packet timeouts to reach the inactive threshold. If a packet transmission includes any packet that is transmitted successfully before reaching the inactive threshold, then the error count is reset to zero. This mechanism, which is called the single sampling mechanism, easily detects a single failure that occurs occasionally, such as network outage. This mechanism can only detect continuous long-term path errors.
The time required to deactivate a path is more than s (when Path_Max_Retrans = 5 and RTO = 2 s) . If packet transmission is successful during this period, then the error count is cleared and the process takes more than 62 s.
When the path error type is a short-term error with high frequency, the existing SCTP mechanism cannot work successfully. This causes erroneous path condition estimates for the wireless network.
4.1. Path Condition Measurement
The path condition measurement mechanism monitors every path's transmission condition to provide additional path information for path switching. The mechanism has three parts: the original SCTP's heartbeat to measure the basic facets of the path condition, a smart path failure detection method, and path quality estimation.
4.1.1. Smart Path Failure Detection Method
The proposed method counts the number of timeouts in a large number of transmissions, which is called the cycle count. In addition, SCTP has a backoff mechanism, in which a packet timeout results in retransmission and double RTO. Therefore, the proposed mechanism distinguishes different levels of timeout just like continuous or random timeouts in the cycle count.
The smart path failure detection mechanism computes the cost of any packet timeout by power weighting and adds this cost to the error counter. The power weighting can emphasize the burst error condition, which often occurs during handoff and briefly impairs transmission conditions. Standard SCTP does not always detect burst errors because they only produce a few errors, meaning that the error counter is not likely to reach the threshold. However, power weighting prevents this situation. If the total value reaches the threshold, then the path is marked "inactive" to prevent it from being further used by SCTP. The error count is returned to zero in two cases: when the path condition reaches the inactive threshold and when the number of successful packet transmissions reaches the count cycle.
4.1.2. Path Quality Estimation
In this part, we propose the ICE (idle path congestion window size estimation) mechanism for probing the path transmission conditions. By comparing the transmission conditions for the primary and secondary paths, the SCTP path management mechanism can choose the stable path with better transmission efficiency.
The path for a multinetwork environment is generally chosen according to bandwidth . For protocols such as SCTP or TCP, the number of transmission packets in the transmission process is determined by the protocol's sliding/congestion window (cwnd). Therefore, measuring the bottleneck bandwidth is not the key point. Even if a high-bandwidth network is applied, it might not be usable since the transmission efficiency is determined by cwnd.
The congestion window size in the SCTP congestion control mechanism is linked to the transmission condition. If the packet times out frequently, then the congestion window size must remain small. The congestion control mechanism can be applied to measure the changing of the congestion window size for the transmission path based on packet losses. Therefore, the efficiency when SCTP uses that path can be derived. Additionally, the SCTP evaluation criteria for path selection must be modified from the bottleneck bandwidth in the network to whether the cwnd size is stable. A more stable path leads to higher transmission efficiency.
However, since SCTP multihoming is built by independent paths connected through different IP addresses, each path has an independent congestion mechanism to control the number of packets. Because packets are transmitted along the primary path, changes in the congestion window size can be detected by directly monitoring the transmission condition of the data packets. Moreover, packets need to be produced and sent along alternative paths to detect changes in the size of each congestion window.
Data packet transmission on idle paths is simulated with the heartbeat mechanism. Heartbeat packets are enlarged to simulate real data packets; their packet type is changed to discriminate data packets for probing, and the sequence numbers of the packets are filled in the idle column. The transmission condition is determined from the packet sequence numbers.
After the idle path transmits a mass idle path congestion window size estimation packet, the changing conditions of the congestion widow size in these paths are estimated from the packet receiving condition.
To prevent too many ICE packets from destroying the overall network condition, they are measured periodically to estimate the changing value of the congestion window size. We set the ICE measurement as periodic in the experiment. The original heartbeat mechanism was applied for the remainder of the time to measure the basic path condition (active/inactive).
4.2. Path Switch Strategy
A better understanding of the path condition makes choosing a suitable path easier. Therefore, more realistic modeling of the path condition can enhance the performance of SCTP. However, standard SCTP only knows the availability of paths (i.e., heartbeat) and not their available bandwidth. Therefore, this study proposes that ICE should obtain the condition of idle paths. ICE can periodically measure the bandwidth with the congestion window method as in ordinary SCTP transmissions and can also model the available bandwidth of alternative paths for times when an alternative path becomes a better choice than the primary path. Knowing the path condition is essential for the quality-aware SCTP path management mechanism. If the path condition is measured inaccurately, then incorrect path switching decisions may be taken. Therefore, obtaining accurate path conditions and reducing the error path information are very important.
4.3. Path Switch Decision
By enhancing the original SCTP, quality-aware SCTP can decide whether to change paths based on known information. The path condition measurement provides every path's transmission condition, and the path switching strategy provides the methodology. When the primary path's condition is unstable or degenerates, quality-aware SCTP transmits data along an alternative path.
We studied the performance of the proposed scheme via simulation by using ns-2.29 and SCTP modules .
5.1. Packet Loss Model for Wireless
Packet losses in wireless networks often result from a user moving out of range of the signal, interference from other signals, or handoff. Wireless channel errors can easily occur due to continuous interference over a short period. For example, data cannot be sent to or from a channel due to continuous interference. Because the random error model does not have the necessary features to simulate this condition in a wireless network simulation, the burst error model was used to ensure that the simulation accurately mirrored real-world situations.
Burst loss in wireless networks can be modeled as a continuous two-state alternating Markov chain. The duration for the good and bad states was independently and identically distributed with an exponential distribution function using the mean G/B [3, 9].
5.2.1. Experiment 1: Quality-Aware SCTP Path Failure Detection Method
The path failure detection mechanism in standard SCTP can only detect continuous long-term errors. Although frequent short-term errors can make the path conditions not good enough for data transmission, this would not be detected by the standard SCTP mechanism. Therefore, standard SCTP can produce erroneous decisions for wireless networks. This study proposes a new path detection mechanism that measures the defects in terms of count cycle. Experiments were performed to test the proposed method.
Parameters of experiment.
Experimental data for quality-aware SCTP path error detection mechanism.
SCTP (RFC4960) switching path or not/throughput (K-bytes)
QA-SCTP switching path or not/throughput (K-bytes)
YES(at 367.94 s)/137.21
YES(at 173.2 s)/216.03
YES(at 168.55 s)/214.37
YES(at 197.671 s)/193.64
YES(at 159.498 s)/216.14
5.2.2. Experiment 2: Impact of Network Condition on Transmission Efficiency
Both TCP and SCTP control congestion by changing the congestion window size to control the quantity of packets being transmitted. In addition, the packet transmission condition affects the size of the congestion window [1, 18]. Therefore, the packet transmission condition (i.e., packet loss rate/network congestion condition) can be used to measure the approximately SCTP packet flow and thus identify the best SCTP path.
This experiment was performed in two parts. Part 1 simulated frequent packet loss, causing the congestion control mechanism to decrease the congestion window size, which degraded the transmission efficiency.
In part 2, the impact of network congestion on both the congestion window size and transmission efficiency was observed. Traffic at a CBR (constant bit rate) was added between Nodes 1 and 2 to simulate the network congestion.
5.2.3. Experiment 3: Quality-Aware SCTP Path Condition Measure/Switch Experiment
Path management in SCTP applies multihoming to select the best path from all paths with the ICE mechanism (QA-SCTP). In the primary path, data packets are used to estimate the condition of path, while measuring packets are actively sent along the secondary path to measure the transmission conditions. The best path for transmitting data is determined from the conditions of the two paths. Experimental results show that the proposed QA-SCTP (quality-aware SCTP) path management mechanism assesses the path condition accurately and changes paths smoothly, thus providing high transmission efficiency.
QA-SCTP path condition measure/switch experiment results list.
Maximum bandwidth in path Path 1; Path 2
Packet error rate Path 1; Path 2
QA-SCTP efficiency (K-bytes)
SCTP (RFC4960) efficiency (K-bytes)
11 MB; 11 MB
299.14 (change path at 134.38 s)
11 MB; 6 MB
255.25 (change path at 133.88 s)
11 MB; 11 MB
311.63 (change path at 131.08 s)
11 MB; 6 MB
263.53 (change path at 130.1 s)
11 MB; 11 MB
331.09 (change path at 133.33 s)
11 MB; 6 MB
288.06 (change path at 134.35 s)
5.2.4. Experiment 4: Dynamic PLR Conditions
QA-SCTP path condition measure/switch experiment data.
0–100 s using path and PLR
100–300 s using path and PLR
300–450 s using path and PLR
450–600 s using path and PLR
Transmission efficiency (K-bytes)
5.2.5. Experiment 5: Dynamic Parallel Congestion Conditions
As shown in Figure 15, the following experiment was performed to demonstrate QA-SCTP actively changing paths in a congested network. Two CBR connections were set up—one between Nodes 1 and 2 (CBR 8 MB at 50–250 s) and another between Nodes 3 and 4 (CBR 3 MB at 70–300 s)—to simulate congestion.
5.2.6. Experiment 6: Dynamic Disjunct Congestion Conditions
Experiment results for QA-SCTP path condition measure/switching.
0–230 s switching path or not /selected path/load
250–400 s switching path or not /selected path/load
Transmission efficiency (K-bytes)
Y/Path 2/ CBR: 3 MB
Y/Path 1/ CBR: 2 MB
N/Path 1/ CBR: 8 MB
N/Path 1/ CBR: 2 MB
The SCTP multihoming method supports multipath association, which enhances network transmission performance. SCTP supports multihoming and develops an original transmission performance. The path failure detection mechanism requires suitable path management in a wireless network. A good path management approach effectively distinguishes path conditions (e.g., active or inactive) and efficiently switches among multiple destination addresses (e.g., active or passive path switching).
The original path management method for SCTP that is defined in RFC4960 is very simple but does not effectively distinguish path conditions (e.g., active or inactive) or efficiently apply multiple destination addresses in wireless networks.
This study proposes a new and effective path management mechanism for wireless networks called quality-aware SCTP. This mechanism uses cycle counting—rather than single counting as in standard SCTP—to detect path failures. Cycle counting improves on the original path failure detection method in a wireless environment because it effectively identifies the path condition. The ICE mechanism in QA-SCTP can effectively estimate the path quality and provides information for path switching decisions. Experimental results under NS2 demonstrated that QA-SCTP performs better than standard SCTP, because it actively switches when the primary path is still active and passively switches when the path condition deteriorates and is inactive.
Other studies use complicated methods to adjust the congestion window size in a wireless environment to increase throughput. This study focuses on effectively identifying path conditions. Effectively identifying the path conditions enables the mechanism to rapidly switch to a secondary path when the primary path has a serious error or is in poor condition. Quality-aware SCTP not only is simple but also improves performance.
The ICE mechanism in QA-SCTP can effectively estimate the path quality but needs to transmit many estimation packets, thus wasting wireless network resources. Further works will include improving the technique for estimating path quality to decrease the number of estimation packets used by the idle path, implementing a prototype of proposed SCTP modification, and further discussion on the effect of mobility in wireless domain.
The authors thank the National Science Council, Taiwan, for partially supporting this research under contract nos. NSC 98-2622-E-194-004-A2, NSC 98-2218-E-194-005, and NSC 98-2218-E-150-006 as well as the anonymous reviewers for their very helpful and constructive criticism. Both Ted Knoy and Editage are also appreciated for their editorial assistances. These supports have enabled them to improve the quality of this work.
- Stewart R-R, et al.: Stream control transmission protocol. IETF RFC 4960, September 2007Google Scholar
- The Internet Engineering Task Force (IETF) http://www.ietf.org/
- Abouzeid AA, Roy S, Azizoglu M: Comprehensive performance analysis of a TCP session over a wireless fading link with queueing. IEEE Transactions on Wireless Communications 2003, 2(2):344-356. 10.1109/TWC.2003.808976View ArticleGoogle Scholar
- The Network Simulator—ns-2 http://www.isi.edu/nsnam/ns
- Ravier T, Brennan R, Curran T: Experimental studies of SCTP Multi-homing. Proceedings of the 1st Joint IEI/IEE Symposium on Telecommunications Systems Research, November 2001, Dublin, IrelandGoogle Scholar
- Fracchia R, Casetti C, Chiasserini C-F, Meo M: A WISE extension of SCTP for wireless networks. Proceedings of IEEE International Conference on Communications (ICC '05), May 2005, Seoul, South Korea 3: 1448-1453.Google Scholar
- Casetti C, Chiasserini C-F, Fracchia R, Meo M: AISLE: autonomic interface SeLEction for wireless users. Proceedings of the International Symposium on a World of Wireless, Mobile and Multimedia Networks (WoWMoM '06), June 2006, Buffalo-Niagara Falls, NY, USA 42-48.Google Scholar
- Huang C-M, Tsai C-H: The handover control mechanism for multi-path transmission using Stream Control Transmission Protocol (SCTP). Computer Communications 2007, 30(17):3239-3256. 10.1016/j.comcom.2007.06.015View ArticleGoogle Scholar
- Ye G, Liu C, Saadawi T, Lee M: Wireless aware SCTP for ad hoc networks. Proceedings of the International Workshop on Heterogeneous Multi-Hop Wireless and Mobile Networks (MHWMN '05), November 2005, Washington, DC, USA 88-95.Google Scholar
- Noonan J, Perry P, Murphy S, Murphy J: Stall and path monitoring issues in SCTP. Proceedings of the 25th IEEE International Conference on Computer Communications (INFOCOM '06), April 2006, Barcelona, Spain 1-9.Google Scholar
- Stewart R, Ramalho M, Xie Q, Tuexen M, Conrad P: SCTP partial reliability extension. IETF RFC 3758, May 2004Google Scholar
- Wang XL, Leung VCM: Applying PR-SCTP to transport SIP traffic. Proceedings of IEEE Global Telecommunications Conference (GLOBECOM '05), December 2005, St. Louis. Mo, USA 2: 776-780.Google Scholar
- Lee Y-J, Atiquzzaman M, Sivagurunathan SK: Mean response time estimation for HTTP over SCTP in wireless environment. Proceedings of IEEE International Conference on Communications (ICC '07), July 2006, Istanbul, Turkey 1: 164-169.Google Scholar
- Caro A, Amer P, Stewart R: Retransmission policies with transport layer multihoming. Proceedings of the 11th IEEE International Conference on Networks( ICON '03), October 2003, Sydney, Australia 255-260.Google Scholar
- Kim H, Kim Y, Kim K, Chung J: High-performance data transfer using SCTP-based compact association scheme. Proceedings of the International Conference on Computational Science and Its Applications (ICCSA '07), August 2007, Kuala Lumpur, Malaysia 389-395.Google Scholar
- Funasaka J, Ishida K, Obata H, Jutori Y: A study on primary path switching strategy of SCTP. Proceedings of the International Symposium on Autonomous Decentralized Systems (ISADS '05), April 2005, Chengdu, China 536-541.Google Scholar
- The NS-2 SCTP module documentation and source code http://www.armandocaro.net/software/ns2sctp/
- Pastor J: Transmission control protocol. IETF RFC793, September 1981Google Scholar
This article is published under license to BioMed Central Ltd. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.