网站大量收购独家精品文档,联系QQ:2885784924

开源软交换系统freeSwitch架构设计分析.pdf

开源软交换系统freeSwitch架构设计分析.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
开源软交换系统freeSwitch架构设计分析

软交换FreeSwitch 架构设计分析(v1.0.6) 更多相关内容请参见:IT丫挨踢: 关怀IT人内心,关注IT人 职业发展的第一门户 可任意转载/ 引用,请说明出处:IT 丫挨踢网: 一 引言: freeSwitch 是一款开源的softswitch,其号称是世界上第一款跨平台的软交换系统,呵呵,这 个有点夸大了,其实业界巨头比如爱立信/诺基亚/华为/ 中兴的软交换系统肯定是支持跨平台 的,不过他们的系统大都运行在Unix/Linux 系统上居多,不过作为一个小团队开发出来这 款软件,也已经很不错了。 本文是作者业余时间分析的结果,目的是希望抛个砖头,和大家互通有无,加深对其整个架 构极其核心的设计理解,这样当大家在做业务侧时,如果能够对其整个架构的设计有所了解 的话,那么在做业务时可以会更好地驾轻就熟地设计业务系统,甚至去尝试扩展新的功能。 希望和各位共同讨论,理解不到之处,也请各位指出,共同提高。 开源软交换系统freeSwitch: . 本文将以RUP 的4+1 视图来描述freeSwitch 的架构设计。以freeswitch 1.0.6 版本为基础。 二 FS 逻辑视图 (Logical View) FS 在总体逻辑视图设计上大体上可分为核心core 和外围两大块,外围就是各个可以动态加 载/卸载的动态库,比如mod_sofia/mod_socket 等等。 其core 和外围之间通过API 通信,因为二者运行在同一个地址空间,所以可以直接通过API 的调用方式进行通信。 Core 的主要功能: 1. Core 利用了APR 库来完成很多的工作(APR 库是Apache Portable Runtime Library ,是 Apache 提供的一个跨平台的 C 库),完成内存管理/文件管理/线程管理/常用算法和数据 结构等等,让程序员从底层工作中解脱出来,类似于 C++的 STL,大家也可以在自己的 项目中利用ARP 库,可以大大节省工作,其实类似的还有一个比较出名的C 库:Glib ; (我 比较奇怪,fs 好像没看到定时器管理机制,比如应用程序要启动定时器,好像 core 没有 提供类似机制) 2. Event 事件的管理机制(其实就是消息通信机制)及对应的任务 3. 动态模块库(mod)的加载/卸载管理 4. 呼叫控制及session 的管理 5. 日志管理/ 时间管理/ NAT/config 管理/数据库存储管理/基本编解码能力等基本能力 6. 内核任务调度管理 ( 比如heatbeat 任务) 7. 其他库所提供的机制,为外围模块提供基本能力,比如基本的算法和数据结构等 外围模块(Mod_xxx): 可加载和卸载的外围动态库模块是 fs 设计上的一个特色,fs 的功能扩展主要是依靠外围动 态模块的增加来实现,core 提供基本的管理功能(内存/线程/文件/事件等),外围模块则提 供对应的可扩展的业务功能,比如 SIP 模块就是通过加载 mod_sofia.dll(linux 下是 mod_sofia.so)来实现,每个mod 在被加载后可以提供API 或者APP 进一步增强FS 的功能。 Core 和mod 之间通过mod 调用core 的API 实现交互。下图1 是FS 的基本逻辑视图。 图1. FS 逻辑视图 三 FS 开发视图 (Development View) 如上所述,fs 分为core 和外围mod 模块。Core 大部分功能依赖于第三方的库所提供的功能, 特别是APR 库。 FS 在代码开发上,把整个软件分为3 大部分: 1. Freeswitch 启动模块,是由freeswitch.c 来编译生成; 2. Freeswitch core 模块,由组成fs core 功能的各源代码块组成,core 最后被编译为静态库, 和启动模块一起链接为可执行程序 3. 可动态加载的外围mod 模块,这些是动态库,可以在fs 启动运行后动态地加载和卸载。 如下图2 是fs 的开发视图。 Freeswi

文档评论(0)

yaobanwd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档