Browsed by
Tag: voip

如何解决语音单通甚至双不通的问题?

如何解决语音单通甚至双不通的问题?

在前面的blog中,我们已经讨论了为什么会有语音单通问题。在这篇blog中,我们继续讨论如何解决这个问题。

正如我们看到的,sip电话(100)将自己的私有地址告诉给sip软终端(101),这就导致了语音单通问题。因此我们自然想到:为什么不将它的公共地址8.8.8.8告诉给sip软终端呢?如果它能做到这点,sip软终端自然可以将它的语音流发送给这个公共地址,路由器也会将这个语音流转发给sip电话,sip电话也就可以听到sip软终端侧的声音了。对吗?

非常正确!这是个很好的解决方案。但是我们接着需要问:sip电话(100)如何才能知道它自己的外网地址呢?

答案就是STUN。STUN是“Simple Traversal of User Datagram Protocol (UDP) through Network Address Translators (NATs)基于UDP协议对网络地址转换的简单穿越”的缩写。这是个非常拗口的定义啊。简单而言,STUN就是用来私网内设备获取外网地址的一种协议工具。

请参考下面这张图:

– STUN process

在SIP电话拨打电话之前,它先向STUN服务器请求获取外部地址。完成之后,SIP电话开始发起呼叫,它告诉对方说:喂,我是100,我的语音地址是8.8.8.8:100,请发送语音流给我

顺便说一下,在本文中一个公共地址由一个公共IP地址+一个端口号组成。例如“8.8.8.8:10000”,“8.8.8.8”是公共IP地址,“10000”是端口号。”8.8.8.8:10001″是另外一个不同的公共地址(因为虽然IP地址一样,但是端口变了)。

既然8.8.8.8是公共地址,因此SIP软终端毫无疑问能将它的语音流发送到这个地址。因此呼叫双方现在都能听到对方的语音。

几乎所有的SIP设备,无论是SIP电话还是SIP软终端,都能支持STUN协议。我们唯一需要知道的是设置STUN服务器地址。在我们的step by step文档中,我们针对X-lite给出了一个简单的示例:

https://www.myvoipapp.com/docs/faq/setup_ippbx_for_small_business_step_by_step/index_cn.html#faq_stun

支持STUN后,是否能解决所有的语音单通问题呢?

很不幸,不能。在多数情况下,STUN能很好的工作,但是它无法解决所有的语音单通问题。这取决于私网的类型。简单而言,取决于路由器(当然,在某些网络,也可能是防火墙设备)。

– Special network for STUN

请参考上面这张图。图中描绘了两个会话:一个会话是SIP电话向STUN服务器请求获取公共地址。另一个会话是SIP电话与SIP软终端之间的呼叫。

众所周知,路由器将维持私网地址与公网地址之间的映射关系。缺省情况下,大多数路由器对来自私网内同一个设备同一个端口的不同会话,会分配并维持同一个外部地址映射关系。因此SIP电话在这两个会话中,会有同一个外部地址。

但是有些路由器会为不同的会话分配不同的映射关系,也就是说SIP电话在这两个不同的会话中会有两个不同的外部地址对应,因此实际上在与sip软终端的对话中,SIP电话还是无法知道对应的外部地址。

如果STUN不能解决语音单通的问题,根本原因就是路由器或者私网类型导致。此时,最终的解决方案就是建立VPN网络,将所有的SIP电话和SIP终端至于同一个逻辑网络内。这就是另外一个讨论议题了。(补充说明:也有可能采用ICE协议解决私网穿越问题,但是不是所有的设备都能支持ICE协议。)

为什么会语音单通甚至双不通?

为什么会语音单通甚至双不通?

几乎所有的人在部署第一个VoIP网络时,都会遇到这个问题。我们经常会觉得困扰:为什么我听不到对方而对方却能听到我呢?为什么双方都听不到对方呢?

这个问题的根本原因在于:VoIP部署涉及两个不同的网络,通常是私网和公网(当然,也有部署在两个不同私网内的情况)。如果呼叫双方位于两个不同的网络内,“语音单通”问题就极有可能发生。请参考下面的图例,该图描绘了一个非常简单的VoIP网络:

语音单通问题网络拓扑

在这个简单的网络中,我们部署了两个VoIP设备:一个是SIP电话,电话号码是100。另一个是SIP软终端,电话号码是101。

