This is an old revision of the document!


Test Cursul 10

1. De ce procesul de rutare are loc în bottom-half și nu în handler?

Pentru că handlerul unei rutine de întrerupere trebuie să fie rapid iar căutarea în tabela de rutare ține destul de mult.

2. Ce funcție trebuie folosită pentru a adăuga unui skb informații despre nivelul 2 de rețea: skb_push, skb_pull, skb_trim, skb_put, skb_reserve?

Cadrul Ethernet conține un antet de 14 octeți și un CRC de 4 octeți la finalul cadrului. Prin urmare, trebuiesc folosite: skb_reserve, skb_push și skb_put.

http://vger.kernel.org/~davem/skb_data.html

3. Dacă folosim TSO și putem transmite pachete de maxim 1500 octeți (MTU = 1500) și putem procesa 50K pachete pe secundă care este viteza maximă de transmisie a unei aplicații din user-space (octeți/s)?

NU este corect răspunsul cu produsul între cele 2 valori. Aplicația setează o singură dată antetele TCP și IP și trimite cât poate. Presupunând lungimea l} a antetelor, la fiecare pachet trimis din cei 1500 de octeți pierdem l} pentru că placa de rețea va realiza copierea antetului la care adăugăm _o singură dată_ antetul. Prin urmare, numărul total de octeți trimiși este 50k_1500_-_l_l}. Pentru TCP și IPv4 avem un total de l_20} (ignorând toate opțiunile) deci avem maxim 74m} octeți pe secundă.

so2/cursuri/curs10/test.1360455039.txt.gz · Last modified: 2013/02/17 09:53 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0