GPRS Tunnelling Protocol

P
Sơ lược về giao thức GTP.
GTP là một nhóm giao thức truyền thông dựa trên nền công nghệ IP. GTP được sử dụng để truyền tải gói tin GPRS trong mạng GSM và UMTS.
GTP có thể được phân tách thành các giao thức riêng biệt: GTP-C, GTP-U và các giao thức GTP cơ bản. Trong đó, GTP-C được sử dụng để báo hiệu giữa GGSN (cổng hỗ trợ GPRS) và SGSN (nút dịch vụ GPRS) trong mạng lõi GPRS. GTP-C cho phép SGSN thiết lập một phiên làm việc cho người sử dụng dịch vụ. GTP-C cũng cho phép tắt phiên làm việc, điều chỉnh các tham số chật lượng dịch vụ hoặc cập nhật một phiên làm việc cho một thuê bao đến từ một nút dịch vụ GPRS khác.
GTP-U được sử dụng cho việc truyền tải dữ liệu (của người sử dụng) trong mạng lõi GPRS cũng như giữa mạng truy cập vô tuyến (RAN) và mạng lõi. Dữ liệu cần truyền được đóng gói (packaged) theo một trong các định dạng: IPv4, IPv6 hoặc PPP.
Giao thức cơ bản của GTP: Sử dụng cấu trúc bản tin tương tự GTP-C và GTP-U, nhưng có chức năng độc lập. Nó có thể truyền dữ liệu thanh toán (nạp tiền) từ CDF (Charging Data Function)của mạng GSM hoặc UMTS tới CGF (Charging Gateway Function). Trong đa số trường hợp, chức năng này đồng nghĩa với việc: Từ nhiều phần tử mạng, ví dụ như các GGSN, dữ liệu thanh toán được tập trung về một máy tính trung tâm, giúp cho việc điều hành của trung tâm tính cước trở nên thuận tiện hơn.
Các phiên bant GTP khác nhau được thự thi bởi RNCs, SGSNs, GGSNs và CGFs trong mạng 3GPP. GTP hoàn toàn trong suốt đối với người sử dụng thuê bao di động sử dụng GPRS khi thiết bị này kết nối tới SGSN.
GTP có thể hoạt động trên cả hai giao thức TCP và UDP (xem thêm mô hình TCP/IP). GTP phiên bản một (GTPv1) chỉ hoạt động trên nền giao thức UDP.
Những đặc tính chung.
Tất cả các phiên bản của GTP đều có chung cấu trúc bản tin. Đó là phần header và cơ chế kết nối
Header.
Header của GTPv1 bao gồm các trường:
Trong đó
Phần header mở rộng có cấu trúc như sau:
Cơ chế kết nối.
Cơ chế kết nối là đặc tính chung thứ hai trong cấu trúc bản tin. Đây là cơ chế kiểm tra sự liên kết từ một GSN tới một GSN khác. Có hai bản tin được sử dụng:
Thông thường, cứ sau mỗi 60 giây, một GSN nguồn có thể gửi một bản tin echo request tới tất cả các GSN đích mà nó đang kết nối. Nếu GNS đích nào không phản hồi, GSN nguồn sẽ hiểu rằng đích đó đã "chết", và kết nối đến đích đó sẽ bị hủy bỏ.
Ngoài hai bản tin chung kể trên, các phiên bản GTP khác nhau không còn bản tin chung nào khác. Điều đó đồng nghĩa với việc, các phiên bản GTP khác nhau tạo nên các giao thức hoàn toàn phân biệt.
GTP-C.
Giao thức GTP-C là phần điều khiển của GTP tiêu chuẩn. Khi một thuê bao yêu cầu PDP context (tình huống PDP), SGSN sẽ gửi yêu cầu tạo PDP context, dưới dạng bản tin GTP-C, tới GGSN, liệt kê chi tiết các yêu cầu của thuê bao. GGSN sẽ gửi lại bản tin GTP-C phản hồi, bao gồm thông tin chi tiết về PDP context đã thực sự được kích hoạt hoặc thông báo quá trình đáp ứng yêu cầu đã thất bại, kèm theo đó là nguyên nhân thất bại. GTP-C sử dụng cổng dịch vụ 2123 của chuẩn bản tin UDP.
GTP-U.
GTP-U, dựa trên nền công nghệ IP một cách tương đối, là một giao thức "đường hầm", cho phép thiết lập nhiều "đường hầm" giữa các điểm đầu cuối. Khi sử dụng trong mạng UMTS, mỗi thuê bao sẽ được cấp một hoặc nhiều "đường hầm", mỗi tình huống PDP được kích hoạt sẽ có một "đường hầm" tương ứng. "Đường hầm" có thể được tạo một cách riêng biệt cho các kết nối cụ thể với các yêu cầu chất lượng dịch vụ khác nhau.
Các "đường hầm" riêng biệt được xác định bởi tham số TEID (Tunnel Endpoint Identifier - tham số xác định điểm cuối "đường hầm") trong bản tin GTP-U, TEID được nhận một số ngẫu nhiên thông qua quá trình cấp phát động. Nếu quá trình này được mã hóa một cách tin cậy, nó sẽ cung cấp một phương thức bảo mật giúp ngăn chặn một số loại hình tấn công trái phép. Ngoài ra, theo yêu cầu của chuẩn 3GPP cho tất cả lưu lượng truy cập GTP, bao gồm cả dữ liệu người dùng, cần được truyền tải trong mạng riêng an toàn, không kết nối trực tiếp với mạng internet.
GTP-U làm việc trên nền giao thức UDP thông qua cổng dịch vụ 2152.
GTP cơ bản.
GTP cơ bản là giao thức được sử dụng trong mạng GSM và UMTS dựa trên nền công nghệ IP, nó sử dụng cấu trúc bản tin tương tự GTP-C và GTP-U, nhưng về cơ bản là khác biệt với hai giao thức kể trên. GTP cơ bản truyền dữ liệu thông qua cổng đã được đăng ký 3386 của giao thức UDP/TCP.
GTP trong mạng lõi GPRS.
GTP là giao thức chính được sử dụng trong mạng lõi GPRS. Đây là giao thức cho phép người dùng cuối của mạng GSM hoặc UMTS di chuyển từ nơi này đến nơi khác trong khi vẫn giữ kết nối tới Internet, miễn là khu vực đó có cổng hỗ trợ dịch vụ GPRS (GGSN). GTP thực hiện điều này bằng cách đem dữ liệu thuê bao từ điểm phục vụ GPRS (SGSN) hiện tại đến GGSN sẽ tiếp nhận phiên làm việc với thuê bao. Có ba dạng GTP được sử dụng trong mạng lõi GPRS:
GGSN và SGSN (gọi chung là GSN) "lắng nghe" bản tin GTP-C trên cổng 2123 UDP và "lắng nghe" bản tin GTP-U trên cổng 2152. Việc giao tiếp diễn ra trong nội mạng hoặc có thể diễn ra khi thuê bao sử dụng dịch vụ chuyển vùng quốc tế *trong trường hợp này, giao tiếp sẽ diễn ra thông qua tổng đài chuyển mạch GPRS - GRX).
Các CGF lắng nghe bản tin GTP cơ bản được gửi tới từ GSN thông qua giao thức TCP/UDP trên cổng dịch vụ 3386. Mạng lõi sẽ gửi thông tin giao dịch tới CGF, thông thường bao gồm các thông tin: "thời gian kích hoạt PDP context" và "chất lượng dữ liệu mà người dùng cuối đã truyền". Tuy nhiên, tương tác này thường diễn ra trong một mạng ít được tiêu chuẩn hóa, và có thể, chuẩn mạng phụ thuộc vào nhà cung cấp và những tùy chọn thiết lập cấu hình khác nhau, thậm chí, chuẩn có thể được mã hóa độc quyền bởi nhà cung cấp.
Sử dụng trên giao diện IuPS.
Chỉ giao thức GTP-U được sử dụng cho giao diện IuPS (giao diện tương tác giữa mạng lõi GPRS với mạng truy cập di động (Radio Access Network - RAN). Trong trường hợp này, RANAP được sử dụng như một giao thức kiểm soát và thiết lập "đường hầm" GTP-U giữa SGSN và RNC (Radio Network Controller - Bộ điều khiển mạng di động).
Chồng giao thức.
GTP có thể hoạt động trên cả hai giao thức TCP và UDP. GTP phiên bản một (GTPv1) chỉ hoạt động trên nền giao thức UDP.
Kể từ năm 2004, có hai phiên bản được xác lập, phiên bản 0 và phiên bản 1. Hai phiên bản này khác biệt cơ bản về cấu trúc. Với phiên bản 0, giao thức báo hiệu (giao thức thiết lập "đường hầm" bằng cách kích hoạt PDP context) kết hợp với giao thức "đường hầm" trên một cổng dịch vụ. Phiên bản 1 thực chất bao gồm hai giao thức, GTP-C sử dụng cho điều khiển và GTP-U có nhiệm vụ duy trì "đường hầm" dữ liệu (của người sử dụng).
GTP-U cũng được sử dụng để truyền dữ liệu người dùng từ RNC đến SGSN trong mạng UMTS. Tuy nhiên, trong trường hợp này báo hiệu được thực hiện bằng cách sử dụng RANAP thay vì sử dụng giao thức GTP-C
Sự khác biệt giữa các phiên bản GTP.
Phiên bản GTP ban đầu (phiên bản 0) có sự khác biệt đáng kể với phiên bản GTP hiện tại (phiên bản 1):
Phiên bản 0 gặp vấn đề về bảo mật với tham số không ngẫu nhiên TEID, kẻ tấn công có thể lợi dụng nó để xâm nhập trái phép vào mạng đường trục của hệ thống GPRS bằng cách truy cập vào bất kì mạng chuyển vùng dịch vụ nào đó của đối tác, hoặc thông qua việc việc gửi gói tin từ ngoài. Phiên bản 0 đã được thay thế bởi phiên bản một trong hầu hết các mạng. Cho dù, tiêu chuẩn cho các phiên bản mới hơn (của GTP) vẫn phải được hỗ trợ bởi GSN (tức là không thể loại bỏ hoàn toàn phiên bản 0), nhưng, các cổng khác nhau được sử dụng bởi phiên bản 0, có thể được chặn lại một cách dễ dàng bằng cách sử dụng danh sách IP được phép truy cập.
Việc chuẩn hóa GTP.
GTP ban đầu được chuẩn hóa bởi ETIS (tiêu chuẩn GSM 09.06). Với việc xây dựng chuẩn cho UMTS, việc xây dựng tiêu chuẩn cho GTP được chuyển sang 3GPP, chuẩn TS 29.060. GTP cơ bản sử dụng định dạng bản tin tương tự các giao thức GTP khác, nhưng được sử dụng một cách chuyên biệt hơn với tiêu chuẩn dành riêng 32.259, tiêu chuẩn định dạng cho dữ liệu giao dịch mà nó truyền tải.
Những phiên bản sau này của tiêu chuẩn TS 29.060 không chấp nhận tương tác giữa GTPv1 và GTPv0, điều này có nghĩa là GSN sẽ không hỗ trợ cho các phiên bản cao hơn.
Chuẩn GTPv2 (dành cho việc phát triển dịch vụ gói tin) bắt đầu được xây dựng vào đầu năm 2008 và chính thức công bố vào tháng 12 năm 2008. GTPv2 được xây dựng nhằm hỗ trợ GPTv1 trong vấn đề "Phiên bản cao hơn không được hỗ trợ bởi GSN". Tuy nhiên, GTPv2 hoàn toàn không hỗ trợ cho GTPv0 trong vấn đề này.