Giao thức RTP

Một phần của tài liệu NGHIÊN CỨU GIẢI PHÁP ĐẢM BẢO CHẤT LƯỢNG DỊCH VỤ VIDEO CONFERENCE TRONG MẠNG LTE (Trang 37 - 46)

6. Tổng quan tài liệu nghiên cứu

2.3.1. Giao thức RTP

RTP là một giao thức chuẩn dùng cho việc truyền các dữ liệu thời gian thực như video, audio. Nó có thể được sử dụng trong media-on-demand cũng như

trong các dịch vụ tương tác khác như điện thoại internet, truyền hình hội nghị vv..vv. Giao thức RTP bao gồm hai phần, dữ liệu và điều khiển (RTCP).

Hình 2.1 Mô hình tổng quát về giao thức RTP.

Giao thức RTP (Real-time transport protocol), cung cấp các hàm phục vụ việc truyền tải dữ liệu “end to end” cho các ứng dụng thời gian thực, qua các mạng multicast hay qua mạng unicast. Các dịch vụ này bao gồm:

- Sự phân loại tải: payload type identification. - Đánh số thứ tự: sequence numbering.

- Đánh dấu thời gian phát, đồng bộ hoá.

- Theo dõi quá trình truyền tải: delivery monitoring.

Để hỗ trợ cho RTP là giao thức điều khiển RTCP. Giao thức này nhằm đảm bảo cho việc truyền dữ liệu, cho phép theo dõi được quá trình truyền tải trên một mạng multicast. Ngoài ra nó còn cung cấp các dịch vụ, các chức năng

điều khiển và nhận dạng. Cả RTP và RTCP đều được thiết kế để có thể cài đặt một cách độc lập với các giao thức lớp mạng và lớp vận chuyển.

Các ứng dụng RTP hoạt động phía trên của chồng giao thức UDP, với vai trò điều chế và cung cấp các dịch vụ kiểm soát lỗi. Tuy nhiên RTP cũng có thể sử dụng kết hợp với các chồng giao thức dưới lớp mạng hay dưới lớp giao vận. RTP bản thân nó không hề cung cấp một cơ chế nào nhằm đảm bảo về mặt thời gian, cũng như sự đảm bảo về chất lượng dịch vụ (QoS) của các ứng dụng thời gian thực. Nhưng điều này vẫn được đảm bảo dựa trên các dịch vụ lớp dưới.

Cũng như vậy RTP không đảm bảo độ tin cậy hay thứ tự của các gói tin. Nhưng các cơ chế đảm bảo độ tin cậy và việc đảm bảo thứ tự các gói tin nhận được sẽ được đảm bảo dưới các cơ chế của lớp mạng. Số thứ tự được đánh trong khung RTP cho phép bên nhận có thể khôi phục lại thứ tự gói phía gởi, nhưng có thể nó cũng được dùng để định vị gói tin như trong quá trình giải mã tín hiệu Video. Tuy mục đích đầu tiên của giao thức RTP là nhằm đảm bảo cho các ứng dụng multimedia, video conference. Tuy nhiên các ứng dụng truyền dòng, các chương trình mô phỏng phân tán, các ứng dụng trong điều khiển, đo lường cũng nhanh chóng tìm thấy sự ứng dụng của RTP.

Khi đề cập đến giao thức RTP là chúng ta đề cập đến hai vấn đề:

- Giao thức truyền tải thời gian thực (real-time transport protocol): Với chức năng truyền tải các dữ liệu có thuộc tính thời gian thực.

- Giao thức điều khiển RCTP: Với chức năng giám sát chất lượng dịch vụ và truyền các thông tin về những phiên truyền. RTCP giúp cho việc điều khiển các phiên.

Để tìm hiểu các ứng dụng của RTP ta xét trong trường hợp cụ thể, hội thảo đa phương tiện (hội nghị truyền hình). Đây là trường hợp rất điển hình, có thể đại diện cho các ứng dụng truyền dòng thời gian thực.

Hình 2.2 Vị trí RTP trong các ứng dụng multimedia

Mỗi thành viên tham gia hội nghị truyền hình sẽ gởi dữ liệu hội thoại theo từng đoạn. Những đoạn dữ liệu sẽ được gắn thêm phần RTP header. Sau đó cả phần RTP header và phần dữ liệu sẽ được đóng vào gói UDP. Phần RTP header sẽ xác định loại mã hoá tín hiệu được mang trong phần dữ liệu, vì vậy kiểu mã hoá tín hiệu thoại của những thành viên tham gia có thể thay đổi trong quá trình hội đàm. Điều này rất có ý nghĩa, đặc biệt với những thành viên sử dụng đường truyền tốc độ thấp hoặc hay trong trường hợp mạng bị nghẽn.

Việc truyền các gói tin trên mạng rất có thể bị thất lạc, mất thứ tự các gói tin hay xảy ra hiện tượng Jitter. Để giải quyết vấn đề này, phần RTP header có chứa thông tin về thời gian và số thứ tự của các gói tin. Do đó phía nhận có thể dựa vào đó để khôi phục lại về mặt thời gian. Trong trường hợp này, mỗi thành viên sẽ liên tục truyền đi các gói tin với chu kỳ 20ms. Việc khôi phục thời gian sẽ giúp cho bên nhận có thể phân được các nguồn tin khác nhau trong quá trình hội thoại.

