Способ и устройство повторной передачи данных по протоколу пользовательских дейтаграмм
METHOD AND DEVICE FOR RETRANSMITTING DATA VIA USER DATAGRAM PROTOCOL

Область техники, к которой относится изобретение
Данное изобретение относится к области систем связи, а именно к методам повторной передачи данных по протоколу пользовательских дейтаграмм (UDP).
Уровень техники
Известно устройство и способ для передачи/приема битового потока в сети (патент RU 2224377 С2), которое осуществляет стабильную передачу битового потока видеоданных посредством использования двух логических каналов.
Недостатком изобретения является то, что при использовании одного из логических каналов для передачи сообщений посредством протокола управления передачей (TCP), при отправке сообщений в канале, подверженном влиянию помех и приводящем к большому количеству ошибок или потерь пакетов, приведет к зависанию канала, так как отправка других сообщений обрабатывается с более низким приоритетом. Кроме этого потеря служебной информации передающейся по UDP каналу о пакете с полезной нагрузкой, приведет к дублированию этого пакета с полезной нагрузкой.
Также известны способ и устройство для уменьшения влияний импульсного шума на передачу пакетов данных (патент RU 2449479 С2). Данное изобретение предназначено для уменьшения влияния импульсного шума на передачу пакетов данных по линии связи. Данное изобретение состоит из: блока повторной передачи пакетов данных по линии связи, блока запоминания недавно переданных пакетов данных, блока приема запроса повторной передачи для потерянного пакета данных, блока формирования таймаутов. Количество повторно запрашиваемых пакетов зависит от максимальной длительности задержки перемежения физического уровня линии связи, от битовой скорости передачи данных и размера передаваемого пакета.
Недостатком данного изобретения является отсутствие механизма обеспечения процесса упорядочивания пакетов, что при передаче информации мультимедийного характера будет приводить к видимым помехам. Кроме этого, устройство не осуществляет управление памятью для переданных пакетов, что снижает достоверность перезапрашиваемых данных при полном заполнении средства запоминания переданных пакетов.
Наиболее близким по сущности к заявленному способу повторной передачи данных, является известный способ, изложенный в описании к патенту на изобретение «Устройство и способ для компенсации потери пакетов в режиме передачи данных по протоколу пользовательских дейтаграмм» (патент RU 2501172 С2). Способ компенсации потери пакетов в режиме передачи данных по протоколу UDP состоит из следующих шагов: запуск процесса компенсации потери пакета при обнаружении утраты пакета в группе полученных пакетов данных; запуск первого счетчика времени ожидания; если по истечении времени ожидания первого счетчика потерянный пакет так и не был получен, то информация о потерянном пакете отсылается отправителю, после чего выполняется запуск второго счетчика времени ожидания и, если потерянный пакет будет получен прежде, чем истечет время ожидания по второму счетчику, то потерянный пакет будет вставлен на соответствующую позицию в группе полученных пакетов данных и на этом данный процесс компенсации потери пакета завершается, вместе с тем при обнаружении потери еще одного пакета процесс компенсации потери пакета запускается заново.
Недостатком данного способа является то, что при ненулевом значении коэффициента потерь и истечении второго счетчика процесс компенсации потерянного пакета прекращается. Это приводит к потере информации, что является неприемлемым для многих систем связи.
Наиболее близким по сущности к заявленному устройству передачи данных является устройство, изложенное в описании к патенту на изобретение «Устройство и способ для компенсации потери пакетов в режиме передачи данных по протоколу пользовательских дейтаграмм» (патент RU 2501172 С2). Устройство для компенсации потери пакетов в режиме передачи данных по протоколу UDP (патент RU 2501172 С2) состоит из блока обнаружения и блока компенсации потерь пакетов, при этом: блок обнаружения при обнаружении потери пакета в полученной группе пакетов данных приводит в действие первый модуль блока компенсации потерь пакетов, который служит для запуска счетчика ожидания; блок компенсации потерь пакетов включает в себя следующее: первый модуль запуска счетчика ожидания, предназначенный для запуска первого счетчика времени ожидания; первый модуль определения приема потерянного пакета, который определяет, был ли получен потерянный пакет во время действия первого счетчика ожидания, и при неполучении пакета запускает отчетный модуль для предоставления информации о потерянном пакете; отчетный модуль для предоставления информации о потерянном пакете, предназначенный для предоставления отправителю отчета о потерянном пакете и для запуска второго модуля запуска счетчика ожидания; второй модуль запуска счетчика ожидания, предназначенный для запуска второго счетчика времени ожидания; второй модуль определения приема потерянного пакета, который определяет, был ли получен потерянный пакет во время действия второго счетчика ожидания, и при обнаружении полученного пакета запускает модуль для вставки потерянного пакета, в противном случае он запускает блок обнаружения; а также модуль для вставки потерянного пакета, который используется для вставки потерянного пакета на соответствующее место в группе полученных пакетов данных.
Недостатком данного устройства является отсутствие механизма обработки ошибок при невыполнении компенсации, возникающих при ненулевом значении коэффициента потерь и истечении второго счетчика ожидания, это приводит к потере информации, что является неприемлемым для ряда систем связи.
Сведения, раскрывающие сущность изобретения
Целью изобретения является максимальное уменьшение потерь данных при сохранении высоких скоростных характеристик.
Поставленная цель достигается тем, что в способ повторной передачи данных по протоколу пользовательских дейтаграмм (UDP) согласно изобретению введены следующие дополнительные шаги: данные пришедшие от передатчика записывают в блок хранения полезных данных последовательно по мере прихода, параллельно осуществляют чтение и детектируют факт пропуска пакета, формируют команду перезапроса, отправляют команду на формирование дейтаграммы повторной передачи блоку обработки управляющих команд, отправляют сформированную команду перезапроса блоку передачи на повторную отправку соответствующей дейтаграммы, при приеме блоком передачи дейтаграммы осуществляют повторную передачу запрашиваемой дейтаграммы, при получении соответствующей дейтаграммы продолжают осуществлять чтение из памяти при помощи блока чтения полезных данных и детектирование потерянных дейтаграмм. Согласно изобретению факт потери дейтаграммы определяют по отсутствию метки о приходе следующей дейтаграммы в блоке хранения служебной информации на момент его чтения и отправляют команду блоку управления чтением и поиском потерянных дейтаграмм, при получении данной команды и ненулевом значении таймера запускают таймер перезапроса и осуществляют поиск потерянных дейтаграмм, при приходе потерянной дейтаграммы, сбрасывают таймер и продолжают чтение памяти и детектирование отсутствия следующей дейтаграммы, в ином случае при достижении таймером максимального значения осуществляют поиск потерянных дейтаграмм, перезапускают таймер перезапроса и формируют перезапрос.
Для поиска потерянных дейтаграмм формируют блок хранения полезных данных и блок хранения служебной информации. Данные записывают в блок хранения полезных данных по адресу, являющимся производным от номера дейтаграммы. При записи устанавливают 1 в блоке хранения служебной информации по адресу, являющимся производным от номера дейтаграммы. При чтении устанавливают 0 в блоке хранения служебной информации по адресу, являющимся производным от номера дейтаграммы. При записи счетчик записанных/прочитанных дейтаграмм увеличивают на 1, а при чтении уменьшают на 1. Поиск потерянных дейтаграмм осуществляют в интервале от индекса последней прочитанной дейтаграммы до индекса последней записанной дейтаграммы в блоке хранения служебной информации. Индексы найденных потерянных дейтаграмм помещают в промежуточный буфер FIFO. При наличии данных в буфере FIFO считывают индекс и формируют команду перезапроса с соответствующим индексом. При отправке данных получателю, значение верхней границы равняется номеру отправленной дейтаграммы. Отправляемые данные параллельно записывают в память перезапроса. При приеме пакета перезапроса сравнивают значение полученного индекса с нижней границей принятых дейтаграмм, если значение больше, то отправляют запрашиваемый пакет, в противном случае действия не осуществляют. Данные из блока хранения полезных данных считываются по адресу, являющимся производным от индекса дейтаграммы. Каждый раз при прочтении N дейтаграмм блок приема отправляет блоку передачи пакет увеличения нижней границы, значение нижней границы равняется предыдущее значение индекса +N.
Поставленная цель достигается тем, что в устройство повторной передачи данных по протоколу пользовательских дейтаграмм согласно изобретению введены блок приема управляющих команд, блок формирования пакета, блок мультиплексирования передаваемых пакетов, блок передачи содержит блок UDP обработки, блок обработки управляющих команд, блок прикладного уровня, блок обработки полезной нагрузки, блок хранения полезных данных, блок обработки управляющих команд содержит блок отправки управляющих команд, блок приема управляющих команд, блок мультиплексирования управляющих пакетов, блок демультиплексирования управляющих пакетов, при этом первый вход блока UDP обработки соединен со вторым выходом блока обработки управляющих команд, второй выход блока UDP обработки соединен с первым входом блока обработки управляющих команд, третий выход соединен с третьим входом блока обработки полезной нагрузки, третий выход блока обработки управляющих команд соединен с первым входом блока прикладного уровня, четвертый вход блока обработки управляющих команд соединен со вторым выходом блока прикладного уровня, пятый вход блока обработки управляющих команд соединен с шестым выходом блока обработки полезной нагрузки, шестой вход блока обработки управляющих команд соединен с седьмым выходом блока обработки полезной нагрузки, третий выход блока прикладного уровня соединен с первым входом блока обработки полезной нагрузки, четвертый вход блока прикладного уровня соединен со вторым выходом блока обработки полезной нагрузки, второй выход блока хранения служебной информации соединен с четвертым входом блока обработки полезной нагрузки, третий выход блока хранения служебной информации соединен с десятым входом блока обработки полезной нагрузки, первый вход блока хранения служебной информации соединен с пятым выходом блока обработки полезной нагрузки, первый вход блока хранения полезных данных соединен с восьмым выходом блока обработки полезной нагрузки, второй выход блока хранения полезных данных соединен с девятым входом блока обработки полезной нагрузки, в блоке обработки управляющих команд блока приема первый выход блока обработки управляющих команд соединен с первым входом блока приема управляющих команд, второй выход блока приема управляющих команд соединен с третьим входом блока обработки управляющих команд, второй вход блока обработки управляющих команд соединен со вторым выходом блока формирования пакета, первый вход блока формирования пакета соединен с первым выходом блока мультиплексирования передаваемых пакетов, второй, третий и четвертый входы блока мультиплексирования передаваемых пакетов соединены с четвертым, пятым и шестым выходами блока обработки управляющих команд соответственно, в блоке передачи первый вход блока UDP обработки соединен с первым выходом блока обработки управляющих команд, второй выход блока UDP обработки соединен со вторым входом блока обработки управляющих команд, третий вход блока UDP обработки соединен с третьим выходом блока обработки полезной нагрузки, шестой выход блока обработки управляющих команд соединен с первым входом блока прикладного уровня, пятый вход блока обработки управляющих команд соединен со вторым выходом блока прикладного уровня, третий выход блока обработки управляющих команд соединен с первым входом блока обработки полезной нагрузки, четвертый вход блока обработки управляющих команд соединен со вторым выходом блока обработки полезной нагрузки, третий выход блока прикладного уровня соединен с шестым входом блока обработки полезной нагрузки, первый выход блока хранения полезных данных соединен с четвертым входом блока обработки полезной нагрузки, второй вход блока хранения полезных данных соединен с пятым выходом блока обработки полезной нагрузки, в блоке обработки управляющих команд блока передачи первый выход блока отправки управляющих команд соединен с первым входом блока обработки управляющих команд, второй вход блока отправки управляющих команд соединен с первым выходом блока мультиплексирования управляющих пакетов, второй и третий входы соединены с четвертым и пятым выходами блока обработки управляющих команд соответственно, первый вход блока приема управляющих команд соединен со вторым выходом блока обработки управляющих команд, второй выход блока приема управляющих команд соединен с первым входом блока демультиплексирования управляющих пакетов, второй и третий выходы блока приема управляющих команд соединены с шестым и третьим входами блока обработки управляющих команд соответственно.
Согласно изобретению в устройстве повторной передачи данных по протоколу пользовательских дейтаграмм блок обработки полезной нагрузки блока приема состоит из блока FIFO, таймера перезапроса, блока приема данных полезной нагрузки, блока записи полезных данных, блока записи служебной информации, блока управления чтением и поиском потерянных дейтаграмм, блока поиска потерянных дейтаграмм, блока чтения полезных данных, мультиплексора чтения и поиска дейтаграмм, счетчика записанных/прочитанных дейтаграмм, блок обработки полезной нагрузки блока передачи включает в себя счетчик обработанных данных, счетчик переданных данных, блок формирования пакета ошибки, блок записи полезных данных, блок чтения полезных данных, блок мультиплексирования полезных данных, блок управления системой перезапроса, при этом третий выход блока обработки полезной нагрузки блока приема соединен с первым входом блока приема данных полезной нагрузки, второй выход блока приема данных полезной нагрузки соединен с первым входом блока записи служебной информации, третий выход блока приема данных полезной нагрузки соединен с первым входом блока записи полезных данных, четвертый вход блока приема полезной нагрузки соединен с десятым выходом блока обработки полезной нагрузки блока приема, второй выход блока записи полезных данных соединен с восьмым входом блока обработки полезной нагрузки, второй выход блока записи служебной информации соединен с первым входом счетчика записанных/прочитанных дейтаграмм, третий выход блока записи служебной информации в блоке хранения служебной информации соединен с пятым входом блока обработки полезной нагрузки, второй выход счетчика записанных/прочитанных дейтаграмм соединен с девятым входом блока управления чтением и поиском потерянных дейтаграмм, третий вход счетчика записанных/прочитанных дейтаграмм соединен с первым выходом блока чтения полезных данных, второй выход блока чтения полезных данных соединен с восьмым входом блока управления чтением и поиском потерянных дейтаграмм, третий вход блока чтения полезных данных соединен с седьмым выходом блока управления чтением и поиском потерянных дейтаграмм, четвертый вход блока чтения полезных данных соединен с первым выходом мультиплексора чтения и поиска дейтаграмм, пятый выход блока чтения полезных данных из блока хранения полезных данных соединен с седьмым входом блока обработки полезной нагрузки, шестой выход блока чтения полезных данных соединен с девятым входом блока обработки полезной нагрузки, первый выход блока поиска потерянных дейтаграмм соединен с пятым входом блока управления чтением и поиском потерянных дейтаграмм, второй вход блока поиска потерянных дейтаграмм соединен с четвертым выходом блока управления чтением и поиском потерянных дейтаграмм, третий вход блока поиска потерянных дейтаграмм соединен с третьим выходом мультиплексора чтения и поиска дейтаграмм, второй вход мультиплексора чтения и поиска дейтаграмм соединен с шестым выходом блока управления чтением и поиском потерянных дейтаграмм, четвертый вход мультиплексора чтения и поиска дейтаграмм соединен с четвертым выходом блока обработки полезной нагрузки, первый выход блока управления чтением и поиском потерянных дейтаграмм соединен со вторым входом блока обработки полезной нагрузки, второй выход блока управления чтением и поиском потерянных дейтаграмм соединен с первым входом блока FIFO, третий вход блока управления чтением и поиском потерянных дейтаграмм соединен с первым выходом блока обработки полезной нагрузки, десятый вход блока управления чтением и поиском потерянных дейтаграмм соединен с первым входом таймера перезапроса, одиннадцатый выход блока управления чтением и поиском потерянных дейтаграмм соединен со вторым входом таймера перезапроса, второй выход блока FIFO соединен с шестым выходом блока обработки полезной нагрузки, при этом первый вход блока управления системой перезапроса соединен с первым входом блока обработки полезной нагрузки блока отправки, второй вход блока управления системой перезапроса соединен с первым выходом счетчика обработанных данных, третий выход блока управления системой перезапроса соединен со вторым входом счетчика обработанных данных, четвертый выход блока управления системой перезапроса соединен с первым входом блока формирования пакета ошибки, пятый вход блока управления системой перезапроса соединен с первым выходом счетчика переданных данных, шестой выход блока управления системой перезапроса соединен с первым входом блока мультиплексирования полезных данных, седьмой выход блока управления системой перезапроса соединен с первым входом блока чтения полезных данных, второй выход блока формирования пакета ошибки соединен со вторым входом блока обработки полезной нагрузки блока отправки, второй вход счетчика переданных данных соединен с первым выходом блока записи полезных данных, второй вход блока записи полезных данных соединен с шестым входом блока обработки полезной нагрузки блока отправки, третий выход блока записи полезных данных соединен с пятым входом блока обработки полезной нагрузки блока отправки, четвертый выход блока записи полезных данных соединен со вторым входом блока мультиплексирования полезных данных, третий выход блока мультиплексирования полезных данных соединен с третьим входом блока обработки полезной нагрузки, четвертый вход блока мультиплексирования полезных данных соединен со вторым выходом блока чтения полезных данных, третий вход блока чтения полезных данных соединен с четвертым выходом блока обработки полезной нагрузки блока передачи.
Технический результат, достигаемый при реализации изобретения, позволяет практически исключить потерю данных, при сохранении высоких скоростных характеристик.
Сопоставительный анализ технического решения с устройством, выбранным в качестве прототипа, показывает, что новизна технического решения заключается в введении в заявленное устройство новых схемных элементов: блока хранения служебной информации, блока FIFO, таймера перезапроса, блока приема данных полезной нагрузки, блока записи полезных данных, блока записи служебной информации, блока управления чтением и поиском потерянных дейтаграмм, блока чтения полезных данных, мультиплексора чтения и поиска дейтаграмм, счетчика записанных/прочитанных дейтаграмм, счетчика обработанных данных, счетчика переданных данных, блока формирования пакета ошибки, блока записи полезных данных, блока чтения полезных данных, блока мультиплексирования полезных данных, блока управления системой перезапроса.
Сопоставительный анализ технического решения со способом, выбранным в качестве прототипа, показывает, что новизна технического решения заключается в том, что факт потери дейтаграммы определяется по отсутствию метки о приходе следующей дейтаграммы в блок хранения служебной информации на момент его чтения, запуск таймера перезапроса осуществляется при переходе в режим поиска, а также адреса в блоке хранения служебной информации блока приема, блоке хранения служебной информации блока передачи, блоке хранения полезных данных блока приема и блоке хранения полезных данных блока передачи формируются в соответствии с номером дейтаграммы, а также команда на освобождение памяти формируется от блока приема в блок передачи.
Таким образом, заявляемое изобретение соответствует критерию «новизна».
Анализ известных технических решений в исследуемой и смежных областях позволяет сделать вывод, что введенные функциональные блоки известны. Однако введение их в известное устройство с указанными связями придает ему новые свойства. Введенные функциональные блоки взаимодействуют таким образом, что позволяют практически исключить потерю данных при сохранении высоких скоростных характеристик.
Таким образом, изобретение соответствует критерию «изобретательский уровень».
Изобретение может быть использовано в системах связи, требующих максимальную пропускную способность канала и исключающих потерю данных, что характерно при обмене информацией в корпоративных сетях.
Таким образом, изобретение соответствует критерию «промышленная применимость».
Краткое описание чертежей
Фиг. 1 - общая схема устройства приема/передачи.
Фиг. 2 - структурная блок-схема блока приема.
Фиг. 3 - структурная блок-схема блока обработки управляющих команд блока приема.
Фиг. 4 - структурная блок-схема блока обработки полезной нагрузки блока приема.
Фиг. 5 - структурная блок-схема блока передачи.
Фиг. 6 - структурная блок-схема блока обработки управляющих команд блока передачи.
Фиг. 7 - структурная блок-схема блока обработки полезной нагрузки блока передачи.
Фиг. 8 - автомат состояний блока управления чтением и поиском потерянных дейтаграмм.
Описание вариантов осуществления изобретения
Устройство повторной передачи данных по протоколу пользовательских дейтаграмм (фиг. 1) содержит блок приема 1 и блок передачи 2. Блок приема 1 (фиг. 2) состоит из блока UDP обработки 3, блока обработки управляющих команд 4, блока прикладного уровня 6, блока обработки полезной нагрузки 5, блока хранения служебной информации 7, блока хранения полезных данных 8. Блок обработки управляющих команд 4 (фиг. 3) включает в себя блок приема управляющих команд 10, блок формирования пакета 9, блок мультиплексирования передаваемых пакетов 11. Блок обработки полезной нагрузки 5 (фиг. 4) блока приема состоит из блока FIFO 12, таймера перезапроса 13, блока приема данных полезной нагрузки 14, блока записи полезных данных 15, блока записи служебной информации 16, блока управления чтением и поиском потерянных дейтаграмм 17, блока поиска потерянных дейтаграмм 18, блока чтения полезных данных 19, мультиплексора чтения и поиска дейтаграмм 20, счетчика записанных/прочитанных дейтаграмм 21. Блок передачи 2 (фиг. 5) содержит блок UDP обработки 22, блок обработки управляющих команд 23, блок прикладного уровня 24, блок обработки полезной нагрузки 25, блок хранения полезных данных 26. Блок обработки управляющих команд 23 (фиг. 6) состоит из блока отправки управляющих команд 29, блока приема управляющих команд 30, блока мультиплексирования управляющих пакетов 27, блока демультиплексирования управляющих пакетов 28. Блок обработки полезной нагрузки 25 (фиг. 7) состоит из счетчика обработанных данных 31, счетчика переданных данных 32, блока формирования пакета ошибки 33, блока записи полезных данных 34, блока чтения полезных данных 35, блока мультиплексирования полезных данных 36, блока управления системой перезапроса 37.
В блоке приема первый вход блока 3 соединен со вторым выходом блока 4, второй выход блока 3 соединен с первым входом блока 4, третий выход блока 3 соединен с третьим входом блока 5, третий выход блока 4 соединен с первым входом блока 6, четвертый вход блока 4 соединен со вторым выходом блока 6, пятый вход блока 4 соединен с шестым выходом блока 5, шестой вход блока 4 соединен с седьмым выходом блока 5, третий выход блока 6 соединен с первым входом блока 5, четвертый вход блока 6 соединен со вторым выходом блока 5, второй выход блока 7 соединен с четвертым входом блока 5, первый вход блока 7 соединен с пятым выходом блока 5, третий выход блока 7 соединен с десятым входом блока 5, первый вход блока 8 соединен с восьмым выходом блока 5, второй выход блока 8 соединен с девятым входом блока 5. В блоке 4 первый выход блока 4 соединен с первым входом блока 10, второй выход блока 10 соединен третьим входом блока 4, второй вход блока 4 соединен со вторым выходом блока 9, первый вход блока 9 соединен с первым выходом блока 11, второй, третий и четвертый входы блока 11 соединены с четвертым, пятым и шестым выходами блока 4. В блоке 5 третий выход блока 5 соединен с первым входом блока 14, второй выход блока 14 соединен с первым входом блока 16, третий выход блок 14 соединен с первым входом блока 15, четвертый вход блока 14 соединен с десятым выходом блока 5, второй выход блока 15 соединен с восьмым входом блока 5, второй выход блока 16 соединен с первым входом счетчика 21, третий выход блока 16 соединен с пятым входом блока 5, второй выход счетчика 21 соединен с девятым входом блока 17, третий вход счетчика 21 соединен с первым выходом блока 19, второй выход блока 19 соединен с восьмым входом блока 17, третий вход блока 19 соединен с седьмым выходом блока 17, четвертый вход блока 19 соединен с первым выходом мультиплексора 20, пятый выход блока 19 соединен с седьмым входом блока 5, шестой вход блока 19 соединен с девятым выходом блока 5, первый выход блока 18 соединен с пятым входом блока 17, второй вход блока 18 соединен с четвертым выходом блока 17, третий вход блока 18 соединен с третьим выходом мультиплексора 20, второй вход мультиплексора 20 соединен с шестым выходом блока 17, четвертый вход мультиплексора 20 соединен с четвертым выходом блока 5, первый выход блока 17 соединен со вторым входом блока 5, второй выход блока 17 соединен с первым входом блока 12, третий вход блока 17 соединен с первым выходом блоком 5, десятый вход блока 17 соединен с первым входом таймера 13, одиннадцатый выход блока 17 соединен со вторым входом таймера 13, второй выход блока 12 соединен с шестым входом блока 5. В блоке 2 первый вход блока 22 соединен с первым выходом блока 23, второй выход блока 22 соединен со вторым входом блока 23, третий вход блока 22 соединен с третьим выходом блока 25, шестой выход блока 23 соединен с первым входом блока 24, пятый вход блока 23 соединен со вторым выходом блока 24, третий выход блока 23 соединен с первым входом блока 25, четвертый вход блока 23 соединен со вторым выходом блока 25, третий выход блока 24 соединен с шестым входом блока 25, первый выход блока 26 соединен с четвертым входом блока 25, второй вход блока 26 соединен с пятым выходом блока 25. В блоке 23 первый выход блока 29 соединен с первым входом блока 23, второй вход блока 29 соединен с первым выходом блока 27, второй и третий входы блока 27 соединены с четвертым и пятым выходами блока 23 соответственно, первый вход блока 30 соединен со вторым выходом блока 23, второй выход блока 30 соединен с первым входом блока 28, второй и третий выходы блока 28 соединены с шестым и третьим входами блока 23 соответственно. В блоке 25 первый вход блока 37 соединен с первым выходом блока 25, второй вход блока 37 соединен с первым выходом счетчика 31, третий выход блока 37 соединен со вторым входом 31, четвертый выход блока 37 соединен с первым входом блока 33, пятый вход блока 37 соединен с первым выходом счетчика 32, шестой выход блока 37 соединен с первым входом блока 36, седьмой выход блока 37 соединен с первым входом блока 35, второй выход блока 33 соединен со вторым входом блока 25, второй вход счетчика 32 соединен с первым выходом блока 34, второй вход блока 34 соединен с шестым выходом блока 25, третий выход блока 34 соединен с пятым входом блока 25, четвертый выход блока 34 соединен со вторым входом блока 36, третий выход блока 36 соединен с третьим входом блока 25, четвертый вход блока 36 соединен со вторым выходом блока 35, третий вход блока 35 соединен с четвертым выходом блока 25.
Предлагаемое устройство работает следующим образом.
Процесс отправки разнородных данных на блок приема 1 заключается в следующем: с блока прикладного уровня 24 на блок обработки полезной нагрузки 25 подаются полезные данных (DN), при этом связь между блоками может быть реализована в устройстве в виде шины Avalon-ST[1]. С блока обработки полезной нагрузки 25 данные DN поступают на блок записи полезных данных 34. Блок записи полезных данных 34 предназначен для записи полезных данных DN в блок хранения полезных данных 26 и отправки полезных данных DN в блок мультиплексирования полезных данных 36. При передаче полезных данных DN в блок мультиплексирования 36, в счетчик переданных данных 32 блок записи полезных данных 34 записывает новое значение счетчика N, при достижении счетчиком 32 максимального значения (определяется объемом оперативной памяти блока хранения полезных данных 26), счетчик сбрасывается. Данные DN и значение счетчика (N) блока записи полезных данных 32 подаются на блок мультиплексирования полезных данных 36. В случае если блок мультиплексора 36 переключен на взаимодействие с блоком записи полезных данных 34, то сигналы с блока чтения полезных данных 35 блокируются. Полезные данные на блок мультиплексора 36 приходят с блока записи полезных данных 34. Если блок мультиплексора 36 переключен на взаимодействие с блоком записи полезных данных 34, данные DN передаются на блок мультиплексирования и параллельно передаются на блок записи полезных данных 34, который осуществляет запись данных в блок хранения полезных данных 26. Интерфейс взаимодействия с блоком хранения полезных данных осуществляется по протоколу Avalon-MM [1]. Разрядность счетчика 32 переданных данных составляет 24 разряда. Адрес в блоке хранения полезных данных 26 соответствует значению счетчика 32 для данного пакета. После поступления полезных данных DN и значения счетчика N на блок мультиплексирования полезных данных 36, осуществляется упаковка полезных данных с добавлением дополнительной служебной информации (CI). После проведения данной операции сформированный пакет подается на блок UDP обработки 22. Процесс упаковки пакета представлен в таблице 1. Поле служебная информация CI[3:0] идентифицируют устройство, CI[4] содержит информацию о том, какой передается пакет, управляющий или пакет данных (дейтаграмма), для пакета с данными бит CI[5] отвечает за то, что данная дейтаграмма новая или перезапрашиваемая, CI[7:6] зарезервированы.
В блоке UDP обработки 22 осуществляется упаковка приходящего пакета, пакет упаковывается в начале в UDP дейтаграмму, потом в IP пакет и Ethernet кадр. После процесса упаковки данные передаются в среду передачи и достигают блока приема 1.
Поступившие на блок 1 приема данные передаются на блок UDP обработки 3. В блоке UDP обработки 3 осуществляется считывание идентификатора, который сигнализирует о том, что данное устройство относится к устройствам, позволяющим осуществить повторную передачу, после чего считывается значение 4 бита служебной информации для определение класса информации, если дейтаграмма относится к служебной информации, то отправляется на блок обработки управляющих команд 4, если к данным, то на блок обработки полезной нагрузки 5. Блок обработки полезной нагрузки 5 предназначен для осуществления упорядочивания пакетов, проверки на наличие потерянных дейтаграмм, поиска потерянных дейтаграмм, осуществления запроса повторной передачи. После передачи на блок обработки полезной нагрузки 5 данные поступают на блок приема данных полезной нагрузки 14. В данном блоке осуществляется чтение 24-битного номера пакета и выделение из пакета полезных данных. Полезные данные и номер пакета передаются на блок записи полезных данных в блок хранения полезных данных 15, номер пакета кроме этого также передается на блок записи служебной информации 16.
Блок приема данных полезной нагрузки 14 осуществляет считывание по адресу номера пакета содержимое блока хранения служебной информации 7. Данные (CONI) из блока хранения служебной информации 7 передаются на блок приема данных полезной нагрузки 14. Размер хранимых данных CONI по адресу в блоке хранения служебной информации 7 составляет 2 бита. CONI[0] определяет наличие данных в памяти по данному адресу, 1 устанавливается в случае, если данные были ранее записаны, 0 соответственно в противном случае, CONI[1] определяет новизну записанных данных, 1 - пакет новый, 0 - старый.
Условие записи полезных данных можно сформировать следующим образом:
Если на блок приема данных полезной нагрузки 14 подается новый пакет, то независимо от содержимого в поле по данному адресу, производят операцию записи пакета, в случае если в блоке хранения служебной информации 7 по данному адресу отсутствует пакет, запись осуществляется независимо от служебной информации в принятом пакете, также если пришел пакет с битом CI[1] равным 0, то пакет записывается только в том случае, если в блоке хранения служебной информации 7 бит CONI[1] установлен в 0.
При возникновении операции записи в блок хранения полезных данных поступают номер пакета N и непосредственно полезные данные DN и также на блок записи служебной информации 16 поступают номер пакета N и служебная информация пакета CI. После чего блок записи полезных данных 15 в блок хранения полезных данных по интерфейсу Avalon-MM записывает данные DN по адресу N. А блок записи служебной информации 16 по интерфейсу Avalon-MM записывает по адресу N значение {1, CI[5]}. Каждый раз при записи блок записи служебной информации 16 подает команду на счетчик записанных/прочитанных дейтаграмм 21 для увеличения значения счетчика на 1.
Значение счетчика записанных/прочитанных дейтаграмм 21 передается на блок управления чтением и поиском потерянных дейтаграмм 17. Работа блока управления чтением и поиском пропущенных пакетов 17 определяется автоматом изображенным на фигуре 8.
Автомат состояния (фиг. 8) состоит из четырех состояний: IDLE, READ, WAIT и LOOKFOR. Первоначально автомат находится в состоянии IDLE. Когда значение счетчика 21 превышает 1, автомат переходит в состояние READ. В состоянии READ блок управления чтением и поиском потерянных дейтаграмм 17 подает управляющие сигналы на блок поиска потерянных дейтаграмм 18, блок чтения полезных данных из блока хранения полезных данных 19 и мультиплексор чтения и поиска дейтаграмм 20. После чего мультиплексор 20 переключается в режим приема управляющих сигналов с блока чтения полезных данных 19 из блока хранения полезных данных 8. При поступлении управляющих команд блок поиска потерянных дейтаграмм отключается, а блок чтения полезных данных 19 в состоянии READ запускается. В состоянии READ блок чтения полезных данных 19 осуществляет чтение служебной информации из блока хранения служебной информации 7 по интерфейсу Avalon-MM через мультиплексор чтения и поиска 20.
Во время чтения служебной информации, блок чтения 19 считывает содержимое по адресу K, K в начальный момент считывания равняется 0, и по мере чтения пакетов увеличивается на 1, считав служебные данные CONI. После чтения блок чтения 19 анализирует бит CONI[0], если данный бит равен 0, то детектирована потеря дейтаграммы, в противном случае с адреса K блока хранения полезных данных 8 по интерфейсу Avalon-MM поступают соответствующие данные, после чего полученные данные передаются на блок чтения 19 и затем поступают на блок управления 17. После этого данные передаются по интерфейсу Avalon-ST на блок прикладного уровня 6. При удачном чтении управляющий сигнал блока чтения 19 поступает на счетчик записанных/прочитанных дейтаграмм 21 и уменьшает текущее значение счетчика на 1. Значение счетчика текущей прочитанной дейтаграммы в блоке чтения 19 каждый раз при увеличении анализируется, количество анализируемых младших бит определяется пользователем. При достижении значения младших бит максимального значения, значение счетчика передается на блок чтения полезных данных 19, после чего значение поступает на блок обработки управляющих команд 4. Данные действия необходимы для отправки управляющей команды на блок передачи 2, для высвобождения свободного места в блоке хранения полезных данных 26. Описание упаковки управляющих команд будет приведено ниже.
В случае если при чтении из блока хранения служебной информации 7 бит CONI[0] установлен в 0, то управляющий сигнал подается на блок чтения полезных данных 19, после чего подается управляющий сигнал на блок управления чтением и поиском 17. При поступлении данного сигнала автомат состояний переходит из состояния READ в состояние LOOKFOR, в котором подается управляющий сигнал на блок поиска потерянных дейтаграмм 18, мультиплексора 20 и блока чтения полезных данных 19, после чего блок чтения отключается и запускается блок поиска потерянных дейтаграмм, а также переключается мультиплексор 20 в режим работы с блоком поиска потерянных дейтаграмм. Также подается управляющий сигнал на блок управления чтением и поиском 17, после чего управляющий сигнал поступает на таймер перезапроса 13 и осуществляется запуск таймера перезапроса 13. В блок поиска пропущенных пакетов 18 поступает информация о последней прочитанной дейтаграмме и о последней записанной дейтаграмме. Блок поиска 18 потерянных дейтаграмм осуществляет доступ к блоку хранения служебной информации 7 через мультиплексор чтения и поиска дейтаграмм 20, данные с мультиплексора 20 поступают на блок поиска потерянных дейтаграмм 18. При обнаружении сброшенного бита CONI[0] в блок управления чтением и поиском 17 передается значение адреса по которому CONI[0] находится в сброшенном состоянии. Значение адреса передается на блок поиска потерянных дейтаграмм 18, после чего данное значение адреса поступает на блок управления чтением и поиском 17. После получения значения адреса, блок управления чтением и поиском 17 передает значение адреса в блок FIFO 12. Из блока FIFO 12 данные передаются на блок обработки управляющих команд 4, после чего данные упаковываются соответствующим образом и передаются через среду передачи на блок передачи 2, для формирования повторной передачи.
Если верхняя граница записи была достигнута раньше чем таймер перезапроса 13 достиг максимального значение, автомат состояний из состояния LOOKFOR переходит в состояние READ, если блок чтения полезных данных 19 все равно сигнализирует об отсутствии пакета, автомат переходит в состояние WAIT, где ожидает достижения максимального значения таймера, в противном случает автомат продолжает находится в состоянии READ, а значение таймера сбрасывается. Если автомат находится в состоянии WAIT, то автомат ожидает достижения максимального значения счетчика, переходит в состояние READ и осуществляет сброс таймера перезапроса 13. При достижении счетчика записанных/прочитанных дейтаграмм в состоянии READ нулевого значения, автомат переходит в состояние IDLE.
Как было рассмотрено выше, на блок обработки управляющих команд 4 поступают управляющие сигналы с блока обработки полезной нагрузки 5. Управляющие сигналы с блока обработки полезной нагрузки 5 поступают на блок мультиплексирования передаваемых пакетов 11. Сигнал с блока прикладного уровня 6 поступает на блок мультиплексирования передаваемых пакетов 11. Этот сигнал управления предназначен для отправки управляющих пакетов на блок прикладного уровня 6.
Блок мультиплексирования управляющих пакетов 11 предназначен для объединения параллельных управляющих сигналов и разнесения их во времени. Блок мультиплексирования управляющих пакетов 11 после объединения параллельных управляющих сигналов и разнесения их во времени передает полученные сигналы на блок формирования пакета 9. При передаче служебной информации возможно 3 типа управляющих команд:
- команды очистки блока хранения полезных данных 26;
- команда формирования перезапроса на повторную передачу;
- команда для блока прикладного уровня 24.
В таблице 2 приведен формат управляющего пакета.
В управляющем пакете биты CI[3:0] представляют собой идентификатор устройства так же, как и в пакете при передаче полезных данных, бит CI[4] определяет назначение, в пакете содержатся полезные данные, значение установлено в 0, в пакете содержатся команды, значение установлено в 1. Если в поле CI[4] установлена 1, то в поле CI[7:5] содержится команда, соответственно:
- 000 - команда очистки блока хранения полезных данных 26;
- 001 - команда формирования перезапроса на повторную передачу;
- 010 - команда для блока прикладного уровня передачи 24, при 32-битной архитектуре;
- 011 - команда для блока прикладного уровня передачи 24, для 64-битной архитектуры.
Для команд 000 и 001 биты [31:8] в пакете соответствуют номеру пакета N[23:0], наличие других полей не предусмотрено.
Для команды 010 биты в пакете [39:8] соответствуют полю адреса А[31:0]. Биты [71:39] в пакете соответствуют полю данных [31:0].
Для команды 011 биты [15:8] соответствуют полю количество бит адреса Na[7:0]. Биты [23:16] соответствуют полю количество бит данных Nd[7:0]. Биты [Na+23:24] соответствует полю адреса A[Na-1:0]. Биты [Nd+Na+23:Na+24] соответствует полю данных D[Nd-1:0].
После формирования команды блок формирования пакета 9 передает на блок UDP обработки 3, где осуществляется упаковка управляющего пакета в UDP дейтаграмму, IP пакет и Ethernet кадр. После произведенных манипуляций полученный кадр передаются на блок передачи 2 через среду передачи. Поступив на блок передачи, данные поступают на блок UDP обработки 22, где осуществляется выделение полезных данных UDP дейтаграммы, в зависимости от значения идентификатора данные UDP дейтаграммы поступают на блок обработки управляющих команд 23. После этого данные передаются на блок приема управляющих команд 30, где происходит первоначальная обработка управляющей команды, а затем данные передаются на блок демультиплексирования управляющих пакетов 28, где происходит процесс демультиплексирования таким образом, что пакеты с командой 00Х передаются на блок обработки полезной нагрузки 25, а пакеты с командой 01Х передаются на блок прикладного уровня 24.
Поступив с блока демультиплексирования 28 на блок обработки полезной нагрузки 25, данные передаются на блок управления системой перезапроса 37. Если управляющая команда 000, то значение номера в пакете записывается в счетчик обработанных данных 31. Если приходит управляющая команда 001, то команда поступает на блок мультиплексирования 36 и блок чтения полезных данных 35. После этого начинается процесс считывания по указанному адресу, который определяется, исходя из номера пакета. Чтение осуществляется по интерфейсу Avalon-MM, данные приходят из блока хранения полезных данных 26 на блок чтения полезных данных 35. При приходе управляющего сигнала на блок мультиплексирования полезных данных 36 осуществляется его переключение на работу с блоком чтения полезных данных 35. Блок мультиплексирования полезных данных 36 осуществляет мультиплексирование и формирование дейтаграммы, дейтаграмма формируется аналогично новой, за исключением поля CI[5], в которое устанавливается значение 0, что сигнализирует о том, что дейтаграмма повторяется.
В случае, когда разница между счетчиком обработанных данных и счетчиком переданных данных больше значения коэффициента латентности формируется управляющий сигнал на блок управления системой перезапроса 37, после чего управляющий сигнал подается на блок формирования пакета ошибки 33. В блоке формирования пакета ошибки 33, осуществляется формирование команды имеющей поле данных и поле адреса, после чего данная команда подается на блок формирования пакета ошибки 33, а затем передается на блок обработки управляющих команд 23.
Для взаимодействия блоков прикладного уровня блока передачи и блока приема имеется определенный механизм. В блоке передачи имеется интерфейс между блоком обработки управляющих команд 23 и блоком прикладного уровня 24. Данный интерфейс функционирует в обоих направлениях, а именно, управляющий сигнал из 23 передается на блок 24, а сигналы с блока 24 передаются на блок 23. Аналогичный интерфейс имеется и в блоке приема 1. Управляющие сигналы с блока обработки управляющих команд 4 поступает на блок прикладного уровня 6. А управляющие сигналы с блока прикладного уровня 6 поступают на блок обработки управляющих команд 4. Управляющие команды с блока управляющих команд передаются на блок мультиплексирования управляющих пакетов 27, который осуществляет процесс мультиплексирования сигналов идущих от блока обработки полезных данных 25 и блока прикладного уровня 24. После мультиплексирования данные подаются на блок мультиплексирования 27, после этого управляющие сигналы поступают на блок отправки управляющих команд 29. В блоке отправки управляющих команд 29 осуществляется упаковка команд и добавление в пакет служебной информации. Из блока отправки управляющих команд 29 данные поступают на блок обработки управляющих команд. После этого данные поступают на блок UDP обработки 22. В блоке UDP обработки 22, осуществляется упаковка данных в пакеты транспортного, сетевого и канального уровней.
Таким образом, достигнут положительный эффект, заключающийся в практически полном исключении потери данных, при сохранении высоких скоростных характеристик.
Для технической реализации способа и устройства повторной передачи данных по протоколу пользовательских дейтаграмм использован модуль ввода/вывода в форм-факторе PCI Express х4 ВУКТ.467149.604, разработанный на базе ПЛИС фирмы Altera Cyclone V 5CGTFD7C5U19I7, имеющий в своем составе 256 МБ оперативной памяти DDR3, и два интерфейса Ethernet 1 Гбит/с.
-3
Способ и устройство повторной передачи данных по протоколу пользовательских дейтаграмм, по сравнению с прототипом, позволяет практически исключить потерю данных, так как устройство при невыполнении перезапроса, возникающего при ненулевом значении коэффициента потерь в сети, повторяет его до переполнения блока хранения полезных данных, в качестве которого выступает оперативное запоминающее устройство (ОЗУ). Например, объем ОЗУ 2 Гигабайта, обеспечивает хранение около 1369000 дейтаграмм стандартного размера (не более 1460 байт). Через сетевой интерфейс Ethernet со скоростью передачи 1 Гбит/с, за одну секунду передать 134217728 (байт в секунду) / (1460 байт полезные данные + 42 байта служебные данный) ≈ 89359 дейтаграмм в секунду. Перезапрос дейтаграммы при стандартной топологии сети будет выполнен менее чем за 1*10 секунды (среднее время прохождения команды Ping), за это время по интерфейсу Ethernet со скоростью передачи 1 Гбит/с передается около 90 дейтаграмм. Что обеспечивает около (1369000 дейтаграмм в ОЗУ / 90 дейтаграмм) ≈ 15211 возможностей выполнить запрос на дейтаграмму и получить ответ в течении (1369000 дейтаграмм в ОЗУ / 89 359 дейтаграмм в секунду) ≈ 15 секунд.