CATEGORII DOCUMENTE |
Reteaua FDDI si standardul ISO 9314
Dezvoltarea acestei retele rapide, FDDI (Fiber Distributed Data Interface), de 100Mbps, a fost initiata de organizatia americana de standardizare, ANSI (American National Standard Institute), fiind proiectata pentru fibra optica, dar admitand actualmente si cabluri UTP pentru conectarea statiilor cu concentratorii.
Curent, o retea FDDI este considerata a avea o viteza de transmisie de 100Mbps la nivelul legaturii de date si o viteza de 125Mbps la nivel fizic, datorita modului de codificare a datelor, de tip 4B/5B. Topologia logica este de inel, care poate fi cablat ca stea, daca se folosesc concentratori activi. Cablajul fizic consta de fapt din doua inele, unul principal (primary ring), utilizat pentru transmiterea datelor si unul secundar (de salvare - backup), aflat normal in stare de asteptare (idle), lucru ce face posibila izolarea fara pierderi a defectelor din retea. In caz de defect (cadere statie sau tronson inel), inelul principal se va inchide prin cel secundar, care trece din stare pasiva in stare activa. Parcursul datelor va fi acum mai lung, lucru ce trebuie considerat la proiectarea fizica a retelei
Exista intr-o retea FDDI trei tipuri de statii
- statii cu atasare la ambele inele, numite de standard DAS (Dual Attachment Station); sunt statii fiabile, complexe, poseda releu bypass pentru izolare de inel, indeplinesc functii de gestionare, dar au preturi ridicate
- statii atasate la un singur inel, numite SAS (Single Attachment Station); sunt statii ce se conecteaza la retea prin intermediul unui concentrator, nu poseda proprietati deosebite de detectare si izolare defecte (aceasta o face concentratorul), se conecteaza prin cablu STP sau UTP la concentrator, dar au avantajul pretului scazut
- statia de tip concentrator DAC (Dual Attachment Concentrator), un concentrator activ care permite conectarea statiilor SAS la retea, are sarcini de gestionare, poseda bypass de izolare a statiilor SAS.
Standardul FDDI este constituit din patru capitole (substandarde):
n descrierea subnivelului fizic dependent de mediu PMD (Physical Medium Dependent)
n descrierea subnivelului fizic independent de mediu PHY
n descrierea metodei de acces la mediu si a nivelului MAC
n descrierea gestionarii retelei SMT (Station ManagemenT).
Elementele componente ale standardului sunt schitate de figura
Substratul PMD
Substratul PMD (Physical Medium Dependent) este componenta de jos a nivelului fizic si specifica elementele fizice necesare conectarii statiilor FDDI si interfata necesara cuplarii statiilor la mediile de transmisie folosite. El specifica natura si nivelul semnalelor, caracteristicile circuitelor electronice pentru receptia si transmisia datelor in mediu, caracteristicile mecanice si electrice ale cablurilor si conectorilor folositi.
Substratul PHY
Substratul PHY constituie partea superioara a stratului fizic, avand ca sarcini codificarea/decodificarea cadrelor FDDI, sincronizarea, combinarea/separarea semnalelor de ceas si de date, compensarea diferentelor intre semnalele de ceas ale statiilor adiacente.
Substratul MAC
Substratul MAC constituie partea inferioara a stratului legatura de date, partea superioara a nivelului constituind-o substratul LLC 802.2, cum se ilustreaza. Substratul MAC se ocupa de furnizarea serviciilor de acces la mediu (in cazul FDDI mediul este realizat prin inel de fibra optica, eventual cu segmente inserate realizate cu cablu UTP), servicii prevazand initializarea inelului, transmisia si receptia, izolarea defectelor.
Protocolul SMT
Pentru monitorizarea inelului si gestionarea activitatii statiilor cuplate la inel, standardul FDDI prevede un substandard specific, numit SMT. El prevede gestionarea conexiunii, prin realizarea operatiilor de inserare/decuplare a unei statii in inel, gestionarea inelului si a configuratiei sale, prin initializarea unei statii, configurarea statiei, izolarea defectelor in inel, colectarea erorilor si elaborarea de statistici. Se observa ca standardul FDDI degreveaza protocolul MAC de anumite sarcini (precum cele de contorizare erori, elaborare de statistici, executate la nivel MAC intr-o retea Token Ring), atribuindu-le unui protocol special de management.
Metoda de acces la mediu cu pasarea sincronizata a jetonului TTP (timed token passing)
Metoda de acces la mediu pentru FDDI este o metoda bazata pe token, dar activitatea tokenului este controlata de un ceas (timer), de accea poarta denumirea TTP (timed token passing). Esenta metodei de acces (cu multe similitudini spre Token Ring), consta in urmatoarele asertiuni:
n in retea circula un singur token
n o statie poate transmite doar cand detine tokenul
n fiecare statie transmite datele in mod serial, ca un flux de simboluri
n fiecare statie repeta sirul de simboluri receptionat catre statia vecina in inel
n statia elibereaza tokenul imediat dupa terminarea transmisiei
n transmisia datelor poate fi sincrona sau asincrona
n transmisia sincrona este prioritara celei asincrone
n transmisia asincrona este similara celei de la Token Ring, varianta cu eliberarea anticipata a tokenului, fapt ce duce la structuri apropiate de cadre MAC si existenta unui set de timere similar cu cel de la 802.5
n exista statie cu rol de monitorizare a retelei, aleasa dintre statiile active
n topologia logica a retelei este de inel unidirectional.
Simbolul este unitatea de reprezentare a datelor folosita de MAC FDDI, si el consta dintr-un grup de patru biti, care se va codifica/decodifica la nivelul fizic in grup de cinci biti (metoda de codificare 4B/5B). Simbolurile sunt fie de date, fie de control. Tabelul prezinta codificarea simbolurilor MAC.
Formatul tokenului si a pachetului FDDI
Structura cadrului de date MAC FDDI si a cadrului de token, este asemanatoare cu cea de la Token Ring, datorita asemanarilor la nivelul MAC; cele doua cadre sunt ilustrate de figura
Cadrul de date:
Simboluri
16 - 2 2 12 12 0 - 8956 8 2 3 -
Preambul |
SD |
FC |
DA |
SA |
Info |
FCS |
ED |
FS |
Cadrul de token:
Simboluri 16 - 2 2 2
Preambul |
SD |
FC |
ED |
Semnificatia campurilor din cele doua cadre este urmatoarea:
Campul Preambul, compus din 16 sau mai multe simboluri I (simbol idle), este localizat in fata cadrului de date sau a celui de token, fiind utilizat de o statie receptoare pentru a-si sincroniza ceasul propriu cu cel al statiei emitatoare.
Campul SD (Start Delimiter) este prezent in ambele cadre, de date si de token, fiind un camp cu rol identic ca la reteaua Token Ring, de delimitare a inceputului cadrului, si avand o structura formata din doua simboluri non-data, numite J si K.
Cele doua campuri formeaza (precum la protocolul MAC 802.5), secventa de inceput de cadru SFS (Start-of-Frame Sequence). De aici incolo putem considera ca incepe cadrul propriu-zis.
Campul FC (Frame Control) este comun celor doua tipuri de cadre, el avand insa continut diferit, dupa cum face parte din cadrul de date, sau din cadrul de token. Daca face parte din cadrul de date, el indica daca acel pachet este transmis sincron (cazul transmisiilor de voce sau video), sau transmis asincron, cazul transmisiei de date. In acest ultim caz, el va indica deasemenea daca campul Info al cadrului curent transporta unitati de date LLC (pachet de date utilizator), sau unitati de date MAC, in cazul cadrelor de control.
Campurile DA (Destination Address) si SA (Source Address), prezente in cadrul de date, fiecare continand cate 12 simboluri, transporta adresele statiei destinatare si a statiei emitatoare ale cadrului curent.
Campul Info, de lungime variabila, pana la 8.956 simboluri, contine date de tip LLC PDU, date utilizator propriu-zise, sau MAC PDU, acestea utilizate pentru efectuarea unor operatiuni de gestionare a retelei, fiind numite si cadre de serviciu.
Campul de control a erorii FCS (Frame Check Sequence) contine suma de control generata de polinomul generator CRC, pe baza campurilor anterioare din cadru.
Campul ED (End Delimiter) are o structura asemanatoare cu a campului SD, si foloseste la a pune in evidenta sfarsitul 'logic' al cadrului. Este un camp comun cadrului de date si de token.
Campul FS (Frame Status), aflat intr-un cadru de date, are o semantica similara celei de la reteaua 802.5, si contine un numar necesar de simboluri (cel putin 3), simboluri ce iau valori de tip R si S (0 si 1 logic), cu rol de indicare a realizarii sau nu a anumitor actiuni, precum:
n indicator de eroare (error detected indicator), setat de orice statie de pe traseul cadrului, care a detectat o eroare asupra datelor din cadru
n indicator de recunoastere a adresei (address recognized indicator), setat de statia care recunoaste in adresa destinatie (campul DA), propria adresa
n indicator de copiere a cadrului (frame copied indicator), setat de statia care a copiat din retea respectivul pachet.
Transmiterea, receptia si repetarea cadrelor
Transmisia cadrelor poate fi de doua tipuri:
n sincrona, transmisie care se efectueaza pentru transportul de voce sau informatie video, cadrele transmise fiind sub incidenta unor conditii restrictive de timp de raspuns (vocea), sau banda garantata (semnalul video)
n asincrona, transmisia fiind uzual folosita pentru transportul datelor in retea.
Transmisia sincrona este prioritara transmisie asincrone, astfel incat o statie care dobandeste dreptul la transmisie, va transmite intai cadrele sincrone, apoi in limita timpului ramas, pe cele asincrone.
Transmisia asincrona la nivelul MAC FDDI este similara modalitatii MAC Token Ring cu eliberarea anticipata a tokenului (prin aceasta modalitate, statia transmitatoare va elibera tokenul in retea imediat dupa ce a terminat transmisia, neasteptand revenirea cadrului). O alta deosebire ar fi ca timpul maxim de detinere al tokenului, dat de valoarea timerului THT (Timer Holding Token) nu este fix, ci este setat dinamic, pentru a se asigura un timp impus de rotatie a tokenului in inel sau o banda necesara in cazul transmisiei sincrone.
Pentru ilustrarea mecanismului de transmisie, receptie si repetare a cadrelor, se considera urmatorul exemplu.
Pentru transmisia asincrona, mecanismele fiind identice cu cele de la Token Ring, nu se mai repeta in amanunt toate actiunile de setare la nivelul subcampurilor din cadru.
Fie o retea cu patru statii A, B, C si D si sa presupunem ca statia A doreste sa transmita un mesaj catre statia C. In secventa de timp urmatoare inceputului transmisie statiei A, statia B va avea de transmis un mesaj catre statia A.
Transmisia celor doua statii va avea loc dupa urmatorul algoritm:
- statia A asteapta receptia unui token, si cand il sesizeaza, il retine. Ea modifica campul de control cadru FC, transformand tokenul in inceput de cadru de transmis; deasemenea inhiba operatia de repetare
- statia A incepe transmisia propriilor date, adica a mesajului (notat M1) catre statia C
- cand statia a terminat de transmis mesajul M1, transmite imediat in retea cadrul de token si reincepe functia de repetare a simbolurilor
- cand mesajul M1, parcurgand reteaua, a ajuns la statia C, aceasta isi recunoaste in campul adresa destinatie propria adresa si initiaza operatia de copiere. La sfarsitul operatiei de copiere (terminata cu succes), va seta subcampul 'indicator de cadru copiat', din campul FS, de stare a cadrului
- in timpul cat statia A a transmis date in retea, statiile care nu au posedat jetonul (statiile B, C si D) au indeplinit doar functia de repetare a simbolurilor receptionate din retea. Fiecare statie insa compara propria adresa cu adresa continuta in campul adresa destinatie, pentru a sesiza daca cadrul curent ii este adresat, sau este cadru de broadcast
- daca ele au detectat eroare de date, semnaleaza aceasta prin setarea subcampului 'indicator de eroare detectata' din campul FS
- daca una dintre celelalte statii, in acest timp cat statia A a transmis, si mesajul M1 circula in retea, are de transmis date, are acum posibilitatea sa o faca, caci jetonul este liber. Spre exemplu, daca statia B are de transmis un mesaj, notat M2, catre statia A, de exemplu, el asteapta tokenul, pe care il va dobandi dupa ce statia A l-a disponibilizat. Statia B dobandeste tokenul si incepe transmisia mesajului M2. Dupa transmisia lui M2, statia B elibereaza tokenul in retea
- cand mesajul M1, traversand inelul, ajunge inapoi la statia A, aceasta se va recunoaste ca statie sursa si il va scoate din inel
- cand mesajul M2 ajunge la statia A, aceasta se recunoaste ca destinatar al mesajului si il va copia in mod corespunzator
- cand mesajul M2 va ajunge la statia sursa B, aceasta il va scoate din inel.
De remarcat ca decizia de scoatere din inel a cadrului propriu (frame stripping) se ia prin analiza campului de adresa sursa SA, deci intreruperea procesului de repetare se intampla dupa repetarea in inel de catre statia sursa a campurilor Preambul, SD, FC, DA si SA. Acest lucru face ca in inel sa circule un pseudocadru rezidual, care trebuie indepartat. Operatia de indepartare a reziduului se executa de catre prima statie transmitatoare din cale, sau de catre statia monitor, printr-o operatie de curatire inel (ring purge).
Functiile de monitorizare a inelului FDDI
Fiecare statie activa din inel verifica incontinuu starea inelului, pentru depistarea disfunctionalitatilor ce se pot ivi (inel inactiv, activitate ce nu se incadreaza in parametrii setati la initializare, etc.). La depistarea acestor defecte se va declansa reinitializarea inelului.
La initializarea retelei, inainte de a se desfasura alegerea statiei cu rol de 'monitor', fiecare statie care formeaza inelul intra intr-o faza de auto-test si deasemenea ia cunostinta de statiile vecine, schimband informatii prin intermediul conexiunilor proprii. In acest fel se face o verificare initiala a retelei.
Procesul de initializare a inelului sau de reinitializarea a sa dupa detectarea sau separarea unui defect, continua cu operatia de alegere a statiei care genereaza tokenul (in terminologia FDDI nu se foloseste termenul monitor). In acest sens se declanseaza un proces de alegere, denumit 'reclamare generare jeton' (claim token). Procesul de 'claim token' poate fi declansat de oricare statie din retea. Ea va transmite in inel pachete de tip 'claim token'. Fiecare statie din retea va participa la alegere, transmitand initial pachete de 'claim', ce contin valoarea propusa pentru parametrul 'durata rotatie token in inel' (timerul TTRT - Target Token Rotation Timer), parametru critic pentru desfasurarea activitatii in retea. In acelasi timp, fiecare statie va controla pachetele de 'claim' receptionate. Daca o statie receptioneaza un pachet de 'claim token' cu o valoare de TTRT inscrisa, mai mica decat cea proprie, va inceta activitatea de transmitere pachete de 'claim'. Ea va repeta doar pachetele de 'claim' receptionate. Daca insa receptioneaza pachete de 'claim' cu valoarea TTRT egala cu cea proprie, alegerea va fi facuta de adresa sa MAC. Statia care are adresa MAC inferioara va inceta generarea pachetelor proprii de 'claim', repetand doar pe cele receptate. La sfarsitul procesului, doar o statie este invingatoare, ea fiind cea care va genera tokenul si va impune parametrii inelului.
Pentru aducerea la cunostinta tuturor statiilor a starii initiale a inelului, statia invingatoare genereaza tokenul cu valoarea TTRT inscrisa. Fiecare statie va copia aceaasta valoare intr-o locatie proprie, si deci dupa acest ultim tur de token, inelul este complet initializat si operational.
La depistarea de catre oricare statie activa din retea a unor defecte privind nefunctionarea inelului sau functionarea sa inafara parametrilor setati la initializare, se declanseaza procesul de depistare si izolare a defectului. Pentru izolarea defectelor, pentru balizarea inelului, secventa de procese este urmatoarea:
- statia care a detectat defect in inel declanseaza un proces de 'claim token'
- daca procesul de 'claim' a esuat, statia declanseaza procesul de balizare, prin emiterea de pachete de balizare (beacon), care contin adresa vecinilor sai. Fiecare statie care a receptionat un pachet de balizare isi intrerupe activitatea si repeta pachetul de 'beacon' receptat
- statia care isi recunoaste adresa in pachetul de 'beacon' receptat, intra in faza de autotest, desfasurata de o maniera similara cu cea de la protocolul Token Ring
- cand o statie receptioneaza propriul pachet de balizare, se presupune ca defectul a fost inlaturat si se poate declansa un proces de reinitializare a inelului.
Defectele care nu pot separate prin acest algoritm sunt supuse unor algoritmi detinuti de unitatea de gestionare SMT. Unul dintre acestia este algoritmul de trasare, care identifica un defect, separand atat tronson suspect, cat si statiile de la capetele sale. Statiile si tronsonul sunt izolate de retea, prin activarea inelului secundar, astfel ca se stabileste acum un traseu care le ocoleste. Statiile izolate intra intr-un proces de test, care stabileste clar daca sunt defecte; la fel in ceea ce priveste tronsonul dintre ele. Dupa eradicarea defectului, ele vor fi reintroduse in retea, prin semnalarea la nivel fizic a actiunii, si declansarea reinitializarii retelei.
Principalele timere folosite de protocolul de la nivelul MAC FDDI sunt:
- durata propusa pentru rotatia tokenului in inel TTRT (Target Token Rotation Timer), valoare propusa de statie in timpul procesului de initializare sau reinitializare a retelei. Valoarea uzual propusa este de 8ms, dar ea este variabila, putand avea valori intre 4ms si 165ms
- timerul pentru durata maxima a detinerii tokenului THT (Timer Holding Token); pentru ca o statie nu poate transmite un timp superior timpului necesar parcurgerii inelului, timerul este initializat cu valoarea TTRT impusa de statia invingatoare, valoare memorata de fiecare statie
- timerul pentru durata maxima intre doua transmisii valide TVX (Timer Valid Transmission); timerul este resetat prin receptarea de catre statie a unui token valid sau a unui pachet de date valid. La nerespectarea valorii, statia banuie un defect datorat unei caderi sau inrautatirii parametrilor retelei, si va declansa un proces de trasare pentru izolarea defectului. Valoarea timerului este uzual 2,62ms
- timerul pentru durata rotatiei tokenului TRT (Timer Rotation Token), care este folosit de statie pentru a verifica corecta secventa a operatiilor in retea. Timerul este resetat la trecerea prin statie a unui token valid, iar valoarea pana la care se considera ca reteaua opereaza corect este valoarea data de TTRT a statiei generatoare a tokenului curent, valoare aflata memorata in bufferele statiei.
Subnivelul PHY
Functiile indeplinite de subnivelul independent de mediu PHY, sunt:
n codificarea NRZ (Non return to Zero) si NRZI (Non Return to Zero Inverted on one) a sirului de coduri pentru simbolurile folosite la nivel MAC. Simbolurile folosite la nivel MAC sunt codificate dupa metoda 4B/5B, obtinandu-se campuri (coduri) de cinci biti, care sunt codificate NRZI, apoi NRZ, pentru transmiterea catre substratul PMD
n separarea semnalului de ceas de cel de date in faza de receptie si combinarea lor pentru semnalul transmis
n compensarea diferentelor de ceas dintre statia curenta si ceasul retelei, prin prevederea unor buffere de 'elasticizare' a ritmului transmisiei
n pastrarea numarului de biti din campul Preambul in limite admise; prin procesul sincronizarii, o parte din biti se pierd, substratul PHY ocupandu-se de refacerea lor
n codificarea 4B/5B a simbolurilor primite de la nivelul MAC. Tabelul cu codurile pentru simbolurile MAC este dat de tabelul
n determinarea starii liniilor de transmisie si transmiterea sa catre protocolul de gestionare SMT, care raspunde de integritatea retelei. Starile posibile ale liniilor sunt si ele codificate, iar codurile date de tabelul
Valoare |
Simbol |
Semantica |
00000 |
Q |
stare linie Quiet |
11111 |
I |
stare linie Idle |
00100 |
H |
stare linie Halt |
11000 |
J |
prima parte a campului start delimiter |
10001 |
K |
a doua parte a campului Start Delimiter |
11110 |
0 |
simbolul pentru valoarea 0 |
01001 |
1 |
simbolul pentru valoarea 1 |
10100 |
2 |
simbolul pentru valoarea 2 |
10101 |
3 |
simbolul pentru valoarea 3 |
01010 |
4 |
simbolul pentru valoarea 4 |
01011 |
5 |
simbolul pentru valoarea 5 |
01110 |
6 |
simbolul pentru valoarea 6 |
01111 |
7 |
simbolul pentru valoarea 7 |
10010 |
8 |
simbolul pentru valoarea 8 |
10011 |
9 |
simbolul pentru valoarea 9 |
10110 |
A |
simbolul pentru valoarea A |
10111 |
B |
simbolul pentru valoarea B |
11010 |
C |
simbolul pentru valoarea C |
11011 |
D |
simbolul pentru valoarea D |
11100 |
E |
simbolul pentru valoarea E |
11101 |
F |
simbolul pentru valoarea F |
01101 |
T |
simbolul pentru terminare |
00111 |
R |
zero logic (reset) |
11001 |
S |
unu logic (set) |
Substratul fizic dependent de mediu PMD
Pentru substratul fizic dependent de mediu PMD, cu rol in descrierea caracteristicilor mecanice si electrice ale elementelor de conectare la mediu, descrierea nivelelor semnalelor de interfata, si in general a tuturor problemelor ce apar la directa interconectare cu mediul, exista mai multe standarde, cu modificari in timp, functie de modificarile aparute in posibilitatea de utilizare a diferitelor medii optice sau electrice.
Primul standard aplicat, si cel mai raspandit si astazi, este ANSI X3.166, republicat de ISO sub forma ISO/IEC 9314-6. Standardul se bazeaza pe utilizarea fibrei optice multimodale cu dimensiuni 62.5/125 (diametru miez[mm] /diametru cladding[mm]), si a elementelor optice de tip LED ce lucreaza pentru lungime de unda de 1300nm. Distanta maxima admisa intre doua statii FDDI este de 2Km, dar nu trebuie sa se depaseasca o atenuare globala de 11dB.
Conectorii folositi (numiti de standard MIC - Medium Interface Connector) sunt cei mai raspanditi conectori pentru fibra optica, si anume conectorii duplex ST, avand cheie de insertie configurabila. Aceasta permite folosirea lor pentru inserarea la oricare port al unei statii. O statie FDDI poate poseda urmatoarele tipuri de porturi, fiecare avand o configuratie fizica diferita pentru conector:
n port tip A, pentru cuplare a unei statii DAS ca intrare pentru inelul principal si iesire pentru cel secundar (primary in/secondary out)
n port de tip B, pentru cuplarea unei statii DAS ca primary out/secondary in
n port de tip M, pentru cuplare concentrator DAC
n port de tip S pentru cuplare statie SAS.
Pentru utilizarea cablurilor cu perechi de fire rasucite s-a elaborat standardul ANSI TP-PMD, care da regulile de conectare ale statiilor SAS la concentratorul dual, folosindu-se cabluri STP sau UTP. Conectarea statiilor SAS la concentrator este singurul loc intr-o retea FDDI unde se pot utiliza cablurile cu perechi de fire rasucite. Distanta maxima prevazuta intre concentrator si statii este de 100m, deci se respecta regulile de cablare EIA/TIA 568. Conectorii folositi sunt: conector hermafrodit pentru cablu STP si conectori RJ45 pentru cablu UTP de categoria 5.
Standardul prevede pentru codificarea datelor un etaj de codificare suplimentar, pentru ca in mediu fluxul de biti este codificat utilizand codul cu tranzitii multinivel MLT-3 (Multi-Level Transition, un cod ce permite scaderea influentei atenuarii asupra fluxului de biti) -; astfel la transmisia datelor, are loc codificarea datelor primite de la substratul PHY, din cod NRZI, in cod NRZ si apoi in MLT-3, lantul la receptia din mediu a fluxului de biti si transmiterea sa la nivelul PHY fiind invers, din cod MLT-3 in NRZ si apoi NRZI (codificarea NRZI-NRZ poate fi facuta si la nivelul PHY).
Configurarea unei retele FDDI poate fi facuta in mai multe moduri
-configurare sub forma unui inel, daca se utilizeaza doar statii DAS
n configurare stelara sau arborescenta, daca se foloseste un concentrator DAC si statii SAS
n realizarea unui trunchi principal (backbone) in forma inelara, la care se cupleaza statiile DAS si concentratoarele si realizarea unui cablaj stelar de la fiecare concentrator catre statiile SAS. Aceasta topologie este cea mai folosita.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1144
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved