Обнаружение потери пакетов

spimodule - Jun 7 - - Dev Community

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

01 Контроль несущей

Обнаружение несущей является распространенным методом обнаружения потери пакетов, и CSMA/CA разработан на основе определения несущей. CSMA/CA также можно рассматривать как механизм повторной передачи. Этот механизм используется Wi-Fi и ZigBee, которые мы часто используем. Перед отправкой сообщения устройство связи на короткое время откроет прием. В течение этого короткого периода времени беспроводное устройство определит наличие других мешающих сигналов в том же диапазоне частот. Например, когда устройство ZigBee выполняет определение несущей, оно должно не только определять, есть ли передача по Wi-Fi или Bluetooth. сигналы, но и есть ли другие ZigBee, передающие сигналы. Если сигнал помех исходит от Wi-Fi или Bluetooth, устройство ZigBee определит, превышает ли его собственная мощность. Если мощность не превышает его собственную, оно преодолеет ее. он решительно отбросит пакет, и если устройство ZigBee встретит другие устройства ZigBee, независимо от того, имеет ли другая сторона большую мощность, чем он сам, будет активно отбрасывать пакеты, то есть позволять другим идти первыми.

02 Механизм реагирования

Другой способ определить потерю пакетов — добавить механизм ответа. Обычно протоколы связи имеют семиуровневую модель OSI. В семиуровневом протоколе, начиная с канального уровня, на каждом уровне может быть добавлен механизм ответа. Чем ниже уровень и ближе к аппаратному обеспечению, тем быстрее срабатывает механизм реагирования.

Семиуровневая модель OSI

Давайте все же возьмем в качестве примера механизм ответа ZigBee. Модель OSI ZigBee имеет механизм ответа, который в настоящее время ограничен уровнем MAC (уровень канала передачи данных) и уровнем APS (транспортный уровень). Но в реальных приложениях механизмы реагирования часто добавляются на прикладной уровень. Ответ уровня MAC является самым быстрым, также называется MAC-ACK и обычно автоматически генерируется аппаратным обеспечением беспроводного приемопередатчика ZigBee. Принимающее устройство отправляет кадр данных ZigBee в виде широковещательной рассылки через 120 микросекунд после его получения. В то же время MAC-ACK также является самым коротким кадром в ZigBee: длина кадра составляет всего 5 байт, а общая длина — 11 байт, включая преамбулу кадра и кадр синхронизации. Согласно скорости передачи данных ZigBee 250 кбит/с, каждый байт занимает 32 микросекунды, а время заполнения кадра MAC-ACK составляет 352 микросекунды. Это означает, что после отправки кадра MAC отправитель получит MAC-ACK, соответствующий кадру MAC, через 120+352=472 микросекунды. Аналогично, уровень MAC ZigBee также предусматривает, что если отправитель не получит соответствующий MAC-ACK в течение 540 микросекунд, это будет считаться потерей пакета.

MAC-ACK отправляется посредством широковещательной рассылки. Во-первых, он может уменьшить поле адреса в кадре MAC-ACK, уменьшить длину кадра и сократить время заполнения кадра ACK. Отправитель может определить, является ли он собственным, на основе кадра. порядковый номер в кадре MAC-ACK; во-вторых, MAC-ACK использует широковещательную рассылку, которая также может напоминать другим устройствам ZigBee о том, что они обмениваются данными. Если другие устройства ZigBee в это время также выполняют прослушивание несущей, они могут активно избегать этого. устройство связи. На уровне MAC ZigBee контроль несущей и MAC-ACK представляют собой двунаправленные подходы, которые могут обеспечить точность обнаружения потери пакетов. Кроме того, широковещательные сообщения ZigBee не будут генерировать MAC-ACK.

Диверсифицированный механизм обнаружения потери пакетов

Помимо механизма ответа на уровне MAC, ZigBee также имеет механизмы ответа на транспортном и прикладном уровнях. ZigBee представляет собой ячеистую сеть с несколькими переходами, и передача на уровне MAC может соответствовать только передаче с одним переходом, поэтому ZigBee также отвечает на транспортном уровне, также называемом APS-ACK. Отправитель ZigBee передает сообщение получателю ZigBee, которое пересылается несколькими узлами маршрутизатора ZigBee. После получения сообщения принимающая сторона отправит APS-ACK отправляющей стороне по тому же пути маршрутизации. Когда отправляющая сторона получает APS-ACK, она считает, что отправленное сообщение достигло принимающей стороны. Если отправитель не получит APS-ACK через 6 секунд (значение по умолчанию), данные будут считаться потерянными.

Системы ZigBee обычно открывают только интерфейсы для уровня приложений. Наиболее распространенным интерфейсом, открытым для уровня приложений, является интерфейс обнаружения, называемый «Подтверждение данных AF», который сочетает в себе потерю пакетов уровня MAC (включая потерю пакетов MAC-ACK и потерю пакетов низкого уровня). такую ​​информацию, как потеря пакетов контроля несущей), потеря пакетов сетевого уровня и потеря пакетов транспортного уровня. Приложение верхнего уровня ZigBee может узнать, потеряно ли отправленное в данный момент сообщение.

Ответ уровня приложения

Обнаружение потери пакетов на уровне MAC и транспортном уровне относится к потере пакетов системного уровня. Другой тип потери пакетов — это потеря пакетов на прикладном уровне. Например, диммер отправляет команду «отрегулировать яркость до 50%» на устройство кондиционирования воздуха. Какой будет результат выполнения этой команды, если пакеты не потеряются? Должно быть, кондиционер выполнит «Отрегулировать яркость на 50%», но у кондиционера есть только температура, но нет яркости, а это означает, что эта команда отправляется на цель, которую не следует отправлять. В настоящее время для решения этой проблемы необходим ответ прикладного уровня. Например, после того, как кондиционер получит сообщение «Отрегулируйте яркость на 50%», он может ответить на передающую сторону ответом прикладного уровня «Смотри ясно, что я не лампочка».

. . .