CHƢƠNG 2 : CHUẨN DVB-IP
2.5 Phƣơng thức truyền
2.5.1 Giao thức quảng bá của thông tin SD&S
Khi thông tin phát hiện dịch vụ đóng gói UDP được truyền đi, giao thức DVBSTP sẽ được sử dụng. Tất cả các giá trị nêu ra ở dưới đây sẽ được truyền trong byte IP thông thường:
2.5.1.1 Cú pháp
Hình 14 - Cú pháp giao thức phân phát SD&S multicast
2.5.1.2 Ý nghĩa:
Protocol Version (Ver): Phiên bản của giao thức. Nó gồm 2 bít và có giá trị “00”.
Reserved (Resrv): gồm 3 bít dành riêng và có giá trị “000”.
Encryption (Enc): gồm 2 bít dùng để mã hoá dữ liệu. Nó có giá trị “00” để chỉ ra luồng tải không được mã hoá. Cú pháp, ý nghĩa, hoạt động và ý nghĩa của mỗi giá trị không được định nghĩa.
CRC flag (C): nếu giá trị là „1‟ chỉ ra 32-bít CRC tại cuối mỗi gói tin. Cờ này có thể chỉ được thiết lập tại gói cuối cùng trong đoạn tin. Ví dụ như trong số thứ tự đoạn cuối cùng.
Total Segment Size: trường 24 bit được sử dụng trong các byte. Cho dữ liệu không nén (dữ liệu nén là “000”), đây là kích cỡ các dòng tải của tất cả các đoạn được nén trong đoạn tin (ví dụ bỏ qua các tiêu đề và CRC).
Việc nén dữ liệu theo định dạng (BiM), đây là kích cỡ các dòng tải của tất cả các đoạn tin (được chỉ ra 5.4.1.3.1). được nén trong đoạn (bỏ qua các tiêu đề và CRC) và liên quan tới kích cỡ truyền. Việc nén dữ liệu có thể được giải nén sử dụng zlib, đây là kích cỡ của một đoạn tin được giải nén bởi thuật toán đặc biệt (lưu ý rằng kích cỡ này có thể không giống với kích cỡ của XML nguồn) nó liên quan tới kích cỡ giải nén. Định nghĩa giá trị trường nén cũng được chỉ rõ với 2 trường chứa thông tin về tổng kích cỡ của đoạn tin.
Payload ID: 8 bít dữ liệu để xác nhận loại dữ liệu được mang trong dòng tải. Giá trị này có thể được chỉ rõ trong bảng 1.
Segment ID: 16 bít dữ liệu sử dụng để xác nhận đoạn của dữ liệu cho việc biểu thị loại luồng tải (Payload ID).
Chú ý: Ví dụ bạn có thể có nhiều bản ghi thông tin phát hiện quảng bá, và mỗi một bản ghi sẽ được cấp một ID duy nhất.
Segment Version: 8 bít dữ liệu được sử dụng để định nghĩa phiên bản hiện tại của đoạn tin được mang, ví dụ phiên bản được khoá trong Payload ID cùng với Segment ID. Vì thế khi dữ liệu bên trong đoạn tin thay đổi, trường phiên bản đoạn tin của tất cả các gói bao gồm cả segment ID và payload ID cũng sẽ bị thay đổi. Tuy nhiên không phải bất cứ trường nào cũng thay đổi. Phiên bản của đoạn tin là 256 và quay vòng.
Phiên bản của đoạn chỉ thay đổi tại đầu của đoạn tin. Tuy nhiên khi gói tin bị lỗi, nơi nhận sẽ phải xử lý với bản tin đã bị thay đổi tại bất kỳ điểm nào trong đoạn tin.
Section Number: một trường 12 bit chứa số thứ tự của đoạn tin. đoạn đầu tiên trong trường tin sẽ là số 0.
Last Section Number: trường 12 bit chứa số của phần tin trong một đoạn tin. Compression (Compr): trường 3 bít sử dùng để chỉ ra giản đồ nén, nếu được sử dụng trên luồng tải. Tất cả các đoạn tin mà ID tải đưa ra sẽ được nén cùng một giá trị. Các giá trị được đưa ra trong bảng 9 dưới đây:
ProviderID Flag (P): là tín hiệu cờ nếu như trường ServiceProviderID tồn tại. Giá trị là 1 nếu như tồn tại trường ServiceProviderID trong tiêu đề.
Private Header Length (HDR_LEN): trường 4 bit đếm 32 bit từ trong tiêu đề theo độ dài tiêu đề hoặc trường Provider ID. Việc này báo hiệu cho sự tồn tại của tiêu đề dữ liệu. Nếu tiêu đề của trường tin không được gửi bổ xung thì nó sẽ có giá trị “0000”. Trường Provider ID không được coi là một phần của tiêu đề và nó cũng không được tính đến bởi trường Private Header Length.
Service Provider ID: Một trường 32 bit được sử dụng để xác thực nhà cung cấp dịch vụ. Số này là địa chỉ IPv4 (chi tiết trong phần 5.4.1.3). Nó là giá trị trả về của Service Provider để chắc chắn rằng địa chỉ này được quản lý thích hợp với đầy đủ quyền và quản lý một giá trị duy nhất trong giới hạn phạm vi sử dụng. Chú ý rằng Service Provider ID chỉ được sử dụng bởi HNED và không được sử dụng cho bất kỳ mạng nào khác.
Trường Service Provider ID là bắt buộc nếu nhà cung cấp không biết rằng Service Provider nào được sử dụng cùng một địa chỉ multicast.
Private Header Data: đây là giữ liệu riêng. Ý nghĩa, cú pháp được sử dụng trong dữ liệu này không chỉ ra trong tài liệu này. Trường này bao gồm 4 byte.
Payload: giá tri tải của gói, bao gồm lượng các byte. Giá trị tải sẽ được tính toán từ kích cỡ gói tin nhận trừ đi cỡ của trường tiêu đề (bao gồm lựa chọn trường ProviderID, lựa chọn tiêu đề giữ liệu của gói hiện tại) và CRC. Lưu ý rằng tải có thể có độ dài là 0 byte.
CRC: 32 bít CRC. CRC chuẩn được nói trong phụ lục A. Nó được áp dụng để tải dữ liệu của tất cả các phần nén của một đoạn tin. Trường này không cần thiết phải xắp xếp 32 bit.
2.5.1.3 Sử dụng
Cách sử dụng các đoạn tin
Kích cỡ của các đoạn tin sẽ được cố định hơn bởi sự hỗ trợ của mạng cơ sở. Để cho phép sự phân tán dữ liệu có hiệu quả trên mạng, cần thiết vào chia các đoạn tin thành những đơn vị nhỏ hơn. Kỹ thuật phân đoạn được sử dụng trong chức năng này.
Mỗi đoạn tin sẽ được gửi chính xác trong một gói dữ liệu UDP và mỗi gói UDP sẽ mang chỉ một đoạn tin.
Để lắp ráp các đoạn tin nguyên vẹn như ban đầu, một HNED sẽ gom nhặt tải tin từ tất cả các đoạn tin và xếp chúng dựa trên số thứ tự của đoạn. Một đoạn tin nguyên vẹn được lắp ráp chỉ có thể được kiểm tra bởi CRC.
Hình 9: đưa ra mối quan hệ giữa các phần tin, đoạn tin và các bản ghi
Hình 15 - Quan hệ giữa các bản ghi, đoạn tin và phần tin.
Kích cỡ lớn nhất của đoạn.
Lượng dữ liệu có thể được gói gọn trong mỗi gói UDP, vì thế kích cỡ của một đoạn tin sẽ bị giới hạn với kích cỡ lớn nhất của gói tin IP, trừ UDP và kích cỡ tiêu đề giao thức multicast.
Để ngăn ngừa sự phân mảnh từ mạng, một đề nghị về thiết lập kích cỡ lớn nhất như là giới hạn đơn vị truyền lớn nhất của mạng được đưa ra.
Việc vượt quá MTU của mạng sẽ dẫn tới phân mảnh IP đồng nghĩa với tỉ lệ mất tín hiệu của mạng sẽ tăng lên. Điều này là bởi vì nếu như các đoạn tin bị mất, các đoạn tin còn lại sẽ bị nơi thu bỏ qua. Nó cũng đặt thêm tải lên hoạt động của thiết bị định tuyến cho đoạn tin và tại hệ thống đầu cuối sẽ có được các đoạn tin lộn xộn.