Before describing cooperative protocols and networks, we start with a review of networking models and common practices. Our discussion introduces the conventional decomposition of a network into protocol layers. We then employ these layers to organize the subsequent review of the physical, link, and network layer protocols. We recognize that future cooperative networks will also demand a re-examination of transport layer protocols; however, we omit a review of the higher layers as they are beyond the scope of this text. While much or all of this material is likely to be familiar, this review will serve as a baseline for comparisons with cooperative networks.
Layering as embodied in the protocol stack of Figure 2.1 is a key idea in the development of networks. The stack of boxes (modules) arranged as layers represents a network node. Each module operates at a particular layer. The horizontal dashed arrows between modules in different nodes signify that a module may exchange messages with its peer modules in other network nodes. Messages that are sent through lower layer modules to peer modules in other network nodes are the basis for distributed network algorithms.
Fig. 2.1 Network protocol stack.
Data packets are used to communicate from a source node to a destination node via a path with intermediate nodes. At the source, data packets generated by an application are passed from module to module down through successive layers of the protocol stack. Each module typically appends its own header to each such data packet. A module may repackage the data packets, by dividing packets into smaller packets. The packet headers serve as protocol signaling for peer modules, either at intermediate nodes or at the destination node. A module also may inject its own control packets in order to communicate with peer modules.
When a packet proceeds through a multihop route to a destination, a packet climbs no higher than necessary in the protocol stack. That is, a packet passing through an intermediate node will reach the network layer where the routing algorithm will decide to what node the packet should be forwarded. Thus a packet reaches the transport layer and application layer only at the destination. At the destination, each module is responsible for undoing the repackaging of its source node peer by stripping the additional headers and control packets injected by its peer. That is, the higher layer packets passed down to a module at the source should be passed back up to the higher layer module at the destination.
In traditional wireline or wireless networks, these modules are well defined. Packets are buffered and sequenced by the transport layer, typically TCP, that implements both a reliable end-to-end connection as well as end-to-end flow control. Finding routes (via a sequence of links) to a destination is the job of the network layer. Maintaining these routes and forwarding packets along these routes is also a network layer task. The link layer ensures reliable packet communication on a single link. As shown in Figure 2.1, this may include a MAC sublayer that regulates channel access. The physical (PHY) layer represents the hardware that performs transmission and reception.
In an IP network, the full stack has the simplified representation shown in the gray boxes. In a wireless setting, the MAC sublayer, the link layer, and the PHY layer are lumped together as a PHY layer. This combined PHY layer is just an interface queue that accepts IP packets.
For our purposes, we start with a source node s running an application layer process that wishes to transmit messages to an application layer process at a destination node t. The messages are encoded as data packets with appropriate headers that identify the application process, the source node s and the destination node t. When these packets are passed to a TCP transport layer, sequence numbers are appended and the release of packets to the network layer is controlled by reverse stream of TCP ACKs from the receiver TCP process. The network layer examines the destination address (an IP address) and determines where to send the packet using a routing table. For example, the routing table for a source node attached to an Ethernet might specify only two rules: direct transmission to destination nodes on the same Ethernet and forwarding to a gateway node for all other packets.
At the data link layer, it is common practice to append a cyclic redundancy check (CRC) to each packet. The CRC allows the data link layer at the receiver to detect packet reception errors. Sequence numbers may also be added to facilitate automatic repeat request (ARQ) retransmission protocols at the link layer. The PHY layer is responsible for the transmission of bits to a receiver of a link. The coding and modulation employed at the PHY layer for a single point-to-point link may be quite complex. When forward error correction (FEC) and hybrid ARQ protocols are employed, the line between the physical and link layers is blurred. However, above the link layer, one can assume that the interfaces between layers are based on binary data packets.
In the following sections of this topic, we climb the protocol stack in describing the traditional functions of the physical, link and network layers.