Flow Control Parameters are the Packet sizes and Window sizes used by a virtual circuit. These can be negotiated during call set-up for SVCs, but are fixed for PVCs.
Packet and Window sizes can be different in each direction, although this is unusual in practice.
Negotiation is optional, and indeed not always available; some networks charge extra for a subscription to negotiation.
Sizes used in the absence of negotiation
Each X.25 link is configured with Default (or Normal) sizes to be used in the absence of negotiation. These values therefore must be configured correctly if negotiation is not used, otherwise misconfiguration can lead to problems:
- if the Rx Packet Size is configured too small, the virtual circuit can be Reset if a large packet is received
- if the Tx Packet Size is configured too large, the network will Reset the virtual circuit if a large block is transmitted
- if the Tx Packet Size is configured too small, the network might drop the M-bit as a result of it thinking that the packets are not full
- if the Rx Window Size is configured too small, the virtual circuit can be Reset if too many packets are receive at a time (although this will only happen if flow control is being applied to the virtual circuit)
- if the Tx Window Size is configured too large, the network or remote DTE might Reset the virtual circuit
Usually, the Default Packet Size is 128 and the Default Window Size is 2, but this is not always the case. A Default Packet Size of 256 is not all that uncommon.
Packet Size Negotiation
A Calling DTE wishing to negotiate the packet size includes the Packet Size Negotiation facility (facility code 0x42) within the facilities field of a Call Request packet. Both the size from the Calling DTE to the Called DTE (i.e transmit size for the Calling DTE) and from the Called DTE to the Calling DTE (i.e. receive size for the Calling DTE) can be specified independently.
When the network receives the Call Request, it can alter the packet sizes such that when the incoming Call is delivered to the Called DTE, the packet sizes might have been altered. The Called DTE can also alter the packet sizes before responding with a Call Accept.
Example:
The Default packet sizes are 128 bytes, and the Calling DTE would like to use a size of 1024, so includes the packet size facility in the Call Request packet. The network can’t support packet sizes larger than 512 bytes, so it reduces the size in the facilities field when delivering the Incoming Call packet to the Called DTE. The Called DTE does not wish to use packet sizes larger than 256 bytes, and sets the Call Accept packet accordingly. The size of 256 gets delivered to the Calling DTE in the Call Connect packet.
Window Size Negotiation
Window Size Negotiation is basically similar to Packet Size Negotiation – a Calling DTE wishing to negotiate the Window Size includes Window Size Negotiation facility (facility code 0x43) in the Call Request packet.
Both the size from the Calling DTE to the Called DTE (i.e transmit size for the Calling DTE) and from the Called DTE to the Calling DTE (i.e. receive size for the Calling DTE) can be specified independently.
Flow Control settings and Performance
Using as large as possible Window Size is nearly always beneficial to performance. Large Packet Sizes, however, can add to transit delays, and are only really of use when transferring bulk data – for example, file transfer applications.
Indeed, applications in which short response times are important can benefit from using short packet sizes, and it’s possible to negotiate a packet size smaller than the usual default of 128 bytes.