IMS架構中的注冊與會話流程:RTPEngine集成及消息路由詳解

目錄

S-CSCF 調用 RTPengine

整體路由

注意

IMS 注冊流程 和 IMS 會話流程 的區別

IMS注冊流程

IMS會話流程(如INVITE請求)

這種設計的原因

P-CSCF 調用 RTPengine


S-CSCF 調用 RTPengine

整體路由

UA a生成SDP offer,發送SIP INVITE請求(包含SDP offer),發送到P-CSCF,然后轉發給S-CSCF(因為已經經過了IMS注冊流程之后,就會直接P-CSCF到S-CSCF,不會經過I-CSCF詢問了),然后到I-CSCF,然后I-CSCF通過HSS查詢被叫的S-CSCF,然后轉發SIP給他,然后調用RTPengine的offer函數,RTPengine解析SDP offer(然后分配媒體端口;修改SDP中的IP地址和端口信息,以確保媒體流經過RTPEngine;可能調整編解碼器列表;創建內部會話狀態)然后返回修改的SDP給被叫的S-CSCF,然后將SIP INVITE轉發給被叫P-CSCF,P-CSCF轉發給UA b,UA b基于收到的offer和自身能力生成SDP answer,然后發送SIP 200OK(包含SDP answer)給被叫P-CSCF,然后P-CSCF將消息轉發給被叫S-CSCF,在轉發之前再次調用RTPengine的answer函數,解析SDP answer(驗證與之前offer的兼容性;可能進行必要的SDP調整;更新內部會話狀態;準備RTP/RTCP處理器)返回可能修改過的SDP answer給S-CSCF,然后將包含可能修改后SDP的200 OK轉發給呼叫方側的S-CSCF(根據via頭域),然后主叫S-CSCF將200 OK轉發給P-CSCF再轉給UA a,然后UA a接收200 OK響應之后發送ACK給其P-CSCF,然后到主叫S-CSCF,然后把ACK轉發給被叫S-CSCF,再到被叫P-CSCF,再到UA b。此時媒體會話建立RTPengine準備就緒,開始處理RTP/RTCP數據包,UA a和UA b之間的媒體流通過RTPEngine中轉。

注意

S-CSCF間的路由是基于SIP消息中的Via頭域:每個SIP請求經過的節點都會在Via頭域中添加自己的信息,響應消息會按照相反的順序進行路由。

主叫的S-CSCF在用戶注冊IMS網絡時就已確定:當用戶進行IMS注冊時,HSS會為其分配一個S-CSCF,并在后續的會話中使用這個S-CSCF。

I-CSCF確實參與了初始INVITE請求的路由,并且它的信息被添加到了Via頭域中。

雖然I-CSCF主要用于初始路由,但它仍然會處理返回的響應,因為它的信息在Via頭域中。 主叫S-CSCF的信息也在Via頭域中,所以200 OK響應會經過它,而不是直接從I-CSCF到P-CSCF。

IMS 注冊流程 和 IMS 會話流程 的區別

IMS注冊流程

UA -> P-CSCF -> I-CSCF -> HSS -> S-CSCF

在注冊過程中,I-CSCF確實先于S-CSCF接收請求,因為此時系統還不知道哪個S-CSCF負責該用戶。

I-CSCF查詢HSS以確定合適的S-CSCF,然后將注冊請求轉發給選定的S-CSCF。

IMS會話流程(如INVITE請求)

UA -> P-CSCF -> S-CSCF -> I-CSCF -> (被叫方的)S-CSCF

在已注冊用戶發起的會話中,請求首先到達用戶的S-CSCF,然后才到I-CSCF。

這是因為在注冊過程中,用戶已經被分配了一個S-CSCF,所有后續的會話請求都會先經過這個已知的S-CSCF。

這種設計的原因

注冊時,需要I-CSCF來幫助選擇合適的S-CSCF。 會話時,用戶已有指定的S-CSCF,可以直接處理請求,提高效率。 S-CSCF可以執行一些策略控制和路由決策,然后再將請求發送到I-CSCF以定位被叫方。

P-CSCF 調用 RTPengine

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44567.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

核密度估計KDE和概率密度函數PDF(深入淺出)

目錄 1. 和密度估計(KDE)核密度估計的基本原理核密度估計的公式核密度估計的應用Python中的KDE實現示例代碼 結果解釋解釋結果 總結 2. 概率密度函數(PDF)概率密度函數(PDF)是怎么工作的:用圖畫…

RDNet實戰:使用RDNet實現圖像分類任務(二)

文章目錄 訓練部分導入項目使用的庫設置隨機因子設置全局參數圖像預處理與增強讀取數據設置Loss設置模型設置優化器和學習率調整策略設置混合精度,DP多卡,EMA定義訓練和驗證函數訓練函數驗證函數調用訓練和驗證方法 運行以及結果查看測試完整的代碼 在上…

ubuntu顯卡驅動重啟后失效的解決辦法

寫在前方:ubuntu系統,顯卡重啟后驅動失效,顯卡不可用。網上沖浪之后得以有效解決,以下是解決方案 查看顯卡nvidia-smi;驅動失效消息: (base) rootnode:~# nvidia-smi NVIDIA-SMI has failed because it c…

AI大模型走進汽車車機,智駕將是未來

車機里的AI大模型在汽車行業中的應用越來越廣泛,主要體現在智能座艙和自動駕駛系統的深度融合上。通過將AI大模型應用于車機系統,可以實現更高智能化的人車交互體驗。AI大模型作為人工智能發展的核心引擎,正在成為汽車智能化發展的關鍵之一。…

