Лекции 2010-го года (1130544), страница 79
Текст из файла (страница 79)
Пять слов прототипа TPDU копируются в буфер, вычисляетсяконтрольная сумма, увеличивается порядковый номер. IP-процедура, в свою очередь,копирует пять слов прототипа (см. рисунок 6-29 (b)) своего заголовка, заполняясоответствующими данными поля «Identification» и «Checksum».Рисунок 6-29. (а) TCP-заголовок; (b) IP-заголовокТеперь рассмотрим, что происходит на стороне получателя (правая часть рисунка 6-28).Прежде всего, транспортный агент на стороне получателя должен найти запись осоединении для поступившего сегмента TPDU. Для TCP-протокола эта запись можетхраниться в хеш-таблице.
Ключом к этой таблице может служить информация о портахотправителя и получателя и их IP-адресах. Другой подход к поиску записи о соединениипредложил Кларк – использовать последнюю использованную. Как показала практика, этаэвристика работает хорошо.После этого выполняются проверки, чтобы убедиться, что мы имеем дело с нормальнымслучаем, т.е. нет попытки разрыва соединения, нет URGENT-флага, и т.п. Если мы всостоянии Established, данные копируются приложению, при этом вычисляетсяконтрольная сумма. Если она правильная, то корректируется запись о соединении,формируется подтверждение о получении и посылается отправителю.Описанная здесь в общих чертах схема носит название предвидения заголовка.
Онаиспользуется во многих реализациях.Две другие области ускорения – управление буферизацией и таймерами. Основная идеяускорения при управлении буферизацией – избегать излишнего копирования. Управлениетаймерами состоит в том, что, хотя таймер устанавливается для каждого TPDU,срабатывает он лишь для немногих TPDU. Общая схема, оптимизирующая работу стаймерами, заключается в следующем.
Записи о таймерах связываются в список. Вочередном элементе списка указывают, сколько тактов от срабатывания предыдущеготаймера должно пройти, чтобы сработал текущий. Поэтому, если есть три таймера,которые должны сработать в моменты 3, 10 и 12, то список будет выглядеть, как 3, 7, 2соответственно. При такой организации достаточно корректировать при каждом такте невсе таймеры, а только первую запись в списке.Другой прием, оптимизирующий работу с таймерами, называется колесо времени.
Ониспользует массив (см. рисунок 6-30), длина которого пропорциональна максимальнойдлине временного интервала, который может возникнуть при работе. Каждый элемент вэтом массиве соответствует одному такту часов.Рисунок 6-30. Колесо времени6.4.5. Протоколы для гигабитных сетейВ начале 90-х стали появляться гигабитные сети, т.е. коммуникационное оборудование,способное работать на таких скоростях. Первой естественной реакцией специалистовбыло использовать на этом оборудовании те же протоколы, что и для обычных сетей.Однако сразу возникло довольно много неожиданных проблем. Здесь мы рассмотримнекоторые из них и направления для развития новых протоколов.Первая проблема – длина поля для последовательной нумерации. Например, 16- или 32разрядные поля для Ethernet 10 Мбит будут исчерпаны даже при нумерации каждогобайта чуть менее чем за сутки.
Здесь неявно предполагалось, что так долго пакетсуществовать в сети не может. При скорости 1 Гбит/сек. 32-разрядный счетчик будетисчерпан за 32 сек. Среднее время жизни пакета в Internet около 120 сек. Можно, конечно,нумеровать не каждый байт, как в протоколе TCP, а лишь пакеты, но это не намногооблегчит положение. Причина этой проблемы в том, что предположение о времени жизнипакета, верное ранее, теперь, при 1 Гбит/сек., не верно.Вторая проблема возникает из-за того, что скорость передачи растет быстреепроизводительности процессоров. В начале 70-х годов скорость передачи была порядка 56Кбит/сек., быстродействие процессоров - 1 MIPS, размер пакета - 1 Кб.
Это означает, чтопакеты поступали со скоростью 56 пакетов в секунду, на обработку одного пакетаотводилось 18 мсек. или 18 000 команд процессора. Если оставлять 50%производительности под приложение, то получим 9000 команд на обработку одногопакета, что весьма неплохо.В наши дни, при скоростях передачи 1 Гбит/сек., производительности процессора 100MIPS, размере пакета 4 Кб, пакеты следуют со скоростью 30 000 в секунду, т.е.
наобработку одного пакета остается не более 15 мсек., если мы половинупроизводительности хотим оставить для приложения. За 15 мсек. процессор со скоростью100 MIPS успеет сделать 1500 команд. При этом надо учитывать, что функциональнокоманда RISC-процессора беднее команды CISC-процессора. Вывод: на работу сетевогопрограммного обеспечения остается все меньше времени, следовательно, протоколыдолжны становиться проще!Третья проблема состоит в том, что гигабитный канал принципиально отличается отмегабитного.
Гигабитный канал более чувствителен к величине задержки, чем к скоростипередачи. На рисунке 6-31 показана зависимость времени передачи от скорости передачидля файла в 1 Мб на расстояние 4000 км. Там хорошо видно, что, начиная с гигабитныхскоростей, увеличение пропускной способности не дает существенного прироста вскорости передачи. Поэтому протоколы старт-стопного типа, например, RPC,существенно будут ограничены в производительности на таких каналах. То же самоеможно сказать о протоколах с откатами (они применяются, например, на канальномуровне, если часть пакетов в последовательности была утеряна). Откат увеличиваетзадержку в канале и увеличивает объем повторно передаваемой информации.Рисунок 6-31.
Зависимость времени передачи от скорости передачи для файла в 1 Мб нарасстояние 4000 кмЧетвертая проблема, о которой стоит упомянуть, - скорее проблема, вызванная новымиприложениями, чем проблема собственно протоколов. Это проблема приложений, длякоторых важно не среднее значение задержки, а минимальное отклонение от среднего, т.е.максимально равномерный поток данных. Примером таких приложений являются многиемультимедиа-приложения.Теперь рассмотрим, что означают гигабитные скорости для организации протоколов.
Вбылые времена протоколы создавались прежде всего с учетом минимизации затратпропускной способности для служебных целей: поля делали маленькими, насколько этобыло возможно, упаковывали их плотно в байты. Сегодня есть большой запас пропускнойспособности. Проблема – сложность сетевого программного обеспечения.Одна из возможных идей – создание сетевого сопроцессора, на который можно возложитьисполнение только сетевого программного обеспечения. Однако по своей мощности онбудет примерно равен основному процессору, что существенно удорожит систему.
Кромеэтого, что центральный процессор будет чем-то загружен, пока сетевой работает, - этомиф. Если центральный и сетевой процессоры будут примерно равны по мощности, то ихсинхронизация и взаимодействие, в свою очередь, превратится в самостоятельнуюпроблему, решение которой потребует самостоятельных накладных расходов.Важные последствия гигабитные скорости несут для проблемы обратной связи в сетевыхпротоколах. Например, ожидание подтверждений, даже групповых, как в протоколескользящего окна, теперь очень невыгодно. Куда выгоднее заранее оговорить допустимуюскорость и время, в течение которого эта скорость должна выдерживаться.Другой пример обратной связи – протокол медленного старта. В этом протоколемногократно ведется испытание пропускной способности сети. На гигабитных скоростяхкаждое испытание – это огромные накладные расходы.
Теперь куда выгоднее заранеедоговориться о допустимой максимальной пропускной способности и заранее еезарезервировать на все время сеанса.Теперь несколько слов об организации структуры пакета для гигабитной сети. Полейдолжно быть как можно меньше, чтобы сократить время обработки заголовка. Полядолжны быть достаточно длинными – это значит, что они должны обеспечивать решениепроблемы адресации, контроля времени жизни пакета в сети и т.п. Поля должны бытьвыровнены по слову, чтобы облегчить их обработку в процессоре.Поле данных должно быть переменной длины и достаточно большим, чтобыподдерживать эффективность операций, загрузку канала.
Чем длиннее поле данных, темкороче заголовок при прочих равных условиях. Об этом не стоит забывать.Заголовок и поле данных должны иметь раздельные контрольные суммы. Во-первых, длятого, чтобы можно было проверять корректность заголовка, не трогая данных. Во-вторых,чтобы можно было проверить заголовок до того, как начнется копирование данных вприложение. В третьих, копирование данных можно совместить с проверкой контрольнойсуммы для данных. Если же контрольные суммы совмещены, то совмещать копирование ипроверку было бы не рационально, так как, если начать проверку вместе с копированием,то при ошибке в заголовке копирование будет ненужным.7.1. Сетевая безопасностьГлава 7. Уровень приложений.7.1.
Сетевая безопасность.Пока сети использовались лишь в университетах для научных исследований, а в крупныхорганизациях для совместного использования устройств, например, принтеров, вопросыбезопасности сетей просто не возникали. Теперь, когда сетью пользуется обыватель дляуправления банковским счетом, покупки, уплаты налогов, когда в сети организациихранят критическую для своей деятельности информацию – безопасность становитсясерьезной проблемой.Проблема безопасности сети очень многогранна и охватывает широкий спектр вопросов.Большую их часть можно разделить на следующие группы:1.Секретность• Конфиденциальность – только санкционированный доступ к информации (никто неможет прочесть ваши письма без вашего ведома).• Целостность - только санкционированное изменение информации (никто безвашего разрешения не может изменить данные о вашем банковском счете).2.Идентификация подлинности пользователей• Имея с кем-то дело через сеть, вы должны быть уверены, что это тот, за кого онсебя выдает (если вы получили сообщение от налоговой инспекции уплатитьопределенную сумму денег, вы должны быть уверены, что это не шутка).3.Идентификация подлинности документа• Получив через сеть электронную версию документа, как определить, что онподлинный и не был фальсифицирован?4.Надежность управления• Несанкционированное использование ресурсов (если вы получите счет зателефонные переговоры, которые вы не делали, вам это вряд ли понравится).• Обеспечение доступности ресурсов для авторизованных пользователей.Разные люди по разным мотивам пытаются нарушить безопасность сети.