МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ЗВІТ З практичної роботи №2
На тему: «Реалізація концентратора та буфера для зберігання даних за допомогою програмного забезпечення MatLab»
Мета: використовуючи програмне забезпечення MatLab, реалізувати концентратор для групи абонентів, які користуються різними типами послуг протягом різного періоду часу, а також створити буфер даних, в якому накопичується трафік при перевищенні смуги пропускання концентратора. Виконання роботи:
Загальна структура програми міститиме наступні етапи:
1) Ініціалізація вхідних даних
-масив інтенсивності потоку(λ) ;-довжина пакету(L) ;-часу роботи системи(Time) ;-масиву генерування трафіку(С) ;-масив для сумування трафіку абонентів(Ct) ;-випадковий час користування послугами(Tkorust) ;-пропускна здатність(PZ) ;-втрати трафіку в системі(Vtraty);-трафік, що генерують всі абоненти (Traffic);-максимально генерований трафік за період 1 с. (MAX);
2) Випадковий вибір послуги абонентом ;
3) Підсумовування усіх згенерованих запитів на необхідну пропускну здатність від абонентів протягом години роботи програми ;
4)Розрахунок втрат в системі та вивід графічного зображення процесу на екран;
Обидва масиви будуть мати наступну структуру параметрів :[Дані,телефонія,відео,пауза]Щодо телефонії, то у роботі використані параметри кодеку G.711;Щодо відео даних, то у роботі використані параметри кодеку H.264;Отож вхідні масиви будуть мати наступний вигляд:λ = [ 60,80,99,0 ] (пакети/c)
L = [ 1200,64,512,0 ] (довжина пакету)
Період дослідження – 1 година;Кількість абонентів – 10;
Отож, загальний вигляд програми буде мати наступний вигляд :
N=10;
Time = 3600;
PZ = 10;
l=[60, 80, 99, 0];
L=[1200, 64, 512, 0];
C=zeros(N, Time);
Ct=zeros(1, Time);
Tkorust=zeros(1, N);
MAX = 0;
Vtraty = 0;
Traffic = 0;
for i=1:Time
Tkorust = randi([1 60], 1, N);
for j = 1:N
a = rand();
if 0<= a && a <=0.25
temp=1;
elseif 0.25< a && a <=0.5
temp=2;
elseif 0.5< a && a <= 0.75
temp=3;
else
temp=4;
end
Ci=l(temp)*L(temp);
if temp ~= 4
for f=1:Tkorust(N)
if i + f <= Time
C(j,i + f) = C(j,i + f) + Ci;
end
end
end
end
end
for i=1:Time
B=0;
for j=1:N
B=B+C(j,i);
end
Ct(i) = (B/1024)/1024;
Traffic = Traffic + Ct(i);
if (MAX < Ct(i))
MAX = Ct(i);
end
if(Ct(i) > PZ)
Vtraty = Vtraty + Ct(i) - PZ;
end
end
vtrata = Vtraty / Traffic * 100;
fprintf('За годину роботи було згенеровано: %0.1f Мб трафіку ; \n',Traffic);
fprintf('Втрати при роботі без буфера: %0.1f Мб ; \n',Vtraty);
fprintf('Втрати: %0.1f відсотка(-ків); \n',vtrata);
fprintf('Максимально згенерований трафік(за 1 с.): %0.1f Мб ; \n',MAX);
fprintf('Максимальне навантаження: %0.1f Мб ;\n\n',Time*PZ);
plot(Ct);
xlabel('Working time, sec');
ylabel('Mb/s');
grid on;
x = [0 Time];
y = [PZ PZ];
ymax = [MAX MAX];
hold on
line(x,y,'Color','green');
line(x,ymax,'Color','red');
legend('Generated traffic','System banwidth'...
,'Max traffic per second','Location','south');
hold off
Результати виконання програми:
/
/
Висновок:
В даній роботі використовуючи програмне забезпечення MatLab, було реалізовано концентратор для групи абонентів, які користуються різними типами послуг протягом різного періоду часу, а також створено буфер даних, в якому накопичується трафік при перевищенні смуги пропускання концентратора. З результатів роботи програми бачимо, що втрати не перевищують 5% і складають лише 1,8 відсотка, тому суттєво впливати на роботу концентратора не будуть.