基于顏色模型和邊緣檢測的火焰識別FPGA實現,包含testbench和matlab驗證程序

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 5.算法完整程序工程 1.算法運行效果圖預覽 (完整程序運行后無水印) 將FPGA仿真結果導入到matlab顯示結果: 測試樣本1 測試樣本2 測試樣本3 2.算法運行軟件版本 vivado2019.2 …

MySQL配置數據庫的連接命令

MySQL配置數據庫連接命令 在MySQL中,配置數據庫連接的命令涉及創建用戶、授予權限、配置主從復制等多個方面。以下是常用的命令及其用途: 創建用戶 創建一個新的數據庫用戶并為其設置密碼: CREATE USER usernamehost IDENTIFIED BY passwo…

mysql中的存儲過程

存儲過程的作用:有助于提高應用程序的性能。存儲過程可以不必發送多個冗長的SQL語句 廢話不說多,直接實操 ##實現num的相加 delimiter $$ CREATE PROCEDURE test1 () begindeclare num int default 0; -- 聲明變量,賦默認值為0select num20;end $$ delimiter ; …

計算機網絡高頻面試題

從輸入URL到展現頁面的全過程: 用戶在瀏覽器中輸入URL。瀏覽器解析URL,確定協議、主機名和路徑。瀏覽器查找本地DNS緩存,如果沒有找到,向DNS服務器發起查詢請求。DNS服務器解析主機名,返回IP地址。瀏覽器使用IP地址建立…

Kafka配置SASL認證

Kafka加密 Kafka認證方式 在本博客中我們使用SASL/PLAIN的方式來進行Kafka加密 環境準備 Kafka集群環境 請參考之前的Kafka集群搭建 kafka-broker1kafka-broker2 集群配置SASL/PLAIN認證 用戶校驗 修改server.properties 讓其支持Kafka的認證(每一個broker節點都需要修改這…

jail內部ubuntu apt升級失敗問題解決

在FreeBSD jail 里安裝啟動Ubuntu jammy系統,每次裝好執行jexec ubjammy sh進入Ubuntu系統后,執行apt update報錯。 這個問題困惑了好久,突然有一天仔細去看報錯信息,查看了(man 5 apt.conf) ,才搞定問題。簡單來說就是…

MySQL 數據庫(基礎)- 函數

MySQL 數據庫(基礎)- 函數 介紹 函數 是指一段可以被另一段程序調用的程序或代碼。也意味著,這一段程序或代碼在 MySQL 中已經給我們提供了,我們需要做的就是在合適的業務場景調用對應的函數,完成對應的業務需求即可…

python的簡單爬取

需要的第三方模塊 requests winr打開命令行輸入cmd 簡單爬取的基本格式(爬取百度logo為例) import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回應 #保存到本地 with open(&…

中國物流信息軟件系統(WMS等)行業概覽,2027年將達到235.1億元

導語 大家好,我是社長,老K。專注分享智能制造和智能倉儲物流等內容。 新書《智能物流系統構成與技術實踐》人俱樂部 完整版文件和更多學習資料,請球友到知識星球【智能倉儲物流技術研習社】自行下載 這份文件是《2023年中國物流信息軟件系統行…

【Python】下載與安裝

目錄 一、 下載安裝Python 1. 配置環境變量 2. 檢查是否配置成功 一、 下載安裝Python 在我上傳的資源可以免費下載!!! https://download.csdn.net/download/m0_67830223/89536665?spm1001.2014.3001.5501https://download.csdn.net/dow…

淺談后置處理器之JSON提取器

淺談后置處理器之JSON提取器 JMeter 的 JSON 提取器(JSON Extractor)是一個強大的后置處理器,它允許用戶從HTTP響應、數據庫查詢或其他類型的響應中提取JSON數據,并將這些數據存儲為變量,以便在后續的請求中重用。這對…

Mojo AI編程語言(三)數據結構:高效數據處理

目錄 1. Mojo AI編程語言簡介 2. 數據結構在數據處理中的重要性 3. Mojo AI中的基礎數據結構 3.1 數組 3.2 列表 3.3 字典 4. 高效數據結構的實現與優化 4.1 哈希表 4.2 樹結構 4.3 圖結構 5. 高效數據處理技術 5.1 并行處理 5.2 內存優化 5.3 數據壓縮 6. 實戰…

【Redis】哨兵(sentinel)

文章目錄 一、哨兵是什么?二、 哨兵sentinel文件參數三、 模仿主機redis宕機四、哨兵運行流程和選舉原理SDOWN主觀下線ODOWN客觀下線 五、 使用建議 以下是本篇文章正文內容 一、哨兵是什么? 哨兵巡查監控后臺master主機是否故障,如果故障了…

js項目生產環境中移除 console

1、terser-webpack-plugin webpack 構建的項目中安裝使用 安裝: npm install terser-webpack-plugin --save-dev 配置 在webpack.config.js文件中 new TerserPlugin({terserOptions: {output: {comments: false, // 去除注釋},warnings: false, // 去除黃色警告,co…

nx上darknet的使用-目標檢測-自定義訓練與制作預訓練模型

目錄 1 訓練yolov4-tiny 1.1 文件準備 1.1.1 Annotations 1.1.2 JPEGImages 1.1.3 labels 1.1.4 trained_models 1.1.5 classes.name 1.1.6 create_labels_txt.py 1.1.7 custom_training.data 1.1.8 get_labels.py 1.1.9 get_train_val.py 1.1.10 train…

python制作甘特圖的基本知識(附Demo)

目錄 前言1. matplotlib2. plotly 前言 甘特圖是一種常見的項目管理工具,用于表示項目任務的時間進度 直觀地看到項目的各個任務在時間上的分布和進度 常用的繪制甘特圖的工具是 matplotlib 和 plotly 主要以Demo的形式展示 1. matplotlib 功能強大的繪圖庫&a…