SIP - Model Penawaran / Jawaban

Penggunaan SDP dengan SIP diberikan dalam jawaban tawaran SDP RFC 3264. Jenis isi pesan default di SIP adalah application/sdp.

  • Pihak pemanggil mencantumkan kemampuan media yang ingin mereka terima di SDP, biasanya dalam INVITE atau ACK.

  • Pihak yang dipanggil mencantumkan kemampuan medianya dalam tanggapan 200 OK terhadap INVITE.

Penggunaan SDP SIP yang khas mencakup bidang-bidang berikut: versi, asal, subjek, waktu, koneksi, dan satu atau lebih media dan atribut.

  • Subjek dan bidang waktu tidak digunakan oleh SIP tetapi disertakan untuk kompatibilitas.

  • Dalam standar SDP, bidang subjek adalah bidang wajib dan harus berisi setidaknya satu karakter, disarankan menjadi s = - jika tidak ada subjek.

  • Bidang waktu biasanya disetel ke t = 00. SIP menggunakan bidang koneksi, media, dan atribut untuk menyiapkan sesi antara UA.

  • Bidang asal memiliki penggunaan terbatas dengan SIP.

  • Sesi-id biasanya dijaga konstan selama sesi SIP.

  • Versi ini bertambah setiap kali SDP diubah. Jika SDP yang dikirim tidak berubah dari yang dikirim sebelumnya, versinya tetap sama.

  • Karena jenis sesi media dan codec yang akan digunakan adalah bagian dari negosiasi koneksi, SIP dapat menggunakan SDP untuk menentukan beberapa jenis media alternatif dan untuk secara selektif menerima atau menolak jenis media tersebut.

Spesifikasi penawaran / jawaban, RFC 3264, merekomendasikan bahwa atribut yang berisi a = rtpmap: digunakan untuk setiap bidang media. Aliran media ditolak dengan menyetel nomor port ke nol untuk bidang media yang sesuai dalam respons SDP.

Contoh

Dalam contoh berikut, penelepon Tesla ingin menyiapkan panggilan audio dan video dengan dua kemungkinan codec audio dan satu codec video di SDP yang dibawa dalam INVITE awal -

v = 0 
o = John 0844526 2890844526 IN IP4 172.22.1.102  
s = - 
c = IN IP4 172.22.1.102 
t = 0 0 
m = audio 6000 RTP/AVP 97 98 
a = rtpmap:97 AMR/16000/1 
a = rtpmap:98 AMR-WB/8000/1 
m = video 49172 RTP/AVP 32 
a = rtpmap:32 MPV/90000

Codec ini direferensikan oleh nomor profil RTP / AVP 97, 98.

Pihak yang dipanggil Marry menjawab panggilan tersebut, memilih codec kedua untuk bidang media pertama, dan menolak bidang media kedua, hanya menginginkan sesi AMR.

v = 0 
o = Marry 2890844526 2890844526 IN IP4 172.22.1.110 
s = - 
c = IN IP4 200.201.202.203 
t = 0 0 
m = audio 60000 RTP/AVP 8 
a = rtpmap:97 AMR/16000 
m = video 0 RTP/AVP 32

Jika panggilan audio-only ini tidak dapat diterima, Tom akan mengirimkan ACK lalu BYE untuk membatalkan panggilan tersebut. Jika tidak, sesi audio akan dibuat dan paket RTP dipertukarkan.

Seperti yang diilustrasikan dalam contoh ini, kecuali jumlah dan urutan bidang media dipertahankan, pihak pemanggil tidak akan mengetahui secara pasti sesi media mana yang diterima dan ditolak oleh pihak yang dipanggil.

Aturan penawaran / jawaban dirangkum di bagian berikut.

Aturan untuk Menghasilkan Penawaran

Tawaran SDP harus menyertakan semua bidang SDP yang diperlukan (ini termasuk v =, o =, s =, c =, dan t =). Ini adalah bidang wajib di SDP.

Biasanya mencakup bidang media ( m = ) tetapi tidak harus. Baris media berisi semua codec yang terdaftar dalam urutan preferensi. Satu-satunya pengecualian untuk ini adalah jika titik akhir mendukung sejumlah besar codec, yang paling mungkin diterima atau paling disukai harus dicantumkan. Jenis media yang berbeda termasuk audio, video, teks, MSRP, BFCP, dan lain sebagainya.

Aturan untuk Menghasilkan Jawaban

Jawaban SDP untuk suatu penawaran harus dibuat sesuai dengan aturan berikut -

  • Jawabannya harus memiliki jumlah garis m = yang sama dengan urutan jawaban yang sama.

  • Aliran media individu dapat ditolak dengan mengatur nomor port ke 0.

  • Aliran diterima dengan mengirimkan nomor port bukan nol.

  • Payload yang tercantum untuk setiap jenis media harus merupakan subset dari payload yang tercantum dalam penawaran.

  • Untuk payload dinamis, nomor payload dinamis yang sama tidak perlu digunakan di setiap arah. Biasanya, hanya satu payload yang dipilih.

Aturan untuk Mengubah Sesi

Salah satu pihak dapat memulai pertukaran penawaran / jawaban lain untuk mengubah sesi. Ketika sesi diubah, aturan berikut harus diikuti -

  • Nomor versi baris asal ( o = ) harus sama dengan yang terakhir dikirim, yang menunjukkan bahwa SDP ini identik dengan pertukaran sebelumnya, atau mungkin bertambah satu, yang menunjukkan SDP baru yang harus diurai.

  • Penawaran harus menyertakan semua lini media yang ada dan harus dikirim dalam urutan yang sama.

  • Aliran media tambahan dapat ditambahkan ke akhir daftar m = line.

  • Aliran media yang ada dapat dihapus dengan menyetel nomor port ke 0. Saluran media ini harus tetap dalam SDP dan semua penawaran / pertukaran jawaban di masa mendatang untuk sesi ini.

Call Hold

Salah satu pihak dalam panggilan dapat menunda sementara pihak lainnya. Ini dilakukan dengan mengirimkan UNDANG dengan SDP yang identik dengan yang asli INVITE tetapi dengana = sendonly atribut hadir.

Panggilan tersebut menjadi aktif kembali dengan mengirim UNDANG lain dengan a = sendrecvatribut hadir. Ilustrasi berikut menunjukkan aliran panggilan dari penahanan panggilan.