Контроль перегрузки должен справедливо распределять пропускную способность между конкурирующими потоками и следить за изменениями в использовании сети.
Закон управления AIMD позволяет получить эффективное и справедливое распределение.
Основными транспортными протоколами Интернета являются TCP и UDP. UDP — это протокол без установления соединения, который работает с IP-пакетами и занимается обеспечением мультиплексирования и демультиплексирования нескольких процессов с использованием единого IP-адреса. UDP может использоваться при клиент-серверных взаимодействиях, например при удаленном вызове процедур (RPC). Кроме того, на его основе можно создавать протоколы реального времени, такие как RTP.
Наиболее распространенным протоколом Интернета является TCP. Он обеспечивает надежный дуплексный поток байтов с контролем перегрузки. Он использует 20-байтный заголовок для всех сегментов. Оптимизации производительности протокола TCP было уделено много внимания. Для этого в нем применяются алгоритмы Нагля (Nagle), Кларка (Clark), Джекобсона (Jacobson), Карна (Kam) и др.
Производительность сети обычно в основном определяется протоколом и накладными расходами по обработке сегментов, причем с увеличением скорости передачи данных эта ситуация ухудшается. Протоколы должны разрабатываться таким образом, чтобы минимизировать количество сегментов и обтаваться работоспособными при больших значениях задержки передачи. В гигабитных сетях требуются простые протоколы и потоковая обработка.
Разработка сетей, устойчивых к задержкам, позволяет доставлять пакеты в сетях с непостоянной связностью узлов или с большой задержкой в каналах. Промежуточные узлы хранят, переносят и отправляют посылки данных, гарантируя их доставку, даже если ни в какой момент времени не существует действующего пути между отправителем и получателем.
Вопросы
1. В нашем примере транспортных примитивов, приведенных в табл. 6.1, LISTEN является блокирующим вызовом. Обязательно ли это? Если нет, объясните, как следует пользоваться неблокирующей базовой операцией. Какое преимущество это даст по сравнению со схемой, описанной в тексте?
2. Базовые операции транспортного сервиса предполагают, что во время установки соединения две конечные точки ведут себя несимметрично: один конец (сервер) выполняет операцию LISTEN, а другой конец (клиент) — операцию CONNECT. Но в одноранговых приложениях (например, в приложениях для совместного доступа к файлам, таких как BitTorrent) все конечные точки считаются одинаковыми. Среди них нет серверов и клиентов. Как такое приложение может работать, используя базовые операции транспортного сервиса?
3. В модели, лежащей в основе диаграммы состояний на рис. 6.3, предполагается, что пакеты могут теряться на сетевом уровне и поэтому должны подтверждаться индивидуально. Допустим, что сетевой уровень обеспечивает 100 % надежность доставки и никогда не теряет пакеты. Нужны ли какие-либо изменения в диаграмме состояний, показанной на рис. 6.3, и если да, то какие?
4. В обеих частях листинга 6.1 значение SERVER_PORT должно быть одинаковым у клиента и у сервера. Почему это так важно?
5. Посмотрите на пример с файловым сервером, приведенный в листинге 6.1. Может ли системный вызов клиента connect() закончиться неудачно по причине, отличной от переполнения очереди ожидания сервера? Считайте, что сеть идеальна.
6. Чтобы решить, следует ли все время поддерживать сервер в активном состоянии, или лучше запускать его по требованию с помощью обрабатывающего сервера, можно использовать такой критерий: частоту использования данного сервера. Можете ли вы придумать другой критерий?
7. Предположим, что используется управляемая часами схема генерирования начальных порядковых номеров с 15-разрядным счетчиком часов. Часы тикают раз в 100 мс, а максимальное время жизни пакета равно 60 с. Как часто должна производится ресинхронизация:
1) в худшем случае?
2) когда данные потребляют 240 порядковых номеров в минуту?
8. Почему максимальное время жизни пакета T должно быть достаточно большим, чтобы гарантировать, что не только пакет, но и его подтверждение исчезли?
9. Представьте, что для установки соединений вместо «тройного рукопожатия» использовалось бы «двойное» (то есть третье сообщение не требовалось). Возможны ли при этом тупиковые ситуации? Приведите пример или докажите, что тупиковых ситуаций нет.
10. Представьте себе обобщенную проблему n армий, в которой договоренность двух любых армий достаточна для победы. Существует ли протокол, позволяющий армиям синих выиграть?
11. Рассмотрим проблему восстановления от сбоев хостов (рис. 6.15). Если бы интервал между записью и отправкой подтверждения (или наоборот) можно было сделать относительно небольшим, какими были бы две лучшие стратегии отправителя и получателя, минимизирующие шансы ошибки протокола?
12. Представьте, что в сеть, изображенную на рис. 6.17, добавляется новый поток E, использующий путь через маршрутизаторы R1, R2 и R6. Как изменится распределение пропускной способности по максиминному критерию для пяти потоков?
13. Обсудите преимущества и недостатки схемы кредитного протокола (получатель информирует отправителя, сколько блоков информации он может отправить) по сравнению с протоколами скользящего окна.
14. Существуют и другие политики, обеспечивающие равноправие при контроле перегрузки: аддитивное увеличение аддитивное уменьшение (AIAD), мультипликативное увеличение аддитивное уменьшение (MIAD), мультипликативное увеличение мультипликативное уменьшение (MIMD). Что вы можете сказать об их сходимости и стабильности?
15. Зачем нужен протокол UDP? Разве не достаточно было бы просто позволить пользовательским процессам посылать необработанные IP-пакеты?
16. Рассмотрите простой протокол прикладного уровня, построенный на основе UDP, который позволяет клиенту запрашивать файл с удаленного сервера, расположенного по общеизвестному адресу. Клиент вначале посылает запрос с именем файла, а сервер отвечает последовательностью информационных пакетов, содержащих различные части запрошенного файла. Для обеспечения надежности и доставки частей в правильном порядке клиент и сервер используют протокол с ожиданием. Какие проблемы могут возникнуть с таким протоколом, кроме очевидных проблем с производительностью? Обратите внимание на вероятность сбоя процессов.
17. Клиент посылает 128-байтный запрос на сервер, удаленный от него на 100 км, по оптоволокну со скоростью 1 Гбит/с. Какова эффективность линии во время выполнения удаленного вызова процедуры?
18. Рассмотрите снова ситуацию, описанную в предыдущем вопросе. Вычислите минимально возможное время ответа для данной линии со скоростью 1 Гбит/с и для линии со скоростью 1 Мбит/с. Какой вывод можно сделать, исходя из полученных значений?
19. Как в UDP, так и в TCP номера портов используются для идентификации принимающей подсистемы при доставке сообщения. Назовите две причины того, почему для этих протоколов были изобретены новые абстрактные идентификаторы (номера портов) и не использовались идентификаторы процессов, уже существовавшие на момент появления данных протоколов?
20. Некоторые реализации RPC позволяют клиенту выбрать между реализацией с помощью UDP и реализацией с помощью TCP. В каком случае клиент выберет первый вариант, а в каком — второй?
21. Рассмотрим две сети, N1 и N2, с одинаковой средней задержкой при передаче пакетов от источника A получателю D. В сети N1 задержка распределена равномерно с максимальным значением 10 с, а в сети N2 99 % пакетов имеют задержку менее одной секунды, но максимальная задержка может быть сколь угодно большой. Подумайте, как в таких ситуациях можно использовать RTP, если вы планируете передавать аудио/видео поток в режиме реального времени.
22. Каков суммарный размер минимального MTU протокола TCP, включая накладные расходы TCP и IP, но не включая накладные расходы канального уровня?