How to detect collision when two packets are transmitted simultaneously from two transmitters

I have a setup of one receiver and two transmitters. I am implementing a
TDMA structure (using USRPs and GNURADIO) where only one packet is sent
in
each slot. When both transmitters try to transmit in the same slot,
collision occurs. I would like to know

  1. How can the receiver detect whether a collision has occurred or not?
  2. What happens to the collided packets?

Regards,
Sumedha

Hi Sumedha,

  1. You could perhaps look at the average power received over that time
    slot. If there is a collision, the receive power would ostensibly be
    higher.

  2. Traditionally, a collision implied that nothing could be done, and
    the
    data was lost (unless one transmitter overwhelmed the other
    transmitter’s
    signal, leading to the capture effect). However over the past couple of
    years, there have been techniques developed to recover packets from
    collisions. You could read the “Zig-Zag decoding” paper by Shyamnath
    Gollakota and Dina Katabi from SIGCOMM 2008.

http://groups.csail.mit.edu/netmit/wordpress/wp-content/themes/netmit/papers/ZigZag.pdf

Aditya

Hello Aditya,

  1. I tried checking for the average power but that doesn’t work. Even
    with
    two transmitters transmitting at the same time the energy detected by
    the
    receiver doesn’t change much. It remains in the same order.
  2. Is there any other simpler way of detecting collisions other than the
    mentioned paper?

Regards,
Sumedha

On Mon, Nov 11, 2013 at 03:14:04PM +0530, Sumedha G. wrote:

Hello Aditya,

  1. I tried checking for the average power but that doesn’t work. Even with two
    transmitters transmitting at the same time the energy detected by the receiver
    doesn’t change much. It remains in the same order.
  2. Is there any other simpler way of detecting collisions other than the
    mentioned paper?

Sumedha,

this problem is a very fundamental one, and there is no one single
correct answer. Using power as a metric is tricky, as in practice, you
never know the initial power levels of the inidivual received signals.

And if you had a test, how could you be sure it correctly identified a
collision, and you didn’t simply lose a packet due to a bad wave
propagation situation?

Perhaps you should try and tackle this on the MAC layer. When there is a
collision, you will receive neither packet correctly, perhaps that will
trigger an ARQ etc. You can allocate slots to users, or something like
that.

MB


Karlsruhe Institute of Technology (KIT)
Communications Engineering Lab (CEL)

Dipl.-Ing. Martin B.
Research Associate

Kaiserstraße 12
Building 05.01
76131 Karlsruhe

Phone: +49 721 608-43790
Fax: +49 721 608-46071
www.cel.kit.edu

KIT – University of the State of Baden-Württemberg and
National Laboratory of the Helmholtz Association

  1. I tried checking for the average power but that doesn’t work. Even with
    two transmitters transmitting at the same time the energy detected by the
    receiver doesn’t change much. It remains in the same order.

It is expected behavior to be in the same order. Try looking at the
received power in absolute (not dB) scale.

  1. Is there any other simpler way of detecting collisions other than the

mentioned paper?

Not that I am aware of. Sorry!

Aditya

Fundamentally a very hard problem.

Yes, this is a very hard problem.

Sumedha, you are implementing a TDMA scheme right? In a correctly
implemented TDMA, there shouldn’t be any collisions between transmitters
that are using your TDMA protocol.

If you are using a probabilistic TDMA (like Slotted Aloha), then I
suppose
the best protocol is “transmit and pray”. If the CRC check fails, simply
retransmit.

Aditya

On Mon, Nov 11, 2013 at 9:33 AM, Aditya D. [email protected]
wrote:

  1. I tried checking for the average power but that doesn’t work. Even with
    two transmitters transmitting at the same time the energy detected by the
    receiver doesn’t change much. It remains in the same order.

It is expected behavior to be in the same order. Try looking at the received
power in absolute (not dB) scale.

Even that’s not likely to work because of the variations in wireless
channels. This is why 802.11 uses CSMA/CA (collision avoidance)
instead of the 802.2 CSMA/CD (collision detection). You can do things
on wired channels that you can’t on wireless ones. The collision
avoidance is to do the carrier sensing and combine it with RTS/CTS to
help with avoiding collisions. When not using RTS/CTS, you have to
rely on higher layers to detect a missing packet and/or out of order
packets and request retransmission or just fail to ACK.

Fundamentally a very hard problem.

Tom

If you are using a probabilistic TDMA (like Slotted Aloha), then I
suppose the best protocol is “transmit and pray”. If the CRC check
fails, simply retransmit.

Aditya

This all falls under the category of “wireless channel access
protocols”. There have been a huge number of them over the years, and a
certain
amount of research with google and papers on the subject would be a
good thing™.

If you have a reliable collision-detector scheme, you can use CSMA/CD.
If not, there’s P-persistent CSMA. And CSMA/CD, and TDMA schemes,
and…

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs