Gói tin RS: Sender Report RTCP Packet

Một phần của tài liệu Giao thức ,điều khiển RTP,RTCP, RTP control protocol (Trang 54 - 59)

Đây là gói tin RTCP thông báo của ngời đang truyền dữ liệu phát đi. Trớc tiên ta xét đến cấu trúc của gói tin RS:

0001 02 03 04 05 06 07 08 09 1 02 03 04 05 06 07 08 09 1 0 1 1 1 2 1 3 1 4 15 1 6 1 7 1 8 1 9 20 2 1 22 23 24 25 26 27 28 29 30 31 Header V=2 P RC PT=SR=200 Length SSRC of sender Sender infor

NTP timestamp, most significant word NTP timestamp, least significant word

RTP timestamp

sender's packet count sender's octet count Report

Block

SSRC_1 (SSRC of first source)

fraction lost cumulative number of packets lost extended highest sequence number received

interarrival jitter last SR (LSR)

delay since last SR (DLSR) Report Block 2 SSRC_2 (SSRC of second source) ………. profile-specific extensions Hình 4.3: Cấu trúc bản tin SR-RTCP.

Gói thông báo của bên gởi dữ liệu chứa 3 phần cố định, có thể đợc gắn thêm tới 4 phần mở rộng (profile-specific extension) nếu nó đợc định nghĩa.

Phần đầu: phần tiêu đề, chiếm chiều dài là 8 octets, bao gồm các trờng:

- Version (V): 2 bits, dùng để xác định version của RTP (giá trị V trong các gói dữ liệu RTP và gói RTCP đều có giá trị giống nhau). Trong trờng hợp này V=2 (giá trị hiện giờ của RTP đang đợc sử dụng).

- padding (P): 1 bit. Nếu giá trị này đợc đặt bằng 1 thì trong gói RTCP này có chứa một số octets mở rộng, ở phần cuối. Nó không là một phần của thông tin điều khiển nhng chiều dài của nó vẫn đợc tính vào trờng length.

Octet cuối cùng của phần đệm có chứa số octets nên đợc bỏ qua, kể cả chinh nó (giá trị này sẽ là bộ số của 4). Các bits đệm có thể đợc sử dụng trong một số thuật toán mã mật với kích thớc block cố định. Trong gói ghép RTCP, bits đệm chỉ đợc sử dụng trong các gói con, bởi vì gói ghép sẽ đợc mã mật nh là một khối. Hơn nữa, nếu phần đệm đợc thêm vào gói thì giá trị của nó chỉ có ý nghĩa cho gói đó mà thôi.

- reception report count (RC): 5 bits

Dùng để xác định số các block báo nhận (reception report blocks) đợc mang trong gói này. Nếu không có block nào thì trờng này có giá trị 0.

- packet type (PT): 8 bits

Trờng này có giá trị bằng 200 để xác định gói RTCP này là gói SR. - length: 16 bits

Dùng xác định kích thớc gói tin RTCP, đơn vị là 32-bit, bao gồm cả phần tiêu đề và các phần đệm.

- SSRC: 32 bits Dùng để xác định nguồn đồng bộ (synchronization source) của gói SR.

Phần thứ 2: mang thông tin về ngời gởi, có chiều dài 20 octets, nó có mặt

trong tất cả các gói SR. Nó tóm tắt việc truyền dữ liệu của ngời gởi này. Các trờng có ý nghĩa nh sau:

- NTP timestamp: 64 bits. Dùng xác định giá nhãn thời gian, khi mà gói này đợc truyền đi. Nó có thể đợc bên nhận dùng để xác định tổng thời gian truyền từ điểm gởi đến điểm nhận. Ngời nhận phải xác định rằng độ chính xác của nhãn thời gian có thể thấp hơn nhiều so với độ chính xác của nhãn thời gian NTP. Một hệ thống có thể không có một đồng hồ chuẩn riêng, khi đó ngời gởi sẽ sử dụng đồng hồ hệ thống của mình, dựa vào đó để tính toán ra thời gian NTP tơng ứng.????

- RTP timestamp: 32 bits

Nhãn thời gian này giống nh NTP timestamp ở trên, tuy nhiên giá trị ở đây là độ chênh lệch giữa các thời điểm phát các gói tin. Điều này có thể giúp cho bên nhận có thể thực hiện đồng bộ các tín hiệu video/audio thu đợc.

Chú ý rằng, trong đa số các trờng hợp, giá trị nhãn thời gian RTP của các SR khác nhau không giống nhau.

Ngoài ra, ta nên tính toán ra thời gian dạng NTP, bằng cách sử dụng mối quan hệ giữa việc đếm các nhãn thời gian RTP và thời gian thực đợc xác định bằng cách kiểm tra đồng hồ chuẩn tại thời điểm lấy mẫu.

- sender's packet count: 32 bits

Tổng sô các gói dữ liệu RTP đã đợc gởi bởi ngời nào đó kể từ khi bắt đầu phiên đến khi gói SR đợc sinh ra. Biến đếm này phải đợc khởi tạo lại mỗi khi ngời gởi thay đổi định danh SSRC.

- Sender's octet count: 32 bits (adsbygoogle = window.adsbygoogle || []).push({});

Tổng số octets của phần tải (payload), không tính phần tiêu đề hoặc phần đệm, đã đợc truyền đi kể từ thành viên này tham gia phiên truyền đến khi gói SR này đợc tạo ra. Biến đếm này cũng nên đợc khởi tạo lại khi ngời gởi thay đổi định danh. Trờng này cũng có thể đợc sử dụng để ớc tính tốc độ tải trung bình của một ngời gởi.

Phần thứ 3: Phần này có thể bỏ trống hoặc có giá trị thay đổi phụ thuộc vào