Số thứ tự của các gói tin có thể dùng để nhận biết số lượng các gói tin bị thất lạc của mỗi nguồn, kể từ khi họ tham gia hội thoại. Việc này giúp chúng ta có thể đánh giá chất lượng mạng của từng thành viên. Trong quá trình hội

thoại, những bản tin thông báo có kèm theo định danh của từng thành viên sẽ được chuyển qua cổng điều sử dụng RTCP. Những thông báo này sẽ xác định các gói tin do mỗi thành viên gởi đi được nhận có tốt không. Dựa vào đó ta có thể điều chỉnh bộ mã hoá động.

Ngoài ra việc định danh thành viên cũng như các thông tin xác định khác có thể được sử dụng để điều khiển giới hạn băng thông của từng thành viên.

Khi một thành viên rời khỏi hội thoại, họ sẽ gởi một gói tin RTCP Bye để thông báo.

Các định dạng gói tin trong RTP/RTCP

RTP payload: Đây là phần dữ liệu được truyền trong các gói RTP. Đây có thể là các mẫu tín hiệu thoại hoặc dữ liệu Video đã được nén. Việc phân định dạng dữ liệu (được chỉ định bởi phần payload type) sẽ được để cập đến ở phần sau.

RTP packet: Là gói dữ liệu RTP, bao gồm phần cố định RTP header, phần danh sách các nguồn phân tán (có thể rỗng), phần RTP payload. Một số giao thức tầng dưới có thể yêu cầu phải đóng gói lại các gói RTP. Thông thường 1 gói lớp dưới chứa 1 gói RTP. Tuy nhiên cũng có trường hợp nhiều gói RTP được đóng vào một gói, điều này hoàn toàn phụ thuộc cách đóng gói của lớp dưới.

RTCP packet: Đây là gói tin điều khiển RTCP, có phần tiêu đề cố định gần giống gói RTP. Tiếp theo đến phần có cấu trúc, dạng của cấu trúc sẽ tuỳ thuộc vào loại gói RTCP. Thông thường một số gói RTCP sẽ được ghép chung trong một gói của lớp dưới. Điều này có thể thực hiện được do các gói RCTP có phần tiêu đề cố định.

Port: Cổng địa chỉ UDP được sử dụng. Đây là khái niệm trừu tượng mà các giao thức truyền tải sử dụng để phân biệt các phiên truyền. Với giao thức TCP/IP nó là số nguyên dương 16Bit. Khái niệm Port tương đương với khái

niệm TSEL (transport selectors) trong mô hình OSI. RTP dựa trên các cơ chế tương tự sự phân cổng được cung cấp bởi giao thức lớp dưới để gởi đồng thời các gói dữ liệu RTP và gói tin điều khiển RTCP trong mỗi phiên truyền.

Transport address: Địa chỉ này phục vụ cho việc vận chuyển dữ liệu. Nó là sự kết hợp giữa địa chỉ mạng và các cổng được định nghĩa ở tầng giao vận. Ví dụ như sự kết hợp giữa địa chỉ IP với một cổng UDP nhất định. Các gói tin sẽ được truyền từ địa chỉ Transport address nguồn tới địa chỉ Transport address đích.

RTP media type: Đây là một tập các loại tải có cùng một số tính chất được mang trong phiên truyền RTP. Ví dụ trong hội thảo đa phương tiện ta có thể có hai loại RTP media type là video-MPEG2 và audio-PCMA. Cụ thể hơn về các loại RTP được trình bày trong phần sau.

RTP session: Một phiên RTP có thể có sự tham gia của một tập các thành viên cùng trao đổi thông tin. Mỗi thành viên được xác định dựa trên cặp địa chỉ nguồn (một dùng truyền gói RTP, một dùng truyền gói RCTP). Cặp địa chỉ đích có thể là chung cho tất cả các thành viên còn lại (trong trường hợp truyền đa điểm multicast ) hoặc riêng biệt cho từng thành viên(trong trường hợp truyền điểm điểm unicast). Trong một phiên truyền Mutilmedia, các tín hiệu thành phần (video/audio) được truyền theo một cặp cổng riêng.

Hình 2.3 Mô hình phiên RTP.

Synchronization source (SSRC): nguồn phát dòng các gói RTP, được định danh bởi 32-bit SSRC trong phần header của gói RTP. Nó có giá trị hoàn toàn độc lập với địa chỉ mạng. Các gói dữ liệu được phát từ một nguồn được gắn thời gian và số thứ tự một cách thống nhất. Do đó phía nhận sẽ dựa trên SSRC để khôi phục lại tín hiệu. Giá trị của định danh SSRC của mỗi nguồn RTP là đơn trị trên toàn mạng, nó được khởi tạo một cách ngẫu nhiên.

