Jabber – основа открытых IM-систем

27 апрель, 2005 - 23:00Александр Куприн

Если провести опрос среди пользователей Интернета на тему, с чем в первую очередь для них ассоциируется понятие «интернет-пейджер», то с большой долей вероятности можно услышать: ICQ. Несомненно, доминирование AOL на рынке IM-услуг (ICQ и AIM) – это факт, с которым необходимо считаться, но у open source-сообщества есть, что предложить взамен.

Преимущества использования IM-служб (от англ. Instant Messaging – мгновенные сообщения) были по достоинству оценены пользователями Интернета. Ведь в какой бы точке земного шара ни находился ваш респондент, он получит сообщение по прошествии всего нескольких секунд (а иногда долей секунды) и сможет так же быстро вам ответить – от такой оперативности возникает ощущение «живого» общения, по этой причине обмен мгновенными сообщениями и завоевал такую популярность.

На первый взгляд использование указанных особенностей в деловой сфере не выглядит таким уж заманчивым, вроде бы проще позвонить по телефону. Однако нередко офисы крупных компаний распределены по регионам и даже разным странам, соответственно IM-службы могут сыграть важную роль альтернативного средства коммуникации, дешевого и универсального, и значимость их в таком качестве неуклонно растет.

Конечно, рынок IM-служб не ограничивается предоставлением инфраструктуры исключительно для обмена текстовыми сообщениями. IM-сервисы обладают гигантским коммерческим потенциалом, который в настоящее время пока еще не задействован полностью. На базе IM-технологий сегодня реализуются отправка SMS-сообщений через Интернет на мобильные телефоны, передача файлов, IP-телефония, Web-конференции и даже видеосвязь, причем все чаще эти услуги предоставляются в комплексе. При этом если публичный сектор давно поделен между AOL, Microsoft и Yahoo!, то на корпоративный с теми или иными решениями выходят все новые игроки. Не осталось в стороне и Open Source-сообщество, но что оно может предложить – только ли возможность поболтать (от англ. jabber)?

Jabber как проект

Jabber – основа открытых IM-систем
Интерфейс клиента TkAbber довольно прост и удобен

Первое упоминание о jabberd на Slashdot датируется 4 января 1999 г., но сам проект был начат годом раньше. Со временем к его автору Джереми Миллеру (Jeremie Miller) присоединились еще несколько разработчиков, и они вместе стали трудиться сразу над несколькими приложениями – собственно сервером jabberd, клиентами для Windows и Linux, а также шлюзами к наиболее популярным публичным сетям – AIM, ICQ, MSN и Yahoo. Несколько позднее у проекта появился спонсор (компания Webb Interactive Services), и дела пошли значительно веселее – в том же 1999 г. были созданы основы протокола Jabber, jabber-клиенты WinJab (в дальнейшем развивался как Exodus) и Gabber, а первый официальный релиз jabberd увидел свет уже в 2000 г. Наиболее же принципиальной вехой в истории Jabber можно считать, пожалуй, август 2001 г. – с этого момента проект находится под контролем организации Jabber Software Foundation, которая координирует все работы над спецификациями Jabber. К настоящему моменту насчитывается уже 14 реализаций jabber-серверов и почти 100 (!) jabber-клиентов.

Jabber как протокол

Jabber – основа открытых IM-систем
TkAbber – это не только jabber-клиент, но и инструмент администрирования сервера

Сегодняшний Jabber – это открытый протокол XMPP (eXtensible Messaging and Presence Protocol), который, в свою очередь, базируется на XML и предназначен для отправки сообщений и определения доступности абонента в режиме «почти реального» времени. В настоящий момент существует несколько его реализаций, главным образом предлагающихся под общим наименованием Jabber. Спецификации Jabber (их принято называть JEP) приняты IETF (открытое сообщество разработчиков, производителей, поставщиков и исследовательских организаций, чья деятельность направлена на развитие архитектуры Интернета) в качестве стандарта.

Если опустить технические подробности протокола (на русском языке с ними можно ознакомиться на сайте: jabber.od.ua/documentation/XMPP), то из наиболее интересных архитектурных особенностей Jabber можно выделить следующие.

Открытость

Именно благодаря ей разработчики ПО могут создавать компоненты к уже существующим системам или разрабатывать новые и при этом быть уверенными в том, что их интеграция друг с другом пройдет без проблем. При этом спецификация не накладывает ограничений на тип лицензии для программного обеспечения, этот вопрос остается на усмотрение разработчика.

Децентрализация

В отличие от традиционных (публичных) IM-служб у Jabber нет единого центра. В этом смысле он изначально пригоден для использования внутри организаций, т. е. трафик не обязан выходить за пределы вашей локальной сети. С другой стороны, благодаря стандартизации протокола корректно реализованные серверы могут свободно общаться между собой, организуя таким образом внешнюю сеть. Разработчики XMPP-протокола решили для идентификатора пользователя (JID, Jabber IDentificator) применить формат, аналогичный адресам электронной почты (например, [email protected]) – в принципе, эти реквизиты могут даже совпадать.

Масштабируемость

С помощью пространств имен XML протокол Jabber можно расширить для решения специфических задач и обеспечения взаимодействия между различными системами. Стандартные расширения также разрабатываются под контролем Jabber Software Foundation.

Безопасность

Как уже говорилось, децентрализация подразумевает возможность функционирования отдельного jabber-сервера, что само по себе обеспечивает определенную защиту от, скажем, утечки информации. Кроме того, многие реализации серверов поддерживают работу с протоколами SSL, SASL и TLS, взаимодействие с которыми детально описано в спецификации XMPP.

Гибкость

