# 行動通訊網路 ###### tags: `資工系課程` `MCN` ## CH1 ### The Telephone Network ![](https://i.imgur.com/COwvbxi.png) control signal(control layer),資料量較小;user traffic data(用戶通話資料 transport layer),資料量較大。 兩者在不同layer的原因:control signal比較重要,需要容錯率高的管線,若兩個合在一起成本會很高,因此兩個會分開。 End office switch: 有多個user共用一個switch,從通話端送封包時要送到的address會寫到end office的switch - 一般的通話是使用ISUP Messages,透過SS7網路的信號轉運點(Signal Transfer Point;STP),在發話端交換機(Originating Switch)與受話端交換機(Terminating Switch)之間傳送 - 需要智慧型網路服務(IN Services)時,則要發送SS7 TCAP信令,經由SS7網路轉送至提供該服務的服務控制點(Service Control Point;SCP),若此服務包含語音播放或是互動語音回應,SCP就會要求智慧型設備(Intelligent Peripheral;IP)播放語音給發話端,同時偵測發話端的按鍵,並將按鍵結果之DTMF回傳給SCP #### 5 Basic Components in Intelligent Networks整理 - SSP/Service Switching Point:交換機switching, signaling, routing - STP/Service Transfer Point: 主要負責routing路徑決定,signaling, routing - SCP/Service Control Point: service logic execution - SDP/Service Data Point: subscriber data storage, access - IP/Intelligent Peripheral: resources such as customized voice announcement, voice recognition, DTMF digit collection(收集user按鍵) ### Telephony Switches 交換機分級 ![](https://i.imgur.com/NjL9cEW.png) class 5:連接到家中電話,都沒有連到其他用戶 數字越小容錯能力要越高,因為是1連2 2連3...,如果1斷其他也都斷了 ### Signaling Systems 早期的系統相對簡略,所以不需要將control signal及user traffic分開,因此為in-band analog(類比) systems 現代的則是分開的channel - SS7 (Signaling System Number 7): Physical out-of-band signaling - ISDN (integrated Services Digital Network): Physical in-band/ Logical out-of-band,B channel - user traffic; D channel - signaling out of band: control signal跟user traffic分開在不同線路 ![](https://i.imgur.com/OrLXYmh.png) 不過ISDN用時間切割的方式,每個時段傳不同channel的資料,所以邏輯上是out-of-band,但實體上還是同一條線路依照時間分割,不分開是因為沒有效益 ![](https://i.imgur.com/4VssIiY.png) SS7因為有獨立線路,所以可以提供更多服務,像是Caller ID, toll-free calling, call screening,通常是大型企業用 ISDN則是企業用,可以同時很多通電話進行通話 analog則是家庭用戶用 補充:PBX(Private Branch eXchange)專用交換機,公司行號會購買的,因為內部通話不用錢。 ### SSP(Service Switching Point) The Switch System in Telephone Network - 確定呼叫目的地(可能由SCP建議) - 設置通話 - 根據IN呼叫模型處理來電 - 如有必要,通過SS7網絡向SCP創建查詢消息 ### STP(Signal Transfer Point) Serve as Router in SS7 Network - Global Title Translation: 一種Procedure:透過user的按鍵決定封包傳送到的地方,像是每個地區的編號不同,或是打0800會接TCAP Messages到service control signal(SCP) - 不知道SCP加值服務的address在哪,會把打的號碼送到STP由它來找 - 打比較新的號碼時,switch會找不到destination,所以會在封包中把號碼寫進去,然後由STP使用global title translation來找,並把號碼改成destination switch的address ### SCP(Service Control Point) 包含additional logic並可用於提供進階服務的網絡實體,SCP is a computer with real-time database - SCP基於可用的數據和服務邏輯,將告訴交換機需要採取哪些操作。像是轉接電話服務、0800電話 - database中儲存IN用戶的routing資訊 - 通過在SCP上執行不同的服務邏輯來提供不同種類的IN服務 ### Special IN Components SMS/Service Management Syst: 會負責服務更新(對SCP) SCE/Service Creation Env.: Provide tools to assist in creating services in SCP NAP/Network Access Point: No IN function, just for access SS7 network ![](https://i.imgur.com/RJvjHdH.png) ### SS7 Protocol Suite Data、network都是傳輸的過程,不會看到傳送的內容是什麼 DataLink: 確保訊息在鏈路上實現精確的端到端傳送 TCAP下層一定是SCCP,但ISUP底下有可能沒有SCCP也有可能有(在SSP確定地址的話,就不會用到sccp) ![](https://i.imgur.com/jrUKPYV.png) #### MTP Levels 1 & 2 Level 1: 訂定類比轉數位的方式 Level 2: 負責處理一個 link 中如何傳送到網路中的下一個節點,監測兩點之間的傳輸錯誤(router to router) Level 3: 處理整個 signaling 網路的 routing 問題,也就透過先前提到的 STP 來當做中繼點(intermediate nodes)來傳送封包。 #### TUP and ISUP Telephone User Part (TUP): - Support Basic Call Set-up and Tear Down - TUP Handles Analog Circuits Only - Replaced by ISUP Gradually ISDN User Part (ISUP): - 設置、管理和釋放在終接線路交換機之間傳送語音和數據的中繼線 - 用於 ISDN 和非 ISDN 呼叫 <font color="red"><font size=5>必考</font></font> #### ISUP 用在交換機之間建立和斷開電話呼叫的協議 **Initial Address Message (IAM):** 一開始找對方的訊息 **Address Complete Message (ACM):** 找對方結束的訊息(找到了) **Answer Message (ANM):** 找到對方,對方電話接起來了 **Release Message (REL):** 有一方電話掛斷了 **Release Complete Message (RLC):** 大家都掛電話了 ![](https://i.imgur.com/GkYGQGS.png) #### Call Establishment Originating SSP:發起端的SSP Alerting: 等待接起 ![](https://i.imgur.com/YiCvcSj.png) #### Call Release 馬上回傳release的原因是,不能再收錢了,交換機會馬上把資源放掉,不用等到另一端的訊息。 但如果是接電話端掛斷電話,就不會馬上放掉,還是有calling端付錢。 ![](https://i.imgur.com/kyEHpZc.png) #### SCCP(Signaling Connection Control Part) - Used as the transport layer for TCAP-based services - Global title translation (GTT) capabilities,就是STP的那個,決定封包的指定地址。當SSP不確定SCP(加值服務)的地址時,直接把號碼寫在SCCP的欄位,STP就查的到地址,再把SCCP的欄位寫入地址。 但如果確定地址的話,就不會用到sccp,就是通訊協定那張圖中的ISUP下層不用SCCP #### TCAP, MAP and INAP - TCAP (Transaction Capabilities Applications Part): Supporting the exchange of non-circuit related information between signaling points,跟SCP之間的連線,不是circuit表示不用一直保持連線,因為SCP是QUERY response 不用建立連線比較節省資源 - INAP (IN Application Part): 智慧型網路的相關資訊 - MAP (Mobile Application Part): 目前手機所在的位置,即使手機位置一直跑,還是可以找的到 ### IN (Intelligent Networks) IN Call Model有兩種不同組織下訂定的call model: Bellcore AIN Call Model、ITU-T IN Call Model(以下用AIN跟IN區分) - 沒有特定服務被稱為IN service,只能說是IN平台上提供的 - 有標準的程序跟通訊協定 ### IN Service Examples #### 範例一 ![](https://i.imgur.com/W5OhWjq.png) #### 範例二 勿擾模式: 過濾電話服務,啟用後特定的時候陌生電話不會打進來 ![](https://i.imgur.com/L6848SC.png) 左圖為啟用服務/右圖非陌生電話可打進來 ![](https://i.imgur.com/kxqidSH.png) 此為被過濾的陌生電話,轉接到語音信箱 ### The ITU-T IN Model 由三個主要元素組成 - Basic call processing: Conventional operation of call setup & disconnect,SSP負責的部分 - Hooks: the interface between BCP & IN services modules,SSP跟SCP之間溝通的介面 - IN service logic: Software modules to provide the IN services ### Capability Sets of IN <font color="red"><font size=4>可能會考TYPE A跟TYPE B服務的例子</font></font> ![](https://i.imgur.com/Ub6Sz8n.png) CS-X為IN的不同能力集 TYPE B:多方通話 TYPE A:像是0800 之類的 ### Bellcore AIN Call Model ![](https://i.imgur.com/Nte4RRa.png) PIC就是state,是由交換機去偵測用戶的state DP: - BCP 暫停的地方,並將消息發送到另一個節點。 - DPs與triggers有關聯 - tigger列出一組標準和接收消息的節點地址。 Originating:撥號、Dialing:響鈴、on-hook:電話掛著 #### Detection Points & Triggers DP 可以由一對多的操作及其關聯的triggers組成。 如果滿足,則暫停呼叫處理,並向相關接收節點發送消息。 ![](https://i.imgur.com/uS6mw9X.png) ### AIN OCM & TCM AIN Call Model分成兩個部分 - OCM(Originating Call Model): 就是處理整個打電話端的確認及驗證,會控制通話到通話結束,因為交換機要負責計費。 - TCM (Terminating Call Model): 接電話端的,要看接電話端能不能接電話,有沒有在繳電話費,以及負責接電話 一定是OCM先跑才是TCM端跑 ### Example of AIN Operations ![](https://i.imgur.com/M0UPnDz.png) 1. SSP收到資訊(用戶撥號) 2. 執行 PIC,直到信息分析的 DP 到達 3. 調用trigger邏輯 4. 分析各種觸發條件,滿足觸發條件3。 ![](https://i.imgur.com/v1r2MO0.png) 5. SSP 組裝所需的訊息以構建查詢消息 6. 該消息被編碼為 SS7 TCAP 消息,並發送到相關SCP 7. 先暫停call processing,要等到SCP處理完加值服務 ![](https://i.imgur.com/gKRQFjT.png) 8. SSP對TCAP訊息解碼 9. 執行特定的軟體模組來服務查詢 10. 模組生成參數創造出response 11. 傳送TCAP訊息給SSP ![](https://i.imgur.com/le9IKjC.png) 12. 解碼訊息,該訊息指示 SSP 應該在哪裡開始觸發call processing繼續處理。 13. 可能會在不同PIC恢復processing,像是如果是請scp索引最近的連鎖商家,就會在不同地方。也有可能用完加值服務查詢之類的就會結束。 ### OCM of Bellcore AIN ![](https://i.imgur.com/Vm83D5V.png) NULL: 線路/中繼接口空閒(不存在呼叫),交換機提供監看。 Authorizing org attempt: switch驗證用戶播打電話的權限 Collecting info: switch收集用戶初始訊息 Analyzing info: 透過使用者撥出的號碼分析是否觸發特殊scp服務,或是區碼之類的 Selecting route: switch選擇發出的route Authorizing call setup: 檢查收費限制 Call processing: 通知終止 ![](https://i.imgur.com/quOBQA5.png) Origination attempt: 撥號嘗試,用於用戶一拿起話筒就向 SCP 發送消息的情況(用於熱線類型服務)。 Info collected: 用於將消息發送到 SCP 的情況,除非撥打escape code。 Info analyzed: 用於在向 SCP 發送消息之前必須確定所撥數字類型的情況 Network busy: 用於向 SCP 發送請求溢出路由的消息(其中SSP已知的所有路由都忙) ### TCM of Bellcore AIN ![](https://i.imgur.com/tYHIYeL.png) NULL: 線路/中繼接口空閒(不存在呼叫),交換機提供監看。 Authorizing termination: switch會看用戶有沒有繳錢,才能決定要不要讓這通電話打通 Hunting facility: 確定呼叫終止接入的忙/閒狀態。 Termination attempt: 用於在 SSP 嘗試終止呼叫之前向 SCP 發送消息的情況。 ### Example of Bellcore OCM ![](https://i.imgur.com/i4CQF5w.png) ![](https://i.imgur.com/Mq4CCuw.png) Info analyzed:發現調用者訂閱了 TDP 的觸發器。 將撥出的數字與訂閱用戶AIN 觸發器中的條件進行比較。 ### Example of Bellcore TCM ![](https://i.imgur.com/Awk4Ido.png) SCP會檢查這個電話是不是在免打擾情況下可以接的電話 ![](https://i.imgur.com/yBrav5s.png) 如果撥打者不是在免打擾情況下可以接的電話,SCP會發送send_to_resource msg指示 SSP 向呼叫者播放通知並收集其他數字的消息 SSP 將呼叫連接到負責播放此公告並收集收集附加數字的 IP。 接下來,IP 向 SSP 發送報告。 SSP 在 resource_clear msg 中將附加數字發送到 SCP。 ### Basic Call State Model ![](https://i.imgur.com/28HjBpO.png) 跟前面的長相不太一樣,是DP在PIC上面,但功能其實沒什麼差 armed/disarmed: 就是指DP可以打開或是關閉,不讓DP去比對資訊 其實前面的bellcore也有這樣的功能 #### DP Arming Mechanism Two kinds of service requested: - Trigger detection points (TDPs) – Static: 根據用戶有買的加值服務,而用到的Detection points,有買才會叫dp比對號碼 - Event detection points (EDPs) – Dynamic: 針對加值服務的執行而被需要設定的條件 Two kinds of actions: - Request: 需要等到回應才會繼續執行 - Notification: Continues without waiting for a response DP Action: TDP-R, TDP-N, EDP-R, EDP-N #### Detection Point Processing ![](https://i.imgur.com/PR0fj5p.png) ![](https://i.imgur.com/84k2fWI.png) Arm EDP-R: 因為前面的加值服務的執行需要,而需要額外的dp去進行比對 ### ITU-T CS-1 BCSM ![](https://i.imgur.com/wEmxinh.png) ![](https://i.imgur.com/ndVw0zJ.png) ### CS-1 Limitations - CS1假設只有一間電信業者,也沒有網路互通服務-No internetworking service - 沒有多方通訊也沒有多媒體通訊 - CS-1 只有有限的機動性功能 ### CS-2: CS-1 extension - Handles call more than two parties - 可以做與通話無關的服務,像是發簡訊 ### CS-2 BCSM ![](https://i.imgur.com/YXLMZzl.png) ![](https://i.imgur.com/RlZeHcq.png) 有Suspended,還有一堆授權東西 ### CS-2 Basic CU State Model Basic Call-Unrelated State Model,像是寄簡訊 ![](https://i.imgur.com/yMjYAbb.png) ## CH2 ### Three Types of Mobility **Terminal Mobility** The terminal is connected to the network via radio interface and move around freely,舉例來說使用者走到不同地方可以接到不同的基地台 **User Mobility** The user can move from one terminal to another and register for incoming and outgoing calls to be made to and from this terminal,SIM卡可以從一台手機換到另一台手機中 **Service Mobility** The portfolio of services that a user has subscribed to follows the user as he/she roams to different networks.在台灣可以使用電話服務,跑到國外也可以用電話服務 ### Cellular Networks 一個大區域需要使用很多個小的radio cell(一個基地台範圍) small radio cell好處:基地台越小代表手機離基地台距離越短,需要傳輸的距離越短,耗費的能量也小、還有越小需要負責的手機數量也比較少,可以讓平均手機傳輸速率變高 3G cellular networks (the beginning of 2000s) - Multimedia communications and mobile internet 2.5G cellular networks (between 2G and 3G) - Use the existing frequency bands and radio interface of 2G networks - But offer 3G capacity and services ### GSM 2G網路 #### GSM Architecture ![](https://i.imgur.com/svEDh9d.png) MS:mobile station,2G手機才會這樣叫 MSC就像SSP的感覺,可能會有很多個,a telephony switch HLR會記錄有哪些用戶、用戶買了哪些服務、所有用戶的狀態、身分 VLR什麼手機造訪到MS底下,就會有紀錄、手機在哪個區域 GMSC連到外部網路的節點 BSS: base station subsystem,Manages the radio resources,又分為BSC and BTS #### Mobility Management 為了有Mobility的功能: GSM networks were divided into location areas,每個location area都會有unique identifier (LAI),且包含多個radio cells,在同個Location area下的基地台的LAI都相同。 每支手機都會監聽這些基地台的頻道,基地台會廣播他的LAI,當監聽的LAI改變,就代表手機換到另一個Location area,**做location update**,如果手機還在同一個MSC and VLR下此時會與VLR跟MSC通報,紀錄手機移動;如果在不同MSC and VLR下,則會跟HLR、MSC and VLR一併更新,且HLR還會跟舊的MSC and VLR講原先的手機已經離開了 #### 外部打電話流程 第一個一定先到GMSC,是對外窗口,且有連線到HLR的權力,並存取資料。用HLR去看要找的手機在哪個MSC底下,MSC就會去查VLR,看是在哪個Location area,對該區域的基地台發出要求,基地台用特定頻率廣播要找誰(paging),被廣播的手機就可以跟最近的基地台建立連線,VLR就可以記錄更仔細的手機在哪個基地台連線。 #### GSM Handover / Handoff Handover/Handoff:因為用戶移動,通話當中從一個基地台換到另一個基地台,是透過mobile terminals監聽尋找訊號比較強、穩定的基地台建立連線,此時VLR也會更新。 **平常沒在打電話的時候VLR不會記錄得太仔細,只會記錄在哪個Location area而已,在離開location area才會做location update** ### GPRS(General Packet Radio Service) 2.5G網路 用既有的GSM的網路做行動上網,可看成GSM的架構做延伸,但傳輸跟下載速率很慢 ### GPRS Architecture ![](https://i.imgur.com/GO2LkKo.png) 多了兩個節點(SGSN、GGSN)跟一個模組(PCU) SGSN:類似於MSC function in GSM,但是是一個router不是switch,會負責location updates and handovers(MSC+VLR的感覺);Several BSC can be connected to one SGSN GGSN:Acts as the gateway to external packet networks;Several SGSN can be connected to one GGSN,還會管理ip節點 擁有該業者的所有IP address、當用戶上線時會分配ip address給用戶的手機,還會追蹤目前用戶連到哪個SGSN 大部分情況下每個用戶上線時會拿到不同的IP address 如果有外部的封包要送過來,會負責route到正確的SGSN,用**IP Tunneling** Tunneling:因為IP Tunneling是GGSN負責管理,所以會把封包傳到GGSN,GGSN透過Table查詢該address在哪個SGSN底下,送過去不會以原有的IP address送,因為IP address會送回GGSN(IP address實際上是GGSN持有的),所以會把SGSN的Address包在封包外面,加上IP header,之後才透過router送到SGSN那,SGSN再把原本外面封裝的header拿掉,看原本封包欄位用table找該ip address,最後才做paging ![](https://i.imgur.com/g676YJr.png) ![](https://i.imgur.com/4fbBA9v.png) #### Mobility Management **GPRS network is divided into routing areas** 手機開機先選擇一個訊號強的基地台(Attach)連到PCU, 導到SGSN做身分驗證(Security),因為HLR有所有用戶的資料,確認後會記錄手機到哪個Routing area,還可以跟VLR做Location update,並會跟GGSN申請ip address(Routing Area Update) #### Session Management PDP Context Activation:網路環境啟用,拿到一個ip address、決定QoS參數 PDP Context Deactivation:網路離線 PDP Context Modification:傳輸過程中改變QoS參數 #### GPRS Data Transfer ![](https://i.imgur.com/1KQ1xRk.png) 因為只知道對方的IP address所以必須送到GGSN去查該IP address在哪個SGSN底下,SGSN才能用table對周遭基地台做paging,即使兩台都在附近也需要這樣。 ### GPRS Connection Model **Idle:** - MS is detached from GPRS - no mobility management - SGSN & HLR have no updated routing information - When the subscriber performs a detach, power off, or switching to GSM mode 最省電 **Ready:** - sending or receiving data, handles handover (cell tracking) - When sending or receiving data 最耗電 **Standby:** - MS is attached to GPRS, but not sending or receiving packets. (routing area tracking) - MS can receives paging requests, routing area updates - When no data has been sent or received for a certain period ### CAMEL Architecture ![](https://i.imgur.com/TbR4k5C.png) Home代表不同的電信業者的設備,所以要使用SCP會觸發不同家的。不過MSC當使用者在不同地區則是使用該地區的MSC。但如果要看該用戶有哪些加值服務需要觸發,還是得回到原先的HOME的SCP提供。負責記錄用戶訂閱哪些服務讓其他地區的call model可以比對的是CAMEL Subscription Information (CSI) 打電話流程:發話端A連上所在地的MSC,根據撥打的號碼送到收話端B的GMSC,此時的Home所屬是B的。所以B的HOME的GMSC會查到B的HLR,知道B現在在哪個地方,轉到所在地區的MSC ### CAMEL Subscription Information (CSI) 每個用戶都有的資料 內容有 - TDP List (DP to be armed)有哪些TDP要比對 - SCF address (SS7 address of SCF)加值服務要觸發哪個SCP,有SCP的address - Service key (service to be invoked when DP is met) - Default call handling (error handling, SCF not reached) 當觸發SCP失敗要怎麼辦,或是找不到SCP怎麼辦 - Others: DP criteria, CAMEL capability handling, CSI state, notification flag 這些資訊放在HLR裡 CSI有三種型態 - O-CSI (outgoing CSI) – held in visited network VLR。用戶上線後會從HLR下載存在Visited的MSC - T-CSI (terminating CSI) – **held in interrogating network GMSC** 存在GMSC - VT-CSI (visited terminating CSI) – held in visited network VLR。用戶上線後會從HLR下載存在Visited的MSC 語音留言的加值服務會在T-BCSM的地方觸發 當B沒有上線(開機),根本沒有T-BCSM那塊時,就會在GMSC的地方觸發加值服務 ### CAMEL Prepaid with Roaming 易付卡用戶 ![](https://i.imgur.com/Z1yu2vo.png) 打電話的時候要先去問VLR有沒有用戶的O-CSI,才可以啟用O-BCSM因為這樣才能比對有哪些加值服務,然後才會接收撥打的號碼,之後check credit確認還可以撥打幾分鐘,打完之後update credit更新餘額,或是一開始限制是講100秒,超過之後會做update credit確認還能不能繼續講,如果可以會回去繼續講。 ### CAMEL Attach-Detach State ![](https://i.imgur.com/QZYhURG.png) SGSN在做這部分 Attach request:上線後要先做比對,做身分驗證,比對完才能連上 Attach:比對完才能連上 Intra SGSN Routeing area update:在同個SGSN底下,只是換routing area Inter-SGSN Location Update:跑到外部的SGSN,要重新跑state model,從detached開始,但前面已經身分驗證過了,所以直接做routing area update,然後做change of position GPRS Session到attched 還會通知HLR換SGSN了 ### CAMEL PDP-Context State ![](https://i.imgur.com/OC8guJL.png) Change of Position context: 換完之後又會回去established Routeing area update: 如果用戶移動長距離的話,就像換SGSN一樣,又會有新的state model,從IDLE開始直接到Change之後到established ### CAMEL – SMS ![](https://i.imgur.com/1mSgJmt.png) ### Types of Number Portability ![](https://i.imgur.com/pdm8Da7.png) SPNP: 換服務業者的number portability可以換電信業者但號碼不換 LNP: 號碼可以應用在不同地方,像是申請市話號碼,從一個地方換到沒有很遠的其他地方還是可以繼續用。 SNP: 服務可以帶著走,從plain old telephone換到ISDN,換一個網路讓服務繼續。 像是從中華電信用一個門號,但在國外還可以用同樣的門號,就是申請漫遊服務。 NP/ENUM: 電話號碼轉換成ip address的方式 E.164 number: 國際通用電話號碼編號方式 ### Four of SPNP Schemes ![](https://i.imgur.com/InBK2p6.png) ![](https://i.imgur.com/N9JIUFW.png) 參考簡報p80 81 ## CH3 ### What is SIP? ![](https://i.imgur.com/BTjTqun.png) SIP是對通訊兩方的資訊做有效率的交換,兩邊才開始傳輸多媒體資料,主要是幫助連線的建立,跟傳輸沒有關係 text-base:以文字形態存在 SDP:描述session特徵的格式 ### SIP VS H.323 應用上SIP比H.323多,像是支援multimedia session,H.323很難做,因為希望傳輸訊息量少,也比較嚴謹,限制很多 ![](https://i.imgur.com/JGFbRWK.png) SIP跟H.323對應 ![](https://i.imgur.com/Gf1NFE3.png) Multipoint Control Unit做混音或是影像傳輸 ### SIP Network Entities User Agent (UA): - User Agent Client ‐ Initiate SIP Request 撥打的 - User Agent Server ‐ Accepts or rejects call 接電話的 Network Servers: - Registrar (as UAS) 接受user發送註冊訊息的server - Proxy 負責做封包訊息的繞送、網路的管控 - Redirect Server (as UAS) 幫訊息轉向的server ![](https://i.imgur.com/UYIrCFM.png) Location Server不是SIP Network裡的server #### Proxy server ![](https://i.imgur.com/6sg1kSg.png) ![](https://i.imgur.com/x2pHt3f.png) #### Redirect servers ![](https://i.imgur.com/u4igvG2.png) ### SIP Network Architecture ![](https://i.imgur.com/BG9xPSb.png) 有可能proxy server直接把redirect的request送到更改過的位置,也有可能送回給caller 等知道彼此的ip位置跟資訊之後就都是直接兩點之間用RTP來連線 ### SIP Requests - **REGISTER:** Log in and register the address with a SIP server(Registrar server) - **INVITE:** Initiate a session - **ACK:** ACK only when receiving the **final response** (做好或是不要做才是final response) - **BYE:** Terminate a session 掛電話 - **CANCEL:** Terminate a pending request(只有invite會pending,撥通前取消才叫cancel,撥通後叫bye) - **OPTIONS:** Allow a UA to query another UA or a proxy server as to its capabilities(查詢能支援怎麼樣的服務) ### SIP Responses - **1xx: Provisional** ‐‐ request received, continuing to process the request; 當收到request就回應給對方說收到了 - **2xx: Success** ‐‐ the action was successfully received, understood, and accepted; 處理要求成功 - **3xx: Redirection** ‐‐ further action needs to be taken in order to complete the request; 要求轉向 - **4xx: Client Error** ‐‐ the request contains bad syntax or cannot be fulfilled at this server; 送來的request有錯誤的syntax或是要求無法被server滿足 - **5xx: Server Error** ‐‐ the server failed to fulfill an apparently valid request; 要找的人不在線上或是user agent server壞了 - **6xx: Global Failure** ‐‐ the request cannot be fulfilled at any server. request都送不出去,可能是網路掛了獲釋都沒有server能處理你的request ### SIP Session Setup Example ![](https://i.imgur.com/zmpM3yd.png) register成功回傳200 ok 100 trying是告訴送request說有收到了,不需要再重送,會有timer計時如果幾秒內沒收到100 trying就會重送invite 但教授好像說成是timer計時是決定要不要送100 trying,而原本100 ringinig的因為有先送ringing所以就不會再送100 trying 200 ok會帶有BOB的ip address或是編碼格式、phone number之類的,所以之後ACK就可以直接送給BOB不用經由proxy server invite之後還要送ACK是因為等callee送出200 ok之後會預留資源等待,但就一直等,如果alice沒收到200 ok就會讓兩方都一直在等待,造成資源浪費,如果bob沒收到alice的ACK就會重送200 OK也知道不用保留資源了 ### SIP Message Format ![](https://i.imgur.com/akTraTe.png) response from to的部分是指這個連線,所以from to不用改 ### Terms: Call & Session - Call一定是兩方通話進行連線 - Session可以只是傳輸影片、影像進行的多媒體連線 - SIP Transaction ![](https://i.imgur.com/gbJkv4F.png) 第三個例子像是register+一個200ok ![](https://i.imgur.com/2rHQljf.png) transaction計算 ### Headers contact Header: Provides a URL for use in future communication regarding a particular session Via Header: 會記錄經過的路徑,避免封包產生迴圈;讓Response可以走相同的路徑 前兩個是general header Entity Headers: 跟message body資訊有關的,像是長度、格式、encoding方式 ### Usage of SDP with SIP SIP提供建立多媒體訊息交換的機制 SDP提供結構化的語言來描述Session參數 ### The Structure of SDP ![](https://i.imgur.com/RGMnMDF.png) 如果是視訊通話就會有兩個media 如果只是語音的話可能就只有一個 ### Message body Mandatory Fields ![](https://i.imgur.com/or7WoBL.png) ### SDP Example ![](https://i.imgur.com/KPZnMKt.png) ### SIP&SDP Offer/Answer Model Re‐INVITE: 如果server回覆超過一種codec,就要重新寄送 A mismatch: protocal都不支援,caller要發新的invite ### SIP Session Setup Example ![](https://i.imgur.com/JLFqo4q.png) #### Register ![](https://i.imgur.com/B6faF53.png) Max forward: 每次經過一個就-1,到0就不繼續了,代表也送不到了 Contact: 填自己,因為是註冊所以有問題就是找原本註冊的人 Expires: 這次註冊的有效期限是兩個小時(7200s) #### 200 OK 註冊成功 ![](https://i.imgur.com/5iWWxZ4.png) Max forward: 不用複製前面的,因為有送到代表回程走原路回去就好,不需要用到 #### 1) INVITE(A‐>Pa) ![](https://i.imgur.com/mIplj18.png) #### 2) INVITE(Pa‐>Pb) ![](https://i.imgur.com/T4MF5tA.png) via新增了,加在最上面,max forward-1 #### 3) INVITE(Pb‐>B) ![](https://i.imgur.com/WwpX2Ew.png) via又新增,max forward-1 #### 4) 180 Ringing(B‐>Pb) ![](https://i.imgur.com/FyVuloC.png) 前面的都copy,除了max forward不用,contact也不一樣 #### 5) 180 Ringing(Pb‐>Pa) ![](https://i.imgur.com/vctROSq.png) via被拿掉一個 #### 6) 180 Ringing(Pa‐>A) ![](https://i.imgur.com/GVMr50d.png) via被拿掉一個 #### 7) 200 OK(B‐>Pb) ![](https://i.imgur.com/NWg0rpG.png) 有content type #### 8) 200 OK(Pb‐>Pa) ![](https://i.imgur.com/o9hnF0J.png) via被拿掉 #### 9) 200 OK(Pa‐>A) ![](https://i.imgur.com/QtSi8kq.png) #### 10) ACK(A‐>B) ![](https://i.imgur.com/8K76UCL.png) 有max forward #### 12) BYE(B‐>A) ![](https://i.imgur.com/LFSLFcz.png) from還有to跟前面的不一樣 #### 13) 200 OK (A‐>B) ![](https://i.imgur.com/9aZyfAb.png) ### Initial Registration ![](https://i.imgur.com/LgpM5tK.png) ![](https://i.imgur.com/8ANsUQB.png) 多了digest username=John 還有response,就是把server前面給的nonce用MD5 algorithm把字串做加密,加密後的字串就變response。 因為怕有人假冒身分,所以要做身分認證;registrar會回傳加密的演算法,之後user會回傳response裡面將user的key用該演算法做加密,之後registrar會比對user給的key跟資料庫裡的key是否一致,通過身分驗證。 ### Updated Registration ![](https://i.imgur.com/rhbZ6tb.png) F2的Contact: * 代表所有的ID都要離開 Expire=0代表unregister ![](https://i.imgur.com/rnpCol8.png) F4是sweet幫watson註冊 ### UAC Behavior 一定要的request line - method - Request‐URI: initial Request‐URI set as the To field - SIP version = SIP/2.0 Request一定要的六個header ![](https://i.imgur.com/yHRvCz7.png) ### UAS Behavior 一定要的response line - SIP version = SIP/2.0 - Status code response一定要的五個header ![](https://i.imgur.com/5yhpHLV.png) ### CSeq Header - Retransmissions of the same request carry the same sequence number, but an INVITE with a different message body or different header fields (a “re‐invitation”) acquires a new, higher sequence number. (重傳一個一樣的request的sequence number一樣,但如果invite的message body或是header fields不同的話就要更高的sequence number) - ACK and CANCEL contain the same CSeq value as the INVITE request. - BYE request with higher CSeq value. ### UA to UA Call Flow ![](https://i.imgur.com/oqSenUr.png) ![](https://i.imgur.com/oGgjrxR.png) ![](https://i.imgur.com/CvQ3w7g.png) ### SIP OPTIONS Method **OPTIONS Request** - Determine the capabilities of a potential called party(問對方有支援哪些東西_ **OPTIONS Respons** Allow Header - Indicate the SIP methods that the receiver can handle Supported Header - Indicate the SIP extensions that can be supported ### Require Header ![](https://i.imgur.com/mHSzOhw.png) ### Redirect Servers ![](https://i.imgur.com/6a3llII.png) ### Proxy Servers ![](https://i.imgur.com/Y58cUZZ.png) ### Loop Detect ![](https://i.imgur.com/ooL39sZ.png) Proxy4->Proxy1時proxy1在察看via會發現發生loop了,會回傳482 ### Spiral ![](https://i.imgur.com/lv2kd5O.png) proxy1發現第二次傳回來了,但發現跟第一次的內容不同,就會繼續傳,但如果一樣就變成loop detect ### Record‐Route Header ![](https://i.imgur.com/Tqp33Q2.png) 跟via很像,也是記錄路徑,但差別是via在回程時會把路徑一層一層拿掉並丟掉,但record-route會留著路徑,讓下一次在request時可以走同樣的路徑 ### Route Header **Determine the request route** 跟Record‐Route Header不一樣,但會把路徑資訊複製並反向再存起來(因為record-route的最底下的地址是最開頭) ### Parallel/Sequential Search Parallel Search: 在別人打電話的時候,可能對方同時有手機、筆電、桌機都有上線,所以都會同時撥打,看哪個會接 Sequential Search: 先打給其中一種,沒接就換下一個,一步一步地尋找 接收到2xx or 6xx代表有一種接了,所以Parallel/Sequential Search都會停 ### Forking Proxy Parallel Search的proxy ![](https://i.imgur.com/sSJTFzv.png) ![](https://i.imgur.com/Z19K9fu.png) INVITE會分成兩個,並在via的地方加上branch代表pc1或是pc2 ![](https://i.imgur.com/VZZmbZs.png) 就不會管cancel的那個 ### Dialog A dialog identified at each UA with a dialog ID consists of - a Call‐ID value: the Call‐ID of the message - a local tag: the tag in the From/To field for UAC/UAS - a remote tag: the tag in the To/From for UAC/UAS. The dialog ID at each UA in the dialog is not the same. ![](https://i.imgur.com/XNEiTwm.png) local sequence number: 自己的sequence number remote sequence number: 對方的sequence number early state: 初始化的時候的state confirmed: 等確認對方接到電話,回200 ok才變成confirmed ### Loose Routing 差別是Route header要不要更新到Request‐URI裡面 Strict routing就是要,比較嚴謹,loose routing就不用,只根據route header傳送 ### SIP Dialogs and Routing ![](https://i.imgur.com/wnC28ru.png) 一開始route到p1 ![](https://i.imgur.com/gqFScV8.png) from是a-tag所以U1的local tag是a-tag remote tag是b-tag,U2則相反 然後U2沒有local sequence是因為他只是response原本u1的request不是自己新的指令 route set兩個也互相相反 ![](https://i.imgur.com/Vp88gag.png) 發200 ok之後就變成confirmed的狀態,同樣沒發request所以u2沒有local sequence ![](https://i.imgur.com/89yzcbE.png) ![](https://i.imgur.com/8CeLkuU.png) 發bye之後u2有request就有local sequence u1也有remote sequence了 ![](https://i.imgur.com/WjPvL1K.png) ### B2BUA 會發出request(像是User agent client)也會接收request(像是user agent server),跟proxy server不同的是連線都會個別建立dialog state,因為上面有兩個user agent ### Location Service 想要獲得關於callee的繞送資訊,查詢要找的人到底在哪,就可以在這查 會跟Register有關,是由register提供資訊,因為註冊之後系統會記錄user ### SIP Protocol Structure ![](https://i.imgur.com/Evd7faa.png) ### 2 Kinds of Proxy Servers ![](https://i.imgur.com/3epj8QF.png) ### SIP INFO Method The transfer of DTMF digits The transfer of mid‐call signaling information 用控制訊號來傳分機號碼、數字鍵的資訊 ### SIP Event Notification ![](https://i.imgur.com/os2Rau3.png) 有訂閱對方狀態之後就會通知對方的上線、下線狀態 ### SIP MESSAGE Method A new SIP method – MESSAGE - This request carries the actual message in a message body. - A MESSAGE request does not establish a SIP dialog 舉例: ![](https://i.imgur.com/ex1hhhV.png) ![](https://i.imgur.com/XDOHspW.png) ### SIP REFER Method 轉接功能 ![](https://i.imgur.com/SZtGb0B.png) 有多了兩個header: refer to, refer by 舉例: ![](https://i.imgur.com/4hprwX3.png) 原本跟joe打電話,之後要refer轉接給susan ![](https://i.imgur.com/f99PFKI.png) 然後就變成mary跟susan通話 ### Call Forwarding ![](https://i.imgur.com/IzcXARQ.png) 原本想跟user2 通話但user2忙線中,proxy server會轉到user3,可以注意看畫線部分 ### 3GPP All IP Network ![](https://i.imgur.com/fZ334aG.png) - 其中CSCF的角色類似於 SIP 中的 proxy server 的角色;而 HSS (Home Subscriber Server)則類似於 HLR 的角色。 - 藍色虛線以下的部分是指Release 4制定的範圍,以上的部分則是Release 5。 - Release 4 制定的部分,稱之為 Circuit Switched Domain;Release 5制定的部分,稱之為Packet Switched Domain。 - CSCF (Call Session Control Function) 主要是負責 Call Control 通話控制。MRF (Multimedia Resource Function)是作 Media Mixing, Play Announcement,支援Multi‐party Conferencing,類似 H.323裡面的MCU,Soft‐switch 架構中的 Media Server #### Circuit‐Switched Services 為release4 ![](https://i.imgur.com/x0PRcwD.png) All IP 架構中將 MSC 的功能中的信令(signaling)以及媒體資料(media)分開成兩個元件:MSC Server 以及 MGW (Media Gateway)。MSC Server 只處理信令的部份,利用MGCP或MEGACO來控制MGW 來處理媒體資料的轉送。 #### Packet‐Switched Services ![](https://i.imgur.com/q8YME98.png) 只有這樣只能上網不能打電話 #### Real‐Time PS Services ![](https://i.imgur.com/hycXL9W.png) 這樣就能建立通話 #### Interworking with PSTN 要跟PSTN通話就又要多其他元件 #### HSS ![](https://i.imgur.com/VYb0IvK.png) ![](https://i.imgur.com/OjLezBX.png) 比HLR支援更多介面,畫線是新加的 #### MGCF & MGW ![](https://i.imgur.com/gcQ4Xiu.png) 這裡的MGCF/MGW所扮演的角色,和之前MGCP/MEGACO中所介紹的網路元件類似。但在這裡,Media gateway除了界接PSTN外,也透過Iu介面和UTRAN連接。 #### MSC Server ![](https://i.imgur.com/jSXRk7L.png) 在All IP網路中的MSC server只包含原本MSC中的call control和mobility control的部分。它負責控制UTRAN這一端的media gateway。所以說,MSC server + MGW就可包含一個完整的MSC。 #### MRF ![](https://i.imgur.com/i9k7aFE.png) 這個元件類似於H.323網路中的MCU,負責多方通話的控制 #### T‐SGW & R‐SGW ![](https://i.imgur.com/VVlhkk8.png) ![](https://i.imgur.com/had7Y08.png) ### IP Multimedia Subsystem ![](https://i.imgur.com/NYpEBdN.png) Home Network: 看是哪個電信公司用戶就用哪個 visited Network: 當地的網路 I-CSCF: 這個可以查詢HSS的資料庫,查詢訂購的服務、是否為合法用戶... S-CSCF: 提供服務用的,像是存加值服務觸發的條件 App.Server: 用來提供加值服務 ### UE presence in IMS ![](https://i.imgur.com/ruMMmDV.png) 首先用戶上線後會連到基地台,再由SGSN連線到Home network的HSS驗證用戶身分 驗證成功後就連上線,再到GGSN拿IP address做PDP context acitvate,還要知道待會連上線的P-CSCF的IP address,如何知道P-CSCF的IP address見第209頁,拿到之後看Registration Diagram那邊 ![](https://i.imgur.com/34xNZ4j.png) 補充:UE就是用戶手機,是3G網路的稱呼,不叫MS 作法一(Use of DHCP (Dynamic Host Configuration Protocol): GGSN會先去問DHCP的server:1. P‐CSCF domain name 2. IP addresses of DNS servers,之後GGSN根據P-CSCF的domain name去問DNS server P‐CSCF(s)的IP addresses 作法二(PDP Context Activation signaling to the UE) P-CSCF的IP address本來就存在GGSN中,當用戶做PDP Context Activation時GGSN就會把內部儲存的資料傳給UE ### Identification of IM Users ![](https://i.imgur.com/R3vjyEm.png) Public user identities:要打電話要透過public的,所以就是User的電話號碼 private user identities:用來做身分驗證 ### Call Session Control Function ![](https://i.imgur.com/1XLcRfo.png) P‐CSCF: 負責訊息繞送 I-CSCF: 除了繞送外還要查詢HSS資料 S-CSCF: 除了繞送還要提供服務控制 #### Proxy CSCF ![](https://i.imgur.com/m4tdZx4.png) 手機連上線後第一個contact point 如果收到不正常的訊息(像是syntax error)行為才會像UE 功能: - 根據SIP meesage裡的home domain name把訊息forward到該home network的I-CSCF - Forward SIP messages from the UE to the SIP server (e.g. S‐CSCF) - 偵測到緊急電話,就直接繞到案發事件附近的S-CSCF #### Interrogating CSCF ![](https://i.imgur.com/gACdrtP.png) #### I‐CSCF(THIG) **T**opology **H**iding **I**nter‐network **G**ateway 就是在記錄S-CSCF時不是用IP而是用代碼紀錄,防止駭客攔截,所以P-CSCF也不知道S-CSCF的位置,只知道代碼,之後建立通話就需要每次都經過I-CSCF(THIG)查詢 #### Serving CSCF ![](https://i.imgur.com/sxP5JIc.png) ### CSCF Roles & Features ![](https://i.imgur.com/helLjO6.png) ### Registration Diagram ![](https://i.imgur.com/r8rKP6D.png) 接續前面拿到P-CSCF IP address之後,之後發送SIP register到P-CSCF,P-CSCF會看訊息裡的From, To,Call-ID,根據From欄位看你是哪家業者的用戶,送到該業者的I-CSCF去,之後才可以查HSS看漫遊是否被允許,之後看用戶有沒有特別的需求,I-CSCF會決定一個S-CSCF,之後把S‐CSCF的domain name傳給HSS記錄起來,並且下載用戶的profile(加值服務觸發的條件),最後送出加值服務的觸發給APP. Server。 ![](https://i.imgur.com/yeowNja.png) ### Call Setup Diagram ![](https://i.imgur.com/F9SEM4x.png) 要打電話時,打電話端會發送SIP Invite到P-CSCF,之後P-CSCF也知道UE的S-CSCF是誰,就會把訊息Forward過去,之後S-CSCF透過Message的To就知道是哪家業者,就會給該業者的I-CSCF去,之後I-CSCF問HSS用戶的S-CSCF,之後S-CSCF也知道該用戶的P-CSCF是誰,就會打過去。 ### IP Version Interworking ![](https://i.imgur.com/5lb6nfn.png) 碰到用不同IP version的手機要互相連線 #### IMS ALG & TrGW 如果碰到用不同IP version的手機要互相連線,需要透過 - IMS ALG修改SIP Message body跟header,以及不同版本之間轉換做對應的綁定 - NAT-PT 將 IPv6 網絡中的地址與 IPv4 網絡中的地址綁定,反之亦然,以在兩個 IP 域之間提供透明路由,而無需對端點(如 UE)進行任何更改。 ### Originating towards IPv4 ![](https://i.imgur.com/6Qn1cQC.png) 到S-CSCF時發現是要從IPv6到IPv4後,就會把訊息送到IMS‐ALG,之後IMS‐ALG會跟Trunking gateway要到IPv4的adress跟port number代表UE(A),之後再修改message,把訊息送給對方。 傳回來也是要到IMS‐ALG拿到IPv6的adress代表UE(B) ### Terminating from IPv4 ![](https://i.imgur.com/k9MJv1s.png) 也是要到IMS‐ALG拿到IPv6的adress代表UE(B) ### Application Triggering ![](https://i.imgur.com/TEyxbUm.png) - SPT: Service Point Triggers (SPTs) - iFC(initial Filter Criteria) - S-CSCF receives from HSS,就是註冊時會下載的那些加值服務資料 送進來的訊息會拆成好幾個SPT,並會到Filter Criteria去比對加值服務的觸發,觸發是跟iFC進行比對 訊息會被拆成: ![](https://i.imgur.com/0D418D7.png) #### Service Point Trigger ![](https://i.imgur.com/5aZ0C28.png) #### Filter Criteria ![](https://i.imgur.com/4DQpgq3.png) ### Triggering for REGISTER ![](https://i.imgur.com/A9zErrh.png) 所以投影片第九頁才有講到third party,因為原本UE做Register訊息,會產生三種(第1,3,5步驟)不同的訊息,而原本UE送的在第三步200 OK就結束了。