Sự đóng gói cho quá trình vận chuyển gói thoại
Giới thiệu một số giao thức chính:
H323: Đây là giao thức chuẩn của ITU. Giao thức này ban đầu được phát triển cho hệ thống đa phương tiện(multimedia) phương tiện trong môi trường không hướng kết nối (connectionless), như LAN. H323 là chuẩn đ5nh nghĩa tất cả tiến trình liên quan đến vấn đề đồng bộ cho thoại, video, và truyền dữ liệu. H323 định nghĩa tín hiệu cuộc gọi end-to-end.
MGCP: Chuẩn được phát triển điều khiển cổng ra vào (gateway) cho hệ thống PSTN. MGCP định nghĩa giao thức, hay qui tắc để điều khiển (control) cho cổng ra vào của VoIP mà kết nối với thiết bị điều khiển cuộc gọi (call-control) bên ngoài, thường được gọi là tác nhân gọi(call agent), MGCP cung cấp tính năng báo hiệu cho những thiết bị rẻ tiền ở vị trí rìa như là cổng ra vào, đây là những thiết bị mà không có tính năng tạo đầy đủ tín hiệu cho thoại như là H323. Thực chất, bất kỳ lúc nào khi xảy ra sự kiện như quá trình nhấc ống nghe (off hook) tại cổng thoại (voice port) của cổng ra vào, cổng thoại sẽ thông báo sự kiện đến tác nhân gọi. Sau đó tác nhân gọi tạo tín hiệu đến thiết bị mà cung cấp dịch vụ, như là tín hiệu mời quay số.
SIP: Đây là giao thức chi tiết mà xác định những chỉ thị và những đáp ứng, để thiết lập hay kết thúc cuộc gọi. SIP cũng mô tả chi tiết về các tính năng như bảo mật (security), sự ủy nhiệm (proxy), vận chuyển (transport). SIP định nghĩa ra cơ chế báo hiệu cuộc gọi end-to end giữa các thiết bị. SIP là giao thức text-based mà có nhiều tính năng tương tự HTTP, như là cùng mô hình yêu cầu (request) và đáp ứng (response).
RTP: Giao thức chuẩn của IETF về media-stream. RTP mang dữ liệu thoại qua mạng. RTP cung cấp số trình tự và thống số thời gian (timestamp) để xử lý đúng thứ tự của gói tin thoại.
RTCP: Cung cấp tính năng điều khiển thông tin ngoài băng (out-of-band) cho một luồng RTP. Mỗi luồng RTP có tương ứng luồng RTCP để mà thông báo những số liệu thống kê trên cuộc gọi. RTCP được dùng cho tính năng thông báo QoS.
VoIP và mô hình OSI
Để tích hợp thành công lưu lượng (traffic) thoại trong hệ thống hướng kết nối như PSTN vào hệ thống không hướng kết nối như mạng IP cần yêu cầu tính năng của rất nhiều cơ chế báo hiệu. Do đó người dùng có thể tạo mạng không hướng kết nối xuất hiện như mạng hướng kết nối.
Những ứng dụng như là Cisco IP Softphone và CiscoManager cung cấp giao diện cho người dùng để tạo giọng nói, chuyển đổi và nén giọng nói ở máy tính của họ trước khi được mang qua mạng.
Codecs định nghĩa ra tiến trình nén dữ liệu thoại. Loại codec có thể được chọn bởi cấu hình của người dùng hay thông qua tính năng thỏa thuận của thiết bị.
Trong quá trình thực hiện hệ thống VoIP, thoại dùng RTP bên trong UDP để mang dữ liệu thoại qua mạng. Vì ở lớp mạng thoại sẽ được đặt trong header của IP, mà gói tin IP có thể đến đích không đúng thứ tự và không đồng bộ, do đó những gói tin phải được sắp xếp và đồng bộ lại trước khi gửi gói tin thoại đến người dùng. Vì UDP không cung cấp dịch vụ như là số trình tự (sequence number) và thông số về thời gian, tuy nhiên RTP cung cấp chức năng sắp xếp thứ tự.
Có rất nhiều phương thức báo hiệu được dùng trong hệ thống VoIP, như là H323 và SIP thì định nghĩa phương thức báo hiệu cuộc gọi end-to-end, MGCP định nghĩa phương thức để tách biệt chức năng báo hiệu với chức năng cuộc gọi. MGCP dùng call agent để đại diện cho tính năng điều khiển báo hiệu cho những thiết bị đầu cuối. Thiết bị điều khiển trung tâm chỉ tham gia vào quá trình thiết lập cuộc gọi. Những luồng traffic thoại vẫn được gửi trực tiếp từ end-to-end.
RTP và RTCP
RTP cung cấp chức năng mạng vận chuyển end-to-end cho những ứng dụng truyền dữ liệu mà yêu cầu thời gian thực (real-time) như là âm thanh và video. Những chức năng đó bao gồm nhận diện loại dữ liệu, số trình tự, tham số thời gian và giám sát tiến trình gửi.
RTP là thành phần quan trọng của VoIP bởi vì nó cho phép thiết bị đích sắp xếp và điều chỉnh lại thời gian cho gói tin thoại trước khi được gửi đến người dùng. Một header RTP chứa tham số thời gian và số trình tự nhằm để cho thiết bị nhận lưu vào bộ nhớ đệm, khử jitter và góc trễ (latency) bằng cách đồng bộ những gói tin để phát lại (playback) dòng âm thanh liên tục. RTP dùng số trình tự chỉ đế sắp xếp lại thứ tự gói tin. RTP không yêu cầu sự truyền lại nếu một gói tin bị mất.
Ví dụ: Như những gói thoại khi được gửi đến đích, chúng có thể đi trên những con đường khác nhau để đến đích, một con đường có thể khác nhau về khoảng cách, tốc độ truyền, kết quả là gói tin đến không đúng thứ tự khi chúng đến đích. Khi ở nguồn tạo ra cuộc gọi, dữ liệu thoại sẽ được đóng gói lại, RTP sẽ gắn vào những gói tin với tham số thời gian và số trình tự và gửi đi. Ở đích đến, RTP sẽ sắp xếp những gói tin và gửi chúng đến bộ xử lý tín hiệu số (digital signal processor-DSP) ở cùng tốc độ khi chúng được gửi đi ở nguồn gọi.
RTCP(Real-Time Transport Control Protocol)
RTCP giám sát chất lượng của quá trình phân phối dữ liệu và cung cấp tiến trình điều khiển thông tin. RTCP cung cấp thông tin phản hồi dựa theo điều kiện của mạng:
RTCP cung cấp cơ chế cho những thiết bị liên quan trong phiên (session) RTP trao đổi thông tin về giám sát và điều khiển phiên. RTCP giám sát chất lượng của các yếu tố như là đếm gói (packet count), mất gói, độ trễ, jitter. RTCP truyền gói bằng 1% băng thông của phiên, nhưng ở một tốc độ xác định trong ít nhất mỗi 5 giây.
Tham số thời gian Network Time Protocol(NTP) dưa vào các xung được đồng bộ. Tham số thời gian RTP tương ứng thì được tạo ngẫu nhiên và dựa vào tiến trình lấy mẫu gói dữ liệu. Cả hai NTP và RTP thì được đặt trong gói RTCP bởi người gửi dữ liệu.
Ví dụ ứng dụng RTCP
Trong suốt mỗi cuộc gọi RTP, những gói thông báo thì được tạo ít nhất mỗi 5 giây. Trong điều kiện mạng có chất lượng kém, một cuộc gọi có thể bị ngừng kết nối do lượng lớn gói bị mất. Khi xem xét những gói tin qua hệ thống phân tích gói, người quản trị có thể kiểm tra thông tin trong header của RTCP mà bao gồm số lượng gói mất, jitter….
Giảm kích thước header với CRTP
Tương ứng với nhiều số lượng giao thức cần thiết để vận chuyển thoại qua một mạng IP, thì header của gói tin có thể lớn. Dùng CRTP (Compression RTP) trên những liên kết link-by-link để tiết kiệm băng thông.
Dùng CRTP nén header IP/UDP/RTP từ 40 byte xuống còn 2 byte với không có checksum và từ 40 byte xuống 4 byte nếu có checksum. Nén header RTP thì rất có ích trong trường hợp kích cỡ dữ liệu của RTP là nhỏ, ví dụ như dữ liệu âm thanh sẽ được nén trong khoảng 20 và 50 byte.
CRTP làm việc dựa vào giả thiết đó là hầu hết tất cả các trường trong header IP/UDP/RTP là không thay đổi hay sự thay đổi có thể nhận biết được. Những trường không thay đổi bao gồm địa chỉ nguồn-đích của IP và số cổng nguồn-đích của UDP, cũng như những trường khác trong tất cả 3 header.
Ví dụ về CRTP: Trong môi trường thoại dựa vào gói tin thì khi giọng nói lấy mẫu được đóng khung (framing) mỗi 20ms, phần dữ liệu 20 byte được tạo. Không có CRTP, kích thước gói bao gồm những thành phần sau:
IP header (20 byte)
UDP header (8 byte)
RTP header (12 byte)
Dữ liệu (20 byte)
Header là hai lần kích thước của dữ liệu: IP/UDP/RTP (20+8+12=40 byte) trong khi phần dữ liệu là 20 byte. Khi tạo những gói tin mỗi 20 ms trên liên kết có tốc độ chậm, phần header chiếm phần lớn băng thông.
Lưu ý khi dùng CRTP để nén header
Nên cấu hình RTCP trên những cổng giao tiếp có những điều kiện sau;
Trên những liên kết có băng tần hẹp
Liên kết tốc độ thấp (<2Mbps)
Cần tiết kiệm băng thông trên những cổng giao tiếp WAN.
Nén hoạt động trên những liên kết link-by-link, kích hoạt nén trên cả hai đầu cuối của liên kết serial có băng thông thấp có thể tiết kiệm rất nhiều băng thông nếu như có số lượng lớn traffic RTP trên liên kết serial đó. Tuy nhiên, nén có thể yêu cầu phải xử lý nhiều sẽ gây ra tình trạng tiêu hao tài nguyên sẵn dùng trên các thiết bị.
Calculating Bandwidth Requirement
Codec Bandwidth
Một trong số những yếu tố quan trọng để người quản trị mạng cân nhắc trong quá trình lên kế hoạch xây dựng năng lực mạng voice thích hợp. Những người quản trị mạng phải hiểu lưu lượng băng thông được sử dụng cho mỗi cuộc gọi VoIP. Khi đã hiểu rõ về lưu lượng băng thông sử dụng cho mạng VoIP thì người quản trị mạng có thể đưa ra những công cụ tính toán nhằm lập ra những kế hoạch phát triển năng lực mạng Voice hiệu quả.
Dưới đây là danh sách những Codec và lượng băng thông được sử dụng liên quan:
G711: Cơ chế điều chế mã xung(PCM) G.711 sử dụng lượng băng thông nhiều nhất khi so sánh với các cơ chế mã (coding) khác. Cơ chế này lấy mẫu với 8000 mẫu một giây, với mỗi mẫu có chiều dài 8 bit, tổng cộng là 64.000 bps
G726: Cơ chế mã ADPCM(adaptive differential PCM) dùng lượng băng thông ít hơn. Trong khi với PCM lấy mẫu với chiều dài 8 bit, thì ADPCM dùng 4,3 hay 2 bit cho mỗi mẫu, do đó kết quả tổng băng thông được dùng trong số 32.000, 24.000, hay 16.000 bps
G.728: Cơ chế mã G728 LDCELP(low-delay code excited linear prediction) nén những mẫu PCM dùng kỹ thuật codebook. Lượng băng thông sử dụng tổng cộng khoảng 16.000bps
G729: Cơ chế mã G729 và G728A (CS-ACELP) cũng nén những mẫu PCM bằng cách dùng kỹ thuật codebook tiên tiến. Lượng băng thông sử dụng tổng cộng là 8000bps
G723: Cơ chế mã G723 và G729A (MPMLQ) dùng thuật toán look-ahead. Kết quả của thuật toán này là lương băng thông sử dụng nằm trong khoảng 5300-6300bps.
Người quản trị nên cân bằng giữa chất lượng của cuộc gọi với chi phí để sử dụng băng thông trong mạng khi chọn loại codec. Với loại codec chiếm lượng băng thông lớn hơn thì chi phí cho mỗi cuộc gọi cũng sẽ cao hơn.
Tác động kích thước mẫu và kích thước gói đối với băng thông
Kích thước mẫu thí có thể thay đổi và sẽ ảnh hưởng đến lượng băng thông tổng cộng được dùng, mỗi mẫu được lấy từ codes DSP thì được định nghĩa như digital(số) và được đóng gói vào PDU(protocol data unit). Cisco dùng DSP để tạo ra những mẫu dựa vào việc số hóa với giá trị 10ms âm thanh. Mặc định các thiết bị Voice của Cisco đóng gói 20ms âm thanh vào mỗi PDU bất chấp loại codec được sử dụng. Khi nhiều mẫu được đóng gói vào từng PDU thí lượng băng thông tổng công sẽ giảm, tuy nhiên đóng gói nhiều mẫu vào từng PDU sẽ gây ra nhiều độ trễ.
Ví dụ tính toán lương byte được đóng gói:
Dùng công thức đơn giản để có thể xem xét số lượng byte được đóng gói trong một PDU dựa vào băng thông codec và kích thước của mỗi mẫu là 20ms:
Byte_per_Sample=(Kích thước mẫu* băng thông của codec)
Nếu dùng G711, ta có kết quả:
Byte_per_Sample=(0.20*64000)/8
Byte_per_Sample=160