exponenta event banner

Моделирование сети связи Ethernet с протоколом CSMA/CD

В этом примере показано, как моделировать сеть связи Ethernet по протоколу CSMA/CD с использованием сообщений Simulink ® и SimEvents ®. В данном примере имеется три компьютера, которые обмениваются данными через сеть связи Ethernet. Каждый компьютер имеет программный компонент, который генерирует данные и интерфейс Ethernet для связи. Каждый компьютер пытается отправить данные на другой компьютер с уникальным MAC-адресом. Интерфейс Ethernet управляет взаимодействием компьютера с сетью с помощью протокола связи CSMA/CD. Протокол используется для реагирования на конфликты, возникающие при одновременной отправке данных несколькими компьютерами. Компонент Ethernet представляет сеть и соединение между компьютерами.

Компоненты программного обеспечения

В модели каждый программный компонент генерирует данные (полезную нагрузку) и объединяет данные, их размер и назначение в сообщение. Затем сообщение посылается на интерфейс Ethernet для связи.

В каждой подсистеме компонентов программного обеспечения:

  • Функциональный блок MATLAB генерирует данные с размером между 46 и 1500 байт [1].

  • Блок Constant назначает адресам назначения данные.

  • Блок Bus Creator преобразует Data, PayloadSize, и DestAddress сигналы для невиртуального объекта шины, вызываемого dataPacket.

  • A Преобразование блоков отправки dataPacket в сообщение.

  • Блок исходящего порта передает сообщение на интерфейс Ethernet для связи.

Каждый компьютер генерирует данные с различной скоростью. Скорость генерации данных можно изменить из времени выборки функционального блока MATLAB.

Сведения об основах создания интерфейсов отправки и получения сообщений см. в разделе Установление интерфейсов отправки и получения сообщений между компонентами программного обеспечения.

Интерфейс Ethernet

Дважды щелкните по интерфейсу Ethernet 1. Обратите внимание, что можно указать идентификатор станции и емкость буфера передачи.

Подсистемы интерфейса Ethernet имеют три основных компонента:

  1. Собрать кадр Ethernet - преобразует входящее сообщение в кадр Ethernet (MAC).

  2. Буфер передачи - сохраняет кадры Ethernet для передачи.

  3. Управление доступом к среде - реализует протокол CSMA/CD для пакетной передачи [2].

Сборка кадра Ethernet

Блоки «Assemble Ethernet Frame» преобразуют сообщения в кадры Ethernet путем присоединения к сообщению специфичных для Ethernet атрибутов [1].

В процессе сборки пакетов:

  • Блок репликации объектов SimEvents ® с меткой «Копировать сообщение» копирует входящее сообщение. Исходное сообщение пересылается в блок генератора объектов SimEvents ® с именем Assemble MAC Frame. Поскольку параметру метода создания блока генератора объектов присвоено значение Event-based, он немедленно создает объект, когда исходное сообщение приходит в блок. Копия сообщения передается блоку функции Simulink с помощью initPacket() функция. Термины сообщение и сущность используются взаимозаменяемо между Simulink ® и SimEvents ®.

  • Блок Simulink Function передает данные, их размер и адрес назначения блоку Assemble MAC Frame для сборки кадра.

  • Блок «Assemble MAC Frame» генерирует кадры Ethernet, которые несут как специфичные для Ethernet атрибуты, так и значения, переданные из блока «Simulink Function».

Блок «Собрать MAC-кадр» вызывает initPacket() функционирует как действие, вызываемое каждым событием формирования кадра.

Ниже приведены атрибуты сгенерированного кадра Ethernet:

  • entity.TxAddress является StationID.

  • entity.RxAddress, entity.Data, и entity.PayloadSize присваиваются значения из блока Simulink Function.

  • entity.TxDelay - задержка передачи. Он определяется размером полезной нагрузки и битрейтом. Bitrate задается функцией инициализации в свойствах модели.

  • entity.CRC - проверка циклическим избыточным кодом для обнаружения ошибок.

Буфер передачи

Буфер передачи хранит объекты перед передачей с использованием политики FIFO. Буфер моделируется блоком Queue.

Емкость очереди определяется параметром емкости буфера передачи.

Управление доступом к среде

