Gĩi tin RS: Sender Report RTCP Packet

Một phần của tài liệu Ứng dụng thời gian thực (Trang 49 - 54)

Đâ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:

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Header 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 1

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ếunĩ được định nghĩa.

50

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

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.

51

dụng đồng hồ hệ thống của mình, dựa vào đĩ để tính tố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.

Ngồi ra, ta nên tính tố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.

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âyra xung đột. Những thơng tin (adsbygoogle = window.adsbygoogle || []).push({});

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.

52

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 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 tố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:

53

interarrival jitternên được tính một cách liên tục khi mỗi gĩi dữ liệu được nhận (adsbygoogle = window.adsbygoogle || []).push({});

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 tố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.

54

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 Ứng dụng thời gian thực (Trang 49 - 54)