基于CSMA/CD协议的以太网通信网络模型
本示例展示了如何使用Simulink®消息和SimEvents®对CSMA/CD协议的以太网通信网络建模。金宝app在本例中,有三台计算机通过以太网通信网络进行通信。每台计算机都有一个生成数据的软件组件和一个用于通信的以太网接口。每台计算机都试图将数据发送到具有唯一MAC地址的另一台计算机。以太网接口通过使用CSMA/CD通信协议来控制计算机与网络之间的交互。该协议用于响应多台计算机同时发送数据时发生的冲突。以太网组件表示网络和计算机之间的连接。
软件组件
在模型中,每个软件组件生成数据(有效负载),并将数据、其大小和目的地组合成一条消息。然后将消息发送到以太网接口进行通信。
在每个软件组件子系统中:
MATLAB函数块生成大小介于之间的数据
46
而且1500
个字节(1].
常量块为数据分配目的地址。
总线创建器块转换
数据
,PayloadSize
,DestAddress
调用的非虚拟总线对象dataPacket
.
发送块转换
dataPacket
到一个消息。
Outport块将消息发送到以太网接口进行通信。
每台计算机以不同的速率生成数据。您可以从MATLAB函数块的采样时间更改数据生成速率。
要了解创建消息发送和接收接口的基础知识,请参见在软件组件之间建立消息发送和接收接口.
以太网接口
双击“以太网接口1”。注意,您可以指定站ID而且传输缓冲容量.
以太网接口子系统有三个主要部分:
组装以太网帧-将传入消息转换为以太网(MAC)帧。
传输缓冲区-存储用于传输的以太网帧。
介质访问控制-为数据包传输实现CSMA/CD协议[2].
组装以太网帧
组装以太网帧块通过向消息附加特定于以太网的属性将消息转换为以太网帧[1].
在包组装过程中:
标记为Copy Message的SimEvents®Entity Replicator块复制传入消息。原始消息被转发到SimEvents®实体生成器块标记组装MAC帧。因为实体生成器块生成方法参数设置为
基于事件的
,当原始消息到达块时,它立即生成一个实体。控件将消息的副本转发到Simulink Function块金宝appinitPacket ()
函数。条款消息而且实体在Simulink®和SimEvents®之间可互换使用。金宝app
Simu金宝applink函数块将数据、它的大小和它的目标地址传输到组装MAC帧块进行帧组装。
装配MAC帧块生成以太网帧,这些以太网帧携带特定于以太网的属性和从Simulink函数块传输的值。金宝app
组装MAC帧块调用initPacket ()
函数作为每个帧生成事件调用的动作。
这些是生成的以太网帧的属性:
实体。TxAddress
是StationID
.
实体。RxAddress
,实体。数据
,实体。PayloadSize
从Simulink函数块中分配值。金宝app
实体。TxDelay
是传输延迟。它由有效载荷大小和比特率定义。的比特率
参数由模型属性中的初始化函数指定。
实体。儿童权利公约
用于错误检测的循环冗余检查。
传输缓冲区
传输缓冲区使用先进先出(FIFO)策略在传输前存储实体。缓冲区由一个Queue块建模。
队列的容量由传输缓冲容量参数。
介质访问控制
介质访问控制块通过使用六个SimEvents®块建模。
一个标记为承认1帧的实体门块被配置为具有两个输入端口的启用门。一个输入端口允许来自传输缓冲区块的帧。另一个输入端口称为控制端口,用于接收来自CSMA/CD块的消息。当接收到来自CSMA/CD块的值为正值的消息时,该块允许前进一帧。
标记为Merge的实体输入开关块合并两条路径。一个输入端口接受由Admit 1帧块接收的新帧,另一个输入端口接受由CSMA/CD块发送的重传帧。
一个标记为等待通道的实体服务器块模拟了帧在通过通道重传之前的返回时间。
另一个标记为“发送到通道”的实体门块在通道空闲时打开门以接受帧。通道状态由CSMA/CD图传达。
一个标记为复制传输帧的实体复制器块生成帧的副本。一帧被转发到以太网,另一帧被转发到CSMA/CD图表。
一个标记为CSMA/CD的离散事件图块表示对CSMA/CD协议建模的状态机。
CSMA / CD协议
CSMA/CD协议[2]由离散事件图表块建模,该块有两个输入:
TxIn
-传输帧的副本。
RxIn
—从以太网接收的帧。
该图表有五个输出:
IsIdle
—当值为时,打开发送到通道门以接受帧1
,当值为时关闭门0
.
TxRe
—重传的帧,如果在传输过程中检测到碰撞,则转发到Merge块。
TxNext
-当该值为时,打开承认1帧门以接受新的帧1
.
DataOut
—接收数据。
大小
—接收数据的大小。
发送和接收消息
块最初在备用
状态,通道空闲。
如果该块正在传输,经过一段延迟后,该块将尝试传输消息和Isle.data
设置为0
声明通道正在使用。
如果传输成功,则块设置TxNext.data
来1
允许新消息进入通道并重置为备用
状态。
如果发生碰撞,块将在随机延迟一段时间后重新发送消息。n是用于重传的计数器。该块最多重传一条消息16
次了。如果所有重传尝试都不成功,则该块终止消息并允许输入新消息。然后重置为备用
.
类似地,该块可以接收来自其他计算机的消息。如果没有错误,则成功接收消息,并且块输出接收到的数据及其大小。
以太网集线器
以太网组件表示通信网络和计算机到网络的电缆连接。
双击以太网块查看其参数。
连接站—这些值被赋给
站
,它是一个以站id为元素的向量。
电缆长度(m)—这些值被赋给
CableLength
并表示连接到集线器的每台计算机的电缆长度,单位为米。
包错误率(PER)—这些值被赋给
每
表示每台计算机在消息传输中的错误率。
处理时间(秒)—这些值被赋给
ProcessingTime
表示信道传输时延。
三个SimEvents®块用于对以太网进行建模。使用实体输入开关块合并三个计算机连接。实体服务器块用于根据电缆长度对通道传输延迟进行建模。实体复制器块复制传输的消息并将其转发给三台计算机。
模拟模型并回顾结果
模拟模型并打开显示平均通道利用率的Scope块。信道利用率收敛到约0.12
.
打开软件组件1作为顶部模型,并通过设置样品时间的生成数据1块0.01
.再次运行模拟,观察信道利用率增加到0.2
.
将新计算机连接到网络
你可以把更多的计算机连接到网络上。
向网络中添加一台新计算机:
复制现有计算机并通过双击以太网接口块分配一个新ID。在本例中,新计算机具有ID
4
.
双击以太网块并为新计算机添加一个工作站ID、电缆长度和包错误率。
参考文献
以太网帧-维基百科(https://en.wikipedia.org/wiki/Ethernet_frame)
带有冲突检测的载波侦听多址访问-维基百科(https://en.wikipedia.org/wiki/Carrier-sense_multiple_access_with_collision_detection)
另请参阅
发送|收到|队列|实体输入开关(SimEvents)|实体复制因子(SimEvents)|离散事件图(SimEvents)|实体发电机(SimEvents)|实体门(SimEvents)