Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
- Название:TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
- Автор:
- Жанр:
- Издательство:Лори
- Год:2000
- Город:Москва
- ISBN:5-85582-072-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) краткое содержание
Второе издание популярного справочника полностью переработано и расширено с целью предоставить читателю наиболее полное описание средств разработки, конфигурирования, использования и обслуживания сетей TCP/IP и соответствующих служб.
Книга написана увлекательно и доступно. Она содержит дополнительные материалы о нескольких протоколах Интернета, используемых серверами и браузерами WWW, а также рассматривает все последние изменения в этой области. В книгу включены главы о новом стандарте безопасности IP и протоколе IP следующего поколения, известном как IPng или IPv6. Рисунки и таблицы наглядно показывают влияние средств безопасности IP и IPng на существующие сетевые среды.
Издание содержит следующие дополнительные разделы:
• Безопасность IP и IPv6
• Описание средств WWW, новостей Интернета и приложений для работы с gopher
• Подробное описание серверов имен доменов (DNS), маски подсети и бесклассовой маршрутизации в Интернете
• Таблицы и протоколы маршрутизации
• Руководство по реализации средств безопасности для каждого из протоколов и приложений
• Примеры диалогов с новыми графическими инструментами
Новое издание бестселлера по TCP/IP станет незаменимым помощником для разработчиков сетей и приложений, для сетевых администраторов и конечных пользователей.
TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Последнее отклонение = | Последний цикл - Средняя величина |
Для вычисления правильного значения тайм-аута нужно учитывать еще один фактор — изменение времени цикла из-за текущих сетевых условий. Происходившее в сети в последнюю минуту более важно, чем то, что было час назад.
Предположим, что вычисляется среднее значение цикла для очень длинного по времени сеанса. Пусть вначале сеть была мало загружена, и мы определили 1000 небольших значений, однако далее произошло увеличение трафика с существенным увеличением времени задержки.
Например, если 1000 значений дали среднестатистическую величину в 170 единиц, но далее были замерены 50 значений со средним в 282, то текущее среднее будет:
170×1000/1050 + 282×50/1050 = 175
Более резонной будет величина сглаженного времени цикла (Smoothed Round-Trip Time — SRTT), которая учитывает приоритет более поздних значений:
Новое SRTT = (1 – α)×(старое SRTT) + α×Последнее значение цикла
Значение α находится между 0 и 1. Увеличение а приводит к большему влиянию текущего времени цикла на сглаженное среднее значение. Поскольку компьютеры быстро могут выполнять деление на степени числа 2, сдвигая двоичные числа направо, для α всегда выбирается значение (1/2) n(обычно 1/8), поэтому:
Новое SRTT = 7/8×старое SRTT + 1/8×Последнее время цикла
В таблице 10.2 показано, как формула для SRTT подстраивается под текущее значение SRTT в 230 единиц, когда изменение в сетевых условиях приводит к последовательному увеличению времени цикла (при условии, что не наступает тайм-аут). Значения в столбце 3 используются как значения столбца 1 для следующей строки таблицы (т.е. как старое SRTT).
Таблица 10.2 Вычисление сглаженного времени цикла
Старое SRTT | Самое последнее RTT | (7/8)×(старое SRTT) + (1/8)×(RTT) |
---|---|---|
230.00 | 294 | 238.00 |
238.00 | 264 | 241.25 |
241.25 | 340 | 253.59 |
253.59 | 246 | 252.64 |
252.64 | 201 | 246.19 |
246.19 | 340 | 257.92 |
257.92 | 272 | 259.68 |
259.68 | 311 | 266.10 |
266.10 | 282 | 268.09 |
268.09 | 246 | 265.33 |
265.33 | 304 | 270.16 |
270.16 | 308 | 274.89 |
274.89 | 230 | 269.28 |
269.28 | 328 | 276.62 |
276.62 | 266 | 275.29 |
275.29 | 257 | 273.00 |
273.00 | 305 | 277.00 |
Теперь возникает вопрос о выборе значения для тайм-аута повторной пересылки. Анализ величин времени цикла показывает существенное отклонение этих значений от текущей средней величины. Имеет смысл установить границу для величины отклонений (девиаций). Хорошие величины для тайм-аута повторной пересылки (в стандартах RFC эту величину именуют Retransmission TimeOut — RTO) дает следующая формула с ограничением сглаженного отклонения (SDEV):
Т = Тайм-аут повторной пересылки = SRTT + 2×SDEV
Именно эта формула рекомендована в RFC 1122. Однако некоторые реализации используют другую:
Т = SRTT + 4×SDEV
Для вычисления SDEV сначала определяют абсолютное значение текущего отклонения:
DEV = | Последнее время цикла – старое SRTT |
Затем используют формулу сглаживания, чтобы учесть последнее значение:
Новое SDEV = 3/4×старое SDEV + 1/4×DEV
Остается один вопрос — какие взять начальные значения? Рекомендуется:
Начальный тайм-аут = 3 с
Начальный SRTT = 0
Начальный SDEV = 1,5 с
Ван Джекобсон определил быстрый алгоритм, который очень эффективно вычисляет тайм-аут повторной пересылки данных.
10.13.6 Пример статистики
Насколько успешно будет работать вычисленный выше тайм-аут? При реализации полученного значения наблюдались значительные повышения производительности. Примером могут служить статистические данные команды netstat , полученные на системе tigger — сервере Интернета, к которому обращается множество хостов со всего мира.
tcp:
1301644 packets sent
879137 data packets (226966295 bytes)
21815 data packets (8100927 bytes) retransmitted
2012869 packets received
762469 acks (for 226904227 bytes)
35803 duplicate acks
0 acks for unsent data
1510769 packets (314955304 bytes) received in-sequence
9006 completely duplicate packets (867042 bytes)
74 packets with some dup. data (12193 bytes duped)
13452 out-of-order packets (2515087 bytes)
Системой tigger были повторно переданы менее чем 2,5% сегментов данных TCP. Для полутора миллионов входящих сегментов данных (остальные являются чистыми сообщениями ACK) дублированы были только 0,6%. При этом следует учитывать, что уровень потерь во входных данных примерно соответствует уровню для выходных сегментов. Таким образом, бесполезный трафик повторной пересылки составляет около 0,6% от общего трафика.
10.13.7 Вычисления после повторной отправки
В представленных выше формулах используется значение времени цикла как интервала между отправкой сегмента и получением подтверждения его приема. Однако предположим, что в течение периода тайм-аута подтверждение не получено и данные должны быть оправлены повторно.
Алгоритм Керна предполагает, что в этом случае не следует изменять время цикла. Текущее сглаженное значение времени цикла и сглаженное отклонение сохраняют свои значения, пока не будет получено подтверждение на пересылку некоторого сегмента без его повторной отправки. С этого момента возобновляются вычисления на основе сохраненных величин и новых замеров.
10.13.8 Действия после повторной пересылки
Но что происходит до получения подтверждения? После повторной пересылки поведение TCP радикально меняется в основном из-за потери данных от перегрузки в сети. Следовательно, реакцией на повторную отправку данных будет:
■ Снижение скорости повторной пересылки
■ Борьба с перегрузкой сети с помощью сокращения общего трафика
10.13.9 Экспоненциальное торможение
После повторной пересылки удваивается интервал тайм-аута. Однако что произойдет при повторном переполнении таймера? Данные будут оправлены еще раз, а период повторной пересылки снова удвоится. Этот процесс называется экспоненциальным торможением (exponential backoff).
Если продолжает проявляться неисправность сети, период тайм-аута будет удваиваться до достижения предустановленного максимального значения (обычно — 1 мин). После тайм-аута может быть отправлен только один сегмент. Тайм-аут наступает и при превышении заранее установленного значения для количества пересылок данных без получения ACK.
10.13.10 Снижение перегрузок за счет уменьшения пересылаемых по сети данных
Сокращение объема пересылаемых данных несколько сложнее, чем рассмотренные выше механизмы. Оно начинает работать, как и уже упомянутый медленный старт. Но, поскольку устанавливается граница для уровня трафика, который может в начальный момент привести к проблемам, будет реально замедляться скорость обмена вследствие увеличения размера нагрузочного окна по одному сегменту. Нужно установить значения границы для реального сокращения скорости отправки. Сначала вычисляется граница опасности (danger threshold):
Читать дальшеИнтервал:
Закладка: