sip协议
daitu3201
这个作者很懒,什么都没留下…
展开
-
SIP穿越NAT的rport机制
调试asterisk时发现从公网发来的INVITE的响应都不能正常返回到客户端,抓包发现响应都发到via头域中写明的那个port上去了,而实际asterisk是从NAT转换后的地址和端口接收的INVITE请求。最终发现需要在via中加入rport字段,使得asterisk使用rport机制路由响应。具体的RFC文档参见RFC3581。RPORT机制:客户端需要在top most via上带上rp转载 2018-03-30 11:05:31 · 254 阅读 · 0 评论 -
open source project 之 callback 函数
open source 软件 尤其是 做为 server的源码中,会经常看到很多带callback字眼的函数。随便在本人放开源软件的opensource目录中查找callback关键字:[zhang@localhost opensource]$ find .-wholename "*.c" | xargs grep -n --color=auto callback相关的打印真是不计其数。什么是ca...转载 2018-05-04 17:20:11 · 173 阅读 · 0 评论 -
freeswitch呼叫流程分析
freeswitch呼叫流程分析本文转载自http://www.cnblogs.com/MikeZhang/p/freeswitchCallFlow_20160907.html今天翻文档时发现之前整理的关于freeswitch呼叫相关的内容,写成博文分享出来也方便我以后查阅。整体结构图 FreeswitchCore模块加载过程freeswitch主程序初始化时会从modules.conf.xml文...转载 2018-05-17 17:42:21 · 2595 阅读 · 0 评论 -
freeswitch 内核研究笔记1
freeswitch 高性能技术特性:memory pool、task queue、event driven、multithread、hash、state Machine(内存池、多线程,任务队列,事件驱动,哈希,状态机)。内核启动流程:两个函数switch_core_init 负责核心的初始化apr_initialize(),switch_core_session_init,switch_cor...转载 2018-05-17 18:26:52 · 901 阅读 · 1 评论 -
freeswitch 媒体早期协商模式分析
从 wiki 上,学习到 freeswitch 的媒体协商分为早期协商跟延迟协商,简单的说,就是协商的时间点不同。早期协商: 是在一个 Inbound call 进来的时候,fs 就对其 SIP 消息中的 SDP 跟 inbound-codec-prefs 参数值进行匹配比较,并确认 lega 的编码方式延迟协商: 在收到 inbound call 的时候,先不做匹配比较,而是等到 outboun...转载 2018-05-17 18:57:46 · 1454 阅读 · 0 评论 -
FreeSWITCH关于穿越NAT的那点事儿
本文转载自https://blog.csdn.net/jhope/article/details/53217372NAT的种类:Full Cone NAT(全锥型NAT)、Restricted Cone NAT(限制锥型NAT)、Port Restricted Cone NAT(端口限制锥型)、Symmetric NAT(对称型NAT)。四种类型的区别请自行百度,网上讲的很详细,本地NAT的类别,...转载 2018-04-27 09:05:13 · 1690 阅读 · 0 评论 -
Creating a New Endpoint: Lifecycle of a Session
AboutFreeSWITCH endpoints are designed to create, handle and destroy media streams. Click here to expand Table of ContentsThis page describes sessions and channels from the point of view of writing a...转载 2018-05-17 23:25:11 · 278 阅读 · 0 评论 -
Asterisk 拨号计划之匹配规则和优先级详解
1. Asterisk拨号计划简介 自己查资料2. Asterisk配置 先添加SIP分机 801,用软电话注册分机后,修改801分机的context=test-inc ,因为我们下面要探究Asterisk 基于类似正则表达式的匹配以及include=>包含指令的优先级。在asterisk拨号计划配置文件extensions.conf 中加入如下拨号规则[test-inc]inc...转载 2018-05-05 15:18:02 · 549 阅读 · 0 评论 -
asterisk拨号规则
该文章转载自http://blog.sina.com.cn/s/blog_4f0389950100k7cm.html一、前言本文档以asterisk-1.4.32为基础写作而成,可能和其他版本有些区别。其中参考了一些别的书籍和文章。因为写的比较仓促,而且基本都是晚上写的,里面的内容逻辑性和语句没有仔细斟酌,就是想到什么写什么,难免有什么遗漏和错误的地方,大家发现请及时通知我修改。另外这是我第一次写...转载 2018-05-05 17:00:23 · 302 阅读 · 0 评论 -
CentOS 6.5 64位系统OpenSips 1.11部属配置
上一篇介绍了OpenSips在CentOS 64位系统下的编译过程,本篇将主要介绍部属与配置,因网络限制无法上传截图,涉及重要过程请注册红色字体部分1、安装opensips,在安装前先选取数据库模块,否则在后述数据库配置/usr/local/lib64/opensips/opensipsctl目录下找不到对应数据库文件make menuconfig -> Configure Compile ...转载 2018-05-18 18:50:43 · 271 阅读 · 0 评论 -
asterisk sip codec协商
正常的codec协商包<--- SIP read from UDP:192.168.4.18:5067--->INVITE sip:301@192.168.4.122 SIP/2.0Via: SIP/2.0/UDP192.168.4.18:5067;branch=z9hG4bK424774178From: "300"<sip:300@192.168.4.122>;tag=7...转载 2018-05-08 08:46:40 · 2389 阅读 · 0 评论 -
P2P NAT穿越
NAT 不仅实现地址转换,同时还起到防火墙的作用,隐藏内部网络的拓扑结构,保护内部主机。 NAT 不仅完美地解决了 lP 地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。 这样对于外部主机来说,内部主机是不可见的。但是,对于P2P 应用来说,却要求能够建立端到端的连接,所以如何穿透NAT 也是P2P 技术中的一个关键。由于nat的透明性,所以clienta-1和...转载 2018-05-22 16:26:05 · 381 阅读 · 0 评论 -
opensips架构图
原创 2018-06-30 14:42:14 · 2457 阅读 · 0 评论 -
sip信令超时机制
DIALOG当UA发送初始INVITE请求后,只有接收到失败响应才有可能建立DIALOG。通过callid,FROM域中的tag参数,TO域中的tag参数来唯一标识DIALOG。 FROM域中的参数由主叫添加,TO域中的参数由被叫添加。根据DIALOG的定义,只有当101-199或200消息中的TO域中带有tag参数时,此时才建立dialog。对通过101-199消息(目前一般是18×消息)建立的...转载 2018-06-27 16:38:09 · 4324 阅读 · 1 评论 -
icmp
icmp报文类型 1.查询 icmp回显请求和应答 ---> ip记录路由选项(ping程序基于icmp的回显请求和应答功能提供-r选项,将记录的地址存放在ip首部的选项部分) 远端主机生成RR选项 中间路由器对RR选项的处理 ICMP回显请求中的RR清单复制到ICM...原创 2018-07-14 15:34:44 · 191 阅读 · 0 评论 -
freeswitch配置文件目录结构
conf配置文件的目录结构如下: | |------autoload_configs/ 一般都是模块级的配置文件,每个模块对应一个。文件名一般以 module_name.conf.xml 方式命名。 | |------dialplan/ 定义xml拨号计划 | |------directory/ 它里面的配置文件决定了freeswitch作为注册服务器时哪些用户可以注册上...原创 2018-07-27 10:18:17 · 3010 阅读 · 0 评论 -
网关和路由器功能的有哪些不同
今天帮朋友设置宽带路由器时,发现在在“高级路由”设置中有两个选项:网关和路由器。对这两个选项有些混淆网关简而言之,网关是网络的进口和出口(网关还有其他功能,如协议翻译……),网关定义网络的边界。 路由器路由器使用一系列算法决定网络间的最短路径。路由器使用静态路由或动态路由来决定网络间的最短路径。静态路由需要管理员手动设置,而动态路由使用一些协议来动态发现网络间的路径并判断最短路径。通...转载 2018-05-04 17:02:33 · 11219 阅读 · 0 评论 -
解决xlite和freeswitch通话没有语音的问题
本文章转载至https://blog.csdn.net/hry2015/article/details/783888391. 概述本文解决如下问题:xlite之间已经正常的进行sip协议的交互,并且1008和1018已经呼通,但是1008和1018互相之间无法听到声音。主要涉及如下内容: 1. 语音不通的原因分析 2. SDP协议 2. NAT的问题 3. freeswitch如何实现NAT的穿越...转载 2018-04-26 17:40:14 · 4303 阅读 · 0 评论 -
Sofia SIP User Agent Library - "nua" - High-Level User Agent Module
Module Meta InformationThe nua module contains the user-agent library taking care of basic SIP User Agent functions. Its functionality includes call management, messaging and event retrieval.Contact:P...转载 2018-04-26 15:25:23 · 958 阅读 · 0 评论 -
ptime概述
官方给出的ptime的定义是:ptime gives the length of time in milliseconds represented by themedia in a packet。简单来讲就是一个数据包中媒体的时长,以毫秒为单位。例如:ptime:20就是定义为20毫秒。每种媒体的时间是不一样,例如:G711媒体时长默认20ms,G.726媒体时长默认是10ms,G.729媒体时长转载 2018-03-30 11:25:32 · 7569 阅读 · 1 评论 -
理解SIP的认证
1. 认证和加密 认证(Authorization)的作用在于表明自己是谁,即向别人证明自己是谁。而相关的概念是MD5,用于认证安全。注意MD5仅仅是个hash函数而已,并不是用于加密。因为hash函数处理后的数据没法进行反向恢复,这样子的话别人没法盗取你认证身份的口令。 加密(Encryption)的作用在...转载 2018-03-30 11:49:12 · 1050 阅读 · 0 评论 -
媒体与媒体处理
媒体与媒体处理:1 音频编码:从模拟信号变成数字信号的过程称为模数转换(AD),AD转换要经过采样,量化,编码三个过程。编码(code)就是指按照一定的规则将采样所得的信号用一组二进制或者其他进制的数来表示。经过编码后的数据便于在网络上传输,到达对端以后,再通过解码(Decode)过程变成原始信号,进而经过数模转换(DA)再恢复为模拟量,即转换为人...转载 2018-04-17 18:07:05 · 664 阅读 · 0 评论 -
switch_core_session_run函数处理流程分析
endpoint_interface = get_current_endpoint_interface_of_this_session;driver_state_handler = get_current_state_handler_of_this_endpoint_interface;LOCK_SESSION;WHILE (state = swtich_channel_get_state(ses...原创 2018-04-22 10:19:03 · 613 阅读 · 0 评论 -
APR内存池的学习与实现
APR内存池的学习与实现从读大学以来,一直到现在(大学毕业两年半了),在CSDN从来都是一个伸手党。。。今天突然觉得自己也应该为别人贡献点什么才对。于是,就以这章作为开篇吧。在很早之前,本人在学习Apache中的内存池的实现的时候,尝试过仿照其重新简单实现了下。主要目的是更快得理解它。这篇文章也是基于当初我自己重新写了一遍的代码,其原理是一致的。同时也参考了《APR内存池概述》这篇文章,并修正了其...转载 2018-04-18 11:04:49 · 427 阅读 · 0 评论 -
FreeSWITCH代码分析(一)
什么是FreeSWITCHFreeSWITCH 是一个可扩展的开源跨平台的电话平台,支持音频、视频、文本或任何其他形式的媒体使用的协议的路由与交互。它于2006年成立。FreeSWITCH也提供一个稳定的技术平台,可供许多电话应用开发利用的免费工具。FreeSWITCH 最初由Anthony Minessale在Brian West和Michael Jerris的协助下设计和开发。这三人原先都是as转载 2018-04-13 14:08:25 · 1830 阅读 · 0 评论 -
FreeSWITCH代码分析(二)
事件处理模型FreeSWITCH内部处理事件的基本数据结构和逻辑如下图: 1. freeSWITCH启动的时候,会创建3个EVENT_QUEUE,用来保存相关api、dialplan或呼叫触发的事件,队列长度为100000,每个队列的优先级不一样,平台根据事件的优先级将事件入队。注意:如果符合优先级要求的队列已经满了或其他原因造成入队失败,可能将事件放入到低优先级的队列[c1] ; 2. ...转载 2018-04-13 14:12:16 · 728 阅读 · 0 评论 -
视频直播秒开背后的技术与优化经验
[摘要]在视频直播中,首屏打开速度直接关系到用户体验,而这背后蕴含着许多技术点与实践经验,其中Group of Picture(GoP)设置、缓存参数优化格外关键。本文根据迅达云SpeedyCloud工程副总裁李雨来在见云沙龙的分享整理而成。 在视频直播中,首屏打开速度直接关系到用户体验,而这背后蕴含着许多技术点与实践经验,其中Group of Picture(GoP)...转载 2018-04-13 16:20:55 · 348 阅读 · 0 评论 -
FreeSwitch全局配置文件处理流程
在FS里,最先读取的配置文件是置于安装目录下的conf文件夹下的freeswitch.xml文件,在程序启动初始化阶段,会调用switch_xml_init()函数来完成该配置文件的读取和预处理工作。这里所说的预处理是在在FreeSwitch调用自己的xml解析器解析配置文件时,如果遇到文档标志为X-PRE-PROCESS,便会对相应的参数作出处理。例如下列三个XML文档元素:<X-PRE-...转载 2018-04-13 17:02:12 · 918 阅读 · 0 评论 -
FreeSwitch Event List
The list of events can be found in src/switch_event.c in a char array called EVENT_NAMES and is summarized as follows:Contents Event fields Core-UUID Event-Calling-File Event-Calling-Functio...转载 2018-04-19 23:19:13 · 5611 阅读 · 1 评论 -
Asterisk鉴权算法
客户端发送的鉴权信息如下:Digest username="103", realm="asterisk", nonce="51d89e6e", uri="sip:102@192.168.50.26", algorithm=MD5, response="e9754418dd7dbea9ba740001f8d62598"Asterisk鉴权算法:a1 = username:realm:secret ...原创 2018-05-09 16:54:25 · 573 阅读 · 0 评论 -
路由有关的SIP消息头的简单小结
一、SIP协议中定义的路由相关字段(Via、Route、Record-Route)1. Via:当UAC发起一个SIP Request消息时,消息经过的每一跳(包含发起方)都会在SIP消息中增加一个Via字段,内容为自己的地址信息,表示此消息通过此地址发往下一跳。为什么要增加Via字段来记录Request消息经过的地址呢?实际上这个地址信息将被作为Request消息对应的Response消息的路由...转载 2018-05-03 09:34:29 · 2259 阅读 · 0 评论 -
Socket:读写处理及连接断开的检测
作为进程间通信及网络通信的一种重要技术,在实际的开发中,socket编程是经常被用到的。关于socket编程的一般步骤,这里不再赘述,相关资料和文章很多,google/baidu即可。本文主要是探讨如何更好地进行socket读写处理,以及如何检测连接断开。首先,有以下几点需要注意:对于全双工的socket,同时读写是没问题的。比如,一个socket程序有两个线程,一个线程对socket进行读操作(...转载 2018-04-25 13:54:16 · 1365 阅读 · 0 评论 -
B2B在FreeSwitch中的呼叫流程
假设 1003 呼叫 10021003 向FS发送inivte消息:sofia模块收到sip消息后,回调 sofia_event_callback() 进入 sofia_handle_sip_i_invite() 为 1003 建立 session 与 channel ,进入 1003 的channel状态机。依次执行:1003 的 CS_INIT --> 1003 的 CS_ROUTING...转载 2018-04-21 17:04:33 · 722 阅读 · 0 评论 -
Freeswitch常见问题解决办法
FreeSwitch下配置DID的方法首先介绍下什么是DID? 翻译为中文为“直接向内拨号”,该服务是由电话公司提供的,它使用户能够直接拨打PBX或VOIP系统中的分机号码,而无需求助于总机或自动话务系统。现在要实现这样一个功能 - 通过手机或座机拨打一个号码(例如:01088888888),可以直接联系到VOIP系统(FreeSwitch系统)的1008这个用户。如下图所示:手机/座机 ----...转载 2018-04-21 17:14:17 · 16105 阅读 · 1 评论 -
FreeSwitch B2B 状态转换流程(1)
以1002 呼叫 1003 为例。Sip的状态流程1002向FS发起INVITE消息,经过一次认证通过,1002在此向FS发起INIVTE消息。此时FS所做的处理为:1. 捕获该sip消息,在sofia中有一个对于ua Event消息事件的枚举定义:typedef enum nua_event_e { ………. nua_i_invite;//这个值表明回调sofia_event_c...转载 2018-04-21 17:59:35 · 733 阅读 · 0 评论 -
利用***+nat解决客户voip被封锁的问题
最近有个私交不错的客户it人员问我一个问题。客户自己买了一台mosa的voip 语音网关用来跟其他分公司进行voip通话,节省长途+国际话费。据说安装后的前一个星期用得很愉快,一个星期后就不行了。看来无锡电信盯得很紧嘛:)。架构很简单 pbx---------voip gateway-----------internet-------------- voip gateway----pbx...转载 2018-09-21 10:32:36 · 1298 阅读 · 0 评论