Что такое сетевая маршрутизация? – Описание сетевой маршрутизации – AWS
Что такое маршрутизация?
Маршрутизация – это процесс выбора маршрута в любой сети. Компьютерная сеть состоит из множества компьютеров, называемых узлами, и маршрутов или связей, соединяющих эти узлы. Связь между двумя узлами во взаимосвязанной сети может осуществляться по разным маршрутами. Маршрутизация – это процесс выбора наилучшего маршрута с использованием некоторых заранее установленных правил.
Почему маршрутизация важна?
Маршрутизация повышает эффективность сетевой коммуникации. Сбои сетевой связи приводят к длительному ожиданию загрузки страниц веб-сайта для пользователей. Это также может привести к сбою серверов веб-сайтов из-за того, что они не могут обслуживать большое количество пользователей. Маршрутизация помогает минимизировать сбои сети, управляя трафиком данных, чтобы сеть могла использовать как можно больше своей пропускной способности без перегрузки.
Что такое маршрутизатор?
Маршрутизатор – это сетевое устройство, которое соединяет вычислительные устройства и сети с другими сетями. Маршрутизаторы в основном выполняют три основные функции.
Определение пути
Маршрутизатор определяет путь данных при перемещении из источника в место назначения. Он пытается найти наилучший путь, анализируя сетевые метрики, такие как задержка, пропускная способность и скорость.
Пересылка данных
Маршрутизатор пересылает данные следующему устройству по выбранному пути, чтобы в конечном итоге доставить их в место назначения. Устройство и маршрутизатор могут находиться в одной или в разных сетях.
Балансировка нагрузки
Иногда маршрутизатор может отправлять копии одного и того же пакета данных по нескольким разным путям. Это позволяет уменьшить количество ошибок из-за потери данных, создать избыточность и управлять объемом трафика.
Как работает маршрутизация?
Данные перемещаются по любой сети в виде пакетов данных. Каждый пакет данных имеет заголовок, содержащий информацию о предполагаемом адресате пакета. По мере доставки пакета к месту назначения несколько маршрутизаторов могут перенаправить его несколько раз. Маршрутизаторы выполняют этот процесс миллионы раз в секунду с миллионами пакетов.
Когда приходит пакет данных, маршрутизатор сначала ищет свой адрес в таблице маршрутизации. Это похоже на то, как пассажир просматривает расписание автобусов, чтобы найти лучший автобусный маршрут до места назначения. Затем маршрутизатор пересылает или перемещает пакет в следующую точку сети.
Например, когда вы посещаете веб-сайт с компьютера в офисной сети, пакеты данных сначала отправляются на маршрутизатор офисной сети. Маршрутизатор ищет пакет заголовка и определяет место назначения пакета. Затем он просматривает свою внутреннюю таблицу и пересылает пакет – следующему маршрутизатору или другому устройству, например принтеру – внутри самой сети.
Какие виды маршрутизации существуют?
Существует два разных типа маршрутизации, которые зависят от того, как маршрутизатор создает свои таблицы маршрутизации:
Статическая маршрутизация
При статической маршрутизации сетевой администратор использует статические таблицы для ручной настройки и выбора сетевых маршрутов. Статическая маршрутизация полезна в ситуациях, когда ожидается, что структура или параметры сети останутся неизменными.
Статический характер этого метода маршрутизации сопряжен с ожидаемыми недостатками, такими как перегрузка сети. Хотя администраторы могут настраивать резервные пути на случай сбоя канала, статическая маршрутизация обычно снижает адаптивность и гибкость сетей, что приводит к снижению производительности сети.
Динамическая маршрутизация
При динамической маршрутизации маршрутизаторы создают и обновляют таблицы маршрутизации во время выполнения на основе реальных условий сети. Они пытаются найти самый быстрый путь от источника до места назначения с помощью протокола динамической маршрутизации, который представляет собой набор правил, создающих, поддерживающих и обновляющих динамическую таблицу маршрутизации.
Самое большое преимущество динамической маршрутизации заключается в том, что она адаптируется к меняющимся условиям сети, включая объем трафика, пропускную способность и сбои сети.
Каковы основные протоколы маршрутизации?
Протокол маршрутизации – это набор правил, определяющих, как маршрутизаторы идентифицируют и пересылают пакеты по сетевому пути. Протоколы маршрутизации сгруппированы в две отдельные категории: протоколы внутренних шлюзов и протоколы внешних шлюзов.
Протоколы внутренних шлюзов лучше всего работают в автономной системе – сети, административно управляемой одной организацией. Протоколы внешних шлюзов лучше управляют передачей информации между двумя автономными системами.
Протоколы внутренних шлюзов
Эти протоколы оценивают автономную систему и принимают решения о маршрутизации на основе различных метрик, например следующих:
- количество переходов или количество маршрутизаторов между источником и адресатом;
- задержка или время, затрачиваемое на отправку данных из источника в пункт назначения;
- пропускная способность канала между источником и адресатом.
Ниже приведены примеры протоколов внутренних шлюзов.
Протокол информации о маршрутизации
Протокол информации о маршрутизации (RIP) использует количество переходов для определения кратчайшего пути между сетями. RIP – это устаревший протокол, который сегодня никто не использует, потому что он плохо масштабируется для реализации более крупной сети.
Протокол Open Shortest Path First (Сначала кратчайший путь)
Протокол Open Shortest Path First (Сначала кратчайший путь, OSPF) собирает информацию от всех других маршрутизаторов автономной системы для определения кратчайшего и самого быстрого маршрута к месту назначения пакета данных. Реализовать OSPF можно с помощью различных алгоритмов маршрутизации или компьютерных процессов.
Протоколы внешних шлюзов
Протокол пограничного шлюза (BGP) является единственным протоколом внешнего шлюза.
Протокол пограничного шлюза
BGP определяет коммуникацию через Интернет. Интернет – это большая коллекция автономных систем, соединенных вместе. Каждая автономная система имеет свой номер (ASN), который она получает, зарегистрировавшись в Управлении по присвоению номеров Интернета.
BGP работает, отслеживая ближайшие ASN и сопоставляя адреса назначения с соответствующими ASN.
Что такое алгоритмы маршрутизации?
Алгоритмы маршрутизации – это программы, реализующие разные протоколы маршрутизации. Они работают, присваивая каждому каналу номер стоимости; номер стоимости рассчитывается с использованием различных сетевых метрик. Каждый маршрутизатор пытается переслать пакет данных на следующий лучший канал с наименьшими затратами.
Ниже приведены некоторые примеры алгоритмов.
Маршрутизация вектора расстояния
Алгоритм маршрутизации вектора расстояния требует, чтобы все маршрутизаторы периодически обновляли друг друга, уведомляя о наилучшей найденной информации о пути. Каждый маршрутизатор отправляет информацию о текущей оценке общей стоимости всем известным адресам.
В конце концов, каждый маршрутизатор в сети обнаруживает наилучшую информацию о пути для всех возможных пунктов назначения.
Маршрутизация состояния канала
При маршрутизации состояния канала каждый маршрутизатор обнаруживает все остальные маршрутизаторы в сети. Используя эту информацию, маршрутизатор создает карту всей сети, а затем вычисляет кратчайший путь для любого пакета данных.
Как развивалась маршрутизация?
Маршрутизация эволюционировала в соответствии с требованиями достижений сетевых технологий. Маршрутизация – это уже не просто переключение пакетов данных между автономными системами и Интернетом.
Теперь у нас есть облачная инфраструктура с вычислительными ресурсами и оборудованием, размещенными сторонними поставщиками облачных услуг. Эти облачные ресурсы подключены виртуально для создания виртуальной сети ресурсов, которые компании могут использовать для размещения и запуска приложений. Многие организации теперь имеют гибридные сети, состоящие как из локальных сетей с внутренним оборудованием, так и из облачных сетей. Маршрутизаторы должны направлять трафик между этими внутренними сетями, Интернетом и облаком.
Что такое облачная маршрутизация?
Облачная маршрутизация динамически управляет подключениями между двумя виртуальными облачными сетями или между облачной и локальной сетями с помощью протокола пограничного шлюза (BGP). Облачная маршрутизация автоматически адаптируется к меняющимся условиям сети в облаке. Облачный маршрутизатор – программное обеспечение, виртуализирующее функции маршрутизатора – упрощает маршрутизацию в облаке.
Что такое DNS-маршрутизация?
DNS (система доменных имен) преобразует доменные имена, удобные для человеческого восприятия (например, www.amazon.com), в IP-адреса, понимаемые машиной (например, 192.0.2.44). Данные, которые сопоставляют эту информацию об имени с информацией о компьютере, хранятся отдельно на DNS-серверах. Перед отправкой данных на какой-либо веб-сайт маршрутизаторы должны связаться с DNS-сервером, чтобы определить точный адрес машины для пакетов данных.
Связь с DNS-сервером может стать проблемой, особенно когда многие пользователи хотят посетить веб-сайт одновременно. Маршрутизация DNS относится к различным стратегиям и алгоритмам маршрутизации, которые управляют связью с DNS-сервером. Различные стратегии, такие как маршрутизация на основе задержек и маршрутизация на основе географического местоположения, помогают управлять коммуникационной нагрузкой DNS-сервера.
Как AWS может помочь с маршрутизацией?
Транспортный шлюз AWS выступает в роли облачного маршрутизатора и соединяет VPC и локальные сети через центральный хаб. По мере роста вашей сети сложность управления дополнительными подключениями будет возрастать. При создании глобальных приложений можно подключать несколько транспортных шлюзов AWS с помощью межрегионального пиринга.
Amazon Route 53 – это высокодоступный и масштабируемый облачный веб-сервис DNS. Это надежный и экономичный способ для предприятий и разработчиков направлять своих конечных пользователей к интернет-приложениям. Поток трафика Amazon Route 53 позволяет легко управлять трафиком по всему миру с помощью различных типов маршрутизации для создания отказоустойчивых архитектур с низкой задержкой.
Виртуальное частное облако Amazon (Amazon VPC) предоставляет логически изолированную виртуальную сеть для ресурсов AWS. Таблицы маршрутов Amazon VPC можно использовать для определения того, как ресурсы, на которых работает VPC, могут получать доступ к ресурсам, запущенным в других облаках VPC, локально или через Интернет, или взаимодействовать с ними. Таблицы маршрутизации VPC можно использовать в сочетании с группами безопасности и политиками AWS Identity and Access Management (IAM) для детального управления подключением VPC к другим ресурсам в вашей среде.
Создайте аккаунт AWS и начните работу с облачной маршрутизацией уже сегодня.
Назначение и функции маршрутизатора в локальной сети
В этой статье мы поговорим о назначении и функции маршрутизатора минуя толстые и сухие фолианты и не прибегая к нудной лекции. Но и рассказать о маршрутизаторе легко и непринужденно тоже вряд ли получиться, ибо тема предполагает фундаментальную базу и содержит ряд сетевых терминов. Несмотря на это, я постараюсь донести до простых обывателей информацию о принципе работы такого высокотехнологичного устройства, как маршрутизатор.
Зачем нужен маршрутизатор?
Обычно для создания простой локальной сети (компьютерной сети) построенной на технологии Ethernet или Wi-Fi используется сетевое устройство (маршрутизатор, модем, коммутатор, точка беспроводного доступа…). Но из всего этого многообразия сетевых устройств нас интересует маршрутизатор. Так зачем он нужен и какую роль ему отвели разработчики в локальной сети?
Маршрутизатор (router) — это сетевой компьютер связывающий участки локальной сети, который обрабатывает полученные данные по заданным правилам администратора и опираясь на таблицу маршрутизации определяет путь для пересылки данных.
Чтобы было более понятно, давайте разберем участие маршрутизатора в домашней локальной сети. Предположим, что у вас дома есть настольный компьютер (desktop), ноутбук (laptop), принтер или МФУ (Многофункциональное устройство), планшет и в добавок вы хотите купить телевизор Smart с 3D. К вам в квартиру заходит всего лишь один кабель LAN по которому провайдер предоставляет вам доступ к сети интернет. Возникает вопрос: «Как одновременно всем устройствам дать выход в сеть интернет, если кабель от провайдера в квартире один?».
Вот тут-то и приходит на помощь беспроводной маршрутизатор, который можно подключить к кабелю провайдера (верхнее изображение) и дать всем устройствам (Smart TV, компьютер, планшет…) выход в сеть интернет. Если провайдер использует телефонные линии, то подключение маршрутизатора к сети интернет выполняется через модем (нижнее изображение). Связь домашних устройств с беспроводным маршрутизатором осуществляется по кабелю LAN (опрессовка витой пары без инструмента) и по беспроводной сети Wi-Fi (примеры слабого сигнала Wi-Fi).
Принцип работы маршрутизатора.
Таким образом маршрутизатор связывает разнородные сегменты сети (локальную домашнюю сеть и глобальную сеть интернет) и на основе таблицы маршрутизации отправляет данные адресату.
Таблица маршрутизации — это электронная база данных в маршрутизаторе, которая представляет из себя некий набор правил. В ней содержится информация о сетевых маршрутах по которой определяется наилучший путь для передачи пакета данных.
Таблица содержит в себе адрес и маску сети назначения, адрес шлюза (маршрутизатор в сети на который отправляются данные), метрику (расстояние) и интерфейс (имя или идентификатор устройства).
Следует сказать, что маршрутизатор в отличии от коммутатора не умеет составлять таблицу на основе информации из полученных пакетов. Она храниться в его памяти и может создаваться динамически или статически.
Через специальные протоколы маршрутизатор время от времени по каждому адресу отправляет тестовую информацию и на полученных данных поддерживает фактическую карту сети. Другими словами маршрутизаторы периодически сканируют сеть и обмениваются информацией друг о друге и сети к которой они подключены. Этот процесс называется динамической маршрутизацией.
Статическая маршрутизация подразумевает создание таблицы администратором вручную. В этом случае вся маршрутизация выполняется без участия специальных протоколов.
В отличии от коммутатора (Switch/уровень 2 в OSI/»Канальный») и концентратора (Hub/уровень 1 в OSI/»Физический») маршрутизатор стоит на голову выше, так как работает на третьем уровне в модели OSI (базовая эталонная модель), который называется «Сетевым».
На этом буду заканчивать данный пост потому, что теперь вы знаете принцип работы маршрутизатора. Конечно, на деле функции маршрутизатора шире и работает он гораздо сложнее, но я надеюсь, что у меня получилось вам рассказать без «воды» просто о сложном.
Читайте также
Маршрутизаторы, Технологии
COS-461 Назначение 2: Маршрутизатор
COS-461 Назначение 2: МаршрутизаторСрок: 23:55, среда, 4 апреля
- Ознакомьтесь со списком часто задаваемых вопросов
- Исходный код задания находится здесь.
- Примеры выходных данных для работающего маршрутизатора с 171.67.241.77 в качестве сервера приложений: ping, traceroute, http
Содержимое
|
1.1 Введение
В этом задании вы создадите полнофункциональный интернет-маршрутизатор, который направляет реальный сетевой трафик. Цель состоит в том, чтобы дать вам практический опыт работы маршрутизатора. Ваш маршрутизатор будет работать как пользовательский процесс локально, а по завершении будет направлять реальные пакеты, проходящие через Интернет, на серверы приложений, расположенные в Стэнфорде. Мы предоставим вам скелет неполного маршрутизатора («sr» или простой маршрутизатор), который вы должны завершить, а затем продемонстрируем его работу, выполнив трассировку, эхо-запросы и загрузив некоторые файлы с веб-сервера через ваш маршрутизатор.
1.2 Обзор системы виртуальной сети (VNS)
VNS был разработан в Стэнфорде для их вводного курса по работе с сетями, и они достаточно хороши, чтобы позволить нам его использовать. Это дает вам практический опыт работы над проектами, требующими низкоуровневого доступа к сети, такими как маршрутизаторы. VNS состоит из двух компонентов: (1) сервера VNS, работающего в лаборатории в Стэнфорде, и (2) нескольких клиентов VNS, которые подключаются к серверу. Ваш маршрутизатор является примером клиента VNS. Сервер перехватывает пакеты в сети, пересылает пакеты клиентам, получает пакеты от клиента и вводит их обратно в сеть.
1.2.1 Сервер VNS
Сервер — это процесс пользовательского уровня, работающий в Стэнфорде. Машина, на которой размещен сервер, подключена к концентратору, который подключен к двум серверам Linux, на которых запущено несколько интернет-сервисов (http, ftp и сервер потоковой музыки на порту 8888), называемых серверами приложений. Сервер VNS имитирует топологию сети, состоящую из нескольких каналов и клиентов VNS, и позволяет получить доступ к серверам приложений из Интернета.
Клиент VNS, которому требуется доступ к сетевому трафику, подключается к серверу VNS через обычный сокет TCP и запрашивает трафик, отображаемый на каналах в топологии. Предполагая, что трафик еще не отправляется какому-либо другому пользователю, сервер принимает запрос и отправляет трафик по ссылке клиенту через сокет TCP. Затем клиент просматривает пакет, определяет, где находится следующий переход в сети, и отправляет пакет обратно на сервер для повторной инъекции в сеть.
916) топологии одновременно. Это означает, что каждый учащийся может иметь свою собственную топологию для подключения и маршрутизации.
1.2.2 Клиент VNS
Клиент VNS — это любая программа, использующая протокол VNS и подключающаяся к серверу VNS. В случае этого задания мы предоставляем вам код для базового клиента VNS (называемого sr
или Simple Router), который может подключаться к серверу VNS. Клиенты VNS запускаются учащимися локально как обычные пользовательские процессы и подключаются к серверу VNS через обычные сокеты TCP. Клиенты VNS, после подключения к серверу VNS, пересылают все пакеты, которые они должны видеть в топологии. Клиенты VNS могут манипулировать пакетами любым способом, генерировать ответы на основе пакетов или принимать решения о маршрутизации для этих пакетов и отправлять ответы обратно на сервер VNS для размещения обратно в сети. Например, в топологии 0 сервер VNS может получить пакет TCP SYN, предназначенный для сервера приложений. Сервер VNS отправляет пакет клиенту VNS, который получит пакет на нулевом интерфейсе, уменьшит TTL, пересчитает контрольную сумму заголовка, сверится с таблицей маршрутизации и отправит пакет обратно на сервер VNS с указаниями, чтобы ввести его обратно в сеть.
В этом задании вы создадите полнофункциональный маршрутизатор, расширив предоставленный вам код sr.
1.2.3 Поток пакетов через систему
VNS позволяет создавать виртуальные сетевые топологии, состоящие из узлов, которые работают с реальными кадрами Ethernet. Вот почему ваш узел маршрутизатора может обрабатывать и отправлять настоящие кадры Ethernet и отправлять их по сети, как настоящий маршрутизатор. Вам не обязательно знать, как работает VNS, чтобы выполнить это задание, но следующий пример потока пакетов может быть полезен, например, при отладке.
Следующий сценарий представляет собой пошаговое объяснение того, как клиент направляет трафик в простой топологии.
Ник только что закончил разработку своего маршрутизатора для задания №2 по программированию. Для тестирования ему была назначена топология 42, которая показана на рисунке ниже. Показанный брандмауэр — это просто прыжок перед назначенной Ником топологией.
Ник запускает свой маршрутизатор с mycomputer.home.edu и подключается к серверу VNS по адресу vns-1.stanford.edu, топология 42. Сервер VNS отправляет маршрутизатору Ника список интерфейсов и их IP-адреса.
Чтобы сгенерировать трафик для маршрутизации, Ник запускает стандартный веб-браузер со своего локального компьютера, указывающего на IP-адрес приложения/веб-сервера в топологии 42. Маршрутизатор Ника теперь получит возможность маршрутизировать все пакеты между своим веб-браузером и веб сервер. Обратите внимание, что Ник может запустить свой веб-браузер на любом компьютере, а не обязательно на том, на котором работает клиент VNS.
Теперь мы рассмотрим первые несколько важных шагов, которые происходят, когда пакеты проходят между веб-браузером Ника и веб-сервером.
- Пакет SYN покидает компьютер Ника, направляется на IP-адрес веб-сервера и направляется на сервер VNS.
- Старательные сотрудники Stanford VNS организовали доставку пакета Ника в топологию 42.
Прыжок до маршрутизатора Ника, т. е. брандмауэра, определяет, что пакет должен быть перенаправлен на виртуальный маршрутизатор, и отправляет запрос ARP для определения Ethernet. адрес, соответствующий IP-адресу маршрутизатора.
- Сервер VNS перехватывает этот запрос ARP и отправляет необработанный кадр Ethernet через сокет TCP клиенту VNS Ника. Его клиент обрабатывает запрос ARP и отвечает ответом ARP. Этот ответ снова отправляется через сокет TCP на сервер VNS, который передает его брандмауэру.
- При получении ответа ARP брандмауэр пересылает пакет SYN на маршрутизатор Ника.
- Сервер VNS перехватывает пакет SYN и отправляет необработанный кадр Ethernet через сокет клиенту VNS Ника для маршрутизации.
- Маршрутизатор Ника уменьшает поле TTL в заголовке IP и при необходимости пересчитывает контрольные суммы.
- Маршрутизатор Ника просматривает свою таблицу маршрутизации и определяет, что следующим узлом для пакета SYN является веб-сервер.
- Когда маршрутизатор Ника принял решение о маршрутизации, он должен отправить обратно на сервер VNS полный пакет Ethernet.
Это означает, что маршрутизатор должен сначала найти Ethernet-адрес следующего перехода, сгенерировав запрос ARP на соответствующем интерфейсе. Это достигается с помощью VNS-сервера.
- Веб-сервер отвечает на запрос ARP, который перехватывается сервером VNS. Клиент Ника завершает пакет Ethernet и отправляет его обратно на сервер VNS. (Клиент также кэширует ответ ARP для использования в будущем.)
- Сервер VNS отправляет пакет из правильного интерфейса (eth2 или eth3) на следующий переход в топологии (сервер приложений 1 или 2).
- …. и т.д.
1.3 Начало работы
Перед началом разработки вы должны загрузить код-заглушку (вверху этой страницы) и сохранить его локально. Как описано ранее, он выполняет всю грязную работу, необходимую для подключения и связи с сервером. Чтобы запустить код, распакуйте пакет (tar -zxvf sr_stub.tar.gz) и скомпилируйте его с помощью make.
Вы должны получить от нас электронное письмо с указанием имени пользователя, начального пароля и идентификатора топологии для вас в VNS. Вы можете войти в веб-интерфейс VNS. Затем в Ваш профиль измените пароль по умолчанию, который мы вам дали. Скопируйте ключ аутентификации моделирования и сохраните его в файле с именем auth_key в каталоге
stub_sr
.
Затем перейдите к Topologies и найдите идентификатор топологии, который мы вам дали. В его деталях скачайте Таблица маршрутизации топологии и сохраните ее в файле с именем rtable в каталоге stub_sr
.
После выполнения этих действий вы можете подключиться к серверу VNS следующим образом:
./sr -s vns-1.stanford.edu -t
например, подключение к серверу в топологии 42 будет выглядеть так:
./sr -s vns-1.stanford.edu -t 42 -a auth_key -r rtable
(вы можете использовать ./sr -h для печати списка допустимых параметров командной строки)
Если способ auth_key вам не подходит, вы также можете использовать:
.
/sr -s vns-1.stanford.edu -t
Обратите внимание, что auth_key и rtable требуются только в первый раз. Позже вы можете просто использовать ./sr -s vns-1.stanford.edu -t
для подключения к VNS.
После успешного подключения сервер отправит вам описание хоста, включая все интерфейсы и их IP-адреса.
Таблица маршрутизации создается из файла rtable и по умолчанию состоит только из маршрута по умолчанию, которым является брандмауэр. Формат таблицы маршрутизации следующий:
Интерфейс маски IP-шлюза
172.24.74.213 172.24.74.213 255.255.255.255 eth2
172.24.74.228 172.24.74.228 255.255.255.255 eth3 901 91 0.0.0.0 172.24.74.17 0.0.0.0 eth0
Сервер VNS также возвращает IP-адреса, связанные с каждым из интерфейсов. Код-заглушка использует эту информацию для построения списка интерфейсов в маршрутизаторе (начало списка — элемент 9).0082 if_list для struct sr_instance
). Вывод для каждого интерфейса должен выглядеть примерно так:
ИНТЕРФЕЙС: eth0
Аппаратный адрес: 70:00:00:00:00:01
Ethernet IP: 172.24.74.41
...
Чтобы проверить, действительно ли маршрутизатор получает пакеты, попробуйте пропинговать или запустить traceroute для IP-адреса eth0. sr
должен распечатать, что он получил пакет. Как вы думаете, что это за пакет?
Что должен делать ваш маршрутизатор при получении пакета запроса ARP?
1.4 Проверка пакетов с помощью tcpdump
Когда вы работаете с маршрутизатором sr
, вам может понадобиться взглянуть на пакеты, которые маршрутизатор на самом деле отправляет и получает. Самый простой способ сделать это — записать пакеты в файл, а затем отобразить их с помощью программы под названием tcpdump
.
Во-первых, скажите маршрутизатору, чтобы пакеты записывались в файл в формате, который tcpdump
можно прочитать, передав ему параметр -l
и имя файла:
.
/sr -t
Во время работы маршрутизатор регистрирует полученные и отправляемые пакеты (включая заголовки) в указанный файл. После того, как маршрутизатор немного поработает, используйте tcpdump
для отображения пакетов в читаемом виде:
tcpdump -r <файл журнала> -e -vvv -x
ИЛИ /usr/sbin/tcpdump -r <файл журнала> -e -vvv -x
на станках Friend center
Параметр -r
указывает tcpdump
, где искать файл журнала. -e
указывает tcpdump
печатать заголовки пакетов, а не только их полезную нагрузку. -vvv
делает вывод очень подробным, а -x
помещает пакеты в шестнадцатеричный формат, который обычно легче читать, чем ASCII. Вы можете указать параметр -xx
вместо -x
, чтобы также напечатать заголовок уровня канала (Ethernet) в шестнадцатеричном формате.
1.

1.5.1 Структуры данных, о которых вы должны знать
- Маршрутизатор (sr_router.h):
Полный контекст маршрутизатора содержится в структуре sr_instance (sr_router.h). sr_instance содержит информацию о топологии, для которой маршрутизируется маршрутизатор, а также таблицу маршрутизации и список интерфейсов.
- Интерфейсы (sr_if.c/h):
После подключения сервер отправит клиенту информацию об оборудовании для этого хоста. Код-заглушка использует это для создания связанного списка интерфейсов в экземпляре маршрутизатора в элементе if_list. Утилиты для обработки списка интерфейсов можно найти в sr_if.h/c.
- Таблица маршрутизации (sr_rt.c/h):
Таблица маршрутизации в коде-заглушке считывается из файла (имя файла по умолчанию «rtable», может быть установлено с помощью параметра командной строки -r) и сохраняется в связанном списке записей маршрутизации в текущем экземпляре маршрутизации (элемент routing_table).
1.5.2 Первые способы знакомства с
Два наиболее важных метода, с которыми вы должны ознакомиться:
-
void sr_handlepacket(struct sr_instance* sr, uint8_t * package/* выданный */, unsigned int len, char* interface/* выданный */)
Этот метод, расположенный в sr_router.c
, вызывается маршрутизатором каждый раз при получении пакета. Аргумент «пакет» указывает на буфер пакетов, который содержит полный пакет, включая заголовок Ethernet. Имя принимающего интерфейса также передается в метод.
-
int sr_send_packet(struct sr_instance* sr /* заимствовано */, uint8_t* buf /* заимствовано */, unsigned int len, const char* iface /* заимствовано */)
Этот метод, расположенный в sr_vns_comm.c
, отправит произвольный пакет длины len
в сеть из интерфейса, указанного iface
.
1.5.3 Работа с заголовками протоколов
В среде sr вы будете иметь дело непосредственно с необработанными пакетами Ethernet. Существует ряд ресурсов, подробно описывающих заголовки протоколов, в том числе Stevens UNP www.networksorcery.com и Интернет RFC для ARP (RFC826), IP (RFC791) и ICMP (RFC792). Сам код-заглушка предоставляет некоторые структуры данных в
sr_protocol.h
, которые вы можете использовать для управления заголовками. Нет необходимости использовать предоставленные структуры данных, вы можете написать свои собственные или использовать стандартные системные включения.
Ethernet
Вам дан необработанный кадр Ethernet, и вы должны отправить необработанные кадры Ethernet. Вы должны понимать MAC-адреса источника и получателя и идею о том, что мы пересылаем пакет через один переход, изменяя MAC-адрес назначения пересылаемого пакета на MAC-адрес входящего интерфейса следующего перехода.
Интернет-протокол
Перед операцией с IP-пакетом необходимо проверить его контрольную сумму и убедиться, что она соответствует минимальной длине IP-пакета. Вы должны понимать, как найти самое длинное совпадение префикса IP-адреса назначения в таблице маршрутизации. Если вы определили, что дейтаграмма должна быть перенаправлена, вы должны правильно уменьшить поле TTL заголовка и повторно вычислить контрольную сумму по измененному заголовку, прежде чем пересылать ее на следующий переход.
Протокол управляющих сообщений Интернета
ICMP — это простой протокол, который может отправлять управляющую информацию на хост. В этом задании ваш маршрутизатор будет использовать ICMP для отправки сообщений обратно на отправляющий хост. Вам потребуется правильно сгенерировать следующие сообщения ICMP (включая контрольную сумму заголовка ICMP) в ответ на отправляющий хост при следующих условиях:
- Эхо-ответ (тип 0)
Отправляется в ответ на эхо-запрос (ping) на один из интерфейсов маршрутизатора. (Это только для эхо-запросов к любому из IP-адресов маршрутизатора. Эхо-запрос, отправленный в другое место, должен быть перенаправлен на адрес следующего перехода, как обычно.)
- Пункт назначения недоступен (тип 3, код 0)
Отправляется, если существует несуществующий маршрут к IP-адресу назначения (нет соответствующей записи в таблице маршрутизации при пересылке IP-пакета). - Узел назначения недоступен (тип 3, код 1)
Отправляется, если пять запросов ARP были отправлены на IP-адрес следующего перехода без ответа. - Порт недоступен (тип 3, код 3)
Отправляется, если IP-пакет, содержащий полезные данные UDP или TCP, отправляется на один из интерфейсов маршрутизатора. Это необходимо для работы traceroute. - Превышено время (тип 11, код 0)
Отправляется, если IP-пакет отбрасывается во время обработки из-за превышения TTL. поле равно 0. Это также необходимо для работы traceroute.
Адрес источника сообщения ICMP может быть адресом источника любого входящего интерфейса, как указано в RFC 792.
Как упоминалось выше, единственное входящее сообщение ICMP, предназначенное для IP-адресов маршрутизатора, которое вы должны явно обрабатывать, — это эхо-запросы ICMP.
Протокол разрешения адресов
ARP необходим для определения MAC-адреса следующего перехода, который соответствует IP-адресу следующего перехода, хранящемуся в таблице маршрутизации. Без возможности генерировать запрос ARP и обрабатывать ответы ARP ваш маршрутизатор не сможет заполнить поле MAC-адреса назначения в необработанном кадре Ethernet, который вы отправляете через исходящий интерфейс. Аналогично, без возможности обрабатывать запросы ARP и генерировать ответы ARP ни один другой маршрутизатор не может отправлять кадры Ethernet вашего маршрутизатора. Следовательно, ваш маршрутизатор должен генерировать и обрабатывать запросы и ответы ARP.
Чтобы уменьшить количество отправляемых запросов ARP, необходимо кэшировать ответы ARP. Записи кэша должны истечь через 15 секунд, чтобы свести к минимуму устаревание.
При пересылке пакета на IP-адрес следующего перехода маршрутизатор должен сначала проверить кэш ARP на наличие соответствующего MAC-адреса перед отправкой запроса ARP. В случае промаха кеша запрос ARP должен отправляться на целевой IP-адрес примерно раз в секунду, пока не придет ответ. Если запрос ARP отправляется пять раз без ответа, узел назначения ICMP недоступен отправляется обратно на исходный IP-адрес, как указано выше.
В случае запроса ARP вы должны отправлять ответ ARP только в том случае, если целевой IP-адрес является одним из IP-адресов вашего маршрутизатора. В случае ответа ARP вы должны кэшировать запись только в том случае, если целевой IP-адрес является одним из IP-адресов вашего маршрутизатора.
Обратите внимание, что запросы ARP отправляются на широковещательный MAC-адрес (ff-ff-ff-ff-ff-ff). Ответы ARP отправляются непосредственно на MAC-адрес запрашивающей стороны.
1.6 Требуемая функциональность
Мы заявим, что ваш маршрутизатор работает правильно тогда и только тогда, когда:
- Маршрутизатор может успешно направлять пакеты к серверам приложений и от них.
- Маршрутизатор правильно обрабатывает запросы и ответы ARP.
- Маршрутизатор корректно обрабатывает трассировки через него (где он не является конечным хостом) и к нему (где он является конечным хостом).
- Маршрутизатор правильно отвечает на эхо-запросы ICMP.
- Маршрутизатор обрабатывает пакеты TCP/UDP, отправленные на один из его интерфейсов. В этом случае маршрутизатор должен ответить, что порт ICMP недоступен.
- Маршрутизатор поддерживает кэш ARP, записи которого становятся недействительными после периода ожидания (тайм-ауты должны составлять порядка 15 секунд).
- Маршрутизатор не отбрасывает пакеты без необходимости (например, при ожидании ответа ARP). Маршрутизатор ставит в очередь все пакеты, ожидая ожидающих ответов ARP (хотя RFC 826, по-видимому, предполагает, что вы можете отбросить пакет, если сопоставление не существует). Если хост не отвечает на 5 запросов ARP, поставленный в очередь пакет отбрасывается, а обратно источнику поставленного в очередь пакета отправляется сообщение ICMP о недоступности узла.
Также не забудьте заполнить README! (Стоит 1 балл)
1.7 Дополнительный балл
Поддержка исходящего двустороннего трафика TCP
Обратите внимание, что дополнительные баллы за это задание предоставляются «самостоятельно», что означает, что вы можете задавать только уточняющие вопросы и не получать никакой помощи от ассистентов или сокурсников.
Дополнительный кредит в основном простой брандмауэр. Если вы реализуете дополнительный кредит, его можно будет включать/выключать. Таким образом, мы можем протестировать ваш необходимый функционал.
Обратите внимание, что просто разрешить прохождение пакетов от внутренних хостов через маршрутизатор недостаточно для установления рабочего соединения с внешней службой, поскольку большинство (если не все) служб TCP/IP предусматривают двустороннюю связь. Следовательно, пакеты, принадлежащие потоку, инициированному внутренним конечным узлом и поступающие на внешний интерфейс, должны быть разрешены через защищенный маршрутизатор. Для поддержки этой функции маршрутизатор поддерживает «таблицу потоков», которая содержит все активные (и разрешенные) потоки, проходящие через него. В этом контексте поток определяется как 5-кортеж
Когда на маршрутизатор поступает первый «внутренний» пакет, в таблицу потоков добавляются две записи, по одной для каждого направления связи. Запись для потока «внешний-внутренний» может быть создана путем инвертирования порядка IP-адресов и портов источника и получателя. Когда пакет поступает на внешний интерфейс, маршрутизатор проверяет, соответствует ли он одной из записей в таблице потоков. Если да, то пакет не отбрасывается, а направляется на внутренний интерфейс.
Записи остаются в таблице потоков до тех пор, пока пакеты, соответствующие этим записям, проходят через брандмауэр. Для поддержки этой функции каждая запись имеет срок жизни (TTL). Каждый раз, когда принимается пакет, соответствующий записи потока, TTL записи устанавливается на X секунд. Маршрутизатор периодически сканирует таблицу потоков и удаляет все записи, время жизни которых истекло. (Примечание. Вы должны обновлять записи, связанные с обоими направлениями потока, при получении пакета.)
Таблица потоков может содержать до Y записей каждый раз. Вы можете сделать этот параметр Y постоянным. Если необходимо добавить новую запись, когда таблица потоков заполнена, сначала инициируется сканирование, чтобы определить, существуют ли в таблице потоков одна или несколько устаревших записей. Если все записи действительны, отправителю возвращается ответ ICMP (пункт назначения недоступен — порт недоступен) и создается запись в журнале.
Надлежащий брандмауэр поддерживает добавление явных правил, позволяющих/запрещающих потокам проходить через брандмауэр в «таблице правил». Вам не нужно беспокоиться о добавлении исключений или создании «таблицы правил», т. е. вы по умолчанию отклоняете весь внешний и внутренний трафик, если только он не соответствует записи в таблице потоков. Вам не нужно беспокоиться о правильном ответе на эхо-запросы или трассировки в режиме SE. Также вам не нужно беспокоиться о фрагментах пакета, т.е. если фрагмент пакета приходит с отсутствующим заголовком транспортного уровня, то этот фрагмент (а также все остальные последующие фрагменты) отбрасываются.
Код сброса для «потока не разрешен» — 2. Код сброса для «таблица потоков заполнена» — 3.
Вот пример:
<1.2.3.4, 5.6.7.8, УДП, 54321, 23, 2> <4.3.2.1, 9.8.6.5, TCP, 12345, 80, 3>
Создание исходящего трафика
Чтобы полностью протестировать функциональность брандмауэра, вам потребуется сгенерировать исходящий трафик из вашей топологии. Для этого вам нужно будет использовать Topology Interactor Tool. Этот инструмент позволяет отправить эхо-запрос из узла внутри вашей топологии в пункт назначения за пределами вашей топологии. Пункт назначения отправит эхо-ответ, который ваш брандмауэр должен разрешить. Вот пример его использования:
./topo_interactor.py -s vns-2.stanford.edu -t-u -a /path/to/your/auth_key Подключение к VNS-серверу по адресу vns-2.stanford.edu... Связанный! Аутентификация как dgu Аутентификация прошла успешно. >>> ping www.openflowswitch.org с server1 запросил, чтобы server1 отправил пинг на www.openflowswitch.org (171.64.74.58) нажмите на server1: eth0 был установлен server1:eth0 получил ЭХО-ОТВЕТ от 171.64.74.58 нажмите на server1: eth0 был отключен >>> выход
1.8 Представление
Вы должны отправить готовый маршрутизатор к установленному сроку в CS Dropbox. Вам нужно будет отправить файл tarball, содержащий следующее:
- Весь исходный код для вашего роутера
- Makefile, который создает ваш маршрутизатор
- Файл README с описанием вашего кода и принятых вами проектных решений.
Ваш архив должен называться cos461_ass2_USERNAME.
, где tgz
USERNAME
— ваш сетевой идентификатор. Образец Makefile в скелетном файле, который мы предоставляем, создаст для вас этот архив с сделать команду tar
.
Последнее обновление: 5 марта 2012 г.
Создание собственного интернет-маршрутизатора
Задание 2Исходный код задания находится здесь.
Введение
В этом задании вы создадите полнофункциональный интернет-маршрутизатор,
маршрутизирует реальный сетевой трафик. Цель состоит в том, чтобы дать вам практический опыт
как на самом деле работает маршрутизатор. Ваш маршрутизатор будет работать как пользовательский процесс локально,
и когда закончит, будет маршрутизировать реальные пакеты, которые проходят через Интернет.
на серверы приложений, расположенные в Стэнфорде. Мы дадим тебе скелет,
неполный маршрутизатор («sr» или простой маршрутизатор), который вы должны завершить, и
затем продемонстрируйте, что он работает, выполнив трассировку, эхо-запросы и загрузку
некоторые файлы с веб-сервера через ваш маршрутизатор.
VNS был разработан в Стэнфорде, для вводного курса нетворкинга. Это дает вам практический опыт работы над проектами, требующими низкоуровневого доступа к сети, такие как маршрутизаторы. VNS состоит из двух компонентов: (1) сервер VN. который работает в Стэнфорде, и (2) ряд клиентов VN, которые подключиться к серверу. Ваш маршрутизатор является примером клиента VN. Сервер перехватывает пакеты в сети, пересылает пакеты клиентам, получает пакеты от клиента и отправляет их обратно в сеть. физическая установка VNS показана на рисунке.
Сервер VNS:
Сервер является
процесс на уровне пользователя, работающий здесь, в Стэнфорде. Машина
хостинг сервер подключен к концентратору, который подключен к двум
Серверы Linux, на которых запущены основные интернет-сервисы (в настоящее время http и ssh)
(называемые серверами приложений). Сервер VN имитирует
топология сети, которая состоит из нескольких ссылок и клиентов VN. серверы приложений находятся на другой стороне топологии сети.
Например, самая простая топология — это один клиент VN и
один сервер приложений, как показано ниже на рисунке.
Клиент хочет доступ к трафику в сети подключается к серверу через обычный tcp и запрашивает трафик, видимый на ссылках в топологии, в в этом случае топология 0. Предположим, что трафик еще не отправляется другому пользователю, сервер принимает запрос и отправляет трафик по ссылке к клиенту через tcp сокет. Клиент затем проверяет пакет, определяет, где следующий переход в сети (что было бы довольно просто в случае топологии 0) и отправить пакет обратно на сервер, чтобы он был введен обратно в сеть. 916) топологии одновременно. Это значит, что каждый студент может иметь свою собственную топологию для подключения и маршрутизации над. Сервер VN гарантирует, что клиентам отправляется только трафик принадлежащих их топологии.
Клиент VNS: VNS-клиент — любой
программа, которая говорит по протоколу VNS и подключается к серверу VNS. В случае этого задания мы предоставляем вам код для
базовый клиент VNS (называемый sr или Simple Router), который может подключаться к
VNS-сервер. Клиенты запускаются локально студентами как обычные пользователи
процессы и подключаться к серверу через обычные сокеты tcp. Клиенты,
после подключения к серверу пересылаются все пакеты, которые они
должен видеть в топологии. Клиенты могут манипулировать
пакеты любым способом, генерировать ответы на основе
пакетов или принимать решения о маршрутизации этих пакетов и отправлять
отвечает обратно на сервер, чтобы поместить обратно в сеть. Для
Например, в приведенной выше топологии (топология 0) сервер VN может
получить пакет TCP SYN, предназначенный для vns-app-1.stanford.edu. Сервер ВН
отправляет пакет клиенту VN, который должен получить пакет на
обнулить интерфейс, уменьшить TTL, пересчитать контрольную сумму заголовка,
обратитесь к таблице маршрутизации и отправьте пакет обратно на сервер с помощью
направления, чтобы ввести его обратно в сеть из первого интерфейса.
Каким будет аппаратный адрес назначения для отправленного пакета
обратно от клиента? Что делать, если клиент не знает оборудование
адрес для www-server-1?
В этом задании вы реализуете полнофункциональный маршрутизатор, расширив код sr данный вам.
Прохождение пакетов Система:Следующее сценарий представляет собой пошаговое объяснение того, как клиент маршрутизирует трафик на простой топологии.
Ник только что закончил разработку своего маршрутизатора для задания по программированию №3. Он был назначена топология 42 для тестирования, которая показана на рисунке ниже.
Для проверки Ник бежит его роутер от mycomputer.home.edu и подключается к серверу VNS на vns-1.stanford.edu, топология 42. Сервер VNS отправляет маршрутизатору Ника список интерфейсов и их IP-адресов.
Для генерации трафика
для маршрутизации Ник запускает стандартный веб-браузер со своего локального компьютера.
указал на IP сервера приложений по топологии 42. Ника
маршрутизатор теперь получит возможность маршрутизировать все пакеты между своим
веб-браузер и веб-сервер.
Сейчас мы пойдем через первые несколько важных шагов, которые происходят, когда пакеты поток между веб-браузером Ника и веб-сервером.
- Пакет SYN покидает компьютер Ника и направляется на веб-сервер IP и направляется на сервер VN.
- Предприимчивые сотрудники CS244a организовали отправку пакета Ника. доставлено в топологию 42, начиная с IP-адреса интерфейса ноль на клиенте Ника. Прыжок до того, как маршрутизатор Ника отправит ARP пакет, запрашивающий аппаратный адрес интерфейса с IP-адресом нулевой интерфейс на клиенте Ника.
- Сервер VN отправляет необработанный пакет Ethernet, ARP через сокет клиенту VN Ника, который отвечает ответом ARP.
- При получении ответа ARP переход до маршрутизатора Ника, затем пересылает пакет на маршрутизатор Ника.
- Сервер VN перехватывает пакет и отправляет необработанный IP-адрес Ethernet. пакет через сокет VN-клиенту Ника для его маршрутизации.
- Маршрутизатор Ника уменьшает поле TTL в заголовке IP и
пересчитывает контрольную сумму.
- Маршрутизатор Ника сверяется со своей таблицей маршрутизации и определяет следующий hop — это ip веб-сервера.
- Когда маршрутизатор Ника принял решение о маршрутизации, он должен отправить обратно на сервер VN правильно отформатированный пакет Ethernet. Этот означает, что клиент должен найти Ethernet-адрес следующего перехода. Для этого клиент обычным способом отправляет ARP, чтобы узнать адрес Ethernet, принадлежащий IP-адресу следующего перехода.
- Следующий переход, которым может быть другой клиент или приложение сервер, отвечает на ARP, а клиент Ника завершает Ethernet пакет и отправляет его обратно на сервер VN. (Клиент также кэширует ответ ARP для будущего использования).
- Сервер VN отправляет пакет из правильного интерфейса и к следующему переходу в топологии.
- …. и т. д.
Перед началом
разработки вы должны сначала ознакомиться с кодом заглушки sr и
некоторые функции, которые он предоставляет. Загрузите архив с кодом-заглушкой и сохраните его.
это локально.
Как описано ранее, это
выполняет всю грязную работу, необходимую для подключения и связи
с сервером. Чтобы запустить код, распакуйте пакет (tar -zxvf sr_stub.tar.gz) и скомпилируйте его.
через сделать. После компиляции вы можете подключиться к серверу VNS как
следует:
./sr -s vns-1.stanford.edu -t <топо-id>
например, подключение к серверу в топологии 0 будет выглядеть так:
./sr -s vns-1.stanford.edu -t 0
(можно использовать ./sr -h, чтобы напечатать список допустимых параметров командной строки)
После подключения
успешно, сервер отправит вам описание хоста
включая все интерфейсы и их IP-адреса. Код-заглушка
использует это для создания списка интерфейсов в маршрутизаторе (голова
список является членом if_list для структуры sr_instance). Таблица маршрутизации
строится из файла rtable и по умолчанию состоит только из
маршрут по умолчанию, который является брандмауэром. Формат таблицы маршрутизации
следующим образом:
интерфейс маски IP-шлюзадействующая таблица файл может выглядеть следующим образом:
172.24.74.213 172.24.74.213 255.255.255.255 eth2
172.24.74.228 172.24.74.228 255.255.255.255 eth3
0.0.0.0 1 72.24.74.17 0.0.0.0 eth0
Сервер VN, вкл. соединение должно возвращать IP-адреса, связанные с каждым интерфейсов. Вывод для каждого интерфейса должен выглядеть что-то вроде:
ИНТЕРФЕЙС: eth0Скорость: 10
Аппаратный адрес: 70:00:00:00:00:01
Ethernet IP: 172.24.74.41
Подсеть: 0.0.0.0
Маска: 0.0.0.0
Чтобы проверить, маршрутизатор на самом деле получает пакеты, попробуйте пропинговать или запустить traceroute на IP-адрес eth0 (который подключен к межсетевой экран в топологии назначения). sr должен распечатать это он получил пакет. Как вы думаете, что это за пакет?
Что следует Что делать маршрутизатору при получении пакета запроса ARP?
Развитие вашего Собственный маршрутизатор, использующий код-заглушку SR:Структур данных Вы Должен знать о:
- Маршрутизатор (sr_router.
h):
Полный контекст маршрутизатора содержится в структуре sr_instance (sr_router.h). sr_instance содержит информацию о топология, для которой маршрутизируется маршрутизатор, а также таблица маршрутизации и список интерфейсов.
- Интерфейсы (sr_if.c/h):
После подключения сервер отправит клиенту оборудование информация для этого хоста. Код-заглушка использует это для создания связанный список интерфейсов в экземпляре маршрутизатора в элементе if_list. Служебные методы для обработки списка интерфейсов можно найти по адресу sr_if.h/c.
- Таблица маршрутизации (sr_rt.c/h):
Таблица маршрутизации в коде-заглушке считывается из файла (имя файла по умолчанию «rtable», может быть установлено с опцией командной строки -r ) и хранится в связанном списке записей маршрутизации в текущем экземпляр маршрутизации (член routing_table).
Первый Способы получения информации:
Два самых важные методы, с которыми разработчики должны ознакомиться, такие как следует:
- в sr_router.
c
void sr_handlepacket (struct sr_instance* sr,
uint8_t * package/* lent */,
unsigned int len,
char* interface/* lent */)
- в sr_vns_comm.c
int sr_send_packet(struct sr_instance* sr /* заимствовано */,
uint8_t* buf /* заимствовано */,
unsigned int len,
const char* iface /* заимствовано */)
Этот метод отправит пакет произвольной длины, len, в сети из интерфейса, указанного «iface».
Этот метод вызывается маршрутизатором каждый раз, когда пакет полученный. Аргумент «packet» указывает на буфер пакетов который содержит полный пакет, включая заголовок Ethernet. Имя принимающего интерфейса передается в метод как хорошо.
В пределах ср
framework вы будете иметь дело непосредственно с необработанными пакетами Ethernet.
Существует ряд ресурсов, описывающих заголовки протоколов.
подробно, включая Stevens UNP, www. networksorcery.com
и RFC в Интернете для ARP (RFC826),
IP (RFC791),
и ICMP (RFC792).
Сам код-заглушка предоставляет некоторые структуры данных в sr_protocols.h, которые вы
может использоваться для управления заголовками. Нет требования, чтобы вы использовали
предоставленные структуры данных, вы можете написать свои собственные или использовать стандартные
система включает.
Мы подключили работающий маршрутизатор к топологии 2, чтобы продемонстрировать как ваш маршрутизатор должен вести себя после завершения. Топология 2 состоит маршрутизатора с 3 интерфейсами, подключенными к 2 серверам приложений как показано ниже:
- eth0 171.67.71.20
- eth2 171.67.71.21
- eth3 171.67.71.23
- сервер приложений 1 171.
67.71.22
- сервер приложений 2 171.67.71.24
[casado@yuba ~]$ /usr/sbin/traceroute 171.67.71.24 traceroute до 171.67.71.47 (171.67.71.47), макс. 30 переходов, 38-байтовые пакеты 1 Gates-rtr (171.64.74.1) 0,546 мс 0,329 мс 0,287 мс 2 vns-брандмауэр (172.24.74.11) 0,393 мс 0,302 мс 0,285 мс 3 171.67.71.20 (171.67.71.45) 2,332 мс 1,165 мс 1,435 мс 4 171.67.71.24 (171.67.71.47) 3,243 мс 2,098 мс 2,094 мс [casado@yuba ~]$Обязательно Функциональность:
Мы объявим что ваш маршрутизатор работает правильно тогда и только тогда, когда:
- Маршрутизатор может успешно маршрутизировать пакеты между брандмауэром
и серверы приложений.
- Маршрутизатор правильно обрабатывает запросы и ответы ARP.
- Маршрутизатор правильно обрабатывает трассировки через него (где он не конечный хост) и к нему (где он является конечным хостом).
- Маршрутизатор правильно отвечает на эхо-запросы ICMP.
- Маршрутизатор обрабатывает пакеты tcp/udp, отправленные на один из его интерфейсов. В этом случае маршрутизатор должен ответить, что порт ICMP недоступен.
- Маршрутизатор поддерживает кэш ARP, записи которого признаны недействительными. после периода таймаута (таймауты должны быть порядка 15 секунд).
- Маршрутизатор ставит в очередь все пакеты, ожидающие ожидания ARP. ответы. Если хост не отвечает на 5 запросов ARP, очередь пакет отбрасывается, и сообщение ICMP о недоступности хоста отправляется обратно на источник поставленного в очередь пакета.
- Маршрутизатор не отбрасывает пакеты без необходимости (например, когда ожидание ответа ARP)
В настоящее время код заглушки основан на событиях.
Ваш комментарий будет первым