В этом примере показано, как смоделировать сеть связи Ethernet с протоколом CSMA/CD с помощью сообщений Simulink ® и SimEvents ®. В этом примере существуют три компьютера, которые взаимодействуют через сеть связи Ethernet. Каждый компьютер имеет программный компонент, который генерирует данные и интерфейс Ethernet для связи. Каждый компьютер пытается отправить данные на другой компьютер с уникальным MAC-адресом. Интерфейс Ethernet управляет взаимодействием компьютера с сетью с помощью протокола связи CSMA/CD. Протокол используется для реагирования на столкновения, которые происходят при одновременной передаче данных несколькими компьютерами. Компонент Ethernet представляет сеть и соединение между компьютерами.
В модели каждый программный компонент генерирует данные (полезную нагрузку) и объединяет данные, их размер и место назначения в сообщение. Затем сообщение отправляется в интерфейс Ethernet для обмена данными.
В каждой Подсистеме Программного Компонента:
Блок MATLAB Function генерирует данные с размером между 46
и 1500
байты [1].
Блок Constant присваивает адресаты назначения данным.
Блок Bus Creator преобразует Data
, PayloadSize
, и DestAddress
сигналы к невиртуальному объекту шины, вызываемому dataPacket
.
Блок A Send преобразует dataPacket
в сообщение.
Блок Outport отправляет сообщение в интерфейс Ethernet для связи.
Каждый компьютер генерирует данные с разной скоростью. Вы можете изменить скорость генерации данных из шага расчета блока MATLAB Function.
Для изучения основ создания интерфейсов отправки и приема сообщений см. раздел Установка интерфейсов отправки и получения сообщений между программными компонентами.
Дважды кликните Ethernet Interface 1. Обратите внимание, что вы можете задать идентификатор станции и пропускную способность буфера передачи.
Подсистемы Ethernet-интерфейса имеют три основные части:
Assemble Ethernet Системы координат - преобразует входящее сообщение в систему координат Ethernet (MAC).
Transmission Buffer - Сохраняет системы координат Ethernet для передачи.
Управление доступом к среде - реализует протокол CSMA/CD для передачи пакетов [2].
Блоки Assemble Ethernet Frame преобразуют сообщения в системы координат Ethernet путем присоединения атрибутов Ethernet к сообщению [1].
В процессе сборки пакета:
Блок SimEvents ® Entity Replicator с меткой «Копировать сообщение» копирует входящее сообщение. Исходное сообщение пересылается в блок SimEvents ® Entity Generator с меткой Assemble MAC Frame. Потому что параметр Сущности метода блока Генерации Generator установлен в Event-based
он немедленно создает сущность, когда исходное сообщение приходит к блоку. Копия сообщения пересылается в блок Simulink Function с initPacket()
функция. Термины message и entity используются взаимозаменяемо между Simulink ® и SimEvents ®.
Блок Simulink Function передает данные, его размер и адрес назначения блоку Assemble MAC Frame для сборки системы координат.
Блок Assemble MAC Frame генерирует системы координат Ethernet, которые несут как специфические для Ethernet атрибуты, так и значения, переданные из блока Simulink Function.
Блок Assemble MAC Frame вызывает initPacket()
функция как действие, которое вызывается каждым событием генерации системы координат.
Это атрибуты сгенерированной системы координат Ethernet:
entity.TxAddress
является StationID
.
entity.RxAddress
, entity.Data
, и entity.PayloadSize
присвоены значения из блока Simulink Function.
entity.TxDelay
- задержка передачи. Это определяется размером полезной нагрузки и битрейтом. The Bitrate
параметр задается функцией инициализации в Свойствах Модели.
entity.CRC
- циклическая проверка избыточности для выявления ошибок.
Буфер передачи хранит сущности перед передачей с помощью политики FIFO. Буфер моделируется блоком Queue.
Емкость очереди определяется параметром Transmission buffer capacity.
Блоки управления доступом к среде моделируются с помощью шести блоков SimEvents ®.
Блок Entity Gate, помеченный как Admit 1 Frame, сконфигурирован как активированный GATE с двумя входными портами. Один входной порт позволяет создавать кадры из блока Transmission Buffer. Другой входной порт называется управляющим портом, который принимает сообщения от блока CSMA/CD. Блок позволяет одной системе координат продвигаться, когда он получает сообщение с положительным значением от блока CSMA/CD.
Блок Вход Switch с меткой Merge объединяет два пути. Один входной порт принимает новые системы координат, допущенные блоком системы координат Admit 1, а другой входной порт принимает системы координат для повторной передачи, которые передаются блоком CSMA/CD.
Блок Entity Server, помеченный как Wait for Channel, моделирует время отключения системы координат перед его повторной передачей через канал.
Другой блок Entity Gate, помеченный как Send to Channel, открывает шлюз, чтобы принимать системы координат, когда канал находится в простое. Состояние канала сообщается графиком CSMA/CD.
Блок Replicator сущности, помеченный как Copy Transfected Frame, генерирует копию системы координат. Одна система координат пересылается в сеть Ethernet, а другой - на график CSMA/CD.
Блок График дискретного события, помеченный CSMA/CD, представляет конечный автомат, который моделирует протокол CSMA/CD.
Протокол CSMA/CD [2] моделируется блоком Discrete-Event Chart, который имеет два входа:
TxIn
- Копия переданной системы координат.
RxIn
- Принята система координат от сети Ethernet.
График имеет пять выходов:
IsIdle
- Открывает переключатель Send to Channel, чтобы принимать системы координат, когда значение 1
, и закрывает ворота, когда значение 0
.
TxRe
- Повторно переданный система координат, который передается в блок Merge, если во время его передачи обнаружена коллизия.
TxNext
- Открывает ворота Admit 1 Frame, чтобы принять новые системы координат, когда значение 1
.
DataOut
- Полученные данные.
Size
- Размер полученных данных.
Блок первоначально находится в Standby
состояние и канал свободен.
Если блок передает, после задержки, блок пытается передать сообщение и Isle.data
установлено в 0
объявить, что канал используется.
Если передача успешна, блок устанавливает TxNext.data
на 1
разрешить новое сообщение в канал и сбрасывается на Standby
состояние.
Если происходит столкновение, блок пересылает сообщение после задержки на время случайного обратного отключения. n - счетчик для повторных передач. Блок повторно передает сообщение максимум 16
времени. Если все попытки повторной передачи являются неудачными, то блок завершает сообщение и разрешает ввод нового сообщения. Затем он сбрасывается на StandBy
.
Аналогично, блок может принимать сообщения от других компьютеров. Если ошибки нет, сообщения успешно принимаются, и блок выводит полученные данные и их размер.
Компонент Ethernet представляет коммуникационную сеть и кабельные соединения компьютеров к сети.
Дважды кликните блок Ethernet, чтобы увидеть его параметры.
Подключенные пикеты - Эти значения присваиваются Stations
, который является вектором с идентификаторами станций в качестве элементов.
Длина кабелей (m) - Эти значения присвоены CableLength
и представлять длину кабелей, в метрах, для каждого компьютера, подключенного к концентратору.
Вероятность пакетной ошибки (PER) - Эти значения назначены PER
и представление частоты ошибок в передаче сообщений для каждого компьютера.
Времена (времена) вычислений обработки - Эти значения присвоены ProcessingTime
и это представляет задержку передачи канала.
Три блока SimEvents ® используются для моделирования сети Ethernet. Три компьютерных подключения объединяются с помощью блока Вход Switch. Блок Entity Server используется, чтобы смоделировать задержку передачи канала на основе длины кабеля. Блок Entity Replicator копирует переданное сообщение и пересылает его на три компьютера.
Симулируйте модель и откройте блок Scope, который отображает среднюю загрузку канала. Использование канала сходится примерно к 0.12
.
Откройте Software Компонента 1 как верхняя часть модели и измените скорость генерации данных, установив Шаг расчета блока Generate Data 1 равной 0.01
. Еще раз запустите симуляцию и заметьте, что использование канала увеличивается до 0.2
.
Можно подключить к сети больше компьютеров.
Чтобы добавить новый компьютер в сеть:
Скопируйте существующий компьютер и присвойте новый идентификатор путем двойного щелчка по блоку Ethernet Interface. В этом примере новый компьютер имеет идентификатор 4
.
Дважды кликните блок Ethernet и добавьте идентификатор станции, длину кабеля и частоту ошибок пакетов для нового компьютера.
Ethernet системы координат - Википедия (https://en.wikipedia.org/wiki/Ethernet_frame)
Множественный доступ с обнаружением столкновения - Википедия (https://en.wikipedia.org/wiki/Carrier-sense_multiple_access_with_collision_detection)