1-CSMA系统模型仿真

1坚持CSMA随机多址模型算法仿真:

推导过程如有解释不对地方,请各路大佬多多指教。

文章目录

  • 一、算法规则:
  • 二、模型:
  • 三、分析:
  • 四、代码:
  • 五、结论


一、算法规则:

(1)如果信道空闲,发送消息,否则转(2)
(2)如果信道忙,随时监听,一有空闲,发送消息。
(3)假如有冲突(在一段时间内未收到肯定的回复),则等待一随机时间,重复步骤(1)~(2)。

优点:只要媒体空闲,站点就立即可发送,避免了媒体利用率的损失;
其缺点是:假若有两个或两个以上的站点有数据要发送,冲突就不可避免。


二、模型:

1-CSMA系统模型仿真_第1张图片

三、分析:

数据的发送服从Poisson分布:
在这里插入图片描述

G:信息分组的平均到达率
一个时隙a内无信息分组到达的概率(信道空闲的概率):
在这里插入图片描述

(1)设前iI个时隙是空闲状态,则空闲时隙的平均个数:
在这里插入图片描述

空闲平均时间:
在这里插入图片描述

(2)非空闲(BU)时隙的平均个数:
在这里插入图片描述

非空闲平均所占时隙:
在这里插入图片描述

(3)成功(U)的个数:

其中E(U1)代表空闲结束后只有1个分组到达,E(U2)表示非空闲内每个时段只有一个分组到达。

在这里插入图片描述

②设中成功的个数为M,在非空闲(BU)内M个时隙中有一个信息分组到达,非空闲时的成功率:
在这里插入图片描述
在这里插入图片描述
因此:
在这里插入图片描述

(4)1-CSMA的成功率:
在这里插入图片描述

四、代码:

对1-CSMA模型的时隙分别取a=0.1、a=0.3和a=0.6进行仿真:

clc
a_x = [0.1, 0.3, 0.6]
for i = 1:3
    a = a_x(i)
    G = [0:0.1:8]
    E_U1 = (a.*G.*exp(-a.*G))./(1-exp(-a.*G)) 
    E_U2 = (1+a).*G
    E_I = a./(1-exp(-a.*G))
    E_BU = (1+a).*exp((1+a).*G)
    Su = (E_U1 + E_U2)./(E_I + E_BU)
    figure(1)
    hold on
    Su(1) = 0
    plot(G, Su, 'r--', G, Su, 'b*', 'MarkerSize',3.6)
    title('1坚持CSMA(a=0.1/0.3/0.6)')
    xlabel('到达率:G')
    ylabel('成功率:Su')
    [x, y]=findpeaks(Su)
    hold on
    plot(G(y), x, 'go')
    text(G(y)+0.25, x, ['(',num2str(G(y)),',',num2str(x),')'],'color','k')
end
legend('理论值', '仿真值', '最值')

1-CSMA系统模型仿真_第2张图片


五、结论

由1-CSMA的仿真结果可知,在一定范围内到达率不断增大,成功率在某一点将会达到最大;一旦超过最佳到达率,成功率将会随着到达率的增加而降低。同时,对于不同的时隙a,随着时隙的增加,信道的最佳到达率也将变低,最佳到达率所对应的成功率也会变低。原因是当一个站点发送数据时,在时延范围内其他站点是检测不到信道是否有信息在传输,这样碰撞率也增加了,所以时延越大,成功率(吞吐量)越小。

你可能感兴趣的:(计算机网络,matlab,csma)