img

Проблемы и решения компьютерных сетей - введение в основные понятия и определения

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

Это первая статья цикла. Продолжение: 2 часть

Плоскость данных

Начнем с того, что основная задача сети-перенос данных с одного подключенного хоста на другой. Это может показаться простым на первый взгляд, но на самом деле это чревато проблемами. Здесь может быть полезна иллюстрация; рисунок № 1 используется для иллюстрации сложности проблемы.

Рис. 1 Пространство проблем плоскости данных

Начиная с верхнего левого угла иллюстрации:

  1. Приложение генерирует некоторые данные. Эти данные должны быть отформатированы таким образом, чтобы принимающее приложение могло понять, что было передано, - данные должны быть упорядочены. Механизм, используемый для упорядочения данных, должен быть эффективным во многих отношениях, включая быстрое и простое кодирование, быстрое и простое декодирование, достаточно гибкий, чтобы можно было вносить изменения в кодирование, не нарушая слишком много вещей, и добавлять наименьшее количество накладных расходов, возможных во время передача данных.
  2. Сетевое программное обеспечение должно инкапсулировать данные и подготовить их к фактической передаче. Каким-то образом сетевое программное обеспечение должно знать адрес хоста назначения. Сеть, которая соединяет источник и пункт назначения, является общим ресурсом, и, следовательно, должна быть доступна некоторая форма мультиплексирования, чтобы источник мог направлять информацию в правильный пункт назначения. Как правило, это будет связано с определенной формой адресации.
  3. Данные должны быть перемещены из памяти в источнике и непосредственно в сеть - фактический провод (или оптический кабель, или беспроводное соединение), который будет передавать информацию между устройствами, подключенными к сети.
  4. Сетевые устройства должны иметь какой-то способ обнаружить конечный пункт назначения информации - вторую форму проблемы мультиплексирования - и определить, требуется ли какая-либо другая обработка информации, когда она находится в пути между источником и пунктом назначения.
  5. Информация, прошедшая через сетевое устройство, должна быть снова закодирована и перенесена из памяти в провод. В любой точке, где информация перемещается из памяти в какую-либо форму физического носителя, информация должна быть поставлена в очередь; часто бывает больше данных для передачи, чем может быть помещено на любой конкретный физический носитель в любой момент времени. Здесь в игру вступает качество услуг.
  6. Информация, передаваемая по сети, теперь должна быть скопирована с физического носителя и обратно в память. Он должен быть проверен на наличие ошибок - это контроль ошибок - и у приемника должен быть какой-то способ сообщить передатчику, что ему не хватает памяти для хранения входящей информации - это контроль потока.

Особый интерес представляет сетевое устройство в середине диаграммы. Сетевое устройство-например, маршрутизатор, коммутатор или middle box—соединяет два физических носителя вместе для построения реальной сети. Возможно, самый простой вопрос для начала заключается в следующем: зачем вообще нужны эти устройства? Маршрутизаторы и коммутаторы — это, очевидно, сложные устройства со своей собственной внутренней архитектурой и зачем добавлять эту сложность в сеть? Есть две фундаментальные причины.

Первоначальная причина создания этих устройств заключалась в соединении различных видов физических носителей вместе. Например, внутри здания может быть практично работать ARCnet или thicknet Ethernet (приведены примеры из времени, когда были впервые изобретены сетевые устройства). Расстояние, которое эти носители могли преодолеть, однако, очень мало-порядка сотни метров. Каким-то образом эти сети должны быть расширены между зданиями, между кампусами, между городами и, в конечном счете, между континентами, используя своего рода мультиплексированную (или обратную мультиплексированную) телефонную сеть, такую как T1 или DS3. Эти два различных типа носителей используют различные виды сигналов; должно быть какое-то устройство, которое переводит один вид сигналов в другой.

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

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

Чтобы решить проблему первым способом, нужно много проводов. Решение проблемы вторым способом кажется очевидным решением, но оно представляет другой набор проблем - в частности, как пропускная способность, доступная по проводам, распределяется между всеми устройствами? В какой-то момент, если на одном общем носителе достаточно устройств, любая схема, используемая для обеспечения совместного использования ресурсов, сама по себе будет потреблять столько же или больше пропускной способности, как любое отдельное устройство, подключенное к проводу. В какой-то момент даже 100-гигабайтное соединение, разделенное между достаточным количеством хостов, оставляет каждому отдельному хосту очень мало доступных ресурсов.

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

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

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

  • Должны ли сети быть с коммутацией каналов или с коммутацией пакетов?
  • Должны ли сети с коммутацией пакетов использовать кадры фиксированного или переменного размера?
  • Как лучше всего рассчитать набор кратчайших путей через сеть?
  • Как сети с коммутацией пакетов должны взаимодействовать с качеством обслуживания (QoS)?
  • Должна ли плоскость управления быть централизованной или децентрализованной?

На некоторые из этих вопросов давным-давно был дан ответ. С другой стороны, некоторые из этих вопросов все еще актуальны, особенно последний.


Коммутация каналов

Первое большое обсуждение в мире компьютерных сетей было то, должны ли сети быть с коммутацией каналов или с коммутацией пакетов. Основное различие между этими двумя понятиями заключается в концепции схемы: нужно ли передатчику и приемнику «видеть» сеть как один провод или соединение, предварительно сконфигурированное (или настроенное) с определенным набором свойств прежде чем они начнут общаться? Или они «видят» сеть как общий ресурс, где информация просто генерируется и передается «по желанию»? Первый считается с коммутацией каналов, а второй считается с коммутацией пакетов. Коммутация каналов имеет тенденцию обеспечивать больший поток трафика и гарантии доставки, в то время как коммутация пакетов обеспечивает доставку данных при гораздо меньших затратах - первый из многих компромиссов, с которыми вы столкнетесь при проектировании сетей. Рисунок 2 будет использован для иллюстрации коммутации каналов с использованием мультиплексирования с временным разделением (TDM) в качестве примера.

Рис. 2. Коммутация каналов на основе мультиплексирования с временным разделением

На рисунке 2 общая пропускная способность каналов между любыми двумя устройствами разделена на восемь равных частей; A отправляет данные E, используя временной интервал A1 и F, используя временной интервал A2; B отправляет данные в E с использованием временных интервалов B1 и F с использованием временных интервалов B2. Каждый фрагмент информации имеет фиксированную длину, поэтому каждый из них может быть помещен в один временной интервал в текущем потоке данных (следовательно, каждый блок данных представляет фиксированное количество времени или интервала в проводе). Предположим, что где-то есть контроллер, назначающий слот в каждом из сегментов, через которые будет проходить трафик:

  • Для трафика [A, E]:
    • На C: слот 1 от A переключен на слот 1 в направлении D
    • На D: слот 1 от C переключен на слот 1 в направлении E
  • Для трафика [A, F]:
    • На C: слот 4 от A переключен на слот 4 в направлении D
    • На D: слот 4 от C переключен на слот 3 в направлении F
  • Для трафика [B, E]:
    • На C: слот 4 от B переключен на слот 7 в направлении D
    • На D: слот 7 от C переключен на слот 4 в направлении E
  • Для трафика [B, F]:
    • На C: слот 2 от B переключен на слот 2 в направлении D
    • На D: слот 2 от C переключен на слот 1 в направлении F

Ни одно из устройств обработки пакетов в сети не должно знать, какой бит данных идет куда; до тех пор, пока C берет все, что находится в слоте 1 в потоке данных A в каждом временном интервале, и копирует его в слот 1 в своем исходящем потоке в направлении D, А D копирует его из слота 1 входящего из C в слот 1 исходящего в E, трафик, передаваемый A, будет доставляться в E. Есть интересный момент, который следует отметить об этом виде обработки трафика—для пересылки трафика ни одно из устройств в сети на самом деле не должно знать, что является источником или назначением. Блоки данных, передаваемые по сети, не обязательно должны содержать адреса источника или назначения; куда они направляются и откуда поступают, все решения основываются на знании контроллерами открытых слотов в каждом канале. Набор слотов, назначенных для любой конкретной связи между устройствами, называется схемой, потому что это пропускная способность и сетевые ресурсы, выделенные для связи между одной парой устройств.

Основные преимущества сетей с коммутацией каналов включают в себя:

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

Есть и недостатки, в том числе:

  • Сложность контроллера значительно возрастает по мере того, как сеть и услуги, которые она предлагает, растут в масштабе. Нагрузка на контроллер может стать подавляющей, фактически вызывая перебои в работе сети.
  • Пропускная способность на каждом канале используется не оптимально. На рис. 1-3 блоки времени (или ячейки), содержащие*, по существу являются потерянной полосой пропускания. Слоты назначаются определенной схеме заранее: слоты, используемые для трафика [A, E], не могут быть «заимствованы» для трафика [A, F], даже если A ничего не передает в сторону E.
  • Время, необходимое для реагирования на изменения в топологии, может быть довольно длительным с точки зрения сети; локальное устройство должно обнаружить изменение, сообщить о нем контроллеру, и контроллер должен перенастроить каждое сетевое устройство вдоль пути каждого затронутого потока трафика.

Системы TDM внесли ряд идей в развитие сетей, используемых сегодня. В частности, системы TDM сформировали большую часть ранних дискуссий о разбиении данных на пакеты для передачи по сети и заложили основу для гораздо более поздней работы в области QoS и управления потоком. Одна довольно важная идея, которую эти ранние системы TDM завещали большему сетевому миру, - это network planes.

В частности, системы TDM делятся на три плоскости:

  • Плоскость управления - это набор протоколов и процессов, которые формируют информацию, необходимую сетевым устройствам для пересылки трафика через сеть. В сетях с коммутацией каналов плоскость управления является полностью отдельной плоскостью; обычно существует отдельная сеть между контроллером и отдельными устройствами (хотя и не всегда, особенно в новых системах с коммутацией каналов).
  • Плоскость данных (также известная как плоскость пересылки) - это путь информации через сеть. Это включает в себя декодирование сигнала, полученного в проводе, в кадры, обработку их и передачу их обратно в провод, закодированный в соответствии с физической транспортной системой.
  • Плоскость управления ориентирована на управление сетевыми устройствами, включая мониторинг доступной памяти, мониторинг глубины очереди, а также мониторинг, когда устройство отбрасывает информацию, передаваемую по сети, и т. д. Часто бывает трудно различить уровни управления и плоскости управления в сети. Например, если устройство вручную сконфигурировано для пересылки трафика определенным образом, является ли это функцией плоскости управления (потому что устройство настраивается) или функцией плоскости управления (потому что это информация о том, как пересылать информацию)?

Коммутация пакетов

В начале-середине 1960-х годов коммутация пакетов находилась в состоянии «in the air». Много людей переосмысливали то, как сети были построены, и рассматривали альтернативы парадигме коммутации каналов. Paul Baran, работавший в RAND Corporation, предложил сеть с коммутацией пакетов в качестве решения для обеспечения живучести; примерно в то же время Donald Davies в Великобритании предложил такой же тип системы. Эти идеи попали в Lawrence Livermore Laboratory, что привело к созданию первой сети с коммутацией пакетов (названной Octopus), введенной в эксплуатацию в 1968 году. ARPANET, экспериментальная сеть с коммутацией пакетов, начала функционировать вскоре после этого, в 1970 году.

Существенное различие между коммутацией каналов и коммутацией пакетов заключается в роли отдельных сетевых устройств в передаче трафика, как показано на рис.3. На рисунке 3, A создает два блока данных. Каждый из них включает в себя заголовок, описывающий, как минимум, пункт назначения (представлен H в каждом блоке данных). Этот полный пакет информации - исходный блок данных и заголовок - называется пакетом. Заголовок также может описывать, что находится внутри пакета, и может включать любые специальные инструкции по обработке, которые устройства пересылки должны принимать при обработке пакета - их иногда называют метаданными или «данными о данных в пакете».

Рис. 3 Сеть с коммутацией пакетов

Есть два пакета, произведенных A: A1, предназначенный для E; и A2, предназначенный для F. B также отправляет два пакета: B1, предназначенный для F, и B2, предназначенный для E. Когда C получает эти пакеты, он считывает небольшую часть заголовка пакета, часто называемого полем, чтобы определить место назначения. Затем C обращается к локальной таблице, чтобы определить, по какому исходящему интерфейсу должен быть передан пакет. D делает то же самое, перенаправляя пакет из правильного интерфейса к месту назначения.

Этот способ пересылки трафика называется переадресацией по частям, поскольку каждое устройство в сети принимает совершенно независимое решение о том, куда пересылать каждый отдельный пакет. Локальная таблица, к которой обращается каждое устройство, называется таблицей пересылки; обычно это не одна таблица, а множество таблиц, потенциально включающих в себя базу информации маршрутизации (RIB) и базу информации пересылки (FIB).

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

Сети с коммутацией пакетов могут использовать централизованную плоскость управления, а сети с коммутацией каналов могут использовать распределенные плоскости управления. В то время, когда сети с коммутацией пакетов были впервые спроектированы и развернуты, однако они обычно использовали распределенные плоскости управления. Software-Defined Networks (SDN) вернули концепцию централизованных плоскостей управления в мир сетей с коммутацией пакетов.

Первым преимуществом сети с коммутацией пакетов над сетью с коммутацией каналов является парадигма пересылки hop-by-hop. Поскольку каждое устройство может принимать полностью независимое решение о пересылке, пакеты могут динамически пересылаться в зависимости от изменений в топологии сети, что устраняет необходимость связываться с контроллером и ждать решения. Пока существует как минимум два пути между источником и пунктом назначения (сеть имеет два подключения), пакеты, переданные в сеть источником, в конечном итоге будут переданы в пункт назначения.

