Fibre Channel met en oeuvre un processus de contrôle de flux afin de réguler le flot des données
entre ports de périphériques, et de prévenir toute surcharge de trafic au niveau d’un port récepteur. Le
contrôle de flux est basé sur des crédits de trames (Credit-count), négocié durant la phase d’établissement
d’une communication entre les équipements FC intervenants. Chaque port récepteur indique combien de
trames il peut recevoir de la part de son vis-à-vis en une seule fois, sans être saturé. Si le crédit est épuisé,
aucune trame supplémentaire ne peut être émise avant que le destinataire ait indiqué qu’il a traité une ou
plusieurs trames et qu’il est prêt à en recevoir d’autres.
Deux types de contrôle de flux sont utilisés : le contrôle de flux End-to-End et le contrôle de flux Buffer-to-
Buffer.
a. Le contrôle de flux End-to-End
Le contrôle de flux End-to-End est mis en oeuvre entre le N_Port source et le N_Port destination.
Ces deux ports négocient directement les crédits sans l’intervention des équipements intermédiaires. Ce
type de contrôle de flux opère avec deux variable gérés par les entités concernées: le EE_Credit et le
EE_Credit_Cnt. Le EE_Credit d’un port émetteur est la capacité (en nombre de trames) maximale du buffer
du port récepteur. Ce paramètre est initialisé transmis durant la phase d’établissement de la connexion dans
les trames PLOGI et ACC, sa valeur minimale est 1. Le EE_Credit_Cnt est variable et sa valeur initiale est
nulle. Il sera réinitialisé à la réception d’une trame LCR. Il sera incrémenté lorsqu’une trame est transmise et
décrémenté à la réception d’un acquittement. L’émetteur arrêtera de transmettre des trames lorsque la
valeur de EE_Credit_Cnt est égale à celle de EE_Credit jusqu’à ce qu’il reçoive un acquittement.
Par exemple, lorsqu’un port A et un port B ouvrent une session, si A indique qu’il peut prendre en charge 6
trames provenant de B et si B indique qu’il peut prendre en charge 8 trames provenant de A, alors le
EE_Credit de B sera de 6 trames et celui de A sera de 8 trames. Chaque port a au départ son compteur de
EE_Credit_Cnt initialisé à 0. Pour chaque trame transmise, ce compteur est incrémenté de 1, et pour chaque
trame « Ack » reçue du vis-à-vis, ce compteur est décrémenté. La transmission d’une trame « Ack » peut
indiquer que le port destination a reçu et traité 1 ou N trame(s) : le compteur est donc décrémenté de 1 ou N
selon le cas. Si EE_Credit_Cnt égale EE_Credit, le port concerné ne peut pas transmettre une nouvelle
trame avant d’avoir reçu une trame « Ack ».
Le choix de la valeur du crédit reste un facteur important de la performance du réseau; une valeur
trop petite du crédit entraînerait une dégradation du débit et une valeur trop grande conduirait à une
monopolisation du lien. Ainsi le choix d’une valeur optimale qui pourrait permettre une transmission continue
de trames sans perturber la qualité du réseau, devient déterminant. Pour palier à ce problème, Fibre
Channel utilise une procédure qui permet d’estimer le EE_Credit après la phase de négociation des
paramètres. Cette procédure consiste à envoyer une trame ELS ESTS, puis à la réception d’un
acquittement, transmettre une série continue de trames ELS ESTC. A la réception du premier acquittement
après le port émetteur arrête de transmettre et la valeur optimale de EE_Credit est le nombre de trames
ESTC envoyées avant la réception du premier acquittement. A l’aide d’un message ADVC, cette valeur est
par la suite notifiée au N_Port récepteur qui retransmettra un PLOGI pour la confirmer.
b. Le contrôle de flux Buffer-to-Buffer
Le contrôle de flux Buffer-to-Buffer concerne les ports intermédiaires : il s’effectue sur chacun des
liens qui intervient dans la communication (figure 14). Tout comme le type End-to-End, le contrôle de flux
Buffer-to-Buffer utilise deux paramètres: le BB_Credit et le BB_Credit_Cnt qui se définissent de la même
façon que le EE_Credit et le EE_Credit_Cnt. Le BB_Credit se négocie à l’aide des messages FLOGI et ACC
dans une topologie de Fabric et dans une topologie Point à Point, cette négociation s’effectue grâce aux
messages PLOGI et ACC.
Figure 14 : Le processus de négociation du contrôle de flux BB_Credit
Contrairement au contrôle de flux End-to-End, le BB_Credit_Cnt ne peut être décrémenté que de 1 et ce à la
réception d’un signal R_RDY de la part du port récepteur. Il est incrémenté de 1 à chaque émission de
trame. La transmission d’un signal R_RDY indique que le port concerné a traité une trame et libéré un buffer
de réception.
Sa négociation s’effectuant localement, le BB_Credit devient un paramètre important dans l’extension du
réseau FC qui voit ses performances (débit) baissée en fonction de la distance. La figure suivante montre la
performance d’un réseau FC en fonction de la distance et du BB_Credit.
Figure 15 : Courbe d’évolution du débit en fonction du BB_Credit et de la distance
Comme cela se voit sur les courbes de la figure 15, l’augmentation de la distance avec maintient du débit ne
peut se faire qu’avec un BB_Credit suffisant à moins d’insérer plusieurs autres équipements FC entre la
source et la destination.
Page suivante : II.2.2.6. Communication entre équipements
Retour au menu : Rapport de stage dans le cadre du projet STORM