Chương 1: GIAO THỨC RTP 1. Giới thiệu: Hai thập niên trước, sự phát triển của Internet mới chỉ đơn thuần là cố gắng truyền tải các bản tin và các file dữ liệu. Giao thức truyền chủ yếu được sử dụng là TCP (Transmission Control Protocol), cung cấp một dịch vụ đáng tin cậy cho việc truyền dữ liệu không cấu trúc [13]. Từ đó, đã có rất nhiều nghiên cứu về thuật toán điều khiển tắc nghẽn của giao thức này, bởi vì công việc làm giảm tắc nghẽn một cách có hiệu quả là nhu cầu cần thiết của Internet khi mà số lượng các Host trong mạng liên tục tăng lên một cách nhanh chóng.
Những năm gần đây đã xuất hiện xu hướng sử dụng giao thức IP (Internet Protocol) để truyền đi các loại dữ liệu khác nhau. Ngoài việc cung cấp các dịch vụ truyền thống như thư điện tử và các ứng dụng duyệt Web, các nhà cung cấp còn có tham vọng đưa đến cho chúng ta những dịch vụ mới hơn, đó là có thể xem những chương trình truyền hình yêu thích trên nền Internet bằng cách sử dụng các thiết bị IP, hoặc có thể thưởng thức các buổi hòa nhạc với thời gian thực (real-time) được truyền trên mạng IP từ bất kỳ nơi nào trên thế giới. Tuy nhiên, việc truyền các dữ liệu âm thanh hay hình ảnh (Audio/Video) lại không thể thực hiện được bằng giao thức TCP, bởi nó yêu cầu tất cả các bit dữ liệu cần phải sắp xếp theo đúng thứ tự. Có một lựa chọn khác để truyền các luồng dữ liệu theo thời gian thực trên Internet, đó là sử dụng trên giao thức UDP (User Datagram Protocol) [14], nhưng giao thức này lại không hỗ trợ cho việc nhận các thông tin phản hồi từ phía thu, không kiểm tra được luồng dữ liệu có đến đích hay không và cũng không có sự hổ trợ một số tính năng cần thiết cho truyền các dữ liệu theo thời gian thực.
AVT (Audio/Video Transport – truyền dẫn các tín hiệu âm thanh và hình ảnh) là một nhóm của tổ chức IETF (Internet Engineering Task Force) đã xác định các giao thức cần thiết cho việc truyền các dữ liệu âm thanh và hình ảnh, trong đó phải kể đến giao thức RTP (Real-time Transport Protocol) dùng để truyền tải các dữ liệu thời gian thực trên Internet. Ngoài giao thức RTP, nhóm này còn xác định một số profile dùng cho RTP và dạng payload cho các loại dữ liệu thời gian thực khác nhau, mà chủ yếu là dạng âm thanh và hình ảnh [7]. 3 TIEU LUAN MOI download : skknchat@gmail. Giao thức RTP 2.
Giao thức RTP RTP (Real-time Transport Protocol - giao thức truyền tải thời gian thực) được coi là một chuẩn của RFC được IETF giới thiệu vào năm 1996. Mục đích của giao thức là cung cấp dịch vụ truyền dữ liệu theo thời gian thực như các luồng âm thanh và hình ảnh [15]. RTP được sử dụng ở lớp trên của các giao thức truyền tải khác, mà điển hình là lớp UDP trên Internet. Theo như nguyên lý thiết kế của giao thức thì RTP là giao thức end-to end, mặc dù trên đường truyền dẫn có thể gồm có một số Host trung gian.
RTP gồm hai giao thức liên quan là: RTP dùng cho truyền dữ liệu thời gian thực và cho điều khiển, giám sát nguồn dữ liệu được truyền đi, hay còn gọi là RTCP (RTP Control Protocol - giao thức điều khiển truyền dữ liệu thời gian thực). Đối với RTP thì dạng của các Header là cố định nhưng dạng của payload lại phụ thuộc vào dữ liệu được mã hóa. Bên cạnh các luồng dữ liệu âm thanh và hình ảnh thì RTP cũng được dùng để truyền các dạng dữ liệu thời gian thực bất kỳ. Và như vậy, các đặc tính truyền phụ thuộc rất nhiều vào dạng của payload [7].
Cũng giống như RTP, RTCP là giao thức truyền Datagram ở lớp trên cùng. Đặc điểm quan trọng nhất của RTCP là nơi gửi sẽ nhận được các phản hồi (feedback) về chất lượng truyền dẫn. Các header của giao thức RTP cũng khá đơn giản, thường thì chúng chỉ thị cho dạng của payload và các dạng của chúng được định nghĩa đầy đủ trong Profile Specification. Ngoài các thông tin về dạng payload, các header còn chứa thông tin nhận dạng về nguồn đồng bộ (Synchronization Source) và có thể gồm cả danh sách phân bố kèm theo của chúng (Contributing Source).
Tuy nhiên, các header này có thể mở rộng theo yêu cầu của dạng payload. Giao thức RTP sử dụng khái niệm nguồn đồng bộ (SSRC - Synchronization Source) trong các header của gói tin để nhận diện ra các gói dữ liệu đã được Share ở cùng thời điểm và được đánh số một cách lần lượt. Tại nơi nhận, thông tin về SSRC của các gói tin được chia ra từ các luồng khác nhau sẽ được sử dụng để sắp xếp luồng dữ liệu đầu ra. Dữ liệu gốc từ các nguồn vật lý khác nhau, ví dụ như từ các Camera, phải được phân biệt bởi các SSRC, ngay cả khi chúng đã được đồng bộ.
4 TIEU LUAN MOI download : skknchat@gmail.com Và như vậy, các luồng âm thanh và hình ảnh từ các cuộc hội thảo được truyền một cách tách biệt với nhau cũng dùng các SSRC khác nhau, rồi sau đó chúng được kết hợp với nhau tại nơi nhận bởi các thông tin định thời trong các gói tin RTP [7]. Cấu trúc của gói tin RTP Cấu trúc gói tin RTP và header cụ thể được biểu diễn như sau [29]: IP UDP RTP RTP Payload Header Header Header +Bits 0-1 2 3 4-7 8 9-15 16-31 Sequence 0 Ver P X CC M PT Number 32 Timestamp 64 SSRC indentifier 96 …SSRC indentifier… 96+(CCx32) Extension header (optional) 96+(CCx32) + Data (Xx((EHL+1)x32)) 5 TIEU LUAN MOI download : skknchat@gmail.com Trong đó: V (Version - phiên bản) gồm 2 bit chỉ thị phiên bản của RTP P (Padding - đệm) gồm 1 bit chỉ thị số lượng octet không chứa dữ liệu nằm sau payload X (Extention - phần mở rộng) gồm 1 bit chứa header mở rộng CC (CSRC Count - bộ đếm CSRC) gồm 4 bit chứa số lượng CSRC trong header M (Marker - đánh dấu) gồm 1 bit chứa thông tin về mục đích của ứng dụng PT (Payload Type - Dạng payload) gồm 7 bit chứa thông tin về dạng của payload, diễn tả ứng dụng Sequence Number - dãy số gồm 16 bit được tăng lên tương ứng với lượng dữ liệu được gửi đi và cũng có thể được sử dụng tại nơi nhận để phát hiện gói tin bị mất, giá trị ban đầu thường là ngẫu nhiên Timestamp - tem thời gian bồm 32 bit phản ánh tốc độ lấy mẫu octet đầu tiên của gói dữ liệu RTP SSRC gồm 32 bit nhận diện nguồn đồng bộ CSRC chứa thông tin nhận diện về sự phân bố của nguồn dữ liệu chứa payload của gói tin, số lượng do CC quyết định, tối đa là 15. CSRC indentifer được chèn bởi các bộ trộn. Vấn đề đồng bộ của RTP[29] Để có thể đồng bộ được, bên nhận cần phải có 3 thông tin về nguồn đồng bộ, trật tự của gói tin và thời gian lấy mẫu.
Các thông tin này được cung cấp trong header. Nguồn đồng bộ (SSRC): Bên nhận có thể nhận dữ liệu từ nhiều nguồn phát khác nhau, do vậy để sắp xếp lại chúng thì cần phải có thông tin từ các nguồn đồng bộ của các gói tin đơn lẻ được cung cấp trong SSRC Chuỗi số (Sequence Number): khi không đủ thông tin để nhận ra nguồn phát, chuỗi số được thêm vào. Chuỗi số này được tăng lên khi các 6 TIEU LUAN MOI download : skknchat@gmail.com gói tin được gửi đi và có thể được sử dụng tại nơi nhận để phát hiện các gói tin bị mất và khôi phục lại chuỗi của gói tin Tem thời gian (Timestamp): các gói tin được truyền trên mạng có tem thời gian, phía nhận có thể dựa vào thông tin về các tem thời gian này để tái tạo lại dữ liệu âm thanh và hình ảnh 2. Hoạt động của RTP Việc tách riêng các luồng âm thanh và hình ảnh sẽ cho phép nơi nhận có thể loại ra một số luồng đến chậm do sự nghẽn cổ chai của các đường truyền dẫn.
Hơn nữa, đối với các loại dữ liệu âm thanh và hình ảnh khác nhau thì việc gắn các tem thời gian (timestamp) của các xung clock cũng khác nhau. Một Host trung gian trên mạng kết nối RTP có thể hoạt động như một bộ trộn (mixer), nghĩa là nó sẽ sử dụng một số phương pháp để kết hợp dữ liệu đến từ các nguồn khác nhau để tạo dòng dữ liệu đầu ra. Vì các nguồn dữ liệu sử dụng các định thời và các chuỗi khác nhau, do đó các gói dữ liệu của các luồng phải sử dụng các SSRC khác nhau để có thể nhận diện ra dữ liệu gốc. Bộ trộn lưu trữ các SSRC của các dữ liệu gốc dưới dạng danh sách nguồn (Contributing Source - CSRC) trong header của gói tin RTP.
Node trung gian cần có kiểu gọi khác, gọi là bộ chuyển đổi (Translator), nó không là thay đổi SSRC nhưng nó có thể biến đổi thông tin mã hóa hoặc lọc các gói tin dữ liệu theo yêu cầu [7]. 7 TIEU LUAN MOI download : skknchat@gmail.com Hình 1: Truyền trực tiếp một buổi hòa nhạc Hình 1 miêu tả một ví dụ về buổi hòa nhạc được truyền trực tiếp theo nền tảng của công nghệ IP. Các ca sĩ và nhà quay phim được nối với các Computer Box nhỏ để có thể truyền được âm thanh và hình ảnh bằng các gói tin RTP tới các máy trạm (Client). Bộ trộn sử dụng nguồn đồng bộ của nó (SSRC = 20) và lưu trữ SSRC của ca sĩ vào bảng CSRC trong header của RTP.
Trên hình cũng chỉ ra rằng luồng Video và dữ liệu Audio không được kết hợp với nhau tại bất kỳ điểm nào mà nó được truyền tới các máy trạm (Client) một cách độc lập và riêng rẽ bởi các SSRC. Tại phía nhận, máy trạm (Client) không quan tâm tới sự khác nhau của các SSRC, mà nó kết hợp các dữ liệu với nhau dựa trên các thông tin về tem thời gian (timestamp) với giả sử rằng các xung clock của nhạc sĩ, bộ trộn và các camere được đồng bộ tại thời điểm truyền đi. Nơi gửi RTP sẽ gửi định kỳ các bản tin (sender report) trong các gói tin RCTP 64 bit với tem thời gian NTP. Tem thời gian NTP sử dụng giao thức thời gian mạng (Network Time Protocol) [16], biểu thị thời gian đã qua với mốc tính từ thể kỷ XX.
Tuy nhiên, tem thời gian RTP cũng được dùng với cùng tần số đồng hồ và được bù ngẫu nhiên trong các gói dữ liệu. Sở dĩ phải dùng hai loại tem thời gian khác nhau như vậy là để đồng bộ các dữ liệu từ các nguồn khác nhau. Hơn nữa, dựa vào các thông tin định thời, nơi phát có thể cho biết về các gói đã được truyền đi.