Сетевое кодирование

Сетевое кодирование (англ. network coding) — это концепция в компьютерных сетях, согласно которой промежуточные узлы сети могут не просто пересылать, а производить над поступающими пакетами линейные комбинации перед их отправкой далее от источников к приёмникам.

Сетевое кодирование используется для повышения пропускной способности, эффективности и масштабируемости компьютерных сетей, а также способствует повышению устойчивости к атакам и прослушиванию[1]. Узлы сети объединяют несколько пакетов для совместной передачи, что позволяет максимально эффективно использовать пропускную способность и достигать теоретических пределов информационного потока в сети.

Доказано, что линейное кодирование (англ. linear coding) в теории достаточно для достижения максимального уровня мультикаст-трафика с единственным источником[2]. Однако для некоторых типов задач требуется нелинейное кодирование, а в случае произвольных запросов оптимальные решения сетевого кодирования искать трудно: такие задачи могут быть NP-трудными[3][4] и даже неразрешимыми[5].[6]

Кодирование и декодирование

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

Более формально: каждый узел со входной степенью формирует сообщение как линейную комбинацию принятых сообщений :

,

где  — коэффициенты из . Благодаря тому, что все операции выполняются в конечном поле, длина сгенерированного сообщения не меняется. Каждый узел передает получателю как вычисленное значение , так и соответствующие коэффициенты .

Узлы-приёмники собирают поступающие закодированные сообщения, составляя из них матрицу, и могут восстановить исходные данные путём выполнения метода Гаусса над этой матрицей[7]. В приведённом к ступенчатому виду случае каждая декодированная строка соответствует исходному сообщению.

Теоретические основы

Сеть моделируется в виде ориентированного графа , где  — множество узлов,  — множество рёбер (дуг), а задаёт пропускную способность каждого ребра. Пусть  — максимальная пропускная способность между узлами и . По теореме о максимальном потоке и минимальном разрезе, ограничена минимальной пропускной способностью разреза между этими узлами.

Карл Менгер доказал, что в задачи уникаста всегда существует набор несовпадающих путей, позволяющий достичь теоретического максимума[8]. В задачах широковещания эта граница также достижима, как показал Эдмондс, предложив полиномиальный алгоритм. Однако мультикаст сложнее: максимальный поток тут невозможен при обычной маршрутизации, но достижим с помощью вычислительных операций (например, суммирования пакетов) на промежуточных узлах.

Сеть-бабочка

undefined

Сеть-бабочка — классический пример, наглядно демонстрирующий преимущества линейного сетевого кодирования по сравнению с обычной маршрутизацией. Если разрешена только маршрутизация, центральное звено может передавать либо только А, либо только В, что приводит к избыточной передаче для одной из сторон и невозможности получить обе информации одновременно. С помощью простого кодирования (например, передачи A+B) обе принимающие стороны могут за три шага получить оба сообщения, тогда как при маршрутизации это требует четырёх шагов.

Случайное линейное сетевое кодирование

Случайное линейное сетевое кодирование (англ. random linear network coding, RLNC)[9] — схема кодирования, при которой узлы сети формируют пакеты как случайные линейные комбинации полученных данных с равновероятно выбранными коэффициентами из конечного поля Галуа. При достаточно большом поле вероятность получить линейно независимые комбинации стремится к единице.

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

Принцип работы и ключевые параметры

Три основных параметра RLNC:

  • Размер поколения: исходные данные делятся на группы (поколения), которые кодируются вместе.
  • Размер пакета: обычно фиксированный; при необходимости пакеты дополняются нулями или разбиваются.
  • Поле Галуа: широко используются поля и (binary-8).

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

Одно из преимуществ линейного сетевого кодирования — возможность повторного комбинирования уже закодированных пакетов. После рекодирования размер дополнительной информации (коэффициентов) не увеличивается.

