next up previous contents
Next: Как определяются адреса Up: DIPC - Распределенные межпроцессные Previous: Прокси   Contents

UDP/IP

По умолчанию DIPC использует TCP/IP, но, начиная с версии 1.0, она также работает с сетевым протоколом UDP/IP. В результате использования UDP значительно повышается скорость пересылки данных по сети, в основном за счет отсутствия перегрузок, связанных с ориентированными на соединение протоколами, например, TCP. Все компьютеры в одном кластере должны использовать одинаковые сетевые протоколы.

UDP не является достоверным - имеется в виду, что вследствие перманентных или временных ошибок некоторые данные могут не доставляться по назначению. UDP не может преодолевать ошибки. Также он не осуществляет проверку контрольных сумм, следовательно, возможно искажение данных. Существуют и иные сервисы, доступные для TCP и отсутствующие для UDP.

Следующим важным замечанием является то, что UDP не фрагментирует пакеты данных: они слишком велики для хранения в буферах ядра или для передачи по сети. Текущая реализация DIPC не применяет сквозной контроль и фрагментацию кода DIPC.

Сказанное выше означает, что:

  1. Любая проблема может вылиться в ошибку программы распределенного приложения.
  2. Не представляется возможным передавать данные, выходящие за рамки ограничений ядра. Например, при использовании SLIP посредством UDP невозможно за раз передать больше 3200 байтов, что напрямую связано с ограниченными размерами буферов ядра. Все это может заставить программиста удержаться от использования больших размеров сегментов разделяемой памяти и сообщений.
Упомянутую ситуацию со SLIP можно улучшить распределением большего числа буферов (tx_queue_len в linux/drivers/net/slip.c).



Subsections

2004-06-22