Principles
- use broadcast nature of wireless (as previous paper)
- network coding (here: use XORing of packets, pad packets to make them equal length)
Main techniques
- opportunistic listening: overhear packets even if they are not destined for you, send reception reports to tell others which packets you received (broadcast, extra transmission or piggy-backed on another)
- opportunistic coding: "maximize the number of native packets [i.e. not coded ones] delivered in a single transmission, while ensuring that each intended nexthop has enough information to decode its native packet [i.e. send A XOR B XOR C only if the nexthop has already two of the packets A, B, C so that it can decode]." Here the nexthop is picked to be the packet of the head of the queue, so that there is no delay introduced (though potentially reordering)
- learning neighbor state: leverage probabilistic knowledge for coding decision when you lack feedback from reception reports
- have separate queues for different packet lengths to avoid excessive padding
- MAC allocated bandwidth alters the dynamics benefinically
- no delay: do not wait for coding opportunities before sending packet
- never "code together packets heading for the same nexthop", therefore maintain virtual queues for each nexthop (and packet length)
- reordering agent to fix reorder
- details see pseudo code in paper
- pseudo-broadcast: uses MAC unicast to send and puts other nodes into promicious mode, this enables MAC's backoff and ACK mechanism
- random UDP flows: 3x4 increase of throughput (even when congested)
- TCP, gateway to Internet: 5% to 70% more throughput depending on upload/download ratio
- hidden terminals are spoilers for TCP
No comments:
Post a Comment