Большое число разнообразных клиентов позволяет легко развертывать jabber-решения в гетерогенных средах, а также обеспечивать пользователей необходимыми дополнительными возможностями (предусмотренными спецификацией XMPP) вроде обмена файлами, удаленного администрирования jabber-сервера, функции whiteboard и т. п.

Интеграция с IM-сетями

Вообще говоря, интеграция с другими IM-протоколами самой спецификацией Jabber не предусмотрена, она описывает только взаимодействие транспорта и jabber-сервера. Обычно эта задача решается в индивидуальном порядке, на уровне конкретного сервера. К примеру, транспорт ICQv7 позволяет общаться с пользователями ICQ. К сожалению, владельцы крупнейших публичных сетей негативно относятся к подобным решениям и часто блокируют либо ограничивают сторонние подключения.

Возможно, цивилизованный выход из сложившегося положения смогут предложить отдельные поставщики коммерческих решений. Так, недавно компании Jabber и AOL подписали соглашение, благодаря которому корпоративные пользователи программных продуктов первой (Jabber XCP) смогут обмениваться сообщениями с сетью второй.

Jabber как сервер

Из множества известных реализаций jabber-серверов мы решили особо выделить три: ejabberd, jabberd2 и Jive Messenger. Дело в том, что только эти серверы являются свободными, и при этом в них реализовано не менее 70% возможностей, описанных в спецификации XMPP, а также функции, которые в первую очередь интересуют корпоративный сектор и касаются безопасности, надежности хранения и резервирования реестра пользователей и результатов переписки, простоты администрирования, интеграции с существующей сетевой инфраструктурой.

Если кратко рассмотреть рекомендации по установке любого jabber-сервера в качестве корпоративного сервиса, то они сводятся к следующему: разрешить общение с сервером исключительно посредством SSL, запретить регистрацию новых пользователей самостоятельно, применять криптостойкие пароли. Из клиентов для этих целей можно рекомендовать JAJC или Exodus, однако следует иметь в виду, что они предназначены только для платформы Microsoft Windows. Дополнительно стоит обратить внимание еще на два кросс-платформенных клиента – PSI и TkAbber, первый из которых написан на C++ с использованием библиотеки Qt, второй – на скриптовом языке Tcl/Tk.

Теперь несколько слов о конкретных серверных реализациях.

Jabberd2 (jabberd.jabberstudio.org/2/)

Jabberd2 – совершенно новая версия, переписанная практически с нуля с учетом новых требований спецификаций JSF. К сожалению, только последние релизы стали достаточно стабильными, поэтому до недавнего времени системные администраторы предпочитали работать с jabberd версии 1.4. Из особенностей данного сервера стоит выделить поддержку MySQL, PostgreSQL и Berkeley DB, а также возможность авторизации пользователей через LDAP-каталог.

ejabberd (ejabberd.jabber.ru)

Jabber – основа открытых IM-систем
Web-интерфейс облегчает работу по настройке ejabberd и позволяет вести ее практически с любого компьютера

Проект начат в 2002 г. и задумывался как альтернатива jabberd2. Его автор (кстати, наш соотечественник, Алексей Щепин из Севастополя) выбрал язык erlang, его же внутренняя база данных (mnesia) чаще всего используется для хранения регистрационной информации, однако авторизацию можно выполнять и через LDAP. Из приятных особенностей следует отметить наличие IRC-транспорта, а также возможность администрирования через Web-интерфейс либо подключаемый модуль для клиента TkAbber (одним из соавторов его также является Алексей). Тот факт, что в одних руках находится разработка и сервера, и клиента, позволяет надеяться, что пользователи получат не просто набор отдельных продуктов, а цельное решение. Благодаря применению erlang проект ejabberd также поддерживает кластеризацию, что выводит показатели надежности работы данного сервера на довольно высокий уровень. Одним словом, не случайно именно на базе ejabberd функционируют некоторые популярные публичные серверы вроде jabber.ru и jabber.kiev.ua. К недостаткам же проекта можно отнести невозможность применения известных СУБД для хранения логов, но, вероятно, у автора были причины поступить именно так.

Jive (www.jivesoftware.org)

Jabber – основа открытых IM-систем
Оформление и функциональность Jive Messenger выдержаны на должном уровне

Данный проект реализован на Java. Как и первые два, он умеет работать с LDAP, а с версии 2.2.x (текущая стабильная – 2.1.2) авторы обещают интеграцию с AD. Из особенностей стоит отметить механизм групп, благодаря которому новый пользователь автоматически получает координаты всех своих коллег, а также поддержку технологии Flash, что позволяет использовать анимацию в jabber-клиентах, работающих с XIFF-библиотекой. Jive Messenger так же, как и два других сервера, упомянутых здесь, дает возможность организовывать коллективное обсуждение в виде IM-конференций.

Заключение

В мире Open Source, кроме Jabber-решений, встречаются и более экзотические. К примеру, существует даже ICQ-сервер – iserverd (iserverd.khstu.ru), однако его автор, хотя и не занимается напрямую реинжинирингом кода, использует информацию, полученную благодаря анализу сетевых пакетов. Учитывая то, что AOL не собирается открывать спецификации ICQ, полагаться на такой продукт в сколько-нибудь серьезных приложениях, конечно, нельзя.

Поэтому Jabber сегодня является, безусловно, предпочтительным выбором – он завоевывает все большую популярность, в том числе и у известных поставщиков коммерческих решений, и его ближайшие перспективы достаточно оптимистичны, даже несмотря на возрастающую конкуренцию со стороны SIP. Надеемся, нам удалось отчасти показать основные достоинства Jabber – открытость, стандартизацию и, как следствие, множество реализаций, хотя многие интересные продукты в обзор не попали из-за его ограниченного объема.