SIP 180 Ringing İçinde RPID ile Connected Line Kimlik Güncelleme
RPID nedir? Remote-Party-ID, SIP provisional response'lar içinde karşı tarafın doğrulanmış kimliğini taşımak için kullanılan başlıktır. Özellikle SIP 180 Ringing message içinde, arayan tarafın ekranındaki bilgiyi aranan tarafın gerçek kimliği ile güncellemek için kullanılır. Yani 180 Ringing response içindeki RPID, connected line update işlemini yapar. Bu yazıda 180 Ringing response içinde RPID'nin teknik rolünü, RFC karşılıklarını ve P-Asserted-Identity (PAI) ile farkını örnek paketlerle inceleyeceğiz.
1. RPID (Remote-Party-ID) Teknik Tanımı
Remote-Party-ID başlığı ilk olarak draft-ietf-SIP-privacy-04 içinde tanımlanmıştır. Draft 2002'de expire olmuş ve yerini resmi standart olarak RFC 3325 P-Asserted-Identity almıştır. RFC 3325 şunu söyler: Bazı sağlayıcılar hala Remote-Party-ID kullanmaktadır ancak bu başlık P-Asserted-Identity ile değiştirilmiştir.
Format:
Remote-Party-ID: "Display Name" <SIP: user@domain>;party=calling|called;privacy=off|full;screen=yes|no
- party: Kimlik kime ait?
calling= arayan,called= aranan. 180 Ringing içinde geneldeparty=calledolur. - privacy:
offgöster,fullgizle. - screen:
yes= operatör doğruladı,no= doğrulanmadı.
2. SIP 180 Ringing ve Provisional Response Kavramı
RFC 3261 Section 21.1.2'ye göre 180 Ringing, aranan kullanıcının uyarıldığını bildiren geçici bir yanıttır (provisional response). INVITE sonrası early dialog içinde gönderilir.
180 Ringing message ile 183 Session Progress response farkı: 180 sadece çalıyor durumunu bildirir, 183 ise erken medya (early media) taşıyabileceğini belirtir. Her ikisi de kimlik güncellemesi taşıyabilir.
3. Neden 180 Ringing İçinde RPID? COLP İlişkisi
RPID'nin 180 içindeki ana kullanım amacı Connected Line Identification Presentation (COLP)'dir. Bu kavram RFC 4916 Connected Identity ile standardize edilmiştir.
Sadece basit bir isim gösterme değil, 3 senaryo vardır:
- Called Party Update: Hunt group aranır, çağrı asıl kullanıcıya yönlenir. 180 içindeki RPID arayanın ekranını günceller.
- Calling Party Update: Ters yönde arananın ekranını güncellemek için kullanılır.
- Yönlendirme ile Birlikte: RPID tek çözüm değildir. Yönlendirme nedenini göstermek için
Diversion [RFC 5806]veyaHistory-Info [RFC 7044]başlıkları da 180 response içinde kullanılır.
Yön Tablosu
| Yön | RPID party | Ne Güncellenir? |
|---|---|---|
| Arayan -> Aranan | calling | Arananın ekranındaki arayan bilgisi |
| Aranan -> Arayan | called | Arayanın ekranındaki aranan bilgisi (180 Ringing içinde) |
4. Gerçek SIP 180 Ringing Paketi - Satır Bazlı Analiz
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 10.0.0.10:5060;branch=z9hG4bK123
From: "1001" <SIP:1001@domain.com>;tag=abc
To: <SIP:1002@domain.com>;tag=xyz
Call-ID: 12345@pbx
CSeq: 1 INVITE
Contact: <SIP:1002@192.168.1.20>
Remote-Party-ID: "Satis" <SIP:1002@domain.com>;party=called;privacy=off;screen=yes
P-Asserted-Identity: <SIP:1002@domain.com>
Content-Length: 0
To:...;tag=xyz: Early dialog kuruldu.Remote-Party-ID: "Satis"... party=called: Arayana "Aradığın kişi artık Satis" mesajı.screen=yesproxy tarafından doğrulandı demek.P-Asserted-Identity: Aynı kimliğin RFC 3325 uyumlu versiyonu.
5. RPID vs PAI vs From vs Diğerleri
| Başlık | RFC / Draft | 180 Ringing'de Kimlik Taşıyabilir mi? |
|---|---|---|
| From | RFC 3261 | Hayır, güncellenmez |
| Remote-Party-ID | draft-ietf-SIP-privacy-04 | Evet, yaygın |
| P-Asserted-Identity | RFC 3325 | Evet, operatörler için zorunlu |
| History-Info | RFC 7044 | Evet, yönlendirme zincirini verir |
| Diversion | RFC 5806 | Evet, legacy yönlendirme |
Trust Domain Nedir? RFC 3324 ve RFC 3325'te tanımlanan, birbirine güvenen SIP proxy'lerin oluşturduğu ağdır. PAI ve RPID sadece bu domain içinde güvenilirdir. Domain dışına çıkarken Privacy: id ile gizlenir.
6. Uygulama: Asterisk PJSIP ve chan_sip
PJSIP (Güncel - pjsip.conf)
[endpoint-1002]
type=endpoint
trust_id_inbound=yes
send_rpid=yes
send_pai=yes
chan_sip (Legacy - SIP.conf)
[1002]
trustrpid=yes
sendrpid=rpid
Yealink: Account > Advanced > Caller ID Source = RPID + PAI + FROM
Operatör Notu: 【entity-Türk Telekom¦canonical_name=Türk Telekom】 IMS gibi operatörler RPID'i siler, sadece PAI kabul eder. En stabil yöntem: Trunk'a giden tarafta send_pai=yes, içeride her ikisini birden göndermektir.
7. Wireshark ile Tespit
Kullanabileceğin filtreler:
# Sadece 180 Ringing message
SIP.Status-Code == 180
# RPID veya PAI içeren 180 response
SIP.Status-Code == 180 && (SIP contains "Remote-Party-ID" || SIP contains "P-Asserted-Identity")
# Belirli numara
SIP.Remote-Party-ID contains "1002"
8. Çağrı Akış Diyagramı
sequenceDiagram participant A as Arayan 1001 participant PBX as PBX participant C as Aranan 1002 A->>PBX: INVITE To: 1000 (Grup) PBX->>C: INVITE C->>PBX: 180 Ringing + RPID: Satis party=called PBX->>A: 180 Ringing + RPID: Satis party=called Note over A: Ekran: Satis çalıyor C->>PBX: 200 OK PBX->>A: 200 OK
9. Karar Matrisi: Ne Zaman Ne Kullanmalı?
| Senaryo | Önerilen Aksiyon |
|---|---|
| Şirket içi IP telefonlar arası COLP | RPID + PAI birlikte gönder |
| Operatöre giden SIP Trunk | Sadece PAI |
| Grup / Queue'da ekran güncelleme | 180 Ringing içinde party=called RPID |
| Gizli numara | privacy=full + Privacy: id |
10. Sıkça Sorulan Sorular
RPID ile PAI arasındaki fark nedir?
RPID draft standarttır ve party parametresi ile yön bilgisi taşır. PAI, RFC 3325 ile gelen resmi standarttır.
Yealink neden RPID göstermiyor?
Caller ID Source ayarı FROM olarak kalmıştır. RPID + PAI + FROM yapın ve Connected Line Presentation ayarını aktif edin.
SIP trunk RPID geçirmiyor ne yapmalıyım?
Operatörler genelde siler. PJSIP'de send_pai=yes yaparak PAI gönderin.
Asterisk PJSIP send_pai ve send_rpid nedir?
send_pai giden 180 Ringing message içinde PAI oluşturur, send_rpid ise RPID oluşturur. Birlikte kullanılabilir.
Kaynaklar: RFC 3261, RFC 3324, RFC 3325, RFC 4916, RFC 7044, RFC 5806, draft-ietf-SIP-privacy-04
İç Link Önerisi: SIP INVITE nedir | SIP 183 Session Progress | P-Asserted-Identity | Asterisk Caller ID Yönetimi