Для успешного декодирования приёмнику необходимо собрать не менее линейно независимых пакетов (где  — размер поколения); алгоритм восстановления — решение системы линейных уравнений по известным коэффициентам.

Пример

undefined

На рисунке приведён пример, где два пакета и объединяются в новый закодированный пакет. Каждый из исходных пакетов содержит дополнительные коэффициенты для идентификации их состава — например, оригинальный (некодированный) пакет содержит или , а закодированный — произвольные .

Для получения нового кода узел выбирает случайные коэффициенты и , умножает соответствующие пакеты по символам и складывает их, формируя новый комбинированный пакет. Тот же принцип применяется для обновления набора коэффициентов.

Распространённые заблуждения

Несмотря на интенсивные исследования за последние 20 лет, остаются некорректные представления:

Сложность декодирования: современные декодеры эффективны и легко параллелизуются. Например, на процессорах Intel Core i5 с SIMD-доступом скорость декодирования достигает 750 МБ/с для 16 пакетов или 250 МБ/с для 64 пакетов[10]. Стадии кодирования и декодирования отлично масштабируются за счёт параллельных вычислений[11].

Передача коэффициентов: добавление коэффициентов кодирования в пакеты практически не увеличивает объём передаваемой информации — при типичных параметрах этот overhead составляет около 2 %.

undefined
undefined

Линейная зависимость пакетов: из-за случайности коэффициентов возможна передача невостребованных комбинаций, но эта избыточность минимальна и уменьшается с ростом размера поля Галуа. На практике даже для бинарного поля этот overhead обычно не превышает 5 %.

Применение

Сетевое кодирование активно внедряется учёными и компаниями для повышения производительности и надёжности сетевых решений в различных областях:

  • VoIP-сервисы: увеличение устойчивости потоковой передачи в mesh-сетях вследствие снижения задержек и джиттера[12].
  • Видеостриминг и аудиоконференции: увеличение доставляемости и уменьшение потерь данных по сравнению с классическими схемами ретрансляции[13].
  • SD-WAN и IoT: снижается задержка и jitter в сетях с несколькими каналами связи[14].
  • Объединение каналов связи между устройствами[15].
  • 5G частные сети: совершенствование качества передачи мультимедиа посредством интеграции RLNC[16].
  • Удалённая совместная работа и VR/AR-тренинги[17].
  • Ведение автомобилей с удалённым управлением и сети подключённых авто[18].
  • Онлайн-игры и стриминг с низкими задержками[19].
  • Защищённая передача файлов, P2P файловые системы (Avalanche filesystem).
  • Умные города, IoT-инфраструктура, системы автоматического обновления прошивок.
  • Повышение пропускной способности mesh-сетей, например, с применением технологий COPE, CORE, Coding-aware routing, B.A.T.M.A.N. и других[20].
  • Пространственные сенсорные сети, спутниковые связные системы[21].
  • Защита от атак: предотвращение подслушивания, модификации, искажений или повторной передачи информации[22].
  • Децентрализованные системы хранения данных.
  • Поиск и оптимизация маршрутов передачи в средах с большими задержками и потерями: альтернатива Forward Error Correction, ARQ и др.

См. также

