Gói tin RS: Sender Report RTCP Packet

Một phần của tài liệu TRUYỀN DÒNG DỮ LIỆU THỜI GIAN THỰC (Trang 48 - 53)

Đâ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 030405 06 07 0809 1 02 030405 06 07 0809 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 nhưng 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

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. (adsbygoogle = window.adsbygoogle || []).push({});

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 51

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 nhưng ở 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 chưa 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 TRUYỀN DÒNG DỮ LIỆU THỜI GIAN THỰC (Trang 48 - 53)