Drvivá väčšina zdrojových súborov k Opnetu je umiestnených vo vnorených adresároch priečinku: C:\Program Files\OPNET\16.0.A\models\std\
Súborov *.c je tu 671 a súborov *.cpp 142. Zdá sa, že v *.cpp súboroch sú hlavne kódy týkajúce sa vizuálnej stránky, jadro je implementované v *.c.
Keďže zdrojových súborov je pomerne dosť a ich názvy nie sú väčšinou zmysluplné, prehľadávanie celej štruktúry spomenutého priečinku pri hľadaní žiadaných súborov nie je efektívne. Je dobré si najprv určiť kľúčové slovo, ktoré čo najvýstižnejšie popisuje riešený problém. Keď som hľadal zdrojové súbory týkajúce sa implementácie mechanizmu Random Early Detection, ako kľúčové slovo som zvolil skratku RED. Túto som potom vložil do dialógového okna pre hľadanie súborov v Total Commanderi, konkrétne do editboxu slúžiaceho na vyhľadávanie textu v súboroch. Do editboxu pre názov súboru som ďalej vložil reťazec „*.c” a potom som ešte označil možnosť “Len celé slová”. Pred spustením vyhľadávacieho dialógového okna je dobré v TC prejsť do vyššie spomenutého priečinka.
Výsledkom vyhľadávania boli štyri súbory:
- oms_qm.ex.c
- oms_failrec_support.ex.c,
- ip_qos_support.ex.c
- ip_qos_notif_log_support.ex.c
Z nich som nakoniec vybral len tie, ktoré obsahovali kľúčové slovo RED vo význame QoS mechanizmu. Boli to súbory: oms_qm.ex.c a ip_qos_support.ex.c. Súbor oms_qm.ex.c obsahoval v súvislosti s mechanizmoch RED metódy na alokáciu a aktualizáciu run-time premenných, metódu na výpočet priemernej dĺžky frontu a metódu rozhodnutia, či došlý paket bude alebo nebude zahodený resp. označkovaný. Súbor ip_qos_support.ex.c obsahoval metódu na alokáciu pamäte pre parametre zadané užívateľom, metódu na zistenie parametrov istej RED triedy, metódu pre rozhodnutie či paket bude označkovaný alebo vyhodený, atď.
Implementácia RED mechanizmu v Opnet-e vs. článok (Floyd, S., and Jacobson, V.,)
Pri snahe pochopiť celý algoritmus RED mechanizmu, sme študovali článok Random Early Detection Gateways for Congestion Avoidance od autorov Sally Floyd and Van Jacobson z augusta 1993.
RED algoritmus, ktorý je implementovaný v Opnet-e je zhodný s algoritmom uvedenom v texte daného odborného článku (strana 8), až na niekoľko drobností, ktoré tu uvádzam:
- Rastúcou postupnosťou neoznačkovaných resp. nezahodených paketov (v prípade, že priemerná dĺžka frontu je medzi hraničnými hodnotami, min, max) sa nezvyšuje pravdepodobnosť označkovania resp. zahodenia paketu. Teda neobsahuje žiadnu analógiu k premenným count a pa ktoré vystupujú v algoritme v uvedenom článku.
- Funkcia, ktorá sa používa na výpočet parametra m slúžiaceho na prepočet priemernej dĺžky frontu v prípade, že paket aktuálne vchádza do prázdneho frontu, je na rozdiel od textu v článku definovaná v OPNETe ako:
m = (op_sim_time () – last_start_idle_time) / typical_transmission_time_for_a_small_packet
Parameter tps je tzv. typical transmission time for a small packet a je nastavený na hodnotu 0.001.
Algoritmus implementovaný v Opnete podporuje tak značkovanie (takto je koncipovaný algoritmus v texte článku) ako aj zahadzovanie paketov. To či sa pakety budú zahadzovať alebo značkovať závisí na nastavení parametra CE Marking v GUI Opnetu.
Vývojový diagram RED mechanizmu podľa implementácie v OPNETe
Pre lepšie pochopenie uvádzame 2 verzie diagramu, ktoré sú obsahovo rovnaké, líšia sa len názvami premenných: 1. názvy premenných ktoré sme prevzali z článku – pre tých ktorí si zvykli na názvy z článku, a 2. pôvodné názvy premenných tak ako je to v OPNETe implemenetované – pre tých ktorí sa budú chcieť viac orientovať na to ako je RED implemenetované v OPNETe a sú zvyknutí na názvy premenných z OPNETu.
1. Vývojový diagram s názvami premenných prebranými z textu článku:
2. Vývojový diagram s názvami premenných z OPNETu:
Predchádzajúci text pripravil: Dušan Nemček
Články o experimentoch s RED mechanizmom v OPNETe