Hình 4.1: Hoạt động của RTCP
4.2. Các loại gói tin RTCP:
Chúng ta sẽ đề cập đến nhiều loại gói tin RTCP tơng ứng với những loại thông tin điều khiển khác nhau:
- SR (Sender report): Bản tin phía gởi, dùng để thông tin về trạng thái truyền và nhận của phía gởi tin.
- RR (Receiver report): Bản tin ngời nhận, dùng để thông tin về trạng thái nhận của phía nhận tin.
- SDES (Source description items): Thông tin mô các về nguồn gởi, bao gồm cả CNAME.
- BYE: Dùng khi thành viên nào đó thoát khỏi hội thảo.
- APP (Application specific functions): Xác định các chức năng phụ thuộc vào từng ứng dụng cụ thể.
Mỗi gói tin RTCP đợc bắt đầu với phần tiêu đề cố định tơng tự nh của gói tin RTP, tiếp theo là các thành phần cấu trúc, chúng có thể có chiều dài biến đổi tuỳ thuộc vào loại của gói tin, nhng phải giới hạn trong 32-bit.
Sự chuẩn hoá và các trờng có chiều dài cố định trong mỗi gói RTCP làm cho chúng có thể đợc lu trong ngăn xếp. Nhiều gói RTCP có thể đợc kết nối với nhau thành gói ghép (compound packet ), mà không cần sử dụng dấu phân cách giữa các gói RTCP, khi đa chúng xuống đóng gói ở các lớp dới. Ví dụ nh đóng trong các gói UDP.
Mỗi gói RTCP trong gói ghép có thể đợc xử lý một cách độc lập, không cần dựa vào thứ tự hoặc sự kết hợp giữa các gói. Tuy nhiên để thực hiện đợc điều này thì ta phải thiết lập một số ràng buộc:
- Các thông báo trạng thái (trong RS hoặc RR) phải đợc gởi đi định một cách thờng xuyên nhất có thể, điều này cho phép để cập nhật các thông tin trạng thái. Trong mỗi gói ghép RTCP, phải có 1 gói mang bản tin (RS hoặc RR). - Một ngời nhận mới cần nhận đợc giá trị CNAME càng sớm càng tốt. Điều
này giúp cho việc định danh nguồn gởi, từ đó có thể thực hiện đồng bộ giữa các thành phần (video/audio). Do vậy trong mỗi gói ghép RTCP cần phải có gói SDES chứa CNAME.
- Số các kiểu gói có thể chứa trong phần đầu tiên của gói ghép. Để giới hạn sự gia tăng của các hằng số định kiểu, giá trị này đợc chứa trong 2 Byte. Mỗi gói tin RTCP phải đợc gởi trong một gói ghép chứa đợc ít nhất 1 bộ các gói RTCP riêng lẻ đợc chỉ ra sau đây:
- Encryption prefix: tiền tố của phần mã mật.
Trờng này chỉ đợc sử dụng khi gói tin đợc mã hoá theo phơng thức mã mật đợc đề cập ở phần sau. Đây là một chuỗi 32-bit truyền kèm theo mỗi gói ghép. Nếu trờng đệm (padding) đợc truyền theo mã mật thì nó sẽ đợc thêm vào ở gói cuối cùng trong gói ghép.
- SR hoặc RR:
Gói RTCP đầu tiên trong gói ghép luôn là gói report packet, để xác định hiệu lực của phần header. Sự kiện này phải luôn đợc đảm bảo. Nếu trong tr-
ờng hợp không có dữ liệu đợc gởi hay nhận thì RR rỗng sẽ đợc gởi, thậm chí trong trờng hợp trong gói ghép chỉ chứa 1 gói BYTE.
- Additional RRs:
Khi số nguồn gởi các thông tin trạng thái vợt quá 31 (giá trị tối đa mà SR hoặc RR có thể chứa), khi đó gói RR sẽ đợc thêm vào sau gói report packet khởi tạo.
- SDES:
Một gói SDES có chứa CNAME Phải đợc thêm vào mỗi gói RTCP ghép. Còn một số các thông số về nguồn phát khác có thể đợc lựa chọn, tuỳ thuộc vào từng ứng dụng cụ thể.
- BYE or APP:
Một số gói RTCP loại khác có thể đợc đặt ở các vị trí bất kỳ. Ngoại trừ gói BYTE nên nằm ở vị trí cuối cùng, với các giá trị SSRC/CSRC.
Hình 4.2: Minh hoạ việc ghép các gói RTCP vào gói UDP.
Thông thờng, các bộ translators và mixers sẽ xử lý từng gói RTCP riêng lẻ từ các nguồn khác nhau, sau đó chuyển tiếp trong một gói ghép. Nếu gói ghép này có kích thớc vợt quá giá trị của một đơn vị truyền tải (maximum transmission unit), khi đó nó sẽ đợc phân thành các gói ghép nhỏ hơn để có thể tryền đợc trong những gói của giao thức lớp dới. Nhng chú ý rằng, mỗi gói ghép sau khi chia vẫn phải đảm bảo đợc bắt đầu bởi một gói SR hoặc RR.
Nên cài đặt cơ chế tự động bỏ qua một gói RTCP mà ta không xác định đợc loại. Cũng cần cài đặt thêm cơ chế để một loại gói RTCP mới có thể đợc đăng ký với IANA (the Internet Assigned Numbers Authority).