如果你接觸過Voip,那麼你會經常碰到這些術語:Channel、 Call、 Call Leg (A leg 及 B Leg),還有 Bridged Call。是不是感覺暈乎乎的,不知所云?這裏解釋一下這些術語。
1. Call legs
當你拿起電話,接通一個號碼時,從電話交換機的視角來看,這路呼叫是分成兩部分的:
- 首先,在你撥號時,你的話機設備向交換機發起一條連接,並通知交換機你要呼叫的號碼
- 然後,交換機查找撥號規則,處理被叫號碼,然後向被叫終端發起一條連接
因此,在交換機上,有兩條獨立的連接存在:
- 一條是主叫方 originator (caller)發起的連接,通常稱爲ingress。
- 另一條是交換機發起的,連接被叫方 recipient of the call (callee),通常稱爲egress。
這兩條連接,都是call leg。call leg.指的是在終端與交換機之間,交換機的入局或出局連接。
1.1 A leg 與 B leg
A leg 和B leg 這兩個術語經常混淆。在嚴格意義上:
- A leg 描述ingress (即交換機入局的 call leg)
- B leg 拱橋egress (即交換機出局的 call leg)
在多數場景下,這意味着In most cases, this means that
- 主叫方的連接是 A leg
- 被叫方的連接是 B leg.
2. Channels
在FreeSWITCH或Asterisk的實現中,channel 就是描述call leg的抽象。
Channel由撥號方案控制。每個channel 有一個UUID,編程中可以通過UUID操作呼叫或報告呼叫詳情。
3. Calls
術語call 指從主叫到被叫間的端到端連接。
3.1 單legg call
顧名思義,只有一個call leg組成的call。
比如:接入voicemail時,主叫方連接的是交換機提供的APP。這時交換機並沒有生成B leg,因爲它沒必要橋接到第三方。
一些具體實例:
- IVR
- voicemail
- 會議
3.2 Bridged call
撥號方案通過某種方式,把A leg和B leg連接在一起,這時,我們稱建立一個bridged call(橋接)。
因此,在bridged call裏,兩條leg並稱爲一個call。
呼叫同一組織內的分機時,通常只經過一道交換。在現實世界裏,通常你接到的電話是來自你的SIP供應商的,不是主叫直接呼叫到你的設備上,期間可能需要多次交換,才能順利連接主叫和被叫。但是,在每一個交換機視角里,這些概念同樣適用。
橋接的雙方,可以不使用同一種協議,這爲通信交換提供了極大的便利,但這打破了端到端安全加密的要求。