Слайд 1Общие принципы взаимодействия программных средств. Протоколы
Судаков А.А.
“Параллельные и распределенные
вычисления” Лекция 4
Слайд 2План
Взаимодействие программ для распределенных и параллельных вычислений
Протоколы
Работа с удаленными ресурсами
Особенности
технологий для распределенных вычислений
Слайд 3Взаимодействие программ
На одной машине - совместно используемые ресурсы (память, файлы)
На
разных машинах - обмен сообщениями
Слайд 4Проблема взаимодействия
Разные программы могут хранить данные в разном формате
Разные компиляторы
могут генерировать структуры данных в разных форматах
Разные аппаратные платформы могут
иметь разный формат представления данных
Разные средства взаимодействия могут передавать данные по-своему
Слайд 5Примеры
Формат даты в одной программе YY-MM-DD
Формат даты в другой программе
DD-MM-YY
Если одна программа запишет 02-02-12
То в другой программе вместо 12
февраля 2002 года будет 2 февраля 2012 года
Слайд 6Разный порядок байтов
Int
Intel представляет как
HP представляет как
Если
на Intel сохранить число 1, то на HP прочитается как
16 миллионов
байт1
байт2
байт3
байт4
байт4
байт3
байт2
байт1
старший
младший
байт4
байт3
байт2
байт1
Слайд 7Протоколы
Протокол – набор формальных правил, которые определяют, каким образом программы
и устройства должны взаимодействовать между собой
Протоколы взаимодействия между программами по
сети
Протоколы взаимодействия между программами с общей памятью
Протоколы передачи информации по физическим линиям
Слайд 8Основная идея
Вопрос: Как просто сделать, чтобы две разные программы могли
в взаимодействовать между собой?
Ответ: Добавить новый программный уровень, который скрывает
детали взаимодействия. Тогда программы должны уметь только взаимодействовать с этим уровнем
программа1
программа2
Уровень взаимодействия, который скрывает от программ
всю сложность
Слайд 9Основной подход к реализации протоколов
Инкапсуляция – информация одного протокола становится
данными другого протокола
Сериализация – сложные структуры данных представляются в виде
потока байтов
Слайд 10Модель OSI
Прикладных программ
Представления данных
Сеансовый
Транспортный
сетевой
физический
Канальный
Прикладных программ
Представления данных
Сеансовый
Транспортный
сетевой
физический
Канальный
Машина 1
Машина 2
Слайд 11Инкапсуляция
данные
данные
6
данные
6
5
данные
6
5
данные
6
5
данные
6
5
4
4
4
3
3
2
данные
6
5
4
3
2
1
данные
данные
6
данные
6
5
данные
6
5
данные
6
5
данные
6
5
4
4
4
3
3
2
данные
6
5
4
3
2
1
Машина 1
Машина 2
Слайд 12Сериализация/десериализация
Сериализация (marshalling) - Представление сложной структуры данных в виде потока
байтов
Десериализация (unmarshalling) –
Восстановление сложной структуры данных из потока байтов
Синоним
– упаковка/распаковка
Слайд 13Сериализация бинарного дерева
1
2
3
4
5
6
7
1
2
4
5
3
6
7
Структура данных
Поток данных
Слайд 14Преимущества и недостатки
Преимущество – применение стандартных протоколов позволяет упростить проблему
взаимодействия для конечных программ
Недостаток – большое количество инкапсуляций приводит к
снижению эффективности коммуникации: передается большое количество «лишних данных»
Слайд 15Выводы
Любую проблему взаимодействия можно решить добавлением нового уровня взаимодействия
Любую проблему
эффективности можно решить удалением уровней взаимодействия
Слайд 16Протоколы разных уровней
Прикладной ssh, rsh
Представления mpi, pvm, http, xmtp
Сеансовый
RPC, CORBA, LDAP, NIS, Netbios
Протоколы транспортного уровня TCP, UDP
Протоколы сетевого
уровня IP
Протоколы канального уровня Ethernet, Myrinet, SCI
Протоколы физического уровня: передача по оптоволокну, по медным проводам
Слайд 17Информация по стандартам и протоколам
Internet протоколы RFC (request for comments)
http://www.faqs.org/rfcs
Message passing interface (MPI)
http://www-unix.mcs.anl.gov/mpi/
XML-RPC http://www.xmlrpc.com/
PVM http://www.netlib.org/pvm3/
CORBA http://www.corba.org/
Myrinet http://www.myri.com/
IEEE
http://standards.ieee.org/
Слайд 18Физический уровень
Средства передедачи информации на уровне устройств
Передатчики, приемники, кабели, усилители,
повторители, конверторы
Для параллельных вычислений чаще всего используются скоростные линии на
медном проводе и оптоволокне
Ethernet, Myrinet, Infiniband - витая пара, коаксиальный кабель, оптоволокно
SCI – шлейф медных проводов
Слайд 19Канальный уровень
Логическая переадресация от одного физического устройства к другому
Заголовок содержит
MAC адреса – логический адрес устройства источника и приемника
Протоколы
Ethernet
Myrinet
Infiniband
SCI
Слайд 20Сетевой уровень
Передача от одной машины к другой в пределах логических
сетей, маршрутизация
Internet протокол (IP), SCI
Пример заголовка – IP адрес
источника, IP адрес приемника
Конфигурируется администратором или автоматически
Слайд 21Транспортный уровень
Доставка информации от одной программы на одной машине до
другой программы на другой машине
В заголовок добавляется порт источника и
порт приемника
Примеры
UDP (RFC 768) негарантированная доставка дейтаграмм
TCP (RFC 761 ) гарантированная доставка по виртуальным каналам
Обмен через общую память
Слайд 22Протокол TCP
Клиент – серверная модель
Один процесс (сервер) «слушает» на приходящие
соединения
Множество процессов (клиентов) инициируют «соединение» с сервером
Каждое соединение – виртуальный
канал гарантирует доставку сообщений в потоке
Слайд 23Сессионный уровень
Создание прозрачных для пользователя виртуальный сеансов поверх транспортных протоколов
RPC
– вызов удаленных процедур
X Window – протокол удаленной графической консоли
Сетевые
файловые системы
Распределенные системы имен (NIS, LDAP)
GRID middleware
Фактически функционирование распределенных операционных систем и их компонент
Слайд 24Уровень представления данных
Сериализация/десериализация
xml, html
Шифрование/дешифрование
Openssl
Сжатие/разархивация
gzip
Слайд 25Уровень прикладных программ
Каждое распределенное или параллельное приложение может иметь
свой протокол обмена данными
Стандартные протоколы
Удаленный обработчик команд rsh, ssh
Удаленный терминал
telnet, rlogin, slogin
Слайд 26Распределенне информационные системы
Представление
Логика работы
Доступные ресурсы
Потребители (клиенты)
Представление информации
Логика выполнения
ресурсы
Слайд 27Основные подходы к разработке
Сверху вниз
Исходя из того, что нужно
клиенту
выбирается представление информации,
определяется логика
выбираются необходимые ресурсы
Снизу вверх
Исходя
из того, какие есть ресурсы
Выбираем логику работы
Исходя из нужд клиента представляем информацию
Слайд 28Основные подходы к построению распределенных платформ
Клиент-сервер
Клиент непосредственно взаимодействует с сервером
Для
каждого клиента свой тип сервера
Параллелизм на уровне приложений
Промежуточное программное обеспечение
(middleware, программное обеспечение среднего уровня)
Клиент взаимодействует с промежуточным программным обеспечением на своей машине, которое «знает» о серверах
Параллелизм на уровне приложений, процедур, объектов
Сервер приложений
Один тип клиентов и один тип серверов (WWW)
Сервер взаимодействуют с промежуточным программным обеспечением, которое работает с необходимыми ресурсами
Слайд 29Типы распределенных приложений
Одноярусные (one tier)
Мейнфрейм-терминал
Двухярусные (two tier)
СУБД – интерфейс, X
Window, терминал-сервер
Трехярусные (three tier)
Вызовы удаленных процедур
Многоярусные (many tier)
Сервер приложений, WWW
технология
Слайд 30Одноярусные (one tier)
Сервер – «умный» - всю логику работы и
представление информации выполняет сервер
Клиент – «тупой» - только принимает
информацию, которую передает сервер
Особенности
Клиент непосредственно взаимодействует с сервером
Для каждого клиента свой тип сервера
Параллелизм на уровне приложений
Преимущества
Просто создавать, настраивать и контролировать
Эффективное совместное использование ресурсов
Недостатки
Не используются возможности клиента
Большая нагрузка на сервер
Нельзя построить очень большую систему – сервер узкое место в плане надежности
Слайд 31Двухярусные (two tier)
Сервер – «мощный» - выполняет всю логику и
часть отображения
Клиент – «красивый» - выполняет большую часть работы по
представлению информации
Особенности
Клиент непосредственно взаимодействует с сервером
Для каждого клиента свой тип сервера
Параллелизм на уровне приложений
Преимущества
Те же, что и one tier
Сервер не занимается лишней работой по представлению информации и может работать более эффективно
Недостатки
Нельзя построить очень большую систему – сервер узкое место в плане надежности
Усложняется программное обеспечение, необходимо стандартизировать API (Application Rrogramming Interface)
Слайд 32Трехярусные (three tier, middleware)
Клиенты и сервера взаимодействуют через промежуточный «слой
программного обеспечения»
Особенности
Клиент взаимодействует с промежуточным программным обеспечением на своей машине,
которое «знает» о серверах
Параллелизм на уровне приложений, процедур, объектов
Преимущества
Децентрализация
Обеспечение надежности, балансировки нагрузки, производительности
Теоретически нет ограничений на выполняемые функции, масштабируемость, размеры системы
Недостатки
Сложное программное обеспечение
Необходимость введения нового уровня может привести к большим затратам на взаимодействие
Возможность существования несовместимых реализаций
Слайд 33Многоярусные (many tier)
Один тип клиентов и один тип серверов (WWW,
сервер приложений)
Особенности
Сервер взаимодействуют с промежуточным программным обеспечением, которое работает с
необходимыми ресурсами
Преимущества
Решается проблема стандартизации системы – общий протокол взаимодействия многих клиентов с сервером
Недостатки
Сложность
Слайд 34Клиент-сервер (терминальный доступ)
Серверу назначается стандартный порт транстпортного протокола (TCP, UDP)
Клиент
соединяется с хост-машиной сервера указывая сетевой адрес и порт транспортного
протокола
Устанавливается сеанс и начинается обмен данными
Слайд 35Серверы на обычной машине
Интернет службы
Слайд 36Запуск удаленных программ и перенаправление ввода-вывода
Пользователь
Программа на
удаленной машине
сеть
Перенаправление
Ввода-вывода по
сети
Слайд 37Преимущества и недостатки
Преимущества
Возможность использования для распределенных вычислений самых обычных программ
Параллелизм на уровне приложений (конвейер, SIMD, MIMD)
Простота и надежность
Недостатки
Есть возможность
работы только в пространстве пользователя
Необходимость разработки протокола прикладного уровня для взаимодействия программ
Запуск программы сравнительно медленная операция
Слайд 38SSH
SSH – secure shell
Терминальный доступ
Запуск программ на удаленных машинах
Шифрование с
открытым ключом
Авторизация
Передача файлов
Переадресация соединений
Слайд 39Схема работы
Машина 1
Машина 2
Ssh клиент
пользователь
Представление (шифрование,
компрессия)
Сеансы (команды,
Файлы, перенаправление
)
Транспорт (TCP
гарантированная доставка )
Ssh сервер
Представление
Сеансы
Транспорт
Сеть и физические линии
Сеть и
физические линии
Выполнение
команды
Слайд 40SSH сервер
Клиент-серверная платформа
Сервер sshd работает на тех машинах, к которым
необходимо осуществлять доступ
Используется TCP/IP, TCP порт 22
Сервер
слушает необходимый порт
Принимает соединение
Аутентифицирует и авторизует пользователя
Запускает команды пользователя
К одному серверу может присоединяться множество клиентов
Слайд 41SSH клиент
Позволяет присоединиться к машине, где работает sshd и выполнять
там команды пользователя
Слайд 42Аутентификация и авторизация
При входе на удаленную машину необходимо пройти
проверку прав доступа
Аутентификация – определение “кто такой, откуда, куда,
зачем …”
Авторизация – что определенному пользователю можно делать
Слайд 43SSH авторизация
На основе имени пользователя и пароля
На основании открытого ключа
– без пароля
Слайд 44Ключи
Приватный ключ позволяет расшифровать данные, а публичный – зашифровать
Генерация пары
ключей
Приватный /home//.ssh/id_dsa
Публичный /home//.ssh/id_dsa.pub
Слайд 45Авторизация ключа
Публичный ключ должен быть записан на удаленном узле в
файл /home//.ssh/authorized_keys
После этого возможен доступ без пароля
Слайд 46Запуск команд на удаленной машине
Команда, которая запускается указывается как
параметр ssh
Стандартный ввод и стандартный вывод команды соответствует стандартному вводу-выводу
ssh клиента
Пример: cat выполняется на node2, а wc – на cluster
Слайд 47Запуск виртуальных машин
Большинство параллельных программ, которые рассчитаны на работу с
кластерами используют ssh
GAMESS
Виртуальные машины MPI, PVM используют ssh
Слайд 48RSH – remote shell
Более старый вариант без шифрования
Порты 514/shell и
513/login
Работа через демон inetd
Есть возможность установить доступ без пароля
Слайд 49Особенности rsh
Inetd слушает необходимые порты, при наличии соединений запускает обработчик
запросов с этого порта
in.rlogind удаленный терминал
in.rshd удаленное выполнение команд
Демон inetd
слушает порты
513 514
in.rshd
Запускается
при наличии
соединения
in.rlogind
Запускается
при наличии
соединения
Обработка пользовательских
команд
Слайд 50Доступ по rsh без пароля
Файл /etc/hosts.equiv администратор добавляет список авторизированных
машин
Файл ~/.rhosts пользователь добавляет список авторизированных машин