Алгоритм кодирования пакетов

Для построения кодирующей схемы мы должны создать несколько проектных решений. Во-первых, мы проектируем нашу кодирующую схему по принципу никакой задержки пакетов. Когда доступен беспроводной канал, узел доставляет пакет в начало выходной очереди, проверяет, какие другие пакеты в очереди могут быть закодированы с этим пакетом, суммирует по модулю 2 эти пакеты вместе и отправляет по широковещательному адресу суммированные пакеты.

Если нет возможностей кодирования, наш узел не ждёт прибытия подходящего для кодирования пакета. По этой причине COPE  позволяет узлу оппортунистически переполнить каждую пересылку дополнительной информацией, когда возможно, но не ждать дополнительных пакетов, подходящих для кодирования.

Во-вторых, COPE отдаёт предпочтение для суммирования пакетов похожей длины, потому что суммирование малых пакетов с большими уменьшает экономию полосы пропускания. Эмпирические исследования показали, что распределение пакетов по размеру бимодальное с пиками на 40 и 1500 байтах. По этой причине мы  можем ограничить издержки поиска пакетов правильных размеров, ставя разграничение на большие и малые пакеты. Мы также всё ещё можем складывать по модулю 2 пакеты разных размеров. В этом случае короткие пакеты дополняются нулями. Приёмный узел может просто удалить заполнение, проверяя поле размера пакета в IP заголовке для каждого чистого пакета.

В-третьих,  отметим, что COPE никогда не кодирует вместе пакеты, направленные в один узел, так как он не сможет декодировать их. Следовательно,  в течение кодирования мы только нужно рассматривать пакеты, отправляемые в разные узлы. COPE по этой причине поддерживает 2 виртуальные очереди на соседа. Одна для малых пакетов, а другая для больших пакетов (Настройки по умолчанию использует порог в 100 байтов).  Когда новый пакет добавляется в выходную очередь, то добавляется к соответствующей виртуальной очереди, основываясь на следующем узле пакета и его размере.

Поиск соответствующих пакетов для кодирования эффективен благодаря поддержке виртуальных очередей. Совершая выбор кодирования, COPE сначала определяет пакет в начале выходной очереди FIFO, а затем определяет малый это пакет или большой. В зависимости от размера, он выбирает подходящую виртуальную очередь. Например, если выведенный из очереди пакет – малый, COPE сначала ищет в очереди для малых пакетов. COPE смотрит только в голове виртуальных очередей, чтобы ограничить переупорядочивание пакетов.   После опустошения виртуальных очередей заданного размера алгоритм ищет в голове виртуальных очередей пакеты других размеров. Таким образом, для нахождения подходящих пакетов для кодирования COPE должен просмотреть 2М пакетов в худшем случае, де М  — число соседей узла.

Ссылка на основную публикацию
Adblock detector