Kamailio實戰 版權信息
- ISBN:9787111712473
- 條形碼:9787111712473 ; 978-7-111-71247-3
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
Kamailio實戰 本書特色
這是資深網絡通信技術專家,FreeSWITCH-CN中文社區創始人,《FreeSWITCH權威指南》作者杜金房老師的又一力作,本書從實戰角度對Kamailio的使用、維護、路由轉發、WebRTC對接、性能和安全等進行深入解讀,內含大量實例。
本書可以視為《FreeSWITCH權威指南》的姊妹篇,秉承杜金房老師的一貫風格:庖丁解牛,代碼說話。本書既有系統大局觀,又有詳實的操作步驟,是學習Kamailio和SIP技術的寶典。
—— 宋利 上海交通大學教授
杜老師在項目開發和與客戶的交流中發現單機版的FreeSWITCH已經無法滿足需求,因此撰寫了本書。本書融入了杜老師豐富的Kamailio軟件開發經驗,他在書中列舉了大量Kamailio操作實例,還加入了FreeSWITCH、Lua等快速入門內容。本書是一本實用、詳細的Kamailio教程,一定會像《FreeSWITCH權威指南》一樣大受歡迎。
——張昊 中南大學計算機學院教授、博士生導師,騰訊云具價值專家(TVP)
2015年在聲網主辦的實時互聯網大會(RTE大會)上我認識了杜金房先生。他始終致力于開源電信項目的研究,在這方面筆耕不輟、著作等身。他在FreeSWITCH方面的很多書籍、文章已成為這個領域的基礎資料,幫助了不少電信和WebRTC領域的開發者。這本書對Kamailio相關知識的介紹深入淺出,相信對Kamailio有興趣的同行們能從中受益。
—— 趙斌 聲網創始人兼CEO
一本深入淺出介紹SIP基礎知識、Kamailio實戰的好書。一個誕生20年的成熟開源項目,現在終于有了介紹它的中文版圖書,強烈推薦給每一位對SIP感興趣的朋友,大家認真研讀,必有收獲。
——莊表偉 開源社理事
杜老師在互聯網音視頻和通信網語音技術體系方面有豐富的經驗與獨到的見解,作為騰訊云具價值專家(TVP),在業界有著廣泛的影響。本書從原理和實戰兩方面入手,從SIP出發,深入淺出地對Kamailio的基本原理、組件及高效使用進行了全面闡述,生動且不失深度,適合通信網開發及維護人員、互聯網音視頻從業者以及相關專業高校學生閱讀。
——王軍 騰訊云通信副總經理
杜老師是國內SIP和音視頻領域的專家,一直積極參與FreeSWITCH開源項目,并熱衷于在社區布道,使用過FreeSWITCH的朋友可能都讀過他的書。Kamailio作為SIP代理服務器,可以很好地幫助構建FreeSWITCH集群。杜老師的這本書非常棒,值得想要了解Kamailio、想要構建FreeSWITCH集群的朋友閱讀。
——趙加雨 釘釘副總裁,音視頻負責人
Kamailio實戰 內容簡介
本書涵蓋Kamailio核心概念、運行原理、基本配置、路由轉發邏輯、路由腳本撰寫、數據庫操作、性能測試、安全等內容。第2章和第3章深入講解Kamailio的配置文件、基本概念和核心組件,以幫助讀者深入理解Kamailio,并為后邊把Kamailio用起來打好基礎。第4-7章:分別介紹了KEMI、Kamailio的運行環境、Kamailio做路由轉發的方法,以及Kamailio中數據庫的操作與使用方法,同時配有大量的實際案例,這部分可幫讀者快速把Kamailio用起來。第8章用案例的形式進一步解讀了Kamailio常見的模塊及其用法,以及一些高級的話題,如SBC、媒體代理和拓撲隱藏、WebRTC相關的信令及媒體轉換等。第9章介紹與Kamailio性能相關的內容,包括構建高性能SIP服務器的注意事項以及Kamailio具有高性能的秘密。第10章分享了實際生產系統中常見的安全問題,并給出對應的解決方案。另外,為了便于讀者快速上手,本書還以附錄的形式對Kamailio安裝方法,以及FreeSWITCH、Lua、Docker入門知識進行了簡單介紹。
Kamailio實戰 目錄
目 錄
推薦序一
推薦序二
前言
第1章 Kamailio與SIP1
1.1 什么是Kamailio1
1.2 背景3
1.3 SIP5
1.3.1 SIP基礎6
1.3.2 SIP的基本概念和相關元素7
1.3.3 SIP的基本方法和頭域9
1.3.4 SIP URI9
1.3.5 SDP和SOA10
1.3.6 SIP承載14
1.3.7 事務、對話和會話14
1.3.8 Stateless與Stateful17
1.3.9 嚴格路由和松散路由18
1.3.10 Record-Route19
1.4 Kamailio基本架構19
第2章 理解Kamailio配置文件23
2.1 基本配置文件23
2.2 原生腳本27
2.3 Lua腳本32
2.4 Lua腳本的其他寫法38
第3章 Kamailio基本概念和組件40
3.1 core詳解40
3.1.1 全局參數部分40
3.1.2 模塊設置部分41
3.1.3 路由塊部分41
3.1.4 通用元素42
3.1.5 核心關鍵字46
3.1.6 核心值48
3.1.7 核心參數49
3.1.8 DNS相關參數60
3.1.9 TCP相關參數或選項61
3.1.10 TLS相關參數66
3.1.11 SCTP概述66
3.1.12 UDP相關參數66
3.1.13 核心函數67
3.1.14 自定義全局參數73
3.1.15 腳本語句73
3.1.16 腳本操作符75
3.2 其他概念和組件78
3.2.1 偽變量78
3.2.2 htable79
3.2.3 AVP80
3.2.4 模塊81
第4章 KEMI詳解83
4.1 KEMI Lua入口84
4.2 KEMI函數85
4.2.1 函數整型返回值規則85
4.2.2 函數返回0的情況86
4.2.3 模塊函數86
4.3 在C函數中導出KEMI函數86
4.4 KEMI和偽變量89
4.4.1 偽變量靜態名稱限制89
4.4.2 針對特定偽變量的函數90
4.5 核心和pv模塊中的函數91
4.5.1 核心中的常用函數91
4.5.2 pv模塊相關函數94
4.5.3 KSR.hdr子模塊96
4.5.4 特殊的KEMI函數99
4.6 原生腳本與KEMI對比100
4.6.1 函數名100
4.6.2 函數的參數100
4.6.3 停止當前腳本執行101
4.7 其他101
第5章 Kamailio運行環境與實例104
5.1 運行Kamailio104
5.1.1 環境準備104
5.1.2 在命令行上運行Kamailio105
5.1.3 將配置文件保存到宿主機113
5.1.4 使用Docker Compose管理
容器113
5.2 將SIP呼叫轉發到FreeSWITCH115
5.3 從簡單的路由腳本開始116
5.4 Kamailio命令行工具117
5.4.1 kamctl117
5.4.2 kamdbctl120
5.4.3 kamcmd121
5.4.4 kamcli122
5.4.5 sipexer124
5.5 Web管理界面127
5.6 調試與排錯130
5.6.1 使用sipdump模塊跟蹤SIP
消息130
5.6.2 其他SIP相關工具簡介131
第6章 使用Kamailio做SIP
路由轉發132
6.1 什么是路由132
6.2 基本路由轉發134
6.2.1 簡單、安全的路由轉發134
6.2.2 無狀態轉發134
6.2.3 有狀態轉發135
6.2.4 并行轉發135
6.2.5 串行轉發138
6.3 使用dispatcher模塊做路由轉發
和負載均衡140
6.3.1 基本用法140
6.3.2 dispatcher模塊142
6.3.3 優先級路由及備用路由144
6.3.4 按權重路由145
6.3.5 特殊參數145
6.3.6 從數據庫中加載146
6.4 呼叫從哪里來146
6.4.1 根據IP地址段判斷147
6.4.2 使用dispatcher模塊判斷148
6.4.3 使用permissions模塊判斷149
6.4.4 使用geoip2模塊判斷150
6.5 API路由151
6.5.1 通過HTTP查詢路由151
6.5.2 rtjson157
6.5.3 evapi161
6.6 在KEMI腳本中調用原生腳本
中的路由塊168
第7章 數據庫操作169
7.1 初始化數據庫169
7.1.1 PostgreSQL169
7.1.2 MySQL171
7.2 配置數據庫連接172
7.3 在路由時進行SQL查詢172
7.4 其他函數和偽變量174
7.5 常用數據庫表結構175
第8章 15個典型的路由示例177
8.1 通過號碼分析樹進行路由177
8.2 號碼翻譯179
8.3 低成本路由181
8.4 前綴路由184
8.5 動態路由186
8.6 縮位撥號188
8.7 通過別名數據庫路由189
8.8 運營商路由190
8.9 字冠域名翻譯192
8.10 用戶注冊和查詢193
8.11 向外注冊195
8.12 更多AVP示例198
8.13 話單200
8.14 SBC202
8.14.1 代理注冊202
8.14.2 NAT穿透206
8.14.3 代理媒體209
8.14.4 使用FreeSWITCH做B2BUA
模式217
8.14.5 拓撲隱藏218
8.15 WebRTC219
第9章 性能223
9.1 性能測試223
9.1.1 早期的性能測試223
9.1.2 KEMI性能測試234
9.1.3 使用VoIPPerf進行性能
測試235
9.2 拆解Kamailio高性能信令服務
設計238
9.2.1 懶解析238
9.2.2 內存管理240
9.2.3 并發和同步241
9.2.4 定時器和異步操作242
9.2.5 緩存242
9.2.6 異步處理243
9.2.7 其他243
第10章 安全244
10.1 基本安全手段和策略244
10.2 限呼245
10.2.1 限制User-Agent頭域245
10.2.2 限呼某些目的地246
10.2.3 限制高頻呼叫247
10.2.4 限制太多的錯誤鑒權248
10.2.5 限制并發呼叫249
10.3 TLS250
10.3.1 理解TLS證書及密鑰251
10.3.2 自簽名證書252
10.3.3 在Kamailio中配置TLS252
10.3.4 TLS連接測試253
10.3.5 自制CA根證書254
10.3.6 其他255
10.4 iptables256
10.5 其他安全建議和相關鏈接257
附錄A 安裝Kamailio258
附錄B FreeSWITCH快速入門262
附錄C Lua快速入門267
附錄D Docker簡介及常用命令275
附錄E 模塊索引表280
后記282
展開全部
Kamailio實戰 作者簡介
杜金房,FreeSWITCH中文社區創始人,FreeSWITCH內核代碼貢獻者,kamailio核心貢獻者、架構設計者。2001年畢業于煙臺大學,童年進入煙臺電信工作,負責交換機、網管系統維護、并開發了大量網管及辦公系統。經歷了電信改通信、通信改網通等一系列變革。2008年加入Idapted,開始使用FreeSWITCH,為國內多家大型企業提供相關的咨詢服務和解決方案。2011年和2012年兩次啊參加美國芝加哥大學舉辦的全球VoIP開發者大會并發表演講。