# 行動通訊網路
###### tags: `資工系課程` `MCN`
## CH1
### The Telephone Network

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
交換機分級

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分開在不同線路

不過ISDN用時間切割的方式,每個時段傳不同channel的資料,所以邏輯上是out-of-band,但實體上還是同一條線路依照時間分割,不分開是因為沒有效益

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

### SS7 Protocol Suite
Data、network都是傳輸的過程,不會看到傳送的內容是什麼
DataLink: 確保訊息在鏈路上實現精確的端到端傳送
TCAP下層一定是SCCP,但ISUP底下有可能沒有SCCP也有可能有(在SSP確定地址的話,就不會用到sccp)

#### 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):** 大家都掛電話了

#### Call Establishment
Originating SSP:發起端的SSP
Alerting: 等待接起

#### Call Release
馬上回傳release的原因是,不能再收錢了,交換機會馬上把資源放掉,不用等到另一端的訊息。
但如果是接電話端掛斷電話,就不會馬上放掉,還是有calling端付錢。

#### 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
#### 範例一

#### 範例二
勿擾模式: 過濾電話服務,啟用後特定的時候陌生電話不會打進來

左圖為啟用服務/右圖非陌生電話可打進來

此為被過濾的陌生電話,轉接到語音信箱
### 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>

CS-X為IN的不同能力集
TYPE B:多方通話
TYPE A:像是0800 之類的
### Bellcore AIN Call Model

PIC就是state,是由交換機去偵測用戶的state
DP:
- BCP 暫停的地方,並將消息發送到另一個節點。
- DPs與triggers有關聯
- tigger列出一組標準和接收消息的節點地址。
Originating:撥號、Dialing:響鈴、on-hook:電話掛著
#### Detection Points & Triggers
DP 可以由一對多的操作及其關聯的triggers組成。
如果滿足,則暫停呼叫處理,並向相關接收節點發送消息。

### AIN OCM & TCM
AIN Call Model分成兩個部分
- OCM(Originating Call Model): 就是處理整個打電話端的確認及驗證,會控制通話到通話結束,因為交換機要負責計費。
- TCM (Terminating Call Model): 接電話端的,要看接電話端能不能接電話,有沒有在繳電話費,以及負責接電話
一定是OCM先跑才是TCM端跑
### Example of AIN Operations

1. SSP收到資訊(用戶撥號)
2. 執行 PIC,直到信息分析的 DP 到達
3. 調用trigger邏輯
4. 分析各種觸發條件,滿足觸發條件3。

5. SSP 組裝所需的訊息以構建查詢消息
6. 該消息被編碼為 SS7 TCAP 消息,並發送到相關SCP
7. 先暫停call processing,要等到SCP處理完加值服務

8. SSP對TCAP訊息解碼
9. 執行特定的軟體模組來服務查詢
10. 模組生成參數創造出response
11. 傳送TCAP訊息給SSP

12. 解碼訊息,該訊息指示 SSP 應該在哪裡開始觸發call processing繼續處理。
13. 可能會在不同PIC恢復processing,像是如果是請scp索引最近的連鎖商家,就會在不同地方。也有可能用完加值服務查詢之類的就會結束。
### OCM of Bellcore AIN

NULL: 線路/中繼接口空閒(不存在呼叫),交換機提供監看。
Authorizing org attempt: switch驗證用戶播打電話的權限
Collecting info: switch收集用戶初始訊息
Analyzing info: 透過使用者撥出的號碼分析是否觸發特殊scp服務,或是區碼之類的
Selecting route: switch選擇發出的route
Authorizing call setup: 檢查收費限制
Call processing: 通知終止

Origination attempt: 撥號嘗試,用於用戶一拿起話筒就向 SCP 發送消息的情況(用於熱線類型服務)。
Info collected: 用於將消息發送到 SCP 的情況,除非撥打escape code。
Info analyzed: 用於在向 SCP 發送消息之前必須確定所撥數字類型的情況
Network busy: 用於向 SCP 發送請求溢出路由的消息(其中SSP已知的所有路由都忙)
### TCM of Bellcore AIN

