用CSMA/CD协议建模一个以太网通信网络
这个例子展示了如何使用Simulink®消息和SimEvents®对具有CSMA/CD协议的以太网通信网络建模。在这个示例中,有三台计算机通过以太网通信网络进行通信。每台计算机都有一个生成数据的软件组件和一个用于通信的以太网接口。每台计算机都试图将数据发送到另一台具有唯一MAC地址的计算机。以太网接口通过使用CSMA/CD通信协议来控制计算机和网络之间的交互。该协议用于响应多台计算机同时发送数据时发生的冲突。以太网组件表示网络和计算机之间的连接。
软件组件
在模型中,每个软件组件生成数据(有效负载),并将数据、其大小和目的地组合成消息。然后将消息发送到以太网接口进行通信。
在每个软件组件子系统中:
MATLAB函数块生成的数据大小介于
46
而且1500
个字节(1]。
常量块为数据分配目的地址。
总线创建器块转换
数据
,PayloadSize
,DestAddress
向非虚拟总线对象调用dataPacket
.
发送块转换
dataPacket
一个消息。
Outport块将消息发送到以太网接口进行通信。
每台计算机以不同的速率生成数据。你可以从MATLAB函数块的采样时间中改变数据生成速率。
要了解创建消息发送和接收接口的基础知识,请参见建立软件组件之间的消息发送和接收接口.
以太网接口
双击“以太网接口1”。注意,您可以指定站ID而且传输缓冲容量.
以太网接口子系统有三个主要部分:
集合以太网帧——将传入的消息转换为以太网(MAC)帧。
传输缓冲区——存储用于传输的以太网帧。
介质访问控制-为数据包传输实现CSMA/CD协议[2]。
组装以太网帧
集合以太网帧块通过将特定于以太网的属性附加到消息[1]。
在包组装过程中:
标有Copy Message的SimEvents®实体复制器块复制传入消息。原始消息被转发到一个SimEvents®实体生成器块,标记为装配MAC帧。因为实体生成器块生成方法参数设置为
基于事件的
,当原始消息到达块时,它立即产生一个实体。参数将消息的副本转发到Simulink函数块initPacket ()
函数。条款消息而且实体可在Simulink®和SimEvents®之间互换使用。
Simulink函数块将数据、其大小和目的地址传输到装配MAC帧块进行帧组装。
装配MAC帧块生成以太帧,这些以太网帧携带特定于以太网的属性和从Simulink函数块传输的值。
集合MAC帧块调用initPacket ()
函数作为每个帧生成事件调用的动作。
这些是生成的以太网帧的属性:
实体。TxAddress
是StationID
.
实体。RxAddress
,实体。数据
,实体。PayloadSize
从Simulink函数块中分配值。
实体。TxDelay
是传输延迟。它由有效载荷大小和比特率定义。的比特率
参数由模型属性中的初始化函数指定。
实体。儿童权利公约
是用于错误检测的循环冗余检查。
传输缓冲区
传输缓冲区使用先进先出(FIFO)策略在传输前存储实体。缓冲区由Queue块建模。
队列的容量由传输缓冲容量参数。
介质访问控制
介质访问控制块是通过使用六个SimEvents®块建模的。
一个标记为Admit 1 Frame的实体门块被配置为具有两个输入端口的启用门。一个输入端口允许来自传输缓冲块的帧。另一个输入端口称为控制端口,它接受来自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)-这些值被分配给
每
和表示每台计算机在消息传输中的错误率。
处理时间(s)-这些值被分配给
ProcessingTime
它表示信道传输时延。
三个SimEvents®块用于模拟以太网网络。这三台计算机连接是通过使用实体输入开关块合并的。实体服务器块用于基于电缆长度建模通道传输延迟。实体复制器块复制传输的消息并将其转发给三台计算机。
模拟模型并回顾结果
模拟模型并打开显示平均通道利用率的Scope块。通道利用率收敛到约0.12
.
打开软件组件1作为顶层模型,并通过设置样品时间生成数据1块的0.01
.再次运行模拟,观察通道利用率增加到0.2
.
将新计算机连接到网络
你可以把更多的计算机连接到网络上。
向网络中添加一台新计算机:
复制一个现有的计算机并通过双击以太网接口块分配一个新ID。在本例中,新计算机具有ID
4
.
双击以太网块,为新计算机添加工作站ID、电缆长度和包错误率。
参考文献
以太网帧-维基百科(https://en.wikipedia.org/wiki/Ethernet_frame)
带有碰撞检测的载波感知多路访问。Wikipedia (https://en.wikipedia.org/wiki/Carrier-sense_multiple_access_with_collision_detection)
另请参阅
发送|收到|队列|实体输入开关(SimEvents)|实体复制因子(SimEvents)|离散事件图(SimEvents)|实体发电机(SimEvents)|实体门(SimEvents)
相关的话题
- 仿真软件信息概述
- Simulink模型中的离散事件仿真(SimEvents)
- 与多个发送方和接收方建立共享的沟通渠道