2014-11-25 138 views
0

当SIP会议,你通常有两种选择:SIP组播会议

  • paging所有目标(平行),并把它们放在一个会议
    • 优点:你得到的回答确认
    • 缺点:您需要一个会议桥软件去接收媒体,并单播到每一个目的地,这会导致同步问题和更高的负载
  • 使所有接收器默默地听multicast地址和端口用于RTP音频
    • 优点:媒体上的所有接收器同步
    • 缺点:你不知道谁是真正听

并行调用所有目标并向它们发送他们需要监听的多播地址和端口,有没有一种方法让所有的专业人员都可以使用?我们目前正在使用Asterisk,但我正在寻找FreeSWITCH或Kamailio/OpenSIPs,但运气不多。

回答

0

有没有这样的实现。

但是,您可以通过修改客户端软件来接受具有组播流的特殊SIP消息。

之后,当您希望它监听多播时,您已在dialplan中发送该流。

的Asterisk可以做组播没有任何问题

你也可以做派多播地址在SIP INVITE。如果客户端支持(大多数客户端不支持),则可以在下行方向使用多播rtp并在其他方向使用。

+0

是否可以只发送SIP INVITE而不启动流?现在我们通过让接收方在没有协商流的情况下确认INVITE而作弊,但我不知道这是否是正确的SIP实现。 – Metiu 2014-11-25 13:31:05

+0

您可以在第一次之后发送其他邀请(重新邀请)。当然,你可以通过SipAddHeader和程序软电话在邀请中添加标题以忽略流。 – arheops 2014-11-25 17:35:02

0

如果您不使用转码,FreeSWITCH将能够处理来自单个多核服务器的数百个同时会话。所以建立一些特殊的东西可能不值得。你还假设所有的监听器都与SIP连接,并且在整个网络中正确完成多播路由。在现实生活中,您可能会得到重复的RTP流,或者某些不接受组播流的用户,等等。所以,恕我直言,这是不值得的,一个正常的多点SIP会议将会很好。

+0

谢谢。我们管理网络和交换机,它都是本地的。多播的需要是因为一些扬声器在相同的空间输出,所以任何延迟都会被注意到(我们遇到了Asterisk和MeetMe的这些问题)。 – Metiu 2014-11-25 13:29:17

+0

那么,纯粹是单向会议?只有一个端点始终在说话? – 2014-11-25 18:45:31

+0

是的,这是一个PA/Paging系统,但为了安全起见,我们需要知道谁在说话 – Metiu 2014-11-27 15:14:10

0

也,在这里看到:https://wiki.freeswitch.org/wiki/Mod_esf

如果你的端点可以静态地听一个特定组播组和端口,您可以轻松地向他们发送组播RTP流PCMU。

+0

据我所知,这需要客户端处于我描述的第二个状态:侦听多播地址和端口并播放任何过来了。 Mod_esf只是将我的rtp单播流转换为多播流,而不向客户端发送SIP INVITE。 – Metiu 2014-11-27 15:16:45

+0

我想你可以用kamailio解决它,它将发送所需的SIP INVITE,并且freeswitch将发送媒体。如果你有预算,我可以在一月份帮忙。 – 2014-11-27 19:16:16