NULL: 線路/中繼接口空閒(不存在呼叫),交換機提供監看。
Authorizing termination: switch會看用戶有沒有繳錢,才能決定要不要讓這通電話打通
Hunting facility: 確定呼叫終止接入的忙/閒狀態。
Termination attempt: 用於在 SSP 嘗試終止呼叫之前向 SCP 發送消息的情況。
### Example of Bellcore OCM


Info analyzed:發現調用者訂閱了 TDP 的觸發器。 將撥出的數字與訂閱用戶AIN 觸發器中的條件進行比較。
### Example of Bellcore TCM

SCP會檢查這個電話是不是在免打擾情況下可以接的電話

如果撥打者不是在免打擾情況下可以接的電話,SCP會發送send_to_resource msg指示 SSP 向呼叫者播放通知並收集其他數字的消息
SSP 將呼叫連接到負責播放此公告並收集收集附加數字的 IP。 接下來,IP 向 SSP 發送報告。
SSP 在 resource_clear msg 中將附加數字發送到 SCP。
### Basic Call State Model

跟前面的長相不太一樣,是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


Arm EDP-R: 因為前面的加值服務的執行需要,而需要額外的dp去進行比對
### ITU-T CS-1 BCSM


### CS-1 Limitations
- CS1假設只有一間電信業者,也沒有網路互通服務-No internetworking service
- 沒有多方通訊也沒有多媒體通訊
- CS-1 只有有限的機動性功能
### CS-2: CS-1 extension
- Handles call more than two parties
- 可以做與通話無關的服務,像是發簡訊
### CS-2 BCSM


有Suspended,還有一堆授權東西
### CS-2 Basic CU State Model
Basic Call-Unrelated State Model,像是寄簡訊

## 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

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

