---
# System prepended metadata

title: 行動通訊網路
tags: [MCN, 資工系課程]

---

# 行動通訊網路
###### 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就結束了。


