Giao thức truyền tải và kiểm soát thời gian thực trong truyền thông đa phương tiện

MỤC LỤC

Đặc điểm giao thức TCP

Trong bộ giao thức TCP/IP TCP là giao thức đợc phát triển nh là cách để kết nối các mạng máy tính khác nhau về các phơng pháp truyền dẫn và hệ điều hành. • Trật tự: Các gói tin có thể đến đích không theo thứ tự sắp xếp của dòng dữ liệu liên tục bởi các gói tin đi từ cùng một nguồn tin theo những đờng dẫn khác nhau để đi tới cùng một đích.

Cấu trúc đơn vị truyền tải TCP

Đây chính là số lợng các Byte dữ liệu bắt đầu từ Byte đợc chỉ ra trong vùng ACK number, mà trạm nguồn đã sẵn sàng để nhận. - Urgent Pointer (16 bits) : Con trỏ này trỏ tới số liệu tuần tự của Byte đi theo sau dữ liệu khẩn, cho phép bên nhận biết đợc độ dài của dữ liệu khẩn.

Điều khiển luồng dữ liệu

Việc kết hợp địa chỉ IP của một máy trạm và số cổng đợc sử dụng tạo thành một Socket.

Thiết lập và huỷ bỏ liên kết

Khi không còn nhu cầu trao đổi dữ liệu nữa thì liên kết TCP có thể đợc huỷ bỏ. Liên kết có thể bị huỷ bỏ một cách bất thờng vì một lý do nào đó(do ngời sử dụng hoặc do TCP đóng liên kết do không thể duy trì đợc liên kết).

Truyền và nhận dữ liệu

Liên kết đợc huỷ bỏ một cách bình thờng khi toàn bộ dữ liệu đã đợc truyền hết.

Giao thức UDP: (User Datagram Protocol)

Khuôn dạng của một UDP Datagrram gồm hai phần : Phần tiêu đề (Header) chứa các thông tin điều khiển và phần Data chứa dữ liệu. Lớp UDP đợc đặt trên lớp IP, tức là UDP Datagram khi chuyển xuống tầng dới sẽ đợc đặt vào IP Datagram để truyền trên liên mạng.

Định tuyến multicast

Các gói multicast đợc tái tạo lại bên trong các Router mà đã kích hoạt khả năng PIM (Protocol Independent Multicast) và các giao thức hỗ trợ multicast khác đa đến kết quả là nó tạo ra khả năng phát chuyển dữ liệu tới nhiều thành viên một cách hiệu quả nhất. Cụ thể, vùng group không đợc phân chia thành các bit để xác định nguồn gốc hay đơn vị sở hữu của nhóm, nó cũng không chứa thông tin quản trị nh là các thành viên của nhóm có ở trên một mạng vật lý không.

Hình 1.4: Truyền Multicast
Hình 1.4: Truyền Multicast

Giao thức nào có thể đáp ứng đợc yêu cầu thời gian thùc?

- Hộ trợ việc định tuyến muticast: Với các ứng dụng tryền thông đa phơng tiện đòi hỏi thời gian thực, có sự phân phối giống dữ liệu từ một nguồn tới nhiều đầu cuối nhận dữ liệu thì việc hỗ trợ multicast là rất cần thiết. - Cần kết hợp với một thông số về thời gian (nhãn thời gian) kèm theo gói dữ liệu: Với các tín hiệu thời gian thực, đặc biệt là tín hiệu video, việc khôi phục đồng bộ tại phía thu là rất quan trọng, do đó đòi hỏi nhãn thời gian kèm theo để phục vụ cho việc tái tạo lại dữ liệu tại nơi nhận.

Hình 1.6:Sử dụng Multicast trong truyền dữ liệu đa phơng tiện.
Hình 1.6:Sử dụng Multicast trong truyền dữ liệu đa phơng tiện.

Giao thức truyền tải thời gian thực (RTP: real time transport protocol)

  • CSRC

    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 khi đó việc truyền đồng thời nhiều loại tải, tốc độ nhịp khác nhau sẽ yêu cầu phải có một chuỗi số thứ tự riêng để xác định sự thất lạc của các gói tin trong khi truyền.

    Hình 3.1: Mô hình phiên RTP.
    Hình 3.1: Mô hình phiên RTP.

    Giao thức điều khiển RTP (RTCP: RTP control protocol)

    Chức năng và hoạt động của RTCP

    Trong trờng hợp truyền IP multicasrt, thì các thông tin hồi tiếp từ phía ngời nhận là tối quan trọng cho việc chuẩn đoán các sự cố xảy ra trong quá trình truyền. Ngoài ra, việc CNAME có thể xác định đợc từng thành viên, giúp cho bên nhận có thể phân chia những luồng tin nhận đợc thành từng tập tơng ứng với từng ngời gởi. Việc đồng bộ nội cho từng luồng tín hiệu (video hoặc audio) đợc thực hiện dựa trên các thông tin về số thứ tự, nhãn thời gian gắn trên các gói RTP và RTCP của bên gởi.

    Các loại gói tin RTCP

    Mỗi gói tin RTCP đợc bắt đầu với phần tiêu đề cố định tơng tự nh của gói tin RTP, tiếp theo là các thành phần cấu trúc, chúng có thể có chiều dài biến đổi tuỳ thuộc vào loại của gói tin, nhng phải giới hạn trong 32-bit. Nhiều gói RTCP có thể đợc kết nối với nhau thành gói ghép (compound packet ), mà không cần sử dụng dấu phân cách giữa các gói RTCP, khi đa chúng xuống đóng gói ở các lớp dới. Nếu gói ghép này có kích thớc vợt quá giá trị của một đơn vị truyền tải (maximum transmission unit), khi đó nó sẽ đợc phân thành các gói ghép nhỏ hơn để có thể tryền đợc trong những gói của giao thức lớp dới.

    Khoảng thời gian truyền các gói RTCP : (RTCP Transmission Interval)

    Tuy nhiên nó rất phù hợp cho những kết nối 1 chiều, hoặc cho những phiên truyền không cần sự hồi đáp về chất lợng dữ liệu nhận đợc, cũng nh không cần quan tâm đến sự có mặt của các thành viên chỉ nghe. Việc tính toán chu kỳ phát các gói tin ghép RTCP cũng nên đặt ra giới hạn tránh trờng hợp quá nhiều gói tin vợt quá mức băng thông cho phép, khi số l- ợng thành viên tham gia ít và không còn theo qui luật số lớn nữa. Sau đó các thành viên khác gởi các bản tin thông báo gởi lại sẽ điều chỉnh lại khoảng thời gian phát của các bản tin RTCP ngắn hơn cho phù hợp, có thể sẽ bằng 1/2 giá trị ban đầu.

    Cập nhật số thành viên tham gia phiên truyền

    Ta liên tục ớc lợng động giá trị trung bình của các gói tin RTCP ghép, bao gồm cả các gói phía nhận và các gói phía gởi. Khi các thành viên rời bỏ phiên, họ sẽ gởi tín hiệu BYE hoặc tạo ra thời gian timeout, số lợng thành viên trong nhóm sẽ giảm. Do đó, để tránh tình trạng tràn số liệu, gây ra khi có nhiều thành viên cùng rời đi, ngời ta sử dụng thuật toán back-off.

    Qui định đối với việc gởi và nhận các gói RTCP

    Khi một gói RTP đợc nhận từ một thành viên mà giá SSRC của nó cha có mặt trong bảng danh sách ngời gởi, giá trị này sẽ đợc thêm mới vào bảng, các thông số dành cho ngời gởi (sender table) cũng đợc cập nhật. Thuật toán này ngăn việc số lợng các thành viên giảm xuống trong một thời gian ngắn (bằng thời gian timeout), trong trờng hợp thành viên rời khỏi phiên một lúc, nhng sau đó lại quay lại. Nếu một thành viên trong danh sách ngời gởi mà không đợc nhận một gói RTP nào trong khoảng thời gian 2T.(khoảng thời gian giữa 2 gói RTCP cuối cùng. đợc nhận), khi đó thành viên sẽ bị loại khỏi danh sách ngời gởi, số ngời gởi senders đợc cập nhật lại.

    Các bản tin thông báo của ngời gởi và ngời nhận Trong giao thức RTP, các thành viên có thể trao đổi thông tin điều khiển

    • Sẽ đơn giản và nhanh hơn trong quá trình phân tích, bởi vì trong tr- ờng hợp này, ứng dụng đã đợc lập trình và luôn biết trớc cấu trúc các trờng mở rộng, do đó có thể truy nhập trực tiếp đến từng trờng khi nhận đợc một bản tin. Các số đếm tích luỹ đợc sử dụng trong cả thông tin ngời gởi và các khối thông báo của ngời nhận, do đó sự khác biệt đợc tính giữa 2 bản tin bất kỳ phục vụ cho phép đo trong thời gian ngắn hoặc dài, đợc dùng để khôi phục lại các bản tin bị thất lạc. Nếu ta giả sử rằng việc thất lạc gói không phụ thuộc vào kích thớc của tải, khi đó số gói tin nhận đợc bởi 1 thành viên nhân với kích thớc tải trung bình cho ta biết đợc thông lợng khả dụng của thành viên đó.

    Hình 4.3: Cấu trúc bản tin SR-RTCP.
    Hình 4.3: Cấu trúc bản tin SR-RTCP.

    Gói tin mô tả các thông tin của nguồn

    Nếu NOTE trở lên quan trọng, cần đợc hiển thị liên tục, khi đó ta có thể giảm tốc độ của các phần thông tin khác (không đợc giảm tốc độ của CNAME). Tuy nhiên, nếu không nhận đợc thông tin NOTE trong một thời gian nào đó, bên nhận cũng sẽ tự mặc định rằng nó đã đợc ngừng kích hoạt (thời gian này khoảng 20-30 lần chu kỳ gởi RTCP). Trờng “prefix string” định nghĩa loại của PRI, dùng chỉ dẫn cho phía nhận.Tr- ờng “value string” sẽ chứa những phần thông tin mở rộng khác (extended items).

    Gãi BYE

    - Do trờng prefix có độ dài 8-bit, nên tổng cộng chiều dài của phần thông tin thêm (“prefix string” +“value string”) phải nhỏ hơn 256 octets. Khi mộ gói BYE đợc nhận bởi bộ trộn (mixer), bộ trộn sẽ chuyển tiếp gói BYE đến trực tiếp, không làm thay đổi trờng SSRC/CSRC có sẵn. Khi một bộ trộn muốn tắt, nó sẽ gởi đi một gói BYE trong đó liệt kê toàn bộ các nguồn mà nó quản lý, cùng địa chỉ SSRC của chính nó.

    Gãi APP: Application-Defined RTCP Packet CÊu tróc gãi RTCP-APP

    - Ta có thể sử kiểu phụ để định nghĩa một tập các gói APP dới một cái tên duy nhất, hoặc cho bất kỳ loại dữ liệu phụ thuộc ứng dụng. - Tên này đợc dùng để phân chia các tập gói APP thành từng nhóm khác nhau để ứng dụng có thể nhận biết đợc. Tên này có thể lấy giá trị tuỳ ý do ngời lập trình đặt ra, tuy nhiên theo khuyến nghị, nó nên đặt dựa trên thực thể mà nó miêu tả.

    Một số thuật toán cần chú ý

    • Phân phối các định danh SSRC
      • Vấn đề bảo mật trong RTP

        Khi một bộ “translator” restart, địa chỉ giao vận của nó cũng thay đổi (do địa chỉ cổng UDP của nguồn thay đổi), nếu trớc đó nó đã gởi đi các gói số liệu thì các gói này sẽ bị coi là lặp vòng đối với bên nhận. Trong những ứng dụng mà cỏc cổng đich RTP và RTCP đợc chỉ định rừ ràng, tỏch biệt các tham số (có thể sử dụng giao thức báo hiệu hoặc các phơng tiện khác), khi đó ứng dụng sẽ không cần quan tâm đến điều kiện cặp cổng chẵn/lẻ. Ta phải chỉ định phơng thức framing đợc sử dụng, ngay cả khi gói RTP đợc mang theo giao thức cung cấp cơ chế framing để có thể mang nhiều gói RTP trong một đơn vị dữ liệu của giao thức lớp dới (ví dụ nh gói UDP).

        Hình 6.1: Minh hoạ lặp vòng.
        Hình 6.1: Minh hoạ lặp vòng.