SIP电话位于私网中,其私网地址是192.168.1.100,通过路由器与公网相连。路由器地址为8.8.8.8.

SIP软终端安装在PC中,PC接入到公网,地址为8.8.4.4。

那么,当SIP电话向SIP软终端发起呼叫,会发生什么情况呢?

SIP电话说:喂,我是100,我的语音地址是192.168.1.100, 请发送语音流给我。

SIP软终端回答说:没问题。我这是101,我的语音地址是8.8.4.4. 请把你的语音流发给我。

SIP电话将语音流发给SIP软终端。既然 “8.8.4.4 ”是公共地址,因此SIP软终端能成功收到SIP电话的语音流。也就是说,SIP软终端能听到SIP电话的语音了。

SIP软终端将它的语音流发送给SIP电话的地址“192.168.1.100″。可以看到,这个地址是个私网地址,位于公网内的SIP软终端实际上无法连接该地址,因此最终也就无法将语音流发送到这个地址上去。

最后,SIP软终端能听到来自SIP电话的语音,而SIP电话无法听到SIP软终端的语音。这就是个非常典型的语音单通问题案例。

那么,我们如何解决这个问题呢?待续 ……

 

miniSipServer稳定版本升级到V3.1.2

miniSipServer稳定版本升级到V3.1.2

在新版本中,主要进行了以下改动:

1、对于FXO外线类型,限制其同时呼叫数缺省为1。

2、更改了安装包流程。安装过程中将检测旧版本是否存在。如果当前目录下有旧版本,安装过程中将自动删除旧版本,然后才安装新版本。这么做是为了防止新版本使用旧版本的文件,导致运行不稳定的情况。

V2.10.4, V3.1以及V4.0版本升级

V2.10.4, V3.1以及V4.0版本升级

LTS版本升级到V2.10.4,解决一个SIP注册过程中的bug。其他版本(V3.x以及V4.x)也已经修正了这个bug。

Stable版本升级到V3.1版本,包含更多的特性,例如web服务器等,同时也修正了V3.0.x版本中的若干bug。

最重要的消息是:V4.0版本正式发布了!V4.0版本是支持跨平台的VOIP服务器软件,能支持Windows以及Linux(主要是Ubuntu)。在本Blog中,我们将继续介绍V4.0版本的相关信息。

V4.0版本即将推出……

V4.0版本即将推出……

miniSipServer V4.0版本即将推出。。。

V4.0版本是个非常重要的版本,其中最主要的特性是对Linux系统的支持!

是的,这个消息是真的!MSS V4.0可以原生地运行在Ubuntu/Kubuntu系统上,不需要WINE的帮助。从这个版本开始,MSS将是一个跨平台的、纯软件解决方案的SIP服务器(或者说VOIP服务器)。

目前已经完成了基本的开发工作,我们正集中进行系统测试。我们希望在本月底或者下月初正式推出V4.0版本。

对工信部政策的解读

对工信部政策的解读

去年底,工信部发布了一些政策,强调了VOIP业务在国内的管制特性,VOIP业务只能由特定的几个国有电信运营商运营。

陆陆续续地,国内有些客户来信问:还能使用VOIP吗?

对啊,还能使用VOIP吗? 我们认为不能简单地回答说可以或者不可以,应当具体情况具体分析。

毫无疑问,我们应当尊重当地政府的法律法规,每个国家都会对基础电信领域进行管制或者约束,这很正常,我们不应当对此有太多的抱怨。

从工信部的政策看,我们认为工信部约束的是“VOIP运营业务”,也就是说,一般人或者企业不能向公众提供VOIP业务,更不能从VOIP运营中获取不法收入。这对国内部分“回呼”类业务的提供者,可能会有影响,因为大部分回呼类业务都或多或少地进行了VOIP运营。

而对一般企业用户来说,在企业内部应用VOIP应该是不受影响的。第一,企业只是用VOIP进行企业内部沟通,没有对公众提供VOIP业务,更没有从中获取收入。第二,企业应用VOIP时,往往是使用企业内部的专网,不占用社会资源,对公众没有影响。

因此,对于绝大部分MSS的客户而言,我们认为没有必要担心,大家并没有违反国家的法律法规。到国内的电信运营商对VOIP业务并不积极,因此实际上国内没有真正意义上的VOIP运营商,考虑到这点,我们建议国内企业在部署VOIP时,采用以下方式:

传统PSTN网络 <—-> VOIP网关 <—-> MSS <—-> 企业内网用户

即,在传统的PSTN网络和企业内部VOIP网络之间,部署VOI网关设备进行转接。

2.9版本新特性介绍–集中的用户数据管理

2.9版本新特性介绍–集中的用户数据管理

2.9版本可能是MyVoipApp迄今为止开发时间最长的一个版本, 期间包含了若干重要的改动和优化.

这里要介绍的是一个新特性: 用户数据集中管理.

从本质上将, 这个特性没什么特别, 无非就是把用户数据统一存放中MySQL数据库中.  MSS有两种用户数据管理方式: (1) 本地存储 (2) 数据库存储. 20~100客户版只支持本地存储, 因为这些版本是为单纯的中小型企业设计, 模型越简单越好, 维护越容易越好. 而1000客户版则同时能支持这两种方式, 具备了非常大的弹性.

将用户数据集中到MySQL中进行管理后, MSS实际上就将”数据管理”和”呼叫控制”分离了. 理论上来说, MSS就具备了P2P的基础, 可以部署多个MSS服务器并共享同一数据, 提高整个系统的处理能力. 另一方面,  也可以充分利用MySQL数据库系统的优势(例如热备份/集群等), 系统的鲁棒性也大大提高.

可以说, 从2.9版本开始, MSS具备了进入大规模VOIP市场的能力. 我们也将持续改进,   为客户提供更多, 更好的产品.

轻松搭建即时通信系统

轻松搭建即时通信系统

miniSipServer释出最新的2.8版本后,增加了一个非常重要的功能:即时通信。现在,我们可以利用MSS和Xlite等终端,轻松构建企业内部自己的即时通信系统了。

另外一个非常重要的变化时,MyVoipApp的官方业务文档中,正式加入对中文的支持。以IM业务为例,中文文档几乎与英文文档同步推出。这充分反映了公司对大陆、香港、台湾等中文市场的重视和支持。

欢迎大家阅读指导文档并搭建自己的VOIP和即时通信系统:http://www.myvoipapp.com/docs/mss_services/instant_messaging/index_cn.html

如果您有任何疑问,可以直接发eMail给support@myvoipapp.com。该邮件地址提供中文支持。

新版本与回拨

新版本与回拨

昨天(2009-09-24)MyVoipApp释出了2.7版本。这个版本主要是对2.6系列版本的bug进行修正,同时对VoiceMail进行了增强,用户可以自定义、录制自己的greeting voice.

值 得中国市场用户关注的是:2.7版本中对Callback(即回拨)业务进行优化。在以前的版本中,媒体是经过MSS relay的,在新版本中,MSS不再relay媒体流,由gateway或者clients之间直接进行媒体交互。这样做的好处是,MSS的负荷非常 低,可以支持更大的回拨处理能力。

另外,以前的版本中,呼出第一路用户后,只播放了一小段提示语音;而在新版本中,对第一路用户会持续放music音,直到第二路用户应答。这种优化后的做法,提高了用户体验,在某种意义上,也增加了回拨的最终成功率。

Callback(回拨),可以吗?

Callback(回拨),可以吗?

国内用户问得比较多的一个问题就是:MSS是否支持回叫?这个问题与目前国内的VOIP应用环境紧密相关,相信国内有相当大比例的VOIP应用是集中在“回拨”领域。

MSS是否支持呢?对这个问题,回答是MSS支持Callback的基本功能。

我们先简要地回顾一下MSS CallBack业务的来源。MSS的Callback业务是来自于欧洲市场对老式SIP phone的一项特殊需求。在欧洲市场,有一些SIP phone只具备最简单的基本呼叫能力,甚至不能完成一些基本的呼叫前转类业务。这些sip phones自然更不可能完成“遇忙回呼”这样的功能。因此,客户要求MSS将终端状态上报给一个控制服务器,由该服务器向MSS发起指令,指示MSS发 起两路呼叫进行回拨。至于是遇忙回拨,还是前转呼叫,由该应用服务器来决定。

在后续的业务开发过程中,又加入了通话时长控制等特性。

Read More Read More