Я скомпилировал свои предыдущие статьи на Github, приветствую всех в звездахGitHub.com/Next Day Picks/Не голоден…
Ранее мы узнали, как транспортный уровень передает данные между клиентами и серверами, обеспечивая сквозную связь между процессами. Затем мы узнаем, как сетевой уровень на самом деле реализует службу связи между хостами.Эта часть сетевого уровня есть почти в каждой конечной системе.. Поэтому сетевой уровень должен быть очень сложным. Ниже я потрачу много места, чтобы представить знания об уровне компьютерной сети.
Обзор сетевого уровня
Сетевой уровень является третьим уровнем эталонной модели OSI.Он расположен между транспортным уровнем и канальным уровнем.Основной целью сетевого уровня является достижение прозрачной передачи данных между двумя конечными системами.
На первый взгляд роль сетевого уровня выглядит очень простой, т.分组
Переход с одного хоста на другой. Для реализации этой функции сетевому уровню необходимы две функции.
-
转发
: Потому что в инете много路由器
Существование маршрутизатора является основой Интернета.Важнейшей функцией маршрутизатора является分组转发
, когда пакет поступает на входной канал маршрутизатора, маршрутизатор перемещает пакет на соответствующий выходной канал. Переадресация — единственная функция, реализованная в плоскости данных.
В сети есть два варианта самолетов
- Плоскость данных: отвечает за пересылку сетевого трафика, например за таблицы пересылки в коммутаторах маршрутизатора (о которых мы поговорим позже).
- Плоскость управления: управляет поведением сети, например выбором сетевых путей.
-
路由选择
: сетевой уровень должен выбирать путь для пакетов по мере их прохождения от отправителя к получателю. Алгоритм вычисления этих вариантов пути называется路由选择算法(routing algorithm)
.
Это,Переадресация — это локальное действие маршрутизатора по передаче пакета из одного входного канала в соответствующий интерфейс выходного канала.. Маршрутизация, с другой стороны, относится к выбору пути, по которому проходит пакет от источника к получателю. Позднее мы часто будем ссылаться на термины «пересылка» и «маршрутизация».
Итак, здесь есть проблема, как маршрутизатор узнает, какие пути доступны?
У каждого маршрутизатора есть ключевая концепция, которая转发表(forwarding table)
. Маршрутизатор реализует пересылку, проверяя значение поля в заголовке пакета, чтобы найти запись в таблице переадресации. Значение в заголовке соответствует значению в таблице пересылки, которая указывает выходной канал маршрутизатора, по которому будет пересылаться пакет. Как показано ниже
На приведенном выше рисунке после того, как пакет 1001 поступает на маршрутизатор, он сначала индексируется в таблице переадресации, а затем алгоритм маршрутизации определяет путь, по которому будет проходить пакет. Каждый маршрутизатор выполняет две функции:Переадресация и маршрутизация. Теперь поговорим о принципе работы роутера.
Как работают маршрутизаторы
Ниже приведена схема архитектуры маршрутизатора, маршрутизатор в основном состоит из 4 компонентов.
- Входной порт:
输入端口(input port)
Есть много функций.线路终端功能
и数据链路处理
функции, реализующие физический уровень и уровень канала передачи данных, связанные с одним входным каналом маршрутизатора.输入端口查找/转发功能
Это очень важно для функции коммутации маршрутизатора.Выходной порт определяется структурой коммутации маршрутизатора.В частности, его следует определить путем запроса таблицы переадресации. - Структура обмена:
交换结构(Switching fabric)
Просто подключите входной порт маршрутизатора к его выходному порту. Эта коммутационная структура эквивалентна сети внутри маршрутизатора. - Выходной порт:
输出端口(Output ports)
Пакеты пересылаются через коммутационную матрицу и передаются через функции физического уровня и уровня канала передачи данных, поэтому выходные порты выполняют функции обратного канала передачи данных и физического уровня в качестве входных портов. - Процессор маршрутизации:
路由选择处理器(Routing processor)
Выполнять протоколы маршрутизации на маршрутизаторах, поддерживать таблицы маршрутизации и выполнять функции управления сетью.
Вышеизложенное является лишь кратким введением этих компонентов.На самом деле, состав этих компонентов не так прост, как описано.Давайте поговорим об этих компонентах более подробно.
входной порт
Входной порт имеет множество функций, введенных выше, включая окончание строки, обработку данных, поиск и пересылку.На самом деле эти функции имеют соответствующие модули внутри входного порта.Внутренняя реализация входного порта показана на рисунке ниже.
Каждый входной порт имеет поддерживаемый процессор маршрутакопия таблицы маршрутизации, который обновляется в соответствии с обработчиком маршрута. Эта копия таблицы маршрутизации позволяет каждому входному порту переключаться, не проходя через процессор маршрутизации единообразно. Это分散式
Этот метод позволяет избежать узких мест при пересылке, вызванных унифицированной обработкой маршрутизатора.
В маршрутизаторах с ограниченными возможностями обработки входных портов входные порты не выполняют функции коммутации, а единообразно обрабатываются процессором маршрутизации, после чего ищут и пересылают пакеты данных на соответствующие выходные порты согласно таблице маршрутизации.
Как правило, этот тип маршрутизатора представляет собой не отдельный маршрутизатор, а маршрутизатор, в котором рабочая станция или сервер действуют как маршрутизатор.Внутри этого маршрутизатора процессор маршрутизации фактически
CPU
, в то время как входной порт на самом деле просто网卡
.
Входной порт найдет выходной порт согласно таблице переадресации, а затем пакет будет отправлен.Теперь есть вопрос, у каждого пакета есть своя ссылка? Если количество пакетов очень велико, достигая уровня 100 миллионов, будет ли 100 миллионов выходных путей к портам?
Явно не в нашем подсознании, давайте рассмотрим пример ниже.
Ниже приведен пример трех входных портов, соответствующих трем выходным ссылкам в таблице переадресации.
Видно, что для данного примера в таблице форвардинга маршрутизатора не так много ссылок, нужно всего четыре, что соответствует выходной ссылке 0 1 2 3 . Другими словами, 100 миллионов ссылок можно получить, используя 4 таблицы переадресации.
Как этого добиться?
Используя этот стиль таблицы переадресации, адрес пакета маршрутизатора前缀(prefix)
будут сопоставлены с записями в этой таблице.
Если есть совпадение, оно будет перенаправлено на соответствующую ссылку, что может быть трудно понять.Приведу пример.
Например, в это время приходит пакет 11000011 10010101 00010000 0001100. Поскольку этот пакет соответствует 11000011 10010101 00010000, маршрутизатор перенаправит его на интерфейс 0 link. Если префикс не соответствует ни одному из трех исходящих каналов, указанных выше, маршрутизатор переадресует на интерфейс канала 3.
следует сопоставление маршрутов最长前缀原则(longest prefix matching rule)
, самый длинный принцип сопоставления, как следует из названия, заключается в том, что если есть два совпадающих элемента, один длинный и один короткий, будет найдено самое длинное совпадение.
Как только выходной порт пакета определяется функцией поиска, пакет поступает в коммутационную матрицу. При входе в коммутационную матрицу, если коммутационная фабрика используется, она блокирует входящие пакеты до тех пор, пока коммутационная матрица не запланирует новые пакеты.
переключать ткань
Коммутационная структура является основной функцией маршрутизатора, и пакет пересылается из входного порта в выходной порт через функцию коммутатора, которая является основной функцией коммутационной матрицы. Существует много форм переключающих структур, в основном разделенных наПодкачка через память, подкачка через шину, подкачка через сеть, давайте обсудим это отдельно.
- После подкачки памяти: самые первые традиционные компьютеры использовали
内存交换
Да, между входным портом и выходным портом есть процессор. Порты ввода и вывода функционируют как устройства ввода/вывода в традиционных операционных системах. Когда пакет прибывает на входной порт, порт сначала начинается с中断
способ сигнализировать маршрутизатору о необходимости скопировать пакет из входного порта в память. Затем процессор маршрутизации извлекает адрес назначения из заголовка пакета, находит соответствующий порт вывода в таблице переадресации для пересылки и одновременно копирует пакет в буфер порта вывода.
Здесь следует отметить одну вещь: если пропускная способность памяти считывает или записывает B пакетов в секунду, то общая пропускная способность коммутатора (общая скорость пакетов от входных портов к выходным портам) должна быть меньше B/2.
- Через коммутацию шины: в этом методе обработки шина напрямую передает пакет на выходной порт через входной порт без вмешательства промежуточного маршрутизатора. Рабочий процесс шины выглядит следующим образом: Входной порт назначает
标签
, а затем пакет отправляется на все выходные порты через шину. Каждый выходной порт будет судить, соответствует ли порт в метке своему собственному. Если он совпадает, то выходной порт удалит метку. Эта метка используется только внутри переключаться через автобус. Если оба多个
Когда пакет поступает на маршрутизатор, может быть обработан только один пакет, а остальные пакеты должны ожидать перед входом в коммутационную матрицу.
- Переключение через объединенную сеть. Одним из способов преодоления ограничения пропускной способности одной общей шины является использование более сложной объединенной сети. Как показано ниже
Каждая вертикальная шина пересекает каждую горизонтальную шину в точке пересечения, которую можно открывать и закрывать в любое время с помощью контроллера коммутационной матрицы. Когда пакет поступает на входной порт А, если его необходимо перенаправить на порт X, контроллер коммутатора закрывает точку пересечения сечения от A до X, и порт A пересылает пакет по шине. Эта взаимосвязанная коммутационная структура сети非阻塞的(non-blocking)
, то есть замыкание пересечения A -> X не повлияет на связь B -> Y. Если два пакета от двух разных входных портов предназначены для одного и того же выходного порта, в этом случае может быть обменян только один пакет, а другой должен ожидать.
обработка выходного порта
Как показано на рисунке ниже, обработка выходного порта извлекает пакеты, уже сохраненные в памяти выходного порта, и отправляет их по выходному каналу. Это включает в себя выбор и удаление пакетов из очереди для передачи, выполнение требуемых функций канального уровня и физического уровня.
Существует очередь, ожидающая входа в обмен на входном порту, и очередь, ожидающая переадресации на выходном порту.Нагрузка трафика, коммутационная тканьотносительная частота и линейная скорость.
Поскольку очередь продолжает увеличиваться, пространство кэша маршрутизатора будет исчерпано, так что не будет памяти для хранения переполненной очереди, что приведет к появлению пакетов.丢包(packet loss)
, это то, что мы подразумеваем под отбрасыванием пакетов в сети или отбрасыванием маршрутизаторами.
Когда появится очередь
Затем мы вводим возможные ситуации с очередями через очередь очереди входного порта и очередь очереди выходного порта.
входная очередь
Если скорость обработки коммутационной фабрики не такая высокая, как прибытие входной очереди, в этом случае входной порт будет поставлен в очередь, а пакеты, не достигшие коммутационной матрицы, будут добавлены в очередь входного порта, ожидая передаваться на выходной порт через коммутационную матрицу.
Для ясного описания входной очереди предположим следующую ситуацию:
- Использовать обменный метод сетевого взаимодействия;
- Предполагается, что все каналы имеют одинаковую скорость;
- Пакету требуется одинаковое количество времени для переключения с входного порта на выходной порт в канале, с любого входного порта на заданный выходной порт;
- Пакеты могут передаваться параллельно, если выходные порты отличаются по способу FCFS. Но если пакеты, расположенные в любых двух входных портах, предназначены для одного и того же пункта назначения, то один из пакетов будет заблокирован и должен ожидать во входной очереди, поскольку коммутационная матрица может передавать только один пакет на данный порт за раз.
Как показано ниже
В очереди A два пакета во входной очереди будут отправлены в один и тот же пункт назначения X, при условии, что коммутационная матрица собирается отправить пакет в A, в это время также есть пакет в очереди C, отправленный в X , в этом случае пакет, отправленный на X в C, будет ожидать, и не только это, но пакет, отправленный на выходной порт Y в очереди C, также будет ожидать, даже если в Y нет конкуренции. Это явление называется线路前部阻塞(Head-Of-The-Line, HOL)
.
очередь вывода
Ниже мы обсудим ситуацию, когда в очереди вывода есть ожидание. Предположим, что скорость переключения намного выше, чем скорость передачи ввода/вывода, и имеется N входных пакетов, предназначенных для пересылки на один и тот же выходной порт. В этом случае будет N новых пакетов, прибывающих на передающий порт во время отправки пакетов на исходящий канал. Поскольку выходной порт может передавать только один пакет в единицу времени, эти N пакетов будут ожидать. Однако при ожидании обработки N пакетов N пакетов поступают одновременно, поэтому на выходном порту может образоваться очередь пакетов. В этом случае количество групп со временем станет достаточно большим, поэтому耗尽
Доступная память для выходного порта.
Если не хватает памяти для кэширования пакетов, необходимо рассмотреть другие способы, есть два основных способа: один — терять пакеты, а другой — использовать弃尾(drop-tail)
метод; один состоит в том, чтобы удалить один или несколько пакетов, уже стоящих в очереди, чтобы освободить место для новых пакетов.
Политика сетевого уровня оказывает большое влияние на управление перегрузкой TCP — это политика отбрасывания пакетов маршрутизатора. В простейшем случае очередь маршрутизатора обычно обрабатывает входящие пакеты по правилам FCFS. Поскольку длина очереди всегда ограничена, когда очередь заполнена, все пакеты, которые прибывают позже (если они могут продолжать стоять в очереди, эти пакеты будут помещены в конец очереди) будут отброшены. Это называется стратегией отбрасывания хвоста.
Часто лучше отказаться от буфера до того, как он заполнится.
Как показано на рисунке выше, каждый входной порт ABC достиг пакета, и этот пакет отправляется в X, и одновременно может обрабатываться только один пакет, а затем еще два пакета отправляются из AB в X соответственно. Таким образом, в настоящее время в X ожидают 4 пакета.
После пересылки предыдущего пакета выходной порт выберет分组调度(packet scheduleer)
Выберите пакет для передачи, о передаче пакетов мы поговорим ниже.
пакетное планирование
Теперь давайте обсудим проблему порядка планирования пакетов, то есть того, как пакеты, поставленные в очередь, передаются по выходному каналу. В нашей жизни есть бесчисленное множество примеров очередей, но общий алгоритм очередей в нашей жизни таков:先来先服务(FCFS)
,Слишком先进先出(FIFO)
.
первым пришел-первым вышел
Принцип «первым пришел — первым обслужен» отображается в структуру данных.队列
, за исключением того, что теперь это модель очередей правила планирования ссылок.
Правила планирования FIFO выбирают пакеты в том же порядке, в котором они поступают в очередь выходных каналов, и пакеты, которые первыми поступают в очередь, будут пересылаться первыми. В этой абстрактной модели, если очередь заполнена, отброшенным пакетом будет пакет после конца очереди.
приоритетная очередь
Очередь с приоритетом — это улучшенная версия организации очереди по принципу «первым пришел — первым обслужен».
Обычно каждая группа с разными приоритетами имеет свой класс приоритета, и каждый класс приоритета имеет свою очередь Выбор обычно осуществляется по принципу FIFO.
Циклическая взвешенная справедливая организация очередей
существует循环加权公平规则(round robin queuing discipline)
Ниже пакеты сортируются как по приоритету. Однако строгого приоритета обслуживания между классами нет. Циклический планировщик переключается между этими классами для предоставления услуг. Как показано ниже
При круговой взвешенной справедливой организации очереди передаются пакеты класса 1, затем пакеты класса 2 и, наконец, пакеты класса 3, что представляет собой цикл, а затем он начинается снова, снова с 1 -> 2 -> 3. этот опрос по порядку. Каждая очередь также является очередью «первым пришел – первым вышел».
Это так называемый保持工作排队(work-conserving queuing)
Правило состоит в том, что если в процессе опроса будет обнаружена пустая очередь, выходной порт не будет ждать пакетов, а продолжит опрашивать следующие очереди.
Кроме того, я сам перелил шесть PDF-файлов.После того, как программист поиска WeChat cxuan обратил внимание на официальный аккаунт, я ответил cxuan в фоновом режиме и получил все PDF-файлы.Эти PDF-файлы выглядят следующим образом