Это ближайшее будущее. После большой мировой войны и ограниченного обмена ядерными ударами народы Земли объединились в несколько блоков. Угроза новой войны и совокупный ущерб планете подстегивают огромные частные инвестиции в колонизацию космоса. Плавающие колонии окружают Землю и околоземные орбиты Солнца. Терраформирование Марса началось. Большой спрос на ресурсы за пределами Земли привел к тому, что добыча полезных ископаемых на астероидах распространилась по всей Солнечной системе.
В космосе возникло множество фракций. Ни у одной фракции нет достаточно ресурсов, чтобы построить систему связи, охватывающую всю внутреннюю Солнечную систему, особенно учитывая, что стоимость развертывания узлов связи высока (ракеты дороги). Конкурирующие фракции решают разработать совместную систему коммуникаций по образцу Интернета, в которой ни одна фракция не может доминировать.
Набор протоколов Интернета (со слоями Link , Internet и Transport ) хорошо работает на Земле, где статические компьютеры соединены друг с другом кабелями. Кабели обеспечивают почти мгновенную связь, а проводные соединения редко меняются. В межпланетном масштабе возникают две основные проблемы.
Редкие соединения : Кабели на земле дешевы, но спутниковые тарелки, работающие на расстоянии AU, стоят больших денег, поэтому количество соединений, которые может иметь каждый узел, ограничено. Кроме того, соединения могут быть заблокированы в зависимости от положения относительно планет и солнца. Два узла могут не общаться часами или днями одновременно. Важно отметить, что большая часть разрушения запланирована из-за легко предсказуемых характеристик вращения и орбиты. Хороший набор протоколов будет иметь встроенную возможность оптимизировать физический путь передачи от узла к узлу, чтобы обеспечить доставку данных туда, куда они направляются, как можно быстрее, и чтобы двусторонняя связь не прерывалась без необходимости.
Задержка — время прохождения сообщения от одной стороны пояса астероидов до другой составляет около 45 минут. От Земли до Марса при максимальном сближении около 3 минут. Это важно, когда речь идет о рукопожатии TCP/IP или SSL. Протоколы должны минимизировать потребность в двусторонней связи без ущерба для безопасности. Кроме того, если пакеты в одном и том же TCP-сеансе шли двумя разными маршрутами из точки A в точку B; на Земле это незначительная разница во времени, но в космосе они могут прибыть с разницей в минуты или даже часы.
Какой минимальный набор изменений вы можете внести в набор протоколов TCP/IP, чтобы оптимизировать его работу в межпланетных сетях?
Цель состоит в том, чтобы оптимизировать надежность, пропускную способность и свести к минимуму ненужные задержки.
Очевидным ответом на устойчивые к задержкам сети является промежуточное хранение.
При использовании TCP, когда маршрутизатор получает пакет, он немедленно отправляет его следующему узлу или, если не может, отклоняет его и отправляет обратно сообщение об ошибке.
При использовании протокола с промежуточным хранением, когда маршрутизатор получает пакет, он ищет его в следующий раз, когда он ожидает, что сможет связаться со следующим узлом (возможно, выбирая из множества возможных вариантов в зависимости от того, насколько велик пакет, каков его размер). теги QoS говорят и т. д.) и сохраняет его до тех пор.
Store-and-forward восходит к SMTP, NNTP, UUCP и другим протоколам, существовавшим до общедоступного Интернета. До 1994 года, если ваша компания хотела иметь внешнюю электронную почту, это обычно означало, что ваш сервер подключался к вашему провайдеру два раза в день через UUCP и отправлял и получал все исходящие и входящие сообщения. Но современным DTN нужно что-то более детальное, чем «отправлять все на один хост два раза в день». (Кроме того, эти протоколы предназначены для сетей с нечастым подключением, но с малой задержкой при подключении, поэтому они выполняют намного более шумное рукопожатие, чем вам нужно для часто подключаемых, но с высокой задержкой.)
Между тем, промежуточное хранение на уровне крошечных IP-пакетов не так уж и полезно, поэтому вы добавляете способ для приложений определять пакеты из нескольких пакетов. Затем вы можете маршрутизировать, QoS и управлять перегрузкой целых пакетов (так что в идеале, когда вы случайно отправляете домой видео 4K вместо SD, время ожидания на вашем локальном маршрутизаторе истекает, вместо того, чтобы тратить всю пропускную способность и половину вашего интернет-провайдера). до падения). В качестве дополнительного преимущества пакеты могут быть достаточно большими, чтобы вы могли позволить себе такие функции безопасности, как маршрутизация на основе удостоверений, что также может быть важно для DTN.
Очевидный способ сделать все это — определить оверлейную сеть маршрутизации поверх UDP, очень похоже на то, как (после BitTorrent) сетки P2P работают как оверлей поверх UDP. (За исключением того, что, в отличие от типичной сетки P2P, вам нужен некоторый интеллект, поэтому вы не просто повторяете пакеты UDP с экспоненциальной задержкой и автоматической настройкой сетки, а вместо этого сохраняете программируемые расписания в своей таблице маршрутизации, потому что многие вещи будут предсказуемы. — не отскакивайте от этого лунного спутника в течение следующих 3 часов, потому что он заблокирован Луной…)
В последний раз я смотрел на это около десяти лет назад, и самым современным был экспериментальный протокол в RFC 5050 . С тех пор, вероятно, были успехи, и я, возможно, не все помню в точности.
НАСА уже немного подумало об этом и разработало концепцию под названием «DTN» или Delay-Tolerant-Networking . По сути, он проверяет, возможно ли подключение к следующему «переходу» или станции, а затем отправляет данные. Если он недоступен, он сохраняет его в локальной памяти до тех пор, пока соединение снова не установится. Это может работать вместе или отдельно от традиционного TCP/IP.
Что касается инфраструктуры, я представляю масштабное решение, включающее ряд больших тарелок, разнесенных по планете так, чтобы по крайней мере одна из них всегда имела связь с данным местом или планетой. Эти тарелки действуют как мосты к остальной части Солнечной системы, передавая огромные объемы данных своим получателям по мере того, как соединения становятся доступными. Объединив их в сеть, они могут автоматически переносить его с одного блюда на другое по мере необходимости.
Вы, вероятно, захотите перейти от TCP/IP, основанного на пакетах, к чему-то адресуемому по содержимому. TCP/IP построен на предположении, что вы можете сообщить людям, использующим сеть, о перегрузке, отбрасывая пакеты. Если ваше время прохождения туда и обратно велико, это становится очень дорогим методом сигнализации.
Что вы хотели бы сделать, так это сообщить сети, что вам нужна определенная информация, и загрузить ее с ближайшего узла, у которого есть эта информация. Таким образом, вы сможете быстрее получить информацию, если кто-то уже использовал эту информацию ранее. Примером текущей реализации этого является IPFS (межпланетная файловая система).
Он работает как гигантский рой битторрентов в том смысле, что он загружает необходимую информацию от ближайших пиров, у которых есть информация. Это уменьшает дублированный трафик по перегруженным/дорогим ссылкам и сокращает время, необходимое для получения необходимой информации.
Какой минимальный набор изменений вы можете внести в набор протоколов TCP/IP, чтобы оптимизировать его работу в межпланетных сетях?
Я немного удивлен, что никто еще этого не сказал, но вы бы не использовали ни TCP, ни UDP. Это не работает. Идея любого уровня живой связи за пределами околоземной орбиты неразумна. Путешествие до Луны туда и обратно составляет 2,6 с. У нас есть проводное подключение к Интернету, которое становится довольно изворотливым в суровую погоду, поэтому я действительно испытал скорость интернета, когда пакеты ICMP требовали более 2 с для передачи туда и обратно, и я могу сказать вам, что Интернет практически непригоден для эти условия.
Лучшее путешествие туда и обратно, на которое вы можете надеяться, между Марсом или Меркурием 6 минут 24 секунды и 6 метров соответственно. Следующее самое интересное место за пределами Марса — Юпитер, и ваше лучшее время в пути туда и обратно составляет более часа (69 минут 47 секунд).
Была упомянута сеть, устойчивая к сбоям/задержкам. DTN может подойти для орбитальных или, возможно, даже для сетевых подключений Земля-Луна, но помимо этого вы будете использовать что-то еще.
Межпланетные сетевые соединения не будут активными. На самом деле, у вас не будет постоянного подключения, не говоря уже о прямом подключении к любому планетарному интернету, кроме вашего собственного. Вы отправляете пакет с запросом очень конкретной информации и получаете ответную передачу через несколько или более минут, в рамках того, что вам приходится делить радиочастотный спектр со всеми остальными в Солнечной системе. Передача будет разбита на «пакеты», но не на пакеты в смысле TCP — больше похоже на пакеты в старом понимании Фидонета. Вместо повторного запроса данных вы просто повторите свой запрос, указав только те блоки данных, которые были потеряны или искажены; протоколы будут разработаны таким образом, чтобы иметь предсказуемую структуру данных, чтобы вы могли запрашивать только неверные данные.
Некоторые данные будут передаваться непрерывно, некоторые будут доступны через транспондер, а некоторые будут передаваться по какому-то расписанию.
Будет некоторая локальная синхронизация, хотя и не весь интернет. Википедия и другие большие базы данных, например, будут синхронизироваться локально. Обновления будут запрашиваться с указанной меткой времени, чтобы передавать только текущие данные синхронизации.
Связь в межпланетной сети больше походила бы на старую систему телетайпа, чем на старую систему BBS.
@Hobbamok напомнил мне, что микроволновая передача будет использоваться для прямой связи между поселениями, аванпостами и Землей. Вполне возможно, что лазер также будет использоваться там, где это уместно. Это сведет на нет проблему необходимости делить полосу пропускания между остальной частью Солнечной системы.
Наименьший набор изменений, который вы можете сделать, это переключение с TCP/IP на UDP/IP. Самая большая проблема с TCP заключается в том, что ему необходимо проверить отправителя, чтобы убедиться, что пакет прибыл. Если это занимает 10 часов в одну сторону, то потребуется 20 часов, чтобы узнать, что сообщение, которое вы отправили, прибыло, и нужно ли вам повторно отправлять пакеты.
При использовании UDP этот этап проверки игнорируется. Если я хочу отправить сообщение, я могу отправить его за долю секунды. Если этого не произойдет, человек, который запрашивает данные, просто запросит их снова. Мне не нужно поддерживать соединение в течение 20 с лишним часов, просто чтобы убедиться, что сообщение пришло.
Вам также потребуется аутентифицировать и зашифровать свои данные с помощью общего ключа, который необходимо будет определить заранее, подобно ключу SSH, потому что динамическое шифрование было бы слишком неэффективным.
Добавлено -Редактировать: вопрос касается надежности, пропускной способности и низкой задержки. Вы просто не можете иметь их все. Если вам нужна надежность и высокая пропускная способность, вы не получите низкую задержку, а если вам нужна высокая пропускная способность и низкая задержка, она не будет надежной. Это треугольник, в котором вы можете максимизировать только два из трех. Если предполагается, что ваш физический уровень работает нормально, то использование UDP и перенос остальной логики на прикладной уровень даст вам лучшие результаты. Отсутствие рукопожатия и проверки означает, что у вас будет минимально возможная задержка, а пропускная способность и надежность в конечном итоге будут зависеть от вашего оборудования.
Правда в том, что ни один протокол не будет использоваться. Протоколы гарантируют разные вещи и служат разным целям. Если у вас есть удаленная база/зонд, связь с которой занимает 10 часов, вы не хотите ждать более 20 часов, чтобы увидеть прямую видеотрансляцию (рукопожатие, передача пакетов и гарантия заказа съедят все ваше время). Вы собираетесь использовать UDP, чтобы получить видео как можно быстрее (10 часов). Точно так же, если вы передаете файл, вам нужна надежность, и это может быть добавлено на уровне протокола (существует множество вариантов UDP или просто TCP) или на уровне приложения. Наконец, если вы хотите передавать огромные объемы данных, вы хотите доставлять их физически,
Кэширование
Загрузка от первого лица новой Игры Престолов занимает 20 часов. После этого копия сохраняется на кэширующем сервере, а второму человеку требуется всего несколько секунд.
Кэширование сохраняет результаты запросов локально, поэтому в первый раз оно работает медленно, пока получает информацию, но намного быстрее, поскольку она уже есть для дальнейших запросов. Сервер хранит только X объемов данных, поэтому самые старые запросы удаляются из конца очереди по мере ее заполнения.
Конечным результатом является то, что наиболее распространенные запросы хранятся локально и выполняются намного быстрее, а данных передается намного меньше.
Вам нужно изменить способ настройки вашей интернет-архитектуры, чтобы иметь кэширование целых веб-сайтов.
Нет причин беспокоиться о длительных простоях в Интернете, кроме как в виде сообщений, отправляемых с планеты на планету. Если у Интернета есть время простоя 20 часов только для загрузки списка веб-страниц и еще 20 часов для загрузки одной страницы, люди просто не будут этого делать.
Если вы хотите, чтобы люди пользовались Интернетом, каждой колонии нужны собственные серверы для хранения содержимого сети, которое они хотят видеть. Когда колонист подключается к сети, он общается только с локальным сервером. Локальные серверы обмениваются данными через спутниковую сеть, отправляя обновления другим колониям, которые загружают обновления. Таким образом, просмотр веб-страниц занимает секунды, даже если новости могут быть давностью несколько часов, что в любом случае ничего не поделаешь. Этот процесс отправки обновлений означает, что сеть децентрализована, а поскольку локальные компьютеры не обмениваются данными напрямую с Интернетом, трафик значительно сокращается. Если компьютеры взаимодействуют напрямую с Интернетом, маршрутизаторы не смогут обрабатывать весь трафик, особенно если они сохраняют пакеты во время простоя.
Когда серверы обмениваются данными, все пакеты отправляются одновременно, и соединение не поддерживается. Этот протокол работает с идеей хранения пакетов, предложенной другими ответами.
Если у вас есть несколько путей маршрутизации, по которым могут быть отправлены сообщения, каждый маршрутизатор на пути отправляет пакеты по всем доступным путям, а принимающий компьютер берет первый полученный и игнорирует дубликаты. Если пакет поврежден, он ожидает прибытия дубликата. Если через пару часов он получил только поврежденные пакеты или пакеты не пришли, он снова запрашивает пакеты.
Сообщения могут использовать другой протокол. Сообщения отправляются с сервера одной колонии непосредственно на целевой сервер, а не на какие-либо другие серверы в сети. Когда принимающий сервер получает сообщение, он отправляет сообщение на компьютер, который его получает.
С помощью этих методов серверы не могут позволить себе такую роскошь, как открытие и закрытие портов. Они всегда должны следить за обновлениями, чтобы ничего не пропустить.
Преимущества этой конструкции:
Меньше компьютеров, отправляющих пакеты через межпланетные маршрутизаторы, значительно сокращаются круговые поездки, сервер всегда получает сообщение как можно быстрее, не требуется рукопожатие, несколько путей маршрутизации означают, что сеть может выдержать потерю нескольких спутников, почти мгновенная связь с локальным сервером , возможность отправлять обновления вместо того, чтобы их запрашивал клиент, отдельный протокол обмена сообщениями (никакие другие колонии не видят ваше сообщение для другой колонии).
Пропускная способность
Вы не указали, какая у вас пропускная способность.
Вы можете транслировать абсолютно тонны дополнительной информации, если у вас есть дополнительная пропускная способность. Например, межпланетный netflix вы можете транслировать 15 минут из 30 наиболее похожих фильмов вместе с фильмом, который вы смотрите, когда он подходит к концу, поэтому вы можете выбрать другой фильм для просмотра и сразу же начать его просмотр. То же самое может относиться ко всем видам данных.
Прогноз
Вы можете добавить к этому предсказание, аналогично тому, как работает Chrome, чтобы переходить по вероятным ссылкам, чтобы ускорить загрузку, если пользователь нажмет на них. Вам нужно будет добавить все эти данные в пакет. Вместо того, чтобы загружать домашнюю страницу Википедии, запрос к Википедии может предсказать, что вы, вероятно, просмотрите, и транслировать весь сайт или краткое изложение каждой страницы.
Бластинг данных
Вы также можете сделать что-то вроде взрыва данных из 90-х, когда информация будет отображаться на высокой скорости, а публика будет снимать ее на видео и воспроизводить в замедленном темпе, чтобы прочитать. Постоянно транслируйте все виды информации и кэшируйте ее, если это необходимо. Даже при низкой пропускной способности любые запасные «циклы» могут быть использованы для того, чтобы втиснуть дополнительную информацию.
Удаленное выполнение
Удаленное выполнение — это возможность отправить небольшую программу, которую можно выполнить на земле.
Например, вы хотите сыграть с кем-нибудь в межзвездные шахматы на спутнике Юпитера Ио. Вместо того, чтобы отправлять ход только для того, чтобы через 45 минут узнать, что это был недопустимый ход, потому что вы забыли, что находитесь под шахом, было бы быстрее, если бы небольшая шахматная программа была загружена и выполнена как на Земле, так и на Ио. Затем, когда сделан недопустимый ход, его можно проверить или изменить без необходимости его отправки.
Это похоже на проверку на стороне клиента в Javascript, когда вы пытаетесь отправить форму, чтобы подписаться на что-то, и забываете заполнить свой адрес электронной почты, он попросит вас заполнить его перед отправкой формы вместо того, чтобы отправить ее и получить ошибка обратно.
Другим примером этого является запрос клиентом информации о положении Земли на определенную дату. Вместо того, чтобы отправлять запрос и через 45 минут получать ответ, они могут вместо этого получить небольшую исполняемую программу, которая рассчитает это за них.
Кэширование
Очевидно, кэширование данных для повторного использования локально, но в более широком масштабе, размещение серверов на разных планетах/спутниках и кэширование на каждой из них. Например, большие новостные сайты будут популярны ежедневно, поэтому они будут распределяться и кэшироваться между всеми местоположениями. Другие данные также будут кэшироваться и храниться на основе просмотров. Это очень похоже на то, как работает складская система Amazon — товары, которые люди могут купить, автоматически распределяются по складам с использованием алгоритмов, которые предсказывают, что люди купят товары, что экономит время доставки.
Я полагаю, что одним из ключевых моментов, на который следует обратить внимание, является смена парадигмы, необходимая для развития Интернета. На самом деле это не вопрос того , как мы доставляем веб-страницы и текущий опыт работы в Интернете , это скорее вопрос о том, как бы выглядела всемирная паутина, если бы задержка была безумно высокой . . Вы бы переучили своих инженеров-программистов и переписали бы все свои инструменты, и Интернет был бы в основном основан на приложениях, вы, вероятно, загрузили бы приложение BBC News и обновили его автоматически каждое утро из локального кеша, либо загрузив весь сайт, или просто просматривая весь сайт локально из кеша.
IPTP — это двунаправленный протокол «точка-точка» с промежуточным хранением и высокой отказоустойчивостью.
Каналы IPTP определяются между планетами таким образом, что в любой момент времени на одной планете или на орбите вокруг нее находится ровно один передатчик, передающий потоковые данные на любой заданный массив приемников на другой. (Активный передатчик будет меняться по мере вращения планеты и спутников вокруг нее.) Этот поток должен иметь возможность мультиплексировать большое количество различных подпотоков данных (поступающих из множества различных источников в исходном планетарном Интернете), которые сами по себе будут быть поставлены в очередь в буферах для фактической передачи.
Весь поток будет разбиваться на «блоки» размера, соответствующего качеству канала, каждый из которых индивидуально закодирован с использованием исправления ошибок Рида-Соломона, а дополнительные блоки «четности» будут передаваться периодически, позволяя восстановить блоки, которые превышен порог исправления ошибок кода RS, используемого для этого блока. (IPTP позволяет изменять размер этого блока в зависимости от условий.) Каждый блок должен сохраняться на передающей стороне до тех пор, пока от получателя не будет получено подтверждение блока (BACK).
Для дополнительной надежности после передачи серии «строк» (N блоков данных плюс блок четности XOR этих блоков данных) передается «строка четности» (создана путем XOR вместе соответствующих блоков в M последовательных строк). В конце группы (называемой «главой») из L страниц, состоящих из M строк и N столбцов, находится «страница четности» (создана путем операции XOR вместе соответствующих блоков на всех страницах). Вся глава (L+1)(M+1)(N+1)
блоков должна использовать один и тот же размер блока и кодировку RS, но последующие главы могут изменить размер блока, а также значения L, M и N, как того требуют условия. Как правило, L, M и N будут больше, когда потребуется повторно отправить меньшее количество блоков.
Внутри главы подпотоки должны быть собраны в порядке приоритета, чтобы свести к минимуму количество блоков, несущих данные двух или более разных приоритетов. Приоритет передачи блока равен подпотоку самого высокого уровня приоритета, который он содержит.
Перед каждой главой находится заголовок, определяющий эти параметры. [Целевая группа по межпланетным передачам сообщает, что будущие версии IPTP могут расширить систему паритета до «книг» из K таких глав, (K+1)(L+1)(M+1)(N+1)
каждая из которых будет включать блоки. IPTPv1 определяет K=1 без четности, поэтому в книге только одна глава.]
Метаданные «BACK» должны быть отправлены обратно от приемника к передатчику, чтобы подтвердить целые главы, а также диапазоны блоков внутри главы. Любые неподтвержденные блоки, предшествующие последнему подтверждённому блоку, должны быть переданы повторно. Решение о повторной передаче не должно приниматься до тех пор, пока не будет получена и декодирована вся «книга», поскольку блоки четности, строки, страницы (и главы), позволяющие полностью реконструировать BACK, еще не будут обработаны. Поскольку сам BACK занимает один или несколько блоков для BACK, всегда будет что-то для BACK, создавая неявное «поддержание активности» между узлами.
Метаданные (включая, помимо прочего, указанные выше BACK) имеют наивысший уровень приоритета для подпотоков и поэтому всегда должны быть первыми в книге/главе после заголовка протокола. Детали других соображений QoS все еще определяются IPTTF.
Как только поток данных реконструирован на принимающей стороне, он может быть демультиплексирован в подпотоки, каждый из которых отправляется в желаемое место назначения в планетарном Интернете.
Я предполагаю, что надежный UDP приближается к тому, что необходимо. В любом случае, вы можете забыть об использовании сети для просмотра или чего-то подобного. Это будет больше похоже на SMTP. Вы отправляете сообщение, и оно будет доставлено, возможно, с задержкой на много часов из-за повторной передачи. У вас может быть некоторое взаимодействие клиент-сервер, но это будет больше похоже на запрос книги из библиотеки, чем на HTTP.
+++
Предварительное открытие — интересный момент. Нечто подобное, вероятно, произойдет внутри: когда ваш компьютер захочет отправить пакет, предназначенный для Плутона, он спросит у местного межпланетного отправителя, прежде чем даже пытаться. Вероятно, он отправит данные отправителю непосредственно перед передачей.
Райан_Л
РонДжон
AlexP
точка_Sp0T
пользователь
пользователь
Уиллтек
Закон квадрата-куба
Шверн
Шверн
Кингледион
пользователь 253751
лес
Хоббамок
Хоббамок
абарнерт
пользователь 253751