BIC TCP
Model TCP/IP per capes |
---|
Xarxes informàtiques |
BIC TCP (Binary Increase Congestion control ) és un dels algorismes de control de congestió que es poden utilitzar per al protocol de control de transmissió (TCP). BIC està optimitzat per a xarxes d'alta velocitat amb alta latència: les anomenades "xarxes llargues de greix". Per a aquestes xarxes, BIC té un avantatge significatiu respecte als esquemes de control de congestió anteriors per corregir l'amplada de banda molt infrautilitzada.[1][2]
BIC implementa un algorisme únic de finestra de congestió (cwnd). Aquest algorisme intenta trobar el màxim cwnd cercant en tres parts: augment de cerca binària, augment additiu i inici lent. Quan es produeix una fallada de xarxa, el BIC utilitza la disminució multiplicativa per corregir el cwnd.[3]
BIC TCP s'implementa i s'utilitza per defecte als nuclis Linux 2.6.8 i posteriors. La implementació per defecte es va tornar a canviar a CUBIC TCP a la versió 2.6.19.[4]
Algoritme
[modifica]Es defineix les variables següents:
S max : l'increment màxim
S min : l'increment mínim
w max : la mida màxima de la finestra
β: factor de disminució de la finestra multiplicativa
cwnd: mida de la finestra de congestió
bic_inc: increment de finestra per RTT (temps d'anada i tornada)
A cada interval RTT actualitzeu el cwnd amb el següent:
Si no s'elimina cap paquet, la finestra de congestió (cwnd) augmenta de tres maneres diferents: augment de la cerca binària, augment additiu i inici lent. En cada pas, s'utilitza un com a increment.
Un pas per augmentar el cwnd:
if (cwnd < w max ) // cerca binària O additiu bic_inc = (w max - cwnd) / 2; else // inici lent O additiu bic_inc = cwnd - w max ; if (bic_inc > S max ) // additiu bic_inc = S max ; else if (bic_inc < S min ) // cerca binària O inici lent bic_inc = S min ; cwnd = cwnd + (bic_inc / cwnd);
Si es deixa caure un o més paquets, el cwnd es redueix mitjançant la disminució multiplicativa. Això requereix β, que s'utilitza per disminuir el cwnd en (100×β)%. En el cas de dos fluxos, un amb un cwnd gran i l'altre amb un cwnd petit, la convergència ràpida s'utilitza per disminuir el w max del flux de cwnd més gran a una velocitat més gran que el flux de cwnd més petit per permetre una convergència més ràpida del flux de cwnd més gran quan augmentant el seu cwnd.
Un pas de disminució de cwnd:
if (cwnd < w max ) // convergència ràpida
w màx = cwnd * (2-β) / 2;
altra cosa
w max = cwnd; cwnd = cwnd * (1-β);
Referències
[modifica]- ↑ «BIC FAQ» (en anglès). www4.ncsu.edu. Arxivat de l'original el 2018-12-12. [Consulta: 25 desembre 2018].
- ↑ «TCP Congestion Control Algorithms Comparison» (en anglès). [Consulta: 16 novembre 2023].
- ↑ (en anglès) IEEE INFOCOM 2004. DOI: 10.1109/INFCOM.2004.1354672.
- ↑ «BIC TCP Congestion Window Growth Behavior» (en anglès). [Consulta: 16 novembre 2023].