End system: Mỗi ứng dụng mà sinh ra dữ liệu để truyền đi trong những gói RTP, hoặc nhận những dữ liệu này để xử lý được gọi là hệ thống cuối RTP (End system). Một hệ thống cuối này có thể tương đương với một hay nhiều nguồn đồng bộ trong một RTP session, tuỳ thuộc vào số định danh SSRC mà nó sử dụng.

Translator: Đây là một hệ thống trung gian có nhiệm vụ chuyển tiếp các gói RTP mà không làm thay đổi giá trị của SSRC.

TimeStamp: 32 bits. Được sử dụng theo qui định giao thức thời gian mạng NTP (Network Time Protocol).

Hình 2.4 Cấu trúc phần header gói RTP. [33]

Trong phần tiêu đề của gói RTP 12 Octets đầu tiên là cố định cho mọi gói RTP. Còn danh sách CSRC chỉ dùng khi ta cho qua bộ Mixer. Bây giờ ta sẽ phân tích tính năng cụ thể của các trường:

i. Version (V): 2 bits

Trường này dùng để xác định Verson của RTP. Hiện nay trong truyền Video và Audio RTP đang sử dụng Version 2. Verson 1 là Version được sử dụng đầu tiên. Còn Version 0 chỉ là giao thức được cài đặt thêm các tính năng cho Audio.

ii. Padding (P): 1 bit

Nếu bit đệm này được đặt giá trị 1, báo rằng gói tin có chứa 1 số byte điều kiện phụ ở phần cuối (cuối phần payload). Byte cuối cùng trong các byte đệm sẽ chứa số các byte đệm đã được thêm, kể cả chính byte đó. Các byte đệm này có thể được dùng để mã hoá mật gói tin, hoặc dùng trong trường hợp đóng gói nhiều gói RTP trong 1 gói của lớp dưới.

iii. Extension (X): 1 bit

Khi bit này được gán giá trị 1 tức là sau phần tiêu đề cố định sẽ là phần tiêu đề mở rộng. Việc mở rộng thêm phần tiêu đề nhằm tăng thêm lượng thông tin cho gói RTP khi cần thiết.

iv. CSRC count (CC): 4 bits

Phần này chứa số lượng các bộ nhận dạng CSRC sẽ được thêm vào sau phần tiêu đề cố định. Dùng để xác định số các phần tử 32 bit được chứa trong phần CSRC.

v. Marker (M): 1 bit

Bit này được dùng với mục đích báo hiệu. Ta có thể dùng nó để làm sự kiện báo hiệu khung trong trường hợp ta truyền các gói tin thành dòng. Bit này có thể được sử dụng hoặc không. Nếu không sử dụng ta có thể thay đổi số lượng bit trong trường payload type.

vi. Payload type (PT): 7 bits

Trường này dùng để xác định dạng của phần tải để chọn lựa các ứng dụng phù hợp. Giá trị của phần định dạng tải này có thể cố định trong một phiên RTP nếu ta sử dụng phương pháp mã hoá tĩnh. Nó sẽ có giá trị biến đổi nếu như trong phiên RTP đó ta sử dụng cơ chế định dạng động.

Một nguồn RTP có thể thay đổi định dạng tải trong một phiên truyền, tuy nhiên ta không nên dùng một phiên RTP để truyền đồng thời các luồng media có định dạng khác nhau, theo khuyến cáo của RFC1890.

Về phía nhận, nếu nhận được gói RTP có định dạng tải mà nó không hiểu, gói này sẽ được bỏ qua.

vii. Sequence number: 16 bits

Số thứ tự được đánh tăng dần theo số lượng các gói RTP được phát đi. Phía nhận sẽ sử dụng số thứ tự này để khôi phục lại trật tự các gói, hoặc dùng để phát hiện số lượng gói đã bị mất.

Việc khởi tạo các giá trị này nên được thực hiện theo cơ chế ngẫu nhiên, nhằm tăng tính bảo mật, bởi nó có thể được kết hợp với khoá mã.

Nhãn thời gian được tính theo thời điểm lấy mẫu của byte đầu tiên trong gói RTP. Thời gian được sử dụng theo chuẩn thời gian NTP.

ix. SSRC: 32 bits

Trường này dùng cho việc định danh một nguồn đồng bộ. Giá trị của trường này được chọn một cách ngẫu nhiên (có kiểm tra xung đột) để tránh trường hợp trong một phiên RTP có nhiều hơn một nguồn đồng bộ sử dụng cùng một giá trị SSRC.

Tuy xác xuất mà nhiều nguồn phát chọn cùng một định danh là rất hiếm, nhưng chúng ta vẫn phải cài đặt cơ chế xác định và giải quyết sự xung đột này

Khi một nguồn thay đổi địa chỉ truyền tải nguồn (source transport address), thì nó cũng phải chọn một giá trị SSRC mới để tránh trường hợp xung đột.

Một phần của tài liệu NGHIÊN CỨU GIẢI PHÁP ĐẢM BẢO CHẤT LƯỢNG DỊCH VỤ VIDEO CONFERENCE TRONG MẠNG LTE (Trang 37 - 46)

Tải bản đầy đủ (PDF)

(111 trang)