Примечания

  1. Coding the Network: Next Generation Coding for Flexible Network Operation. www.comsoc.org. Дата обращения: 6 июня 2022.
  2. Li, S.; Yeung, R.; Cai, N. (2003). “Linear Network Coding” (PDF). IEEE Transactions on Information Theory [англ.]. 49 (2): 371—381. Дата обращения 2024-06-15.
  3. Rasala Lehman, A.; Lehman, E. (2004). “Complexity classification of network information flow problems”. SIAM SODA [англ.]: 142—150. Дата обращения 2024-06-15. |access-date= требует |url= (справка)
  4. Langberg, M.; Sprintson, A.; Bruck, J. (2006). “The encoding complexity of network coding”. IEEE Transactions on Information Theory [англ.]. 52 (6): 2386—2397. DOI:10.1109/TIT.2006.874434. Дата обращения 2024-06-15.
  5. Li, C. T. (2023). “Undecidability of Network Coding, Conditional Information Inequalities, and Conditional Independence Implication”. IEEE Transactions on Information Theory [англ.]. 69 (6): 3493. arXiv:2205.11461. DOI:10.1109/TIT.2023.3247570. Дата обращения 2024-06-15. |access-date= требует |url= (справка)
  6. Kühne, L.; Yashfe, G. (2022). “Representability of Matroids by c-Arrangements is Undecidable”. Israel Journal of Mathematics [англ.]. 252: 95—147. arXiv:1912.06123. DOI:10.1007/s11856-022-2345-z. Дата обращения 2024-06-15. |access-date= требует |url= (справка)
  7. Chou, Philip A.; Wu, Yunnan; Jain, Kamal (Октябрь 2003). “Practical network coding”. Allerton Conference on Communication, Control, and Computing [англ.]. Дата обращения 2024-06-15. |access-date= требует |url= (справка)
  8. Ahlswede, Rudolf; N. Cai; S.-Y. R. Li; R. W. Yeung (2000). “Network Information Flow”. IEEE Transactions on Information Theory [англ.]. 46 (4): 1204—1216. DOI:10.1109/18.850663. Дата обращения 2024-06-15. |access-date= требует |url= (справка)
  9. Ho, T.; Koetter, R.; Médard, M.; Karger, D.R.; Effros, M. (2003). “The Benefits of Coding over Routing in a Randomized Setting” (PDF). IEEE International Symposium on Information Theory [англ.]: 1—5. DOI:10.1109/ISIT.2003.1228459. Архивировано из оригинала (PDF) 2017-10-31. Дата обращения 2024-06-15.
  10. Sørensen, Chres W. Leaner and meaner: Network coding in SIMD enabled commercial devices // 2016 IEEE Wireless Communications and Networking Conference : [англ.] / Chres W. Sørensen, Achuthan Paramanathan, Juan A. Cabrera … [et al.]. — Апрель 2016. — P. 1–6. — ISBN 978-1-4673-9814-5. — doi:10.1109/WCNC.2016.7565066.
  11. Wunderlich, Simon; Cabrera, Juan A.; Fitzek, Frank H. P.; Reisslein, Martin (Август 2017). “Network Coding in Heterogeneous Multicore IoT Nodes With DAG Scheduling of Parallel Matrix Block Operations” (PDF). IEEE Internet of Things Journal [англ.]. 4 (4): 917—933. Bibcode:2017IITJ....4..917W. DOI:10.1109/JIOT.2017.2703813. Архивировано из оригинала (PDF) 2022-04-08. Дата обращения 2024-06-15.
  12. Lopetegui, I. VoIP design and implementation with network coding schemes for wireless networks // 2010 7th International Symposium on Communication Systems, Networks & Digital Signal Processing : [англ.] / I. Lopetegui, R.A. Carrasco, S. Boussakta. — Newcastle upon Tyne : IEEE, Июль 2010. — P. 857–861. — ISBN 978-1-4244-8858-2. — doi:10.1109/CSNDSP16145.2010.5580304.
  13. Shrimali, R. A survey on MPEG-4 streaming using network coding in wireless networks // 2012 Nirma University International Conference on Engineering : [англ.] / R. Shrimali, Z. Narmawala. — Декабрь 2012. — P. 1–5. — ISBN 978-1-4673-1719-1. — doi:10.1109/NUICONE.2012.6493203.
  14. Rachuri, Sri Pramodh. Network-Coded SD-WAN in Multi-Access Systems for Delay Control // 2019 International Conference on contemporary Computing and Informatics : [англ.] / Sri Pramodh Rachuri, Ahtisham Ali Ansari, Deepaknath Tandur … [et al.]. — Singapore, Singapore : IEEE, Декабрь 2019. — P. 32–37. — ISBN 978-1-7281-5529-6. — doi:10.1109/IC3I46837.2019.9055565.
  15. Pedersen, Morten V. Network coding designs suited for the real world: What works, what doesn't, what's promising // 2013 IEEE Information Theory Workshop : [англ.] / Morten V. Pedersen, Daniel E. Lucani, Frank H. P. Fitzek … [et al.]. — Sevilla : IEEE, Сентябрь 2013. — P. 1–5. — ISBN 978-1-4799-1321-3. — doi:10.1109/ITW.2013.6691231.
  16. Vukobratovic, Dejan; Tassi, Andrea; Delic, Savo; Khirallah, Chadi (Апрель 2018). “Random Linear Network Coding for 5G Mobile Video Delivery”. Information [англ.]. 9 (4): 72. arXiv:1802.04873. DOI:10.3390/info9040072. ISSN 2078-2489. Дата обращения 2024-06-15. |access-date= требует |url= (справка)
  17. Torres Vega, Maria; Liaskos, Christos; Abadal, Sergi; Papapetrou, Evangelos; Jain, Akshay; Mouhouche, Belkacem; Kalem, Gökhan; Ergüt, Salih; Mach, Marian; Sabol, Tomas; Cabellos-Aparicio, Albert (Октябрь 2020). “Immersive Interconnected Virtual and Augmented Reality: A 5G and IoT Perspective”. Journal of Network and Systems Management [англ.]. 28 (4): 796—826. DOI:10.1007/s10922-020-09545-w. HDL:2117/330129. S2CID 219589307. Дата обращения 2024-06-15. |access-date= требует |url= (справка)
  18. Park, Joon-Sang; Lee, Uichin; Gerla, Mario (Май 2010). “Vehicular communications: emergency video streams and network coding”. Journal of Internet Services and Applications [англ.]. 1 (1): 57—68. DOI:10.1007/s13174-010-0006-7. ISSN 1867-4828. S2CID 2143201. Дата обращения 2024-06-15. |access-date= требует |url= (справка)
  19. Lajtha, Balázs. Enabling P2P Gaming with Network Coding // Networked Services and Applications - Engineering, Control and Management : [англ.] / Balázs Lajtha, Gergely Biczók, Róbert Szabó. — Berlin, Heidelberg : Springer, 2010. — Vol. 6164. — P. 76–86. — ISBN 978-3-642-13971-0. — doi:10.1007/978-3-642-13971-0_8.
  20. Katti, Sachin. XORs in the air // Proceedings of the 2006 conference on Applications, technologies, architectures, and protocols for computer communications : [англ.] / Sachin Katti, Hariharan Rahul, Wenjun Hu … [et al.]. — New York, NY, USA : Association for Computing Machinery, 2006-08-11. — P. 243–254. — ISBN 978-1-59593-308-9. — doi:10.1145/1159913.1159942.
  21. DLR - Institute of Communications and Navigation - NEXT - Network Coding Satellite Experiment. www.dlr.de. Дата обращения: 6 июня 2022.
  22. Welcome to Network Coding Security - Secure Network Coding. securenetworkcoding.wikidot.com. Дата обращения: 15 июня 2024.

Литература

  • Fragouli, C.; Le Boudec, J.; Widmer, J. «Network coding: An instant primer», Computer Communication Review, 2006. “Network coding: An instant primer”. Computer Communication Review [англ.]. 2006. DOI:10.1145/1111322.1111337.
  • Ali Farzamnia, Sharifah K. Syed-Yusof, Norsheila Fisa «Multicasting Multiple Description Coding Using p-Cycle Network Coding», KSII Transactions on Internet and Information Systems, Vol 7, No 12, 2013. “Multicasting Multiple Description Coding Using p-Cycle Network Coding”. KSII Transactions on Internet and Information Systems [англ.]. 7 (12): 3303—3324. 2013. DOI:10.3837/tiis.2013.12.009.