Блоки управления доступом к среде моделируются с использованием шести блоков SimEvents ®.

  • Блок литника сущности с меткой «Допустим 1 кадр» конфигурируется как активированный литник с двумя входными портами. Один входной порт допускает кадры из блока буфера передачи. Другой входной порт называется управляющим портом, который принимает сообщения от блока CSMA/CD. Блок позволяет одному кадру продвигаться вперед, когда он принимает сообщение с положительным значением от блока CSMA/CD.

  • Блок коммутатора ввода объектов с именем «Объединить» объединяет два пути. Один входной порт принимает новые кадры, допускаемые блоком кадров «Допуск 1», а другой входной порт принимает кадры для повторной передачи, которые посылаются блоком CSMA/CD.

  • Блок сервера сущностей с меткой «Ожидание канала» моделирует время обратного отключения кадра перед его повторной передачей по каналу.

  • Другой блок литника объекта с меткой Отправить в канал открывает литник для приема кадров, когда канал свободен. Состояние канала передается посредством диаграммы CSMA/CD.

  • Блок репликации объектов с именем «Копировать передаваемый кадр» создает копию кадра. Один кадр передается в сеть Ethernet, а другой - на диаграмму CSMA/CD.

  • Блок диаграммы дискретных событий CSMA/CD представляет конечный автомат, который моделирует протокол CSMA/CD.

Протокол CSMA/CD

Протокол CSMA/CD [2] моделируется блоком дискретной диаграммы событий, который имеет два входа:

  • TxIn - копия передаваемого кадра.

  • RxIn - Кадр, полученный из сети Ethernet.

Диаграмма имеет пять выходов:

  • IsIdle - Открывает шейку Send to Channel для приема кадров, когда значение равно 1, и закрывает литник, когда значение равно 0.

  • TxRe - повторно переданный кадр, который пересылается в блок объединения, если во время его передачи обнаружена коллизия.

  • TxNext - Открывает вентиль «Разрешить 1 кадр» для приема новых кадров, когда значение равно 1.

  • DataOut - Полученные данные.

  • Size - размер полученных данных.

Передача и получение сообщений

Блок изначально находится в Standby состояние и канал свободен.

Если блок передает, то после задержки блок пытается передать сообщение и Isle.data имеет значение 0 чтобы объявить, что канал используется.

Если передача выполнена успешно, блок устанавливает TxNext.data кому 1 , чтобы разрешить новое сообщение в канал и сбросить в Standby состояние.

При наличии коллизии блок повторно отправляет сообщение после его задержки на случайное время отключения. n - счетчик повторных передач. Блок повторно передает сообщение максимум 16 времена. Если все попытки повторной передачи не увенчались успехом, то блок завершает сообщение и разрешает ввод нового сообщения. Затем сбрасывается в StandBy.

Аналогично, блок может принимать сообщения от других компьютеров. Если ошибка отсутствует, сообщения принимаются успешно, и блок выводит принятые данные и их размер.

Концентратор Ethernet

Компонент Ethernet представляет сеть связи и кабельные соединения компьютеров с сетью.

Дважды щелкните по блоку Ethernet для просмотра его параметров.

  • Подключенные станции - эти значения присвоены Stations, который является вектором с идентификаторами станций в качестве элементов.

  • Длина кабелей (м) - эти значения присвоены CableLength и представляют длину кабелей в метрах для каждого компьютера, подключенного к концентратору.

  • Частота пакетных ошибок (PER) - эти значения присваиваются PER и представляют частоту ошибок при передаче сообщения для каждого компьютера.

  • Время обработки - эти значения присваиваются ProcessingTime и представляет задержку передачи канала.

Для моделирования сети Ethernet используются три блока SimEvents ®. Три соединения с компьютером объединяются с помощью блока коммутатора ввода объектов. Блок сервера объектов используется для моделирования задержки передачи канала на основе длины кабеля. Блок репликации объектов копирует переданное сообщение и пересылает его на три компьютера.

Моделирование модели и просмотр результатов

Смоделировать модель и открыть блок Scope, отображающий среднее использование канала. Коэффициент использования канала сходится приблизительно к 0.12.

Откройте программный компонент 1 в качестве верхней модели и измените скорость генерации данных, установив для параметра Sample time блока Generate Data 1 значение 0.01. Запустите моделирование еще раз и убедитесь, что использование канала увеличивается до 0.2.

Подключение новых компьютеров к сети

К сети можно подключить больше компьютеров.

Чтобы добавить новый компьютер в сеть, выполните следующие действия.

  • Скопируйте существующий компьютер и присвойте новый идентификатор двойным щелчком на блоке интерфейса Ethernet. В этом примере новый компьютер имеет идентификатор 4.

  • Дважды щелкните по блоку Ethernet и добавьте идентификатор станции, длину кабеля и частоту ошибок пакетов для нового компьютера.

Ссылки

  1. Кадр Ethernet - Википедия (https://en.wikipedia.org/wiki/Ethernet_frame)

  2. Множественный доступ с контролем несущей с обнаружением столкновений - Википедия (https://en.wikipedia.org/wiki/Carrier-sense_multiple_access_with_collision_detection)

См. также

| | | (SimEvents) | (SimEvents) | (SimEvents) | (SimEvents) | (SimEvents)

Связанные темы