XCP-Winf and RCP-Winf : Improving Explicit Wireless Congestion Control

Congestion control in wireless networks is strongly dependent on the dynamics and instability of wireless links. Therefore, it is very difficult to accurately evaluate the characteristics of the wireless links. It is known that TCP experiences serious performance degradation problems inwireless networks.Moreover, congestion controlmechanisms that rely onnetwork interaction andnetwork parameters, such as XCP and RCP, do not evaluate accurately the capacity and available link bandwidth in wireless networks. In this paper we propose new explicit flow control protocols for wireless mesh networks, based on XCP and RCP. We name these protocols XCP-Winf and RCP-Winf. They rely on the MAC layer information gathered by a new method to accurately estimate the available bandwidth and the path capacity over a wireless network path. The estimation is performed in real time and without the need to intrusively inject packets in the network. These new congestion control mechanisms are evaluated in different scenarios in wireless mesh and ad hoc networks and compared against several new approaches for wireless congestion control. It is shown that both XCP-Winf and RCP-Winf outperform the evaluated approaches, showing its stable behavior and better channel utilization.


Introduction
Reliable transport protocols such as TCP were developed to perform well in traditional wired networks where packet losses occur mostly because of congestion [1].However, networks with wireless and other lossy links also suffer from significant losses due to bit errors and handoffs.TCP responds to the losses by invoking congestion control and avoidance algorithms.This results in degraded end-to-end performance in wireless systems and networks [2].
Recent efforts to design better congestion control have led to the origin of several explicit-feedback congestion control methods.These methods solicit active multibyte feedback from the routers to the end-hosts, delivering a precise and timely congestion signal that is used to accurately adjust flow sending rates.Therefore, they aim to achieve faster convergence, smaller packet loss rate, high link utilization, and better fairness between flows.Examples of these congestion control mechanisms that rely on network interaction are the explicit control protocol (XCP) [3] and the rate control protocol (RCP) [4].Their main purpose is to generalize explicit congestion notification, where nodes inform each other about the degree of congestion.XCP decouples channel utilization from fairness control and requires the efficient estimation of the aggregate traffic behavior, that is, both available bandwidth and link capacity.RCP is a congestion control algorithm whose main key is to finish the flows as fast as possible.RCP dynamically updates the rate assigned to the flows, approximating a processor sharing in the presence of feedback.Although the support of explicit congestion control and network interaction is expected to lead to a more efficient congestion control in shared medium systems, such as wireless mesh and ad hoc networks, we have shown in [5] that this is not the case, since they are incapable of predicting effectively capacity in wireless networks, and also that they are not efficient and fair.This is due to the fact that the available capacity at a wireless link depends on the link rates at the neighboring edges.Ignoring this dependence will overestimate the available capacity and lead to poor performance and to instability.We believe that estimating the exact capacity of a link as a function of the link rates at the neighboring edges would provide accurate XCP-and RCP-like scheme to be implemented for wireless multihop networks.
To support efficiency and stability of wireless networks, it is crucial to develop a congestion control scheme which provides efficient and accurate sharing of the underlying network 2 Journal of Computer Networks and Communications capacity among multiple competing applications.Factors such as handoffs, channel allocation, and channel quality are directly related to link capacity.Being able to accurately monitor link capacity and available bandwidth and then use that information to perform accurate congestion control is a main challenge in wireless communications.In [6] we proposed the rt-Winf algorithm, which is a new wireless inference mechanism, based on IdleGap [7], that is able to estimate available bandwidth and path capacity.rt-Winf uses the information included in RTS/CTS packets to measure the transmission time and obtain the link capacity and available bandwidth.
In this paper we describe XCP-Winf and RCP-Winf, two new congestion control mechanisms based, respectively, on XCP and RCP, that are extended with the support of an accurate capacity and available bandwidth computation algorithm.The link capacity and available bandwidth obtained through rt-Winf are transmitted, through cross layer techniques, to XCP and RCP that use that information in their native congestion control techniques.We show how new XCP-Winf and RCP-Winf functions can be built with this new information.The proposed congestion control approaches are evaluated in different simulated scenarios, mesh and ad hoc, and are evaluated against state-of-the-art congestion control mechanisms.The obtained results show that the integration of rt-Winf allows clear improvement of XCP and RCP network performance against standard congestion control protocols and also against specific congestion protocols for wireless environments.
In [8] we presented a base version of both XCP-Winf and RCP-Winf with preliminary results.In this paper we present a complete proposal: (1) we present the rt-Winf approach with an evaluation through simulation and emulation in CMU wireless emulator [9]; (2) we describe and refine the conceptual approach of both XCP-Winf and RCP-Winf, with a new mathematical model; (3) we perform a complete evaluation of the congestion control approaches compared against state-of-the-art approaches such as XCP-b [10] and TCP-AP (TCP with adaptive pacing) [11]; (4) we complete the evaluation with the assessment of both XCP-Winf and RCP-Winf in terms of TCP-friendliness.
The remaining of this paper is organized as follows.Next section, Section 2, briefly presents the background and related work.Then, Section 3 describes the rt-Winf algorithm and rt-Winf obtained results.In Section 4, how rt-Winf is integrated within both XCP and RCP is presented.Section 5 describes and discusses the results obtained through simulation, using mesh and ad hoc scenarios with different characteristics.Finally, Section 6 presents the conclusions and future work.

