域内的 XMPP 服务器到服务器路由

Posted

技术标签:

【中文标题】域内的 XMPP 服务器到服务器路由【英文标题】:XMPP server-to-server routing inside a domain 【发布时间】:2015-12-07 11:40:45 【问题描述】:

我正在学习即时消息系统并阅读有关 XMPP(RFC6120,6121,6122) 的信息。这些文档指的是客户端到服务器和服务器到服务器的通信(使用域名),但它们没有提到域中的服务器到服务器的路由。你能告诉我一些解决方案或文件参考这个问题吗?

ex:用户 A 想给用户 B 发送消息,用户 A 连接到 server1,用户 B 连接到与 server1 同域的另一台服务器(例如:example.com),那么 server1 如何知道哪个服务器(IP 地址) 与用户 B 有连接转发消息?

【问题讨论】:

【参考方案1】:

域内的路由不是 XMPP 功能,而是依赖于服务器的功能。这就是给定 XMPP 服务器的集群层所做的。

例如,在 ejabberd 中,基本上有一个会话表(可以存储在各种后端中),它引用用户资源以及该会话和 TCP/IP 连接所在的节点。

XMPP 规范没有定义如何构建集群,因为这是一个技术实现细节。

【讨论】:

你知道解决这个问题的算法或协议吗?例如:ejabberd 如何在集群中建立和维护会话表? ejabberd 使用 Mnesia 数据库复制在集群上复制会话表。

以上是关于域内的 XMPP 服务器到服务器路由的主要内容,如果未能解决你的问题,请参考以下文章

请教域用户能随便远程登陆域内的任何一台计算机的问题

搭建RPKI服务器

xmpp xml基本语义

动态路由协议之OSPF理论篇(下)(含虚链路的实验)

OSPF高级配置实现全网互通

XMPP详解