số các nguồn đợc lắng nghe bởi ngời gởi này, kể từ khi nó goiwr đi bản tin hồi đáp cuối cùng. Mỗi một khối tin báo nhận mang theo một số đặc điểm về sự nhận các gói tin RTP tại một thành viên nhận. Việc truyền đi trạng thái của ngời nhận trong khi ngời nhận đó đang thay đổi định danh SSRC có thể gây ra xung đột. Những thông tin trạng thái bao gồm:

- SSRC_n (source identifier): 32 bits. Định danh của nguồn mà khối tin báo nhận này cần chuyển tới.

- fraction lost: 8 bits

Tỷ lệ gói RTP bị thất lạc từ nguồn gởi SSRC_n kể từ lần truyền gói SR hoặc gói RR trớc. Nó đợc tính bằng tỷ số giữa số gói bị mất trên số gói đợc gởi. Giá trị đợc biểu diễn bằng giá trị, tính bằng số nguyên của 8-bit nhị phân chia cho 256. Chú ý rằng, phía nhận không thể nói rằng có bao nhiêu gói bị thất lạc trớc khi nó nhận đ- ợc gói tin cuối cùng (tính tại thời điểm đấy). Do vậy, sẽ không có một bản tin báo nhận đợc phát đi cho nguồn SSRC_n , nếu tất cả các gói tin gởi đi từ nó (kể từ khi phát đi bản thông báo cuối) đều bị thất lạc.

- cumulative number of packets lost: 24 bits

Tổng số các gói dữ liệu RTP từ nguồn SSRC_n đã bị mất, kể từ khi nhận đợc gói tin RTP đầu tiên. Con số này xác định số các gói đợc nhận trên thực tế hụt bao nhiêu so với mong muốn. Do con số này tính trong một thời gian dài, nên các gói

đến muộn sẽ không bị coi là thất lạc, một gói đến muộn cũng bị loại bỏ khi mà đã có một gói tơng tự đến trớc.

- extended highest sequence number received: 32 bits

Trong đó, 16 bits thấp chứa số thứ tự cao nhất đã nhận đợc trong các gói dữ liệu RTP phát từ nguồn SSRC_n. 16-bit cao dùng mở rộng cho các số thứ tự này, đ- ợc dùng khi số đếm vợt quá 16-bit. Chú ý rằng, với những ngời nhận khác nhau, tham gia cùng một phiên RTP nhng ở cac thời điểm khác nhau sẽ tạo ra phần mở rộng khac nhau.

- interarrival jitter: 32 bits

Dùng ớc lợng sự khác nhau về mặt thời gian đến của các gói dữ liệu RTP. Giá trị này đợc tính toán dựa trên giá trị của các nhãn thời gian, đợc biểu diễn bằng số nguyên không dấu. Giá trị của độ jitter J dùng đợc xác định nhằm so sánh sự khác nhau D từ nguồn đến đích giữa 2 gói RTP. Nh đợc chỉ ra ở công thức dới đây, điều này tơng đơng với sự khác nhau về relative transit time của 2 gói tin.

relative transit time là sự khác nhau giữa nhãn thời gian đợc gắn trên gói RTP và đồng hồ của bên nhận khi gói tin đó đến đích.

Nếu gọi Si là nhãn thời gian gắn trên gói RTP, Ri là thời gian đến của gói. Khi đó đối với hai gói i và j ta có D đợc tính:

D(i,j) = (Rj - Ri) - (Sj - Si) = (Rj - Sj) - (Ri - Si).

interarrival jitter nên đợc tính một cách liên tục khi mỗi gói dữ liệu đợc nhận từ nguồn SSRC_n. để thực hiện điều này, sự khác biệt D giữa 1 gói RTP và một gói RTP trớc nó (không cần quan tâm đến số thứ tự) đợc tính theo công thức sau:

J(i) = J(i-1) + (|D(i-1,i)| - J(i-1))/16. - last SR timestamp (LSR): 32 bits

32 bits giữa của 64 bits trong NTP timestamp nhận đợc từ gói SR RTCP mới nhất từ nguồn SSRC_n. Nếu cha có bản tin SR nào đợc nhận thì trờng này đợc gán bằng 0.

- delay since last SR (DLSR): 32 bits

Thời gian tạm ngừng đợc đánh giá trong 1/65536 giây, giữa quá trình nhận một gói SR cuối nhất từ nguồn SSRC_n và quá trình gởi đi bản tin hồi đáp. Nếu không có

bản tin SR nào đợc gởi từ nguồn SSRC_n nào đợc gởi thì trờng DLSR đợc gán bằng zero.

Gọi SSRC_r là ngời nhận đang phát đi bản tin báo nhận này. SSRC_n có thể tính toán tổng thời gian trễ lan truyền đến SSRC_r bằng cách ghi lại thời gian A khi bản tin báo nhận đợc nhận. Nó tính tổng thời gian round-trip time (A-LSR) dựa trên nhãn thời gian của gói SR cuối cùng (LSR), sau đó trừ đi thời gian DLSR ta có thơì gian trễ lan truyền là: (A - LSR - DLSR). Giá trị này có thể đợc dùng để tính gần đúng khoảng cách tới các ngời nhận, cho dù thời gian trễ trên các đờng truyền là khác nhau.

Cách tính thời gian trễ lan truyền đợc minh hoạ trong hình dới. Thời gian đợc biểu diễn ở cả hai dạng, thập lục phân 32-bit và dạng số thực tơng đơng. Dấu “:” dùng để phân cách giữa 16-bit phần nguyên và 16-bit phần thập phân.

Hình 4.3: Cách tính thời gian trễ lan truyền.

Một phần của tài liệu Giao thức ,điều khiển RTP,RTCP, RTP control protocol (Trang 54 - 59)