The difference between BEB in MACA and in MACAW
2017-10-20 03:30
381 查看
Compared with MACA, the MACAW mainly optimizes the backoff algorithm and designs RTS-CTS-DS-DATA-ACK message exchange.
backoff algorithm
In MACA, the binary exponential backoff (EBE) algorithm is used to schedule the retransmission. However, the EBE cannot allocate bandwidth fairly because each node does its own congestion individually without sharing the information with other nodes. In MACAW,
a package header field of current backoff counter value is added. Once the station hears a package, the current backoff value of this package will be copied into the backoff counter value in the station. Then the station will broadcast its current backoff
counter value to all its neighbour nodes. In this way, after a successful data transmission, all nodes will have the same current backoff counter value. Another problem of EBE is its large variations, which means the value of current backoff count varies greatly.
To solve this problem, a multiplicative increase and linear decrease (MILD) is proposed.
RTS-CTS-DS-DATA-ACK message exchange
ACK
In MACA, the error data package is recovered at the transport layer, which is very slow. An acknowledgement packet ACK is introduced in MACAW to accelerate the recovery by moving it to the link layer.
DS
[figure from https://en.wikipedia.org/wiki/Exposed_node_problem]
In the above example, say S1 sends package RTS to R1 and S2 can overhear the RTS. Then R1 sends a package CTS to S1. However, this CTS cannot be overheard by S2. In other words, S2 are not sure about the whether the RTS-CTS exchange was successful or not. To
overcome this problem, the Data-Sending package (DS) is sent by S1 after receiving the CTS from R1. In this way, S2 will know the RTS-CTS exchange succeeds.
RRTS
[figure from https://en.wikipedia.org/wiki/Exposed_node_problem]
Suppose R1 is transferring data to S1. At the same time, R2 sends RTS to S2. Because S2 are deferred to response CTS in order to avoid the inference with the receiving data of S1. The only chance that R2 can content with R1 to send packages to S2 is between
the completion of current the data transmission and the completion of S1's next CTS. So a RRTS (request-for-request-to-send) package is sent to R2 from S2, when S2 find it cannot reply R2's RTS with a CTS. Once R2 receives the RRTS, it will resend RTS to S2.
Then the normal message exchange is commenced. All stations overhearing the RRTS will keep silent for two time slots for the RTS-CTS successful exchange.
backoff algorithm
In MACA, the binary exponential backoff (EBE) algorithm is used to schedule the retransmission. However, the EBE cannot allocate bandwidth fairly because each node does its own congestion individually without sharing the information with other nodes. In MACAW,
a package header field of current backoff counter value is added. Once the station hears a package, the current backoff value of this package will be copied into the backoff counter value in the station. Then the station will broadcast its current backoff
counter value to all its neighbour nodes. In this way, after a successful data transmission, all nodes will have the same current backoff counter value. Another problem of EBE is its large variations, which means the value of current backoff count varies greatly.
To solve this problem, a multiplicative increase and linear decrease (MILD) is proposed.
RTS-CTS-DS-DATA-ACK message exchange
ACK
In MACA, the error data package is recovered at the transport layer, which is very slow. An acknowledgement packet ACK is introduced in MACAW to accelerate the recovery by moving it to the link layer.
DS
[figure from https://en.wikipedia.org/wiki/Exposed_node_problem]
In the above example, say S1 sends package RTS to R1 and S2 can overhear the RTS. Then R1 sends a package CTS to S1. However, this CTS cannot be overheard by S2. In other words, S2 are not sure about the whether the RTS-CTS exchange was successful or not. To
overcome this problem, the Data-Sending package (DS) is sent by S1 after receiving the CTS from R1. In this way, S2 will know the RTS-CTS exchange succeeds.
RRTS
[figure from https://en.wikipedia.org/wiki/Exposed_node_problem]
Suppose R1 is transferring data to S1. At the same time, R2 sends RTS to S2. Because S2 are deferred to response CTS in order to avoid the inference with the receiving data of S1. The only chance that R2 can content with R1 to send packages to S2 is between
the completion of current the data transmission and the completion of S1's next CTS. So a RRTS (request-for-request-to-send) package is sent to R2 from S2, when S2 find it cannot reply R2's RTS with a CTS. Once R2 receives the RRTS, it will resend RTS to S2.
Then the normal message exchange is commenced. All stations overhearing the RRTS will keep silent for two time slots for the RTS-CTS successful exchange.
相关文章推荐
- What's the difference between “local” and “my” in Perl
- 数据插入difference between count(*) and count(col) in the query
- What are the differences between a pointer variable and a reference variable in C++?
- [WPF]The differences between Text Box and Text Block in Blend
- What’s the difference between an interface and an abstract class in Java?
- What is the difference between BIT and TINYINT in MySQL
- The differences between Define and Inline
- What is the difference between SVD and matrix factorization in context of recommendation engine?
- macro与inline的区别 What is the difference between macro and inline?
- What exactly is the difference between “pass by reference” in C and in C++?
- The differences between new(delete) and malloc(free) in c/c++
- In PHP5, what is the difference between using self and $this? When is each appropriate?
- What is the difference between a soft reference and a weak reference in Java?
- What is the difference between provider network and self-service network in OpenStack?
- Whats is the difference between train, validation and test set, in neural networks?
- What's the difference between Future and FutureTask in Java?
- the differences between DataGrid and DataList in HTML View
- The difference between null and isEmpty in Groovy
- The difference between scheduleAtFixedRate and scheduleWithFixedDelay in JAVA
- what is the difference between static and normal variables in c++