Monday, February 2, 2009

Art of Protocol Design

Although the techniques needed to solve specific problems are well known,protocol design is on-trivial for two reasons.First to make communication efficient,details must be chosen carefully that means small design errors can result in incorrect operation,unnecessary packets or delays.For example:sequence numbers are usually stored in a fixed field in a packet header.The field must be large enough so sequence numbers are not reused frequently,but small enough to avoid wasting unnecessary bandwidth.Similarly,a higher level protocol can cause excessive overhead if the protocol chooses a non-optimal message size.

Second,protocol mechanism can interact in unexpected ways.For example:Consider the interaction between flow control and congestion control mechanism.A sliding window scheme aggressively use more of the underlying network bandwidth to improve throughput.A congestion control mechanism does,the opposite by reducing the number of packets being inserted to prevent the networking from collapsing.

The balance between sliding window and congestion control can be tricky,and a design that does both well is difficult.A protocol that is too aggressive about using bandwidth can adjust the underlying network and a protocol that is too conservative can result in lower throughput then necessary.More important,designs that attempts to switch from aggressive to conservative whenever congestion occurs tend to oscillate - then slowly increase their use of bandwidth until the network begins to experience congestion,decrease use until the network becomes stable and then begin to increase again.

No comments: