0401.Sofia SIP

由 jafucong 发布

Sofia 是 FreeSWITCH 使用的 SIP栈。 当您在配置中的任何位置看到“sofia”时,请考虑“这是 SIP 内容”。SIP 是一个疯狂的协议,如果你不小心,它也会让你发疯。继续阅读有关在 FreeSWITCH 配置中设置 SIP/Sofia 的信息。

mod_sofia 公开 Sofia API 并设置 FreeSWITCH SIP 端点。

端点

FreeSWITCH 端点代表一个完整的用户代理,并控制处理呼叫所需的信令协议和媒体流。端点类似于坐在您办公桌上的物理 VoIP 电话。它向外界讲述特定协议,例如 SIP 或 Verto,并为 FreeSWITCH 核心解释该协议。

配置文件

sofia.conf.xml 包含 mod_sofia 的配置设置

调试 Sofia-SIP

Sofia-SIP 组件可以输出各种调试信息。调试输出的细节由调试级别决定。该级别通常是特定于模块的,并且可以通过特定于模块的环境变量进行修改。所有模块还有一个默认级别,由环境变量#SOFIA_DEBUG 控制。

控制日志记录和其他调试输出的环境变量如下:

  • SOFIA_DEBUG 默认调试级别 (0..9)

  • NUA_DEBUG 用户代理引擎 (nua) 调试级别 (0..9)

  • SOA_DEBUG SDP Offer/Answer 引擎 (soa) 调试级别 (0..9)

  • NEA_DEBUG 事件引擎 (nea) 调试级别 (0..9)

  • IPTSEC_DEBUG HTTP/SIP 认证模块调试级别 (0..9)

  • NTA_DEBUG 事务引擎调试级别 (0..9)

  • TPORT_DEBUG 传输事件调试级别 (0..9)

  • TPORT_LOG 如果设置,在传输层打印出所有解析的 SIP 消息

  • TPORT_DUMP 文件名,用于从传输中转储未解析的消息

  • SU_DEBUG su 模块调试级别 (0..9)

定义的调试输出级别是:

  • 0 SU_DEBUG_0() - 致命错误,
  • 1 SU_DEBUG_1() - 严重错误,子系统级别的最小进度
  • 2 SU_DEBUG_2() - 非严重错误
  • 3 SU_DEBUG_3() - 警告、进度消息
  • 5 SU_DEBUG_5() - 信令协议动作(传入数据包,...)
  • 7 SU_DEBUG_7() - 媒体协议操作(传入数据包,...)
  • 9 SU_DEBUG_9() - 进入/退出函数,非常逐字逐句的进展

从 1.0.4 开始,这些参数可以通过以下方式从控制台控制

sofia loglevel <all|default|tport|iptsec|nea|nta|nth_client|nth_server|nua|soa|sresolv|stun> [0-9]

"all" 将改变每个组件的日志级别

日志级别 0 会关闭调试,要将它们全部关闭,您可以这样做

sofia loglevel all 0

要报告错误,您可以打开更详细的调试

sofia global siptrace on
sofia loglevel all 9
sofia tracelevel alert
console loglevel debug
fsctl debug_level 10

您还可以在 FreeSWITCH 客户端应用程序 fs_cli 中控制 SIP 调试输出。

sofia profile <profilename> siptrace on|off

在较新的软件版本上,您现在可以为所有配置文件发出 siptrace:

sofia global siptrace [on|off]

要将 SIP 调试详细信息放在 /usr/local/freeswitch/log/freeswitch.log 文件中,请使用

sofia tracelevel info (或任何其他日志级别名称或编号)

要在启动时自动将 SIP 详细信息放入日志文件,请将其添加到 sofia.conf.xml

<global_settings>
  ...
  <param name="tracelevel" value="DEBUG"/>
  ...
</global_settings>

以及 sip 配置文件 xml 文件的以下内容:

<profiles>
  ...
  <profile name="...">
    ...
    <param name="sip-trace" value="yes"/>
    ...
  </profile>
  ...
</profiles>

配置文件相关

访问控制列表

您可以使用 sofia 配置文件中的以下选项,通过 IP 地址限制 REGISTER 或 INVITE(或两者)的访问。

<param name="apply-inbound-acl" value="<acl_list|cidr>"/>
<param name="apply-register-acl" value="<acl_list|cidr>"/>

有关其他访问控制,请参阅ACL
列表配置见acl.conf.xml

禁用保持

禁止此配置文件上的所有呼叫将呼叫置于保持状态:

<param name="disable-hold" value="true"/>
强制 SIP 配置文件使用静态 IP 地址

默认的 FreeSWITCH 配置将自动确定本地网络接口的 IP 地址。如果要手动设置 IP(例如,如果您在单台机器上有多个网络接口),可以在 Sofia 配置文件中设置以下参数:

<param name="rtp-ip" value="192.168.1.3"/>
<param name="sip-ip" value="192.168.1.3"/>

其中 192.168.1.3 是您希望它绑定到的 IP。

以及在 sofia.conf.xml 文件中:

<param name="auto-restart" value="false"/>

这将防止配置文件在检测到网络地址更改时自动重新启动。


暂无评论

发表评论