Вторым преимуществом сети с коммутацией пакетов по сравнению с сетью с коммутацией каналов является то, как сеть с коммутацией пакетов использует пропускную способность. В сети с коммутацией каналов, если конкретная схема (действительно временной интервал в приведенном примере TDM) не используется, то слот просто тратится впустую. При переадресации hop-by-hop каждое устройство может наилучшим образом использовать пропускную способность, доступную на каждом исходящем канале, чтобы нести необходимую нагрузку трафика. Хотя это локально сложнее, это проще глобально, и это позволяет лучше использовать сетевые ресурсы.

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


Управление потоками в сетях с коммутацией пакетов

В сети с коммутацией каналов контроллер выделяет определенную полосу пропускания для каждого канала, назначая временные интервалы от источника до назначения. Что происходит, если передатчик хочет отправить больше трафика, чем выделенные временные интервалы будут поддерживать? Ответ — прост-это невозможно. В некотором смысле, таким образом, возможность управлять потоком пакетов через сеть встроена в сеть с коммутацией каналов; и нет способа отправить больше трафика, чем может передать сеть, потому что «пространство», которое имеет передатчик в своем распоряжении для отправки информации, предварительно выделяется.

А как насчет сетей с коммутацией пакетов? Если все звенья сети, показанные на рис. 3, имеют одинаковую скорость соединения, что произойдет, если и А, и В захотят использовать всю пропускную способность соединения в направлении С? Как C решит, как отправить все это в D по каналу связи, который пропускает вдвое меньше трафика, необходимого для обработки? Здесь можно использовать методы управления транспортными потоками. Как правило, они реализованы в виде отдельного набора протоколов / правил, «движущихся поверх» базовой сети, помогая «организовать» передачу пакетов путем создания виртуального канала между двумя взаимодействующими устройствами.

Протокол управления передачей (TCP) обеспечивает управление потоком для сетей с коммутацией пакетов на основе Интернет-протокола (IP). Этот протокол был впервые указан в 1973 году Vint Cerf и Bob Kahn.

онтроллер выделяет определенную полосу пропускания для каждого канала, назначая временные интервалы от источника до назначения. Что происходит, если передатчик хочет отправить больше трафика, чем выделенные временные интервалы будут поддерживать? Ответ — прост-это невозможно. В некотором смысле, таким образом, возможность управлять потоком пакетов через сеть встроена в сеть с коммутацией каналов; и нет способа отправить больше трафика, чем может передать сеть, потому что «пространство», которое имеет передатчик в своем распоряжении для отправки информации, предварительно выделяется.

А как насчет сетей с коммутацией пакетов? Если все звенья сети, показанные на рис. 3, имеют одинаковую скорость соединения, что произойдет, если и А, и В захотят использовать всю пропускную способность соединения в направлении С? Как C решит, как отправить все это в D по каналу связи, который пропускает вдвое меньше трафика, необходимого для обработки? Здесь можно использовать методы управления транспортными потоками. Как правило, они реализованы в виде отдельного набора протоколов / правил, «движущихся поверх» базовой сети, помогая «организовать» передачу пакетов путем создания виртуального канала между двумя взаимодействующими устройствами.

Протокол управления передачей (TCP) обеспечивает управление потоком для сетей с коммутацией пакетов на основе Интернет-протокола (IP). Этот протокол был впервые указан в 1973 году Vint Cerf и Bob Kahn.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Сети
Скидка 25%
Основы сетевых технологий
Стань сетевиком с нуля за 2 месяца. Веселая и дружелюбная подача информации с эмуляцией реальных задач.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
В начале 2000-х, когда идея мессенджеров только формировалась, расширяемый протокол обмена сообщениями и информацией о присутств
img
Задержка в сети, или сетевая задержка, - это временная задержка при передаче запросов или данных от источника к адресату в сетев
img
Система доменных имен (DNS – Domain Name System) обеспечивает сетевую коммуникацию. DNS может показаться какой-то невидимой сило
img
Wi-Fi это технология, которая использует радиоволны для отправки и получения сигналов от находящихся поблизости устройств, чтобы
img
BGP (Border Gateway Protocol) - это протокол граничного шлюза, предназначенный для обмена информацией о маршрутизации и доступно
img
Когда читаете данную статью, браузер подключается к провайдеру (или ISP) а пакеты, отправленные с компьютера, находят путь до се
21 ноября
20:00
Бесплатный вебинар
Введение в Docker