多了兩個節點(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


#### 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

因為只知道對方的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

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
易付卡用戶

打電話的時候要先去問VLR有沒有用戶的O-CSI,才可以啟用O-BCSM因為這樣才能比對有哪些加值服務,然後才會接收撥打的號碼,之後check credit確認還可以撥打幾分鐘,打完之後update credit更新餘額,或是一開始限制是講100秒,超過之後會做update credit確認還能不能繼續講,如果可以會回去繼續講。
### CAMEL Attach-Detach State

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

Change of Position context: 換完之後又會回去established
Routeing area update: 如果用戶移動長距離的話,就像換SGSN一樣,又會有新的state model,從IDLE開始直接到Change之後到established
### CAMEL – SMS

### Types of Number Portability

SPNP: 換服務業者的number portability可以換電信業者但號碼不換
LNP: 號碼可以應用在不同地方,像是申請市話號碼,從一個地方換到沒有很遠的其他地方還是可以繼續用。
SNP: 服務可以帶著走,從plain old telephone換到ISDN,換一個網路讓服務繼續。
像是從中華電信用一個門號,但在國外還可以用同樣的門號,就是申請漫遊服務。
NP/ENUM: 電話號碼轉換成ip address的方式
E.164 number: 國際通用電話號碼編號方式
### Four of SPNP Schemes


參考簡報p80 81
## CH3
### What is SIP?

SIP是對通訊兩方的資訊做有效率的交換,兩邊才開始傳輸多媒體資料,主要是幫助連線的建立,跟傳輸沒有關係
text-base:以文字形態存在
SDP:描述session特徵的格式
### SIP VS H.323
應用上SIP比H.323多,像是支援multimedia session,H.323很難做,因為希望傳輸訊息量少,也比較嚴謹,限制很多

SIP跟H.323對應

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

Location Server不是SIP Network裡的server
#### Proxy server


#### Redirect servers

### SIP Network Architecture

有可能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

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

response from to的部分是指這個連線,所以from to不用改
### Terms: Call & Session
- Call一定是兩方通話進行連線
- Session可以只是傳輸影片、影像進行的多媒體連線
- SIP Transaction

第三個例子像是register+一個200ok

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

如果是視訊通話就會有兩個media 如果只是語音的話可能就只有一個
### Message body Mandatory Fields

### SDP Example

### SIP&SDP Offer/Answer Model
Re‐INVITE: 如果server回覆超過一種codec,就要重新寄送
A mismatch: protocal都不支援,caller要發新的invite
### SIP Session Setup Example

#### Register

Max forward: 每次經過一個就-1,到0就不繼續了,代表也送不到了
Contact: 填自己,因為是註冊所以有問題就是找原本註冊的人
Expires: 這次註冊的有效期限是兩個小時(7200s)
#### 200 OK
註冊成功

Max forward: 不用複製前面的,因為有送到代表回程走原路回去就好,不需要用到
#### 1) INVITE(A‐>Pa)

#### 2) INVITE(Pa‐>Pb)

via新增了,加在最上面,max forward-1
#### 3) INVITE(Pb‐>B)

via又新增,max forward-1
#### 4) 180 Ringing(B‐>Pb)

前面的都copy,除了max forward不用,contact也不一樣
#### 5) 180 Ringing(Pb‐>Pa)

via被拿掉一個
#### 6) 180 Ringing(Pa‐>A)

via被拿掉一個
#### 7) 200 OK(B‐>Pb)

有content type
#### 8) 200 OK(Pb‐>Pa)

via被拿掉
#### 9) 200 OK(Pa‐>A)

#### 10) ACK(A‐>B)

有max forward
#### 12) BYE(B‐>A)

from還有to跟前面的不一樣
#### 13) 200 OK (A‐>B)

### Initial Registration


多了digest username=John
還有response,就是把server前面給的nonce用MD5 algorithm把字串做加密,加密後的字串就變response。
因為怕有人假冒身分,所以要做身分認證;registrar會回傳加密的演算法,之後user會回傳response裡面將user的key用該演算法做加密,之後registrar會比對user給的key跟資料庫裡的key是否一致,通過身分驗證。
### Updated Registration

F2的Contact: * 代表所有的ID都要離開
Expire=0代表unregister

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

### UAS Behavior
一定要的response line
- SIP version = SIP/2.0
- Status code
response一定要的五個header

### 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



### 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

### Redirect Servers

### Proxy Servers

### Loop Detect

Proxy4->Proxy1時proxy1在察看via會發現發生loop了,會回傳482
### Spiral

proxy1發現第二次傳回來了,但發現跟第一次的內容不同,就會繼續傳,但如果一樣就變成loop detect
### Record‐Route Header

跟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


INVITE會分成兩個,並在via的地方加上branch代表pc1或是pc2

就不會管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.

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

一開始route到p1

from是a-tag所以U1的local tag是a-tag remote tag是b-tag,U2則相反
然後U2沒有local sequence是因為他只是response原本u1的request不是自己新的指令
route set兩個也互相相反

發200 ok之後就變成confirmed的狀態,同樣沒發request所以u2沒有local sequence


發bye之後u2有request就有local sequence
u1也有remote sequence了

### B2BUA
會發出request(像是User agent client)也會接收request(像是user agent server),跟proxy server不同的是連線都會個別建立dialog state,因為上面有兩個user agent
### Location Service
想要獲得關於callee的繞送資訊,查詢要找的人到底在哪,就可以在這查
會跟Register有關,是由register提供資訊,因為註冊之後系統會記錄user
### SIP Protocol Structure

### 2 Kinds of Proxy Servers

### SIP INFO Method
The transfer of DTMF digits
The transfer of mid‐call signaling information
用控制訊號來傳分機號碼、數字鍵的資訊
### SIP Event Notification

有訂閱對方狀態之後就會通知對方的上線、下線狀態
### 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
舉例:


### SIP REFER Method
轉接功能

有多了兩個header: refer to, refer by
舉例:

原本跟joe打電話,之後要refer轉接給susan

然後就變成mary跟susan通話
### Call Forwarding

原本想跟user2 通話但user2忙線中,proxy server會轉到user3,可以注意看畫線部分
### 3GPP All IP Network

- 其中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

All IP 架構中將 MSC 的功能中的信令(signaling)以及媒體資料(media)分開成兩個元件:MSC Server 以及 MGW (Media Gateway)。MSC Server 只處理信令的部份,利用MGCP或MEGACO來控制MGW 來處理媒體資料的轉送。
#### Packet‐Switched Services

只有這樣只能上網不能打電話
#### Real‐Time PS Services

這樣就能建立通話
#### Interworking with PSTN
要跟PSTN通話就又要多其他元件
#### HSS


比HLR支援更多介面,畫線是新加的
#### MGCF & MGW

這裡的MGCF/MGW所扮演的角色,和之前MGCP/MEGACO中所介紹的網路元件類似。但在這裡,Media gateway除了界接PSTN外,也透過Iu介面和UTRAN連接。
#### MSC Server

在All IP網路中的MSC server只包含原本MSC中的call control和mobility control的部分。它負責控制UTRAN這一端的media gateway。所以說,MSC server + MGW就可包含一個完整的MSC。
#### MRF

這個元件類似於H.323網路中的MCU,負責多方通話的控制
#### T‐SGW & R‐SGW


### IP Multimedia Subsystem

Home Network: 看是哪個電信公司用戶就用哪個
visited Network: 當地的網路
I-CSCF: 這個可以查詢HSS的資料庫,查詢訂購的服務、是否為合法用戶...
S-CSCF: 提供服務用的,像是存加值服務觸發的條件
App.Server: 用來提供加值服務
### UE presence in IMS

首先用戶上線後會連到基地台,再由SGSN連線到Home network的HSS驗證用戶身分
驗證成功後就連上線,再到GGSN拿IP address做PDP context acitvate,還要知道待會連上線的P-CSCF的IP address,如何知道P-CSCF的IP address見第209頁,拿到之後看Registration Diagram那邊

補充: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

Public user identities:要打電話要透過public的,所以就是User的電話號碼
private user identities:用來做身分驗證
### Call Session Control Function

P‐CSCF: 負責訊息繞送
I-CSCF: 除了繞送外還要查詢HSS資料
S-CSCF: 除了繞送還要提供服務控制
#### Proxy CSCF

手機連上線後第一個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

#### I‐CSCF(THIG)
**T**opology **H**iding **I**nter‐network **G**ateway
就是在記錄S-CSCF時不是用IP而是用代碼紀錄,防止駭客攔截,所以P-CSCF也不知道S-CSCF的位置,只知道代碼,之後建立通話就需要每次都經過I-CSCF(THIG)查詢
#### Serving CSCF

### CSCF Roles & Features

### Registration Diagram

接續前面拿到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。

### Call Setup Diagram

要打電話時,打電話端會發送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

碰到用不同IP version的手機要互相連線
#### IMS ALG & TrGW
如果碰到用不同IP version的手機要互相連線,需要透過
- IMS ALG修改SIP Message body跟header,以及不同版本之間轉換做對應的綁定
- NAT-PT 將 IPv6 網絡中的地址與 IPv4 網絡中的地址綁定,反之亦然,以在兩個 IP 域之間提供透明路由,而無需對端點(如 UE)進行任何更改。
### Originating towards IPv4

到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

也是要到IMS‐ALG拿到IPv6的adress代表UE(B)
### Application Triggering

- SPT: Service Point Triggers (SPTs)
- iFC(initial Filter Criteria) - S-CSCF receives from HSS,就是註冊時會下載的那些加值服務資料
送進來的訊息會拆成好幾個SPT,並會到Filter Criteria去比對加值服務的觸發,觸發是跟iFC進行比對
訊息會被拆成:

#### Service Point Trigger

#### Filter Criteria

### Triggering for REGISTER

所以投影片第九頁才有講到third party,因為原本UE做Register訊息,會產生三種(第1,3,5步驟)不同的訊息,而原本UE送的在第三步200 OK就結束了。