Capacity and Available Bandwidth Estimation. AdHoc
Probe [12], WBest [13], TSProbe [14], and IdleGap [7] are some examples of link estimation mechanisms for wireless networks.While WBest calculates both capacity and available bandwidth, AdHoc Probe provides only the path capacity of the wireless channel.However, WBest is known to be very intrusive when estimating the available bandwidth.TSProbe [14] is a new capacity estimation tool based on AdHoc Probe, but it is focused on time-slotted connections such as bluetooth or WIMAX.TSProbe uses the interaction between several link layer properties to deploy an adaptive probing scheme that utilizes payloads that vary in size.While accurate in time-slotted connections, it lacks efficiency in dynamic wireless environments.
IdleGap takes into consideration the CSMA collision avoidance (CSMA-CA) scheme of wireless networks to obtain its available bandwidth.The idle nodes, which are waiting to transmit, use the network allocation vector (NAV) [15], which shows how long other nodes allocate the link in the IEEE 802.11MAC protocol.The idle time in the wireless network can then be estimated from the NAV information.
All the presented mechanisms were defined with the main purpose of only estimating available bandwidth and link capacity in specific network conditions.Some mechanisms can only estimate available bandwidth and others only estimate link capacity.In a wireless network environment, it is important to have a tool that can retrieve an accurate estimation of the busy time and the total elapsed time between communications.It is also important to have a mechanism that uses not only source information but also receiver information, as this is the only way to have a precise network status.It is therefore important to introduce the concept of network cooperation in network estimation tools.Another important issue is the effective calculation of the actual data rate that is used by each communication process.

Congestion Control.
The transmission control protocol (TCP) [16] is the most used congestion control protocol in computer networks.However, TCP assumes that the probability of a lost packet is higher than the one of a corrupted packet [17], which is not true in wireless networks.Several congestion control mechanisms were proposed to enhance TCP's behavior in a wireless environment.Mechanisms like TCP-F [18], TCP-ELFN [19], TCP-BuS [20], and ATCP [21] represent some examples of protocols for wireless networks in general.They concentrate on improving TCP's throughput by freezing TCP's congestion control algorithm during linkfailure induced losses, especially when route changes occur.These TCP developments differ in the manner in which losses are identified and notified to the sender and in their details of freezing TCP's congestion control algorithm.Even though these schemes do not recognize the need of congestion detection and signaling over a neighborhood, their congestion metric implicitly takes some degree of neighborhood congestion into account.
WCP [22] and WCPCap [22] are congestion control mechanisms developed for wireless mesh networks.WCP is AIMD based and, for every flow, the source maintains a rate  which represents the long term sending rate for the flow.The main issue of WCP is that it does not correctly evaluate the available rate, making an assumption that all links have equal rate.WCPCap estimates the available capacity within each neighborhood and distributes this capacity to contending flows, using a distributed rate controller.Available capacity in WCPCap is obtained through an analytical model presented in [23], which lacks sender and receiver node cooperation.Moreover, it does not take into consideration all the factors that influence the network dynamics, thus leading to inaccurate and overestimated values.New mechanisms like imTCP (in-line measurement TCP) [24] and TCP-AP (TCP with adaptive pacing) [11] have been proposed.ImTCP introduces a new bandwidth measurement algorithm that can perform in-line measurements.The available bandwidth estimation results from the arrival intervals of ACKs packets.However, these intervals in dynamic wireless environments can suffer high variation, thus introducing lack of accuracy.Another important drawback of imTCP is that it can only estimate available bandwidth.TCP-AP was developed taking only into consideration multihop wireless environments.A TCP-AP sender adapts its transmission rate using an estimate of the 4-hop propagation delay and the coefficient of variation of recently measured round-trip times, being very conservative, and not using efficiently the medium.
For ad hoc networks, other congestion control techniques were developed, such as TPA (transport protocol for ad hoc networks) [25], COPAS [26], and LRED [27].TPA congestion control mechanism is inspired by TCP, but it is optimized to minimize the number of required packet retransmissions, transmitting blocks using a window-based scheme.As TPA uses blocks on its operation, it can suffer high performance degradation as it does not consider information on link capacity and available bandwidth measurements.COPAS proposes a route selection scheme that attempts to find disjoint paths for different flows by assigning weights to links proportional to the average number of backoffs on the link.COPAS, therefore, needs to use a large amount of network information, thus being very aggressive to the network and requiring a large amount of processing.LRED uses an exponential weighted moving average of the number of retransmissions at the MAC layer as a measure of congestion while marking packets.LRED calculates dropped packets based only on its own perception, which makes LRED behavior inefficient and unstable.
Recent research has recognized the importance of explicitly detect and signal congestion over a network.One example is the explicit wireless congestion control protocol (EWCCP) [28], which identifies the set of flows that share the channel capacity with flows passing through a congested node.EWCCP is, as TCP, an AIMD algorithm based protocol, which lacks the maximization of the network utilization to achieve the highest minimum rate possible.When in more dynamic environments, this is a main issue.
An alternative to AIMD based approaches is schemes in which intermediate routers send explicit and precise feedback to the sources.Examples of such congestion control schemes are the explicit control protocol (XCP) [3] and the rate control protocol (RCP) [4].
XCP was designed to extract congestion information directly from intermediate nodes (routers and/or switches).XCP uses a feedback mechanism to inform the sender about the best network conditions, that is, the maximum throughput.This feedback is accomplished by the use of a congestion header in each packet sent.Along the path, intermediate nodes update the congestion header.When the packet reaches the receiver, it copies the network information, obtained from the last intermediate router, into outbound packets of the same flow (normally acknowledgment packets).WXCP [29] and XCP-b [10] are variants of XCP that measure indirect parameters such as queue sizes and number of link layer retransmissions, using very complex heuristics.The direct estimation of the link capacity will allow a more accurate XCP-like scheme to be implemented for wireless multihop networks.
The rate control protocol (RCP) aims to deliver fast flowcompletion or download times.RCP uses the same feedback principle of XCP and tries to emulate processor sharing.However, it uses a different approach: routers along the path do not determine incremental changes to the end-system's throughput but determine the available capacity and the rate at which the end-system should operate.More recently and taking into consideration RCP main properties, for wireless sensor networks (WSN), the wireless rate control protocol (WRCP) [30] mechanism has been proposed.WRCP uses explicit feedback based on capacity information to achieve a max-min fair rate allocation over a collection tree.In WRCP, a receiver capacity model is applied.This model associates capacities with nodes instead of links.The receiver model is also used to develop and implement the explicit and distributed rate-based congestion control protocol for wireless sensor networks.

