Difference between revisions of "Jingle"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
(таблица с http://jabberworld.info/Jingle с стилевыми правками)
(правки)
Line 6: Line 6:
 
: ''Эта статья о протоколе {{xep|0166|Jingle}}. О реализующей его библиотеке см. [[libjingle]].''
 
: ''Эта статья о протоколе {{xep|0166|Jingle}}. О реализующей его библиотеке см. [[libjingle]].''
  
== Описание ==
+
'''Jingle''' - универсальный сигнальный протокол для XMPP. В его функции не входит сама передача данных, а только организация соединения - т.н. "рукопожатие". Другими словами, два клиента, используя Jingle, оговаривают адреса, порты, тип передаваемых данных, кодеки, тип канала, используемые транспорты и другую информацию, необходимую для установки соединения, по которому уже будет происходить непосредственная передача данных.
Универсальный сигнальный протокол для XMPP. В его функции не входит сама передача данных, а только организация соединения - т.н. "рукопожатие". Другими словами, два клиента, используя Jingle, оговаривают адреса, порты, тип передаваемых данных, кодеки, тип канала, используемые транспорты и другую информацию, необходимую для установки соединения, по которому уже будет происходить непосредственная передача данных.
+
 
+
== История ==
+
До появления Jingle ситуация с поддержкой голоса, видео и других p2p потоков была следующая: существовало несколько закрытых протоколов, используемых в закрытых клиентах, с одной стороны, и был разработан открытый стандарт [[TINS]] - с другой. Закрытые протоколы, помимо того, что были закрыты от сообщества, не всегда учитывали требования, необходимые для совместимости с уже существующими сетями на базе SIP, а открытый TINS имел недостатки, непозволяющие ему легко встраиваться в Jabber/XMPP клиенты.
+
 
+
Такая ситуация привела к расколу сообщества и [[XSF]] оказалась перед выбором:
+
# Рекомендовать всем клиентам реализовывать одновременную поддержку и XMPP и SIP для передачи голоса
+
# Сделать новый полноценный сигнальный протокол для XMPP
+
 
+
Опыт подсказывал, что не везде, где уже сделаны клиенты Jabber, можно реализовать двойную поддержку, поэтому XFS решило попробовать второй вариант и Joe Hildebrand вместе с Peter Saint-Andre начали разработку протокола, который бы обеспечил необходимую сигнальную функциональность и остался бы совместим с существующими стандартами. Кодовое название протокола стало Jingle ("звенеть")
+
 
+
После общения с разработчиками из Google стало понятно, что только появляющийся Jingle концептуально (и даже местами семантически) похож на сигнальный протокол используемый в приложении [[GTalk|Google Talk]]. Тогда, ради совместимости, было решено согласовать эти два протокола и разработчики из Google стали входить в процесс разработки Jingle как соавторы.
+
 
+
Сейчас Jingle в основном идентичен протоколу используемому в GTalk, отличия заключаются в нескольких корректировках, основанных на откликах разработчиков приложений.
+
 
+
== Jingle и SIP ==
+
Сигнальный XMPP протокол Jingle работает поверх только XMPP (без использования SIP) из-за того, что создавать и поддерживать клиенты реализующие два больших протокола вместо одного достаточно сложно. В цели разработчиков Jingle не входило заменить или выжить SIP, вместо этого они постарались сделать протокол таким, чтобы клиенты без особых сложностей могли входить в существущие SIP сети.
+
{{todo|уточнить, что именно в протоколе позволяет делать такой фокус, можно ли XMPP+Jingle клиент использовать как SIPPhone}}
+
Транспорт Jabber->SIP: см. [http://www.gtalk2voip.com/ Gtalk2VoIP]
+
  
 
== Применение ==
 
== Применение ==
Line 36: Line 17:
 
Клиент [[GTalk]] работает поверх очень похожего на Jingle протокола, но все же, это не Jingle в чистом виде. То же самое относится и к библиотеке [[libjingle]], созданной командой Google.  
 
Клиент [[GTalk]] работает поверх очень похожего на Jingle протокола, но все же, это не Jingle в чистом виде. То же самое относится и к библиотеке [[libjingle]], созданной командой Google.  
  
Список клиентов и реализаций чистого Jingle можно найти на [http://xmpp.org/tech/jingle.shtml wiki-странице протокола] сервера [http://wiki.jabber.org wiki.jabber.org]. В Явики есть специальная [[:Category:Jingle|категория для программ, поддерживающих Jingle]]
+
В данной вики есть специальная [[:Category:Jingle|категория для программ, поддерживающих Jingle]], где есть как клиенты, так и [[:Category:Библиотеки с поддержкой Jingle|библиотеки]].
  
 
<center>
 
<center>
Line 51: Line 32:
 
!width=60 bgcolor=lightblue|[[Kopete]]
 
!width=60 bgcolor=lightblue|[[Kopete]]
 
!width=60 bgcolor=lightblue|[[Spark]]
 
!width=60 bgcolor=lightblue|[[Spark]]
!width=60 bgcolor=lightblue|[[Google Talk]]
+
!width=60 bgcolor=lightblue|[[Google Talk (клиент)|Google Talk]]
 
!width=60 bgcolor=lightblue|[[Coccinella]]
 
!width=60 bgcolor=lightblue|[[Coccinella]]
 
!width=60 bgcolor=lightblue|[[Talkonaut]]
 
!width=60 bgcolor=lightblue|[[Talkonaut]]
 
!width=60 bgcolor=lightblue|[[Nimbuzz]]
 
!width=60 bgcolor=lightblue|[[Nimbuzz]]
 
|-
 
|-
!bgcolor=lightgreen|[[Psi|Psi+]]
+
!bgcolor=lightgreen|[[Psi+|Psi+]]
 
|{{Да}}
 
|{{Да}}
 
|{{Да}}
 
|{{Да}}
Line 227: Line 208:
 
</center>
 
</center>
  
 +
== Использование клиентами за {{w|NAT}} ==
 +
jingle nodes relay - реализация Jingle supernode. Узел позволяющий клиентам, не имеющих возможности передавать голос напрямую. Копия запущена, например, на сервере [[Talkr.im]].
  
== Смотрите также ==
+
== История ==
 +
До появления Jingle ситуация с поддержкой голоса, видео и других p2p потоков была следующая: существовало несколько закрытых протоколов, используемых в закрытых клиентах, с одной стороны, и был разработан открытый стандарт {{w|TINS}} - с другой. Закрытые протоколы, помимо того, что были закрыты от сообщества, не всегда учитывали требования, необходимые для совместимости с уже существующими сетями на базе SIP, а открытый TINS имел недостатки, непозволяющие ему легко встраиваться в Jabber/XMPP клиенты.
 +
 
 +
Такая ситуация привела к расколу сообщества и [[XSF]] оказалась перед выбором:
 +
# Рекомендовать всем клиентам реализовывать одновременную поддержку и XMPP и SIP для передачи голоса
 +
# Сделать новый полноценный сигнальный протокол для XMPP
 +
 
 +
Опыт подсказывал, что не везде, где уже сделаны клиенты Jabber, можно реализовать двойную поддержку, поэтому XFS решило попробовать второй вариант и Joe Hildebrand вместе с Peter Saint-Andre начали разработку протокола, который бы обеспечил необходимую сигнальную функциональность и остался бы совместим с существующими стандартами. Кодовое название протокола стало Jingle ("звенеть")
 +
 
 +
После общения с разработчиками из Google стало понятно, что только появляющийся Jingle концептуально (и даже местами семантически) похож на сигнальный протокол используемый в приложении [[GTalk|Google Talk]]. Тогда, ради совместимости, было решено согласовать эти два протокола и разработчики из Google стали входить в процесс разработки Jingle как соавторы.
 +
 
 +
Сейчас Jingle в основном идентичен протоколу используемому в GTalk, отличия заключаются в нескольких корректировках, основанных на откликах разработчиков приложений.
 +
 
 +
== Jingle и SIP ==
 +
Сигнальный XMPP протокол Jingle работает поверх только XMPP (без использования {{w|SIP}}) из-за того, что создавать и поддерживать клиенты реализующие два больших протокола вместо одного достаточно сложно. В цели разработчиков Jingle не входило заменить или выжить SIP, вместо этого они постарались сделать протокол таким, чтобы клиенты без особых сложностей могли входить в существующие SIP сети.
 +
{{todo|уточнить, что именно в протоколе позволяет делать такой фокус, можно ли XMPP+Jingle клиент использовать как SIPPhone}}
 +
Транспорт Jabber->SIP: см. [http://www.gtalk2voip.com/ Gtalk2VoIP]
 +
 
 +
== См. также ==
  
 
* [[:Category:Jingle|Программы, которые используют или реализуют Jingle]]
 
* [[:Category:Jingle|Программы, которые используют или реализуют Jingle]]
Line 235: Line 236:
  
 
* {{xep|0166|Jingle}}
 
* {{xep|0166|Jingle}}
* [http://xmpp.org/tech/jingle.shtml Официальная документация по протоколу]
+
 
 +
* [http://xmpp.org/about-xmpp/technology-overview/jingle/ Официальная документация по протоколу]
  
 
== Примечания ==
 
== Примечания ==

Revision as of 19:21, 9 December 2010

Эта статья о протоколе XEP-0166: Jingle. О реализующей его библиотеке см. libjingle.

Jingle - универсальный сигнальный протокол для XMPP. В его функции не входит сама передача данных, а только организация соединения - т.н. "рукопожатие". Другими словами, два клиента, используя Jingle, оговаривают адреса, порты, тип передаваемых данных, кодеки, тип канала, используемые транспорты и другую информацию, необходимую для установки соединения, по которому уже будет происходить непосредственная передача данных.

Применение

XEP-166 определяет только базовую функциональность сигнального протокола. Для каждого типа потока данных (звук, файлы, видео) существуют отдельные стандарты, конкретизирующие применение Jingle в своей области:

  1. XEP-0167: Jingle RTP Sessions — звук и видео через RTP.
  2. XEP-0177: Jingle Raw UDP Transport — создание UDP соединения для передачи любых данных.
  3. шуточный XEP-0183: Jingle Telepathy Transport — создание телепатического канала для передачи мыслей.

Поддержка в программах

Клиент GTalk работает поверх очень похожего на Jingle протокола, но все же, это не Jingle в чистом виде. То же самое относится и к библиотеке libjingle, созданной командой Google.

В данной вики есть специальная категория для программ, поддерживающих Jingle, где есть как клиенты, так и библиотеки.

Вызывающая сторона Принимающая сторона
Psi+ Gajim Pidgin QIP Infium Empathy Maemo 5 Kopete Spark Google Talk Coccinella Talkonaut Nimbuzz
Psi+ да да  ?[1] нет да Да[2] нет нет нет
Gajim да да да нет да да нет нет нет
Pidgin да да да Да[3] да да нет да нет
QIP Infium нет нет Да[3] Да[3] Да[3] нет Да[3]
Empathy да да да Да[3] да да нет да нет
Maemo 5 Да[2] да Да[2] нет да да да
Kopete
Spark нет нет нет нет нет
Google Talk нет нет  ?[4] Да[3]  ?[4] да да да
Coccinella нет нет нет нет нет нет
Talkonaut
Nimbuzz

Использование клиентами за NAT

jingle nodes relay - реализация Jingle supernode. Узел позволяющий клиентам, не имеющих возможности передавать голос напрямую. Копия запущена, например, на сервере Talkr.im.

История

До появления Jingle ситуация с поддержкой голоса, видео и других p2p потоков была следующая: существовало несколько закрытых протоколов, используемых в закрытых клиентах, с одной стороны, и был разработан открытый стандарт TINS - с другой. Закрытые протоколы, помимо того, что были закрыты от сообщества, не всегда учитывали требования, необходимые для совместимости с уже существующими сетями на базе SIP, а открытый TINS имел недостатки, непозволяющие ему легко встраиваться в Jabber/XMPP клиенты.

Такая ситуация привела к расколу сообщества и XSF оказалась перед выбором:

  1. Рекомендовать всем клиентам реализовывать одновременную поддержку и XMPP и SIP для передачи голоса
  2. Сделать новый полноценный сигнальный протокол для XMPP

Опыт подсказывал, что не везде, где уже сделаны клиенты Jabber, можно реализовать двойную поддержку, поэтому XFS решило попробовать второй вариант и Joe Hildebrand вместе с Peter Saint-Andre начали разработку протокола, который бы обеспечил необходимую сигнальную функциональность и остался бы совместим с существующими стандартами. Кодовое название протокола стало Jingle ("звенеть")

После общения с разработчиками из Google стало понятно, что только появляющийся Jingle концептуально (и даже местами семантически) похож на сигнальный протокол используемый в приложении Google Talk. Тогда, ради совместимости, было решено согласовать эти два протокола и разработчики из Google стали входить в процесс разработки Jingle как соавторы.

Сейчас Jingle в основном идентичен протоколу используемому в GTalk, отличия заключаются в нескольких корректировках, основанных на откликах разработчиков приложений.

Jingle и SIP

Сигнальный XMPP протокол Jingle работает поверх только XMPP (без использования SIP) из-за того, что создавать и поддерживать клиенты реализующие два больших протокола вместо одного достаточно сложно. В цели разработчиков Jingle не входило заменить или выжить SIP, вместо этого они постарались сделать протокол таким, чтобы клиенты без особых сложностей могли входить в существующие SIP сети.

ToDo: уточнить, что именно в протоколе позволяет делать такой фокус, можно ли XMPP+Jingle клиент использовать как SIPPhone

Транспорт Jabber->SIP: см. Gtalk2VoIP

См. также

Ссылки

Примечания

  1. Вызов проходит и разговор начинается, но клиент разрывал соединение по таймауту
  2. 2.0 2.1 2.2 Соединение происходит успешно, однако, голоса не слышно
  3. 3.0 3.1 3.2 3.3 3.4 3.5 3.6 Результаты для старой версии QIP Infium
  4. 4.0 4.1 Клиент зависал при приеме звонка