Connected: An Internet Encyclopedia
6.2 Processing Messages on a Stream Protocol

Up: Connected: An Internet Encyclopedia
Up: Requests For Comments
Up: RFC 1771
Up: Appendix 6. Implementation Recommendations
Prev: 6.1 Multiple Networks Per Message
Next: 6.3 Reducing route flapping

6.2 Processing Messages on a Stream Protocol

6.2 Processing Messages on a Stream Protocol

BGP uses TCP as a transport mechanism. Due to the stream nature of TCP, all the data for received messages does not necessarily arrive at the same time. This can make it difficult to process the data as messages, especially on systems such as BSD Unix where it is not possible to determine how much data has been received but not yet processed.

One method that can be used in this situation is to first try to read just the message header. For the KEEPALIVE message type, this is a complete message; for other message types, the header should first be verified, in particular the total length. If all checks are successful, the specified length, minus the size of the message header is the amount of data left to read. An implementation that would "hang" the routing information process while trying to read from a peer could set up a message buffer (4096 bytes) per peer and fill it with data as available until a complete message has been received.


Next: 6.3 Reducing route flapping

Connected: An Internet Encyclopedia
6.2 Processing Messages on a Stream Protocol