A cross-layer, two-way cooperative communication system having multiple transmit, receive and relay nodes and a Control Unit wherein: a) Multiple transmitters are configured for transmitting data in two phases Broadcast phase, which involves all transmitting nodes utilizing pre-assigned OFDMA subcarriers, determining their transmit power values and bit rates, and transmitting multiple symbols; and Relaying phase, involves multiple pre-selected relay nodes first estimating multiple transmitted symbols by source nodes and then performing network coding on the estimated symbols to generate their signals to be transmitted; b) Multiple receivers are configured for receiving data using a Detector, which works in conjunction with Network Decoding block such that they obtain distinct versions of the source nodes' symbols; c) A Relay-Selection module is configured for selecting a relay node from a plurality of relay nodes to improve the performance, based on inputs from a Performance Monitoring and Optimization block wherein the Performance Monitoring and Optimization block is configured to select the relay and transmission of some relay nodes is avoided to eliminate any probable error propagation based on the channel conditions, and, d) A control signal is used by the relay nodes to produce a coding coefficient and is characterised in that i) the control signal is used to produce the random network coding coefficients; ii) the control signal enables synchronization among communicating nodes; iii) a deterministic function is used on this time varying control signal to generate seed values. a) Multiple transmitters are configured for transmitting data in two phases Broadcast phase, which involves all transmitting nodes utilizing pre-assigned OFDMA subcarriers, determining their transmit power values and bit rates, and transmitting multiple symbols; and Relaying phase, involves multiple pre-selected relay nodes first estimating multiple transmitted symbols by source nodes and then performing network coding on the estimated symbols to generate their signals to be transmitted; b) Multiple receivers are configured for receiving data using a Detector, which works in conjunction with Network Decoding block such that they obtain distinct versions of the source nodes' symbols; c) A Relay-Selection module is configured for selecting a relay node from a plurality of relay nodes to improve the performance, based on inputs from a Performance Monitoring and Optimization block wherein the Performance Monitoring and Optimization block is configured to select the relay and transmission of some relay nodes is avoided to eliminate any probable error propagation based on the channel conditions, and, d) A control signal is used by the relay nodes to produce a coding coefficient and is characterised in that i) the control signal is used to produce the random network coding coefficients; ii) the control signal enables synchronization among communicating nodes; iii) a deterministic function is used on this time varying control signal to generate seed values. i) the control signal is used to produce the random network coding coefficients; ii) the control signal enables synchronization among communicating nodes; iii) a deterministic function is used on this time varying control signal to generate seed values.