rt-Winf
In this section we analyse the main principles and results of rt-Winf, since it will be the basis of the new approaches for XCP-Winf and RCP-Winf.IdleGap [7] was the underlying basis for the development of rt-Winf.The main purpose of rt-Winf was to mitigate IdleGap main issues, being compatible with all systems and evaluating both the link capacity and the available bandwidth without overloading the network.rt-Winf considers the link capacity as the maximum sustainable data rate at a link.The available bandwidth is the unused portion of the link capacity.rt-Winf does not affect the OSI model and obtains all of the necessary information to calculate the path capacity and available bandwidth.One of the main issues of IdleGap is that it uses the DataRate value of the IEEE802.11header [31], while rt-Winf effectively calculates the capacity.The operational principles of rt-Winf allow it to rely on the Request To Send (RTS)/Clear To Send (CTS) handshake or on small probe packets.

RTS/CTS Packets.
A RTS/CTS enabled rt-Winf mechanism relies on the RTS/CTS handshake to correctly retrieve the NAV values and uses the same node states as defined by IdleGap, that is, the Sender, Onlooker, and Receiver states.In the Sender state the node is transmitting data; in the Receiver state the node is receiving data; and in the Onlooker state the node is not participating in the transmission.The RTS/CTS handshake allows rt-Winf to immediately start evaluating both link capacity and available bandwidth after the handshake completion time.
The RTS/CTS packets have accurate duration values, which can be used to trigger rt-Winf calculations.To understand how RTS/CTS packets can be used by each node state, a set of handshake captures was performed.The obtained captures showed information on how each node state manages the received packets.CTS, DATA, and ACK packets are captured in the case of the Sender state.In the Receiver state, a node is able to capture the RTS and the DATA packets, while a node in the Onlooker state is able to capture the complete set of packets: RTS, CTS, DATA, and ACK.This different knowledge implied the conception of different algorithms for each state.Then, we propose that each node state uses a different method to determine the Idle Rate, as can be seen in Table 1.
To obtain the link capacity and the available bandwidth estimations, a node in the Sender state relies on the NAV information of the CTS packets.Thus, a Sender obtains the link capacity ( Sender ) using where  is the DATA packet size,  ACK is the actual clock time when the ACK packet is received,  CTS is the clock time of the CTS packet reception, and  SIFS is the duration of the occurred short interframe spacing (SIFS).The time when the channel is busy can then be represented by When the Sender obtains the capacity, it can determine the available bandwidth (AB) by where NAV CTS is the NAV information on a CTS packet and  Total represents the total elapsed transmission time obtained by the difference between the last captured ACK time and the initial transmission time.
In the Receiver state a node uses the NAV information on the RTS packets to obtain the capacity ( Receiver ), or Idle Rate, by where  RTS is the time when the RTS packet was received and  DATA is the clock information of the reception of the first DATA packet.The Receiver available bandwidth estimation is then calculated through where NAV RTS represents the NAV value on the RTS packet and  Total is defined as the difference between the last sent ACK packet time and the initial RTS reception time.
The Onlooker state uses the NAV value according to the existence, or not, of the RTS packet to obtain both the available bandwidth and capacity.If a node in the Onlooker state captures a CTS packet of a communication without capturing the RTS packet, this implies that the communication is suffering from the hidden nodes problem.Thus, the algorithm will only use the NAV from the CTS packet to retrieve the correct values.An Onlooker node obtains the link capacity () by If the node only captures a CTS packet, the AB is obtained by where  Total is equal to NAV CTS + CTS +2SIFS.If the Onlooker receives a RTS packet, then And  Total is defined as NAV RTS +  RTS .Table 2 shows, for a better understanding of the available bandwidth and capacity evaluation, the variable symbols and their description used in rt-Winf calculations.
A general rt-Winf system, with its main functioning principles and states transitions, can be observed in Figure 1 Then the  Receiver value is sent to the Sender on an ACK packet.
In the Sender state, and when a CTS packet is captured, the node starts to evaluate the available bandwidth and link capacity.First, the node stores the time at which the CTS packet is received ( CTS ) and then starts to send the actual data.When it receives an ACK packet acknowledging data reception, it stores the time at which the ACK packet was received ( ACK ) and obtains from the received ACK packet header the  Receiver .Then, it uses the corresponding equation of Table 1 to estimate its link capacity ( Sender ).
If the node goes to the Sender state from the Onlooker, it first compares the  Sender with stored capacity  Onlooker .The node has to use the minimum value of the capacities.So, for obtaining that minimum value between  Sender and  Onlooker , the node subtracts the  Onlooker value from the  Sender value.If this value is positive, it means that the minimum value is equal to  Onlooker ; thus the node updates the  Sender value to be equal to the  Onlooker value.Otherwise, it maintains as the minimum capacity value its  Sender capacity value.This operation is described in Then, it compares  Sender with the one received on the received ACK packet ( Receiver ).For better channel use, it has to use the minimum capacity value; this avoids queue fillups and bottlenecks.If the node was not previously on the Onlooker state, it immediately compares its  Sender capacity estimated value with the  receiver value received on the ACK packet.If it returns a positive value, the sender updates its capacity to  Receiver ; otherwise it uses the stored value of  Sender : Finally, and with the stored capacity value, it determines the corresponding available bandwidth.This cooperation process between the Sender and the Receiver is a great improvement when compared to IdleGap.The onlooking capacity is obtained as described in Table 1.

Probe Packets.
If RTS/CTS packets are not present, rt-Winf can use probe packets in order to retrieve the transfer time values.Probe packets can be sent between nodes.Probe packets are just sent in the beginning of the communication and, for each new communication, new probe packets are sent.To achieve good results, we use packets with 1500 bytes and frequency of 4 samples before the actual transmission starts (as stated in [12]).It must be noticed, however, that probe packets with reduced sizes can be used.The probe packets must be UDP generated packets with altered frame control IEEE 802.11 header: type data and subtype reserved.We use packets with frame control type set to 10 (data) and subtype to 1001 (reserved).This way the Sender and the Receiver can successfully differentiate these packets from the ordinary data packets.The IEEE 802.11 standard defines that, for each successfully received packet, it must be sent a MAC ACK packet [31].The whole process is very similar to the one with the RTS/CTS handshake.
The process for determining the initial capacity lasts the duration of the period that corresponds to sending a packet and receiving its correspondent MAC ACK packet.
The generated packets are used to retrieve the capacity () and available bandwidth (AB) values, according to the following: where  is the packet size and  Transfer , the transfer time, is equal to  ACK −  DATA , and where  is the number of packets transmitted and  Total is the total elapsed time since the beginning of the process.The generated packets are only sent before a node starts a transmission and in the absence of traffic.This allows the system to initially determine the available bandwidth and capacity.Then, the existing traffic and the MAC layer ACK will be used to trigger the calculations.As NAV values are not correctly defined in DATA packets, rt-Winf uses clock time information to determine the busy time.Each node state has to manage independently its clock information.Therefore, NAV values are not considered in this specific implementation with probe packets.To be fully operational, both Sender and Receiver must be running the rt-Winf mechanism.
In a normal VoIP call using G.711 codec [32], the overhead introduced by this mechanism is ∼1.66%.For a flow with more than 1 Mbps, the overhead is less than ∼0.15%.

rt-Winf Results.
We have implemented rt-Winf in the CMU wireless emulator [9] and in the ns-2 simulator [33].The three states defined by rt-Winf mechanism and the cooperation between them and between the nodes was developed in  language.In base rt-Winf, the system is configured with enabled RTS/CTS/ACK handshake packets.In rt-Winf probe, probe packets are implemented.The maximum achievable data rate is set to 11 Mbps.Nodes are placed in such a distance that the path loss effect is considered negligible.Path capacity and available bandwidth are evaluated in different scenarios.
For path capacity evaluation, rt-Winf results are compared against AdHoc Probe results and maximum throughput (that represents the maximal theoretical throughput) in a simple 2 ad hoc nodes testbed.An UDP flow with constant bit rate (CBR) of 64 Kbps is transferred between the two nodes.According to [34], the maximal theoretical throughput is obtained through where MSDU is the MAC service data unit.The maximum throughput represents, in ideal conditions, the maximum achievable capacity. Figure 2 shows the path capacity results.With a CBR flow in the network, the expected capacity shall be lower than the maximum throughput.The simulations validate this assumption, showing that rt-Winf results are close to the maximum throughput values.It is then possible to observe that rt-Winf uses efficiently the information present in the channel, in order to obtain the resulting capacity.This is because rt-Winf measures more accurately the channel occupation time, as it takes into consideration all traffic flows.Compared to the AdHoc Probe mechanism, and with a similar probing time, rt-Winf gathers more information to perform the desired calculations, thus being able to be statistically more precise and less sensitive to flow variations.AdHoc Probe only takes into consideration its probing packets, which can suffer dispersion and collisions, introducing a negative impact on the capacity evaluation.
Path capacity and available bandwidth evaluations are also conducted on a wireless mesh scenario (Figure 3).The two mobile nodes, Mobile Node 1 and Mobile Node 2, communicate with each other through two mesh nodes that are responsible for the routing and link management.The mobile nodes are in such a distance that the traffic is always routed by the mesh nodes.
Path capacity results are shown in Figure 4, and available bandwidth results are shown in Figure 5. Figure 5 contains the results of rt-Winf, IPerf UDP [35], and IdleGap.Maximum throughput values are also presented, being considered as an upper bound of the result, as described before.IPerf UDP results are considered the lower bound.
As observed in Figure 4, rt-Winf is less sensitive to variations when compared to AdHoc Probe.This is because rt-Winf is taking into consideration all packets in the network and is measuring the channel occupation time of each packet, while AdHoc Probe is only considering the packets that it generates, thus being more sensitive to flow variations.
The results presented in Figure 5 allow observing how IdleGap is not effectively measuring the available bandwidth.IdleGap values have a small variation but are near to the DataRate value.In rt-Winf, it is possible to observe how the results vary through time.Those results are within an upper bound, the maximum theoretical throughput, and a lower bound, IPerf UDP.
To observe the impact of rt-Winf with probe packets in a wireless mesh scenario and to allow a valuable comparison between the emulator and simulator results, simulations in the ns-2 simulator [33] were also conducted.As rt-Winf is based on IdleGap, the simulations also allow a baseline comparison of those mechanisms.In the simulations, a FTP transfer from a source to a sink is used, with different simultaneous flows.The maximum throughput is calculated using ns-2 default values and using (14).Figure 6 summarizes the obtained results.Each value is an average of 20 runs lasting 300 seconds of simulated time and nodes are stationary.As observed, IdleGap results are almost equal to the maximal theoretical throughput, as it is using the IEEE802.11header DataRate value in the calculations.These results validate the ones obtained with the CMU emulator, since the results for 1 flow in Figure 6 are similar to the ones of Figure 4.In the simulations with rt-Winf probes, probe packets with different sizes are used.The results show that rt-Winf with probe packets is also efficiently measuring the capacity, and its values are very similar to the rt-Winf mechanism working with RTS/CTS control packets.

XCP-Winf and RCP-Winf
To improve the performance of congestion control techniques in dynamic wireless networks, we define a new congestion control approach, based on XCP and RCP.The solution proposed adopts the explicit congestion control scheme enhanced with the interaction of a link and available bandwidth estimation mechanism.As both base XCP and RCP do not rely on an effective link capacity estimation tool [36], they begin to use the link capacity at the interface to compute the rate feedback: this introduces capacity overestimation which will generate inflated feedback, and the senders will send more traffic than the link can transfer.In the new approach, rt-Winf estimates the available bandwidth that will be used by the congestion control mechanisms to update their transmit rate.The estimation mechanism is integrated both at Sender, Receiver, and Onlooker nodes.
rt-Winf estimation values are obtained in the MAC layer, and therefore this information has to be accessed by XCP-Winf and RCP-Winf.The rt-Winf information is sent to the network layer through a simple, but effective, cross layer communication process.For this communication system, a shared database architecture is used, with a set of methods to get/insert information in a database accessible by all protocol layers.One example of such architecture is the MobileMan cross layered network stack [37].
A generic XCP-Winf/RCP-Winf mechanism relies on the main functioning principles of XCP and RCP and is represented in Figure 7. rt-Winf inserts the available bandwidth and the link capacity information in the shared database and then XCP-Winf and RCP-Winf access that information and use it to update their functions.In the following subsections we present the algorithms performed on both XCP-Winf and RCP-Winf mechanisms.
For a better understanding of the implemented functions described in the following sections, Table 3 shows the variable symbols and its description.field of outgoing packets.A XCP-Winf Receiver operates in a similar way as a XCP Receiver.When acknowledging a packet, the XCP-Winf Receiver copies the congestion header from the data packet to the corresponding acknowledgment packet and acknowledges the data packet in the same way as a TCP receiver.
When operating as a XCP-Winf Sender, several calculations need to be performed for each packet.In a XCP-Winf system, the necessary change in the throughput (TH change ) is obtained by where  RTT is the current round-trip time (RTT) and  is the maximum segment size used on the network. winf is the link capacity obtained from rt-Winf and  desired is a desired change in the capacity value that might be supplied by an application or it might be the speed of the local interface.
If no additional capacity is needed or desired,  desired will be equal to zero, and the packet will be immediately sent.If the value of TH change exceeds the available bandwidth value AB winf , obtained by rt-Winf, it is reduced to the current value of AB winf .The XCP-Winf router/node system operations in the Onlooker state are divided into four moments: when a packet arrives, when a packet departs, when the control interval timeout packet arrives, and when it is required to assess the persistent queue.Once more, rt-Winf available bandwidth and capacity are used in the calculations.On a packet arrival, the total input traffic () seen at the XCP queue is incremented by the size of the packet received.The sum of the inverse throughput is used for capacity allocation.The inverse throughput constitutes a lower bound for the throughput for any balanced fair network and can be defined as the sum of the inverse residual capacities on the link.The inverse throughput (TH Inverse ) uses the capacity value obtained by rt-Winf and the packet size (), allowing having more precise values when compared to standard XCP: where  is the number of packets received.Another important parameter is the sum of  RTT by throughput; this parameter is used to obtain the control interval; on its calculation, it uses rt-Winf capacity values: This algorithm also checks if the round-trip time ( RTT ) of each flow is exceeding the maximum allowable control interval ( ci ), with a default value of 0.5 seconds.If the roundtrip time exceeds the threshold, the maximum allowable control interval to avoid delays when new flows are started is updated to When operating on the Onlooker state and when the control timer expires, rt-Winf values are used to determine where  and  are constant parameters,  represents the queue value,  RTT represents the average RTT, and / RTT represents the persistent queue.AB Winf is the available bandwidth value of the rt-Winf mechanism.
Then, as stated in [3], the amount of capacity that will be shuffled (  ) in the next control interval is obtained.This allows new flows to acquire capacity in a full loaded system.This parameter is obtained by max(0, 0.1 × AB winf − | winf |).This will allow obtaining the increase-positive feedback scale factor (  )-or decrease-negative feedback scale factor (  )-on the traffic: When a packet departs, the node has to calculate a perpacket capacity change that will be compared to the  change value in the packet header.As stated in [3], "using the AIMD rule, positive feedback is applied equally per flow, while negative feedback is made proportional to each low's capacity." The allocated feedback ( change ) for the packet is the positive per-packet feedback (  ) minus the negative perpacket feedback (  ).The positive feedback is obtained using   and the flows interpacket time; then The negative feedback is obtained using the packet size and the   : Thus, the capacity change requested is This value may be positive or negative.The node verifies whether the packet is requesting more capacity (via the packet's  desired field) than the node has allocated.If so, this means that the sender's desired throughput needs to be reduced and verified against rt-Winf available bandwidth (AB winf ).If the node has allocated more capacity than the available bandwidth, the desired throughput is updated to the rt-Winf available bandwidth.If the allocated capacity is less than the available bandwidth, the  desired field in the packet header is updated with the feedback allocation.
XCP-Winf, as XCP, needs to calculate a queue that does not drain in a propagation delay, which is the persistent queue.This queue is intended to be the minimum standing queue over the estimation interval.Each time a packet departs, the queue length ( q ) is checked and the minimum queue size is calculated.When the queue estimation timer   expires, the persistent queue length is equal to the minimum queue value over the last   interval.For obtaining the duration of the   interval, the capacity value of rt-Winf is used: Comparing XCP-Winf with XCP, it is possible to conclude that both use the same principles but differ in the way link capacity and available bandwidth are obtained and used.

RCP-Winf Functions. RCP-Winf updates RCP operations, using rt-Winf link capacity values. A RCP-Winf
Receiver operates in the same way as a standard RCP Receiver.The RCP-Winf Receiver just updates the RCP congestion header with the bottleneck rate, that is, the rate of the most congested link, in the ACK packet, and then sends it to the sender.
RCP-Winf relies only on link capacity evaluation and there is no need for determining the aggregate feedback (); thus there is also no need for explicitly using the available bandwidth.A RCP-Winf implementation also keeps unchanged the standard operations performed by RCP routers when a packet arrives and departs.
When operating as a sender, RCP-Winf needs to perform operations that allow it to modulate the congestion window.The RCP-Winf Sender will evaluate the desired change in throughput  desired , through the value obtained in the ACK packet congestion header field and the link capacity obtained by the rt-Winf, gathered through the cross layer communication process: According to this evaluation, RCP-Winf will update or not the desired change in throughput.If the evaluation returns a negative value, the  desired value will be updated to the  winf value.Then, it modulates the sender congestion window (CW Sender ): where  RCP is the RCP header size (12 bytes) and  IP is the IP header size.Then, it calculates the pacing interval ( pacing ) that will be used to send packets from the queue: When the rate timer of a RCP-Winf router expires, the node first gets the rt-Winf capacity values.Then, it assumes that the aggregate incoming traffic rate is defined by the rt-Winf capacity value ( winf ).Next, it obtains the average round-trip time of the traffic that has arrived in the rate estimation interval (  ).After that, the node updates the RTT estimate ( RTT ) and then it updates the rate value that will be offered to the flows () using the rt-Winf capacity: The node tests the rate value and updates it.The rate value cannot be under a minimum rate value ( min ) or above a weighted (  ) link capacity value: Then, the node decides the length of the next rate estimation interval.Before finishing, the node resets the variables and restarts the timer.  controls the target linkutilization and can be any value in the range 0.95 <   < 1.
It is important to choose a value less than 1 as it allows some comfort to drain excess traffic before building up a queue.In extreme congestion scenarios, the minimum rate value allowed ( min ) is considered to be where MTU is the maximum transmission unit.The result of the operation will be the value of the minimum rate.
A RCP-Winf router also has to perform per-packet operations, namely, when a packet arrives and when a packet departs.Whenever a packet arrives carrying a valid roundtrip time, its value is added to the stored sum of RTTs and the number of packets carrying a valid RTT is incremented.This allows for a more precise calculation of the average RTTs.This is also the normal operation of a RCP standard system.RCP-Winf router uses the obtained values of rt-Winf as their underlying value.When a packet requests an unspecified value or a value that exceeds the link capacity, the system is updated with the rt-Winf obtained capacity value; that is,

Simulation Results
This section introduces the simulation setup to evaluate the performance of the proposed congestion control mechanisms and the simulation results.The results are obtained using the ns-2 [33] simulator.To evaluate the performance, three metrics are used: throughput, delay, and number of received packets.The proposed control mechanisms, XCP-Winf and RCP-Winf, are evaluated against the base protocols, TCP, XCP, and RCP, and against the XCP-b and TCP-AP protocols, which are especially developed for wireless networks.Different wireless mesh and ad hoc scenarios were used.The parameters of the simulations are presented in Table 4.The configured default transmission range is 250 meters, the default interference range is 500 meters, and the channel data rate is 11 Mbps.For the data transmissions, an FTP application with packets of 1500 bytes or a constant bit rate (CBR) application is used.The mobility is emulated through the ns-2 setdest tool to provide a random node movement pattern.We configure setdest with a minimum speed of 10 m/s, a maximum speed of 30 m/s, and a topology boundary of 1000 × 1000 meters.All results were obtained from ns-2 trace files, with the help of trace2stats scripts [38] adapted to our  own needs.The routing protocol used was the destinationsequence distance-vector (DSDV) [39].The presented results show the mean values obtained through different simulation runs with different seeds and the 95% confidence interval.

Mesh and Ad Hoc Scenarios Results
. Next we present, analyze, and compare the results of the congestion control approaches in the mesh topology scenario.The mesh topologies defined comprise a grid of 5, 9, 12, and 16 fixed mesh nodes.In all mesh topologies, a combination of 3, 4, 5, 6, and 7 mobile nodes is used.number, from 3 to 7, of mobile nodes were used.Each mobile node, as previously stated, is simultaneously sending and receiving data.
The obtained results show that the integration of rt-Winf in XCP and RCP improves significantly their behavior, which makes XCP and RCP behave more efficiently and with better channel utilization, which also leads to less channel losses (more received packets).The use of rt-Winf in the mesh nodes (Onlooker state) makes the feedback mechanism more accurate, as all nodes in the network can determine available bandwidth and capacity and send that information to the other nodes that are participating in the communication.Both XCP-b and TCP-AP have better results than TCP and standard XCP and RCP.However, they are outperformed by both XCP-Winf and RCP-Winf.TCP-AP is the most conservative one and obtains worse results on the number of received packets.XCP-b relies on the maximum buffer size of nodes, and therefore, with the current scenario conditions, XCP-b is less efficient and less accurate than both XCP-Winf and RCP-Winf.
To evaluate XCP-Winf and RCP-Winf when using CBR applications, an UDP application (simulating a VoIP application) is configured, for the 16 mesh nodes scenario and variable number of mobile nodes.Figure 10 shows the obtained results.Without rt-Winf enabled, XCP obtains better results than RCP for a lower number of mobile nodes.This is due to the fact that RCP was developed having in mind Internet bursts traffic.With less mobile nodes exchanging information, the number of collisions is lower, and less retransmissions and burst traffic are present in the network.It is also possible to conclude that both XCP and RCP are not evaluating correctly the link capacity and do not have the necessary mechanisms to overcome this situation.With rt-Winf, the throughput results are considerably better.However,  it can be seen that XCP and RCP have lower performance in controlling congestion when the traffic is UDP.Once more, RCP-Winf reflects its base development for bursty traffic.The CBR application is sending data at a constant rate; with more mobile nodes sending data, more collisions will occur and more bursts of traffic will be present in the network.This situation will allow RCP to react more precisely and, with more mobile nodes, to have better throughput results.The results also show that XCP-b is better suited when the number of mobile nodes is small.The results show that TCP-AP, though specially developed for wireless environments, has very poor results.This is because a TCP-AP sender adapts its transmission rate using an estimate of the 4-hop propagation delay and the coefficient of variation of recently measured round-trip times.This means that TCP-AP is very conservative, not using efficiently the medium.
The congestion control approaches are also evaluated in ad hoc scenarios using CBR UDP 64 Kbps flows.The scenarios are composed of 8, 16, 32, 64, 128, and 256 nodes, and for each scenario there are 4, 8, 16, 32, 64, and 128 simultaneous flows.The flows are randomly generated through the ns-2 gencbr.tcltool.The mobility was also dynamically generated through different seed values.The obtained results are presented in Figures 11(a From the obtained results, it is possible to conclude that standard XCP and RCP have the same behavior when the traffic is UDP; however, the integration of rt-Winf makes them react differently as they both use the information from the MAC sublayer in a different way.It is also possible to see that, with rt-Winf integrated, both XCP and RCP can receive more packets, which reflects a lower rate of lost packets.This is due to the fact that XCP-Winf and RCP-Winf, with accurate link capacity and available bandwidth, are using more efficiently the medium and improving each node queue management.As more packets are transmitted, more throughput is obtained and the medium is better used: it is possible to infer that both XCP-Winf and RCP-Winf are more stable and fair.In the same conditions, it is possible to send more information with a higher rate.It must be noticed that the results also reflect the mobility randomness, where more nodes are in each other's influence area.Another factor that is influencing the results is the routing information and the exchanged routing messages: as flows increase, the collisions and delay also increase, which is also reflected in throughput values.Once more, XCP-b obtains good results when the network is not heavily utilized, where XCP-b increases its available bandwidth and, consequently, its rate.However, with more nodes and flows in the network, XCP-b behavior is less efficient due to the higher number of losses, reducing the flow rate.With respect to TCP-AP, its behavior is also degraded as the number of flows increases: while the throughput results are improved, they are obtained with less received packets.

Building Scenario Results
. For a more real evaluation, we defined a new mesh network scenario to simulate a public building, with public services and a public garden (Figure 12).According to Table 4, the different parameters are the following: the numbers of mobile nodes are 10, 20, and 30; the fixed mesh nodes are 6 and two different flows are used.In this scenario, mobile nodes start to transmit in a random way and their transmission lasts 240 seconds.The mesh nodes position is randomly defined in the inside area.A randomly chosen mesh node is shut down for 100 seconds during the simulation period.Two types of flows are used, to represent a light traffic flow (4 CBR 64 Kbps flows, sent each 400 ms) and a heavy traffic flow (4 CBR 128 Kbps flows, sent each 100 ms).
The obtained results of the light traffic flows are shown in Figures 13(a), 13(b), and 13(c); the results of the heavy traffic flows are presented in Figures 14(a), 14(b), and 14(c).As can be observed from the results, the integration of rt-Winf in both XCP and RCP improves their standard behavior.Since the nodes that are not participating in the communication enter the Onlooker state and evaluate the network performance, it is possible to have a state by state and rate by rate overall performance evaluation.As rt-Winf uses three different states and network cooperation, it is possible to have a more effective and efficient hop by hop performance evaluation.This results in a more efficient evaluation and use of the channel capacity.As XCP-Winf and RCP-Winf also have more capability to adapt to the changing conditions of the network, this is expressed in better transmitting rates and better channel usage.XCP-b has again poor performance for high load scenarios: XCP-b is not taking into consideration packet loss, considering packet loss as a buffer overflow, thus having a more inefficient behavior and introducing unnecessary capacity slowdowns on the network.TCP-AP presents good overall results.However, it obtains those results with a considerable reduction in received packets, which indicates that TCP-AP is more conservative and is not efficiently using the medium.

Utility Results.
As TCP is the most used and deployed congestion control protocol on the Internet, it is important (as described in [40]) to analyze how XCP-Winf and RCP-Winf because TCP's congestion mechanisms are not evaluating correctly the network status (TCP is trying to fill the nodes queues, expecting that packet loss due to queue overflow will indicate congestion).However, RCP-Winf and XCP-Winf are evaluating, and measuring consistently, how the network is behaving and adjusting the bandwidth requirements to that information.As RCP-Winf is based on RCP with its bursty traffic development, it has a more unstable behavior during the initial instant of the simulation; as more traffic is present on the network, RCP-Winf becomes more stable.
The results also show that the winf mechanisms are TCPfriendly on the long term and are adjusting to the unfairness nature of TCP.XCP-Winf reacts earlier to these constraints and starts to compete for the same bandwidth as TCP earlier than RCP-Winf.However, it must be noticed that the results show that both RCP-Winf and XCP-Winf take some time to allow a fair share of bandwidth between their native flows and TCP.It is advisable that this fair share is obtained as quickly as possible, thus allowing a more efficient share and coexistence of network resources.

Conclusions
In this paper we presented a study that demonstrates that using MAC layer information in congestion control, through a cross layer communication process, can be an important factor of network performance improvement.This MAC layer information resorts to CTS/RTS/ACK messages handshake or on small probes to know each node's channel allocation, and it allows accurate determining of the links capacity and available bandwidth.This information is then used by congestion control mechanisms based on explicit congestion notifications, XCP and RCP, to accurately determine the network status and act accordingly.The evaluation results of XCP-Winf and RCP-Winf, obtained through ns-2 simulations, show that the rt-Winf algorithm improves significantly XCP and RCP behavior, making them more efficient and stable.To obtain the available network capacity, both XCP and RCP need all nodes in the network to cooperate, which increases network overhead, specially when dealing with special wireless environments, such as wireless mesh networks and ad hoc networks.Using rt-Winf, which works in the MAC layer, it is possible to perform link capacity and available bandwidth calculations without interfering in the network dynamics, allowing significant improvement of XCP and RCP performance.It was also possible to conclude that XCP-Winf and RCP-Winf behave more efficiently and use the network available information more effectively than XCP-b and TCP-AP, two protocols specifically designed for wireless environments.It is then possible to conclude that both XCP-Winf and RCP-Winf outperform XCP-b and TCP-AP in terms of medium usage, thus allowing a more stable behavior and a faster convergence to the active network conditions.
As future work, we plan to extend the evaluation with the analysis of the effect of collision probability and the improvement of the results when introducing this effect on the congestion control approaches and also to work on the improvement of XCP-Winf and RCP-Winf utility results, allowing having a much more efficient coexistence with TCP flows with the rt-Winf versions of XCP and RCP.An effort will also be made in optimizing other protocols behavior, such as TCP-AP, with the integration of rt-Winf real time and in-line information.As this work presents mainly results obtained through simulation evaluation, future work might also involve exploring the implementation of the proposed solutions against other routing protocols and also implement them directly in the Linux Kernel, allowing creating a small testbed for testing and evaluating the solutions in real environments and in different conditions.

4. 1 .
XCP-Winf Functions.This section describes the proposed XCP-Winf functions.The main changes are performed on the

Figure 8
Figure 9: Mesh scenario: 16 mesh nodes, variable number of mobile nodes.

Figure 10 :
Figure 10: CBR throughput in mesh scenario: 16 mesh nodes, variable number of mobile nodes.

Figure 13 :
Figure 13: Public building light flow: variable number of mobile nodes.

Figure 14 :
Figure 14: Public building heavy flow: variable number of mobile nodes.
80211b Maximum 802.11b theoretical throughput state to the Receiver state, it stores the Onlooker state capacity ( Onlooker ) estimated value.First, the node stores the time at which it received the RTS packet ( RTS ).Then, it sends a CTS packet to the Sender initiating the communication process.When the Receiver receives the actual data, it stores its reception time ( DATA ) and then, using the corresponding capacity estimation equation, it obtains its link capacity.If the Receiver has stored  Onlooker , meaning that there was a transition from the Onlooker state to the Receiver state, the node compares its capacity estimation value ( Receiver ) with  Onlooker .If it returns a positive value, it updates the receiver capacity value to  Onlooker ; otherwise it uses its capacity estimated value of  Receiver .This process is described in (9).The node will always use the smallest value of the two capacities for better channel utilization: