Chương 1 : TỔNG QUAN
2.5 Các giao thức đường hầm trong IP-VPN
2.5.1 Giao thức đường hầm điểm-điểm PPTP
2.5.1.1 Giới thiệu PPTP (Point to Point Tunneling Protocol).
PPTP là giao thức cho phép tạo đường cho PPP (Point to Point Protocol) thông qua mạng IP. PPTP khơng làm thay đổi gì đối với PPP mà chỉ tạo phương tiện để vận chuyển các khung PPP. Kiến trúc chủ - trạm được đưa ra để tách các chức năng cùng nằm trên NAS (Network Access Server) và hỗ trợ VPN. PPTP Network Server (PNS - máy chủ mạng PPTP) chạy trên hệ điều hành thông thường trong khi máy trạm, được xem là PPTP Access Concentrator (PAC – bộ tập trung truy nhập PPTP), lại hoạt động trên nguyên tắc quay số truy nhập. PPTP mô tả một giao thức điều khiển và quản lý cuộc gọi, nó cho phép máy chủ quản lý truy nhập đối với các cuộc gọi chuyển mạch kênh từ PSTN hoặc ISDN hoặc các kết nối không phải chuyển mạch kênh. PPTP dùng một phương thức đóng gói định tuyến nâng cao GRE (Generic Routing Encapsulation) để cung cấp dịch vụ điều khiển tắc nghẽn và điều khiển luồng cho các gói PPP mà nó vận chuyển.
Tóm lại, trong PPTP, đường hầm được tạo giữa hai thiết bị:
- PPTP Access Concentrator (PAC): là thiết bị nối với một hay nhiều đường PSTN hay ISDN có kết nối PPP và hoạt động theo giao thức PPTP. PAC chỉ cần cài đặt chuẩn TCP/IP để truyền lưu lượng tới một hay nhiều PNS. Nó cũng có thể tạo đường hầm theo các giao thức không hỗ trợ IP.
- PPTP Network Server (PNS) : Một PNS về cơ bản là kết hợp bộ tính tốn và bộ phục vụ. PNS là phục vụ nhưng dựa trên giao thức PPTP. Vì PPTP dựa hoàn toàn trên chuẩn TCP/IP và độc lập với giao diện phần cứng, nên PNS có thể kết hợp với bất kỳ thiết bị có giao diện IP nào bao gồm cả các thiết bị mạng LAN và WAN.
Giao thức PPTP chỉ cần thực hiện bởi PAC và PNS. Mạng quay số có thể kết nối tới PAC mà không quan tâm tới việc tồn tại của PPTP. Phần mềm máy trạm PPP tiêu chuẩn được dùng để thực hiện tạo đường hầm cho liên kết PPP.
PPTP cũng có thể được dùng để tạo đường hầm cho phiên PPP thông qua mạng IP. Trong trường hợp này, đường hầm PPTP và phiên PPP cùng chạy giữa hai thiết bị và thiết bị gọi thao tác giống như một PNS.
Giữa PAC và PNS có mối quan hệ nhiều – nhiều. Ví dụ, một nhà cung cấp dịch vụ Internet có thể chọn việc hỗ trợ PPTP hoặc một số lớn các mạng khách hàng tư nhân và tạo các VPN riêng cho họ. Mỗi mạng tư nhân có thể cần một hay nhiều PNS. Một PNS có thể kết nối tới nhiều PAC để tập trung lưu lượng từ một số lớn các khu vực phân chia về địa lý.
PPTP dùng một phiên bản mở rộng của GRE để mang gói tin PPP. Điều này cho phép giảm tắc nghẽn và điều khiển luồng trên đường hầm. Cơ chế này cho phép tăng hiệu quả sử dụng băng thông cho đường hầm và tránh việc phát lại không cần thiết và làm tràn bộ đệm. PPTP không đặt ra một thuật toán
riêng biệt nào để điều khiển nhưng nó định nghĩa các tham số để giúp các thuật toán này thực hiện được.
2.5.1.2 Các kết nối PPTP.
Có hai thành phần kết nối song song của PPTP là: một kết nối điều khiển giữa mỗi cặp PAC – PNS hoạt động theo giao thức TCP và một đường hầm IP giữa cặp PAC – PNS đó dùng để vận chuyển các gói tin PPP đã đóng gói theo phương thức GRE.
Kết nối điều khiển.
Hình 2-8: Kết nối điều khiển PPTP giữa client và sever.
Trước khi đường hầm PPP có thể thực hiện giữa một PAC và PNS, một kết nối điều khiển phải được thiết lập. Kết nối này là phiên TCP tiêu chuẩn, thơng qua đó người ta truyền thơng tin quản lý và điều khiển cuộc gọi PPTP. Phiên điều khiển về mặt logic giống như các phiên thông thường truyền qua đường hầm PPTP nhưng được tách biệt với các phiên thông thường. Với mỗi cặp PAC – PNS đều phải có một đường hầm và một kết nối điều khiển. Kết nối điều khiển này dùng để khởi tạo, quản lý và giải phóng các phiên truyền qua đường hầm. Có nghĩa là nó sẽ báo hiệu cho một PNS về một cuộc gọi đến từ một PAC, cũng như là hướng dẫn PAC thực hiện cuộc gọi.
Một kết nối điều khiển có thể được tạo bởi cả PNS và PAC. Là khởi tạo theo giao thức TCP, nên PNS và PAC cũng có ba bản tin khởi tạo: bản tin bắt đầu kết nối, bản tin yêu cầu kết nối và bản tin hồi đáp. Các bản tin này cũng dùng để trao đổi thông tin về khả năng đáp ứng cơ bản của PAC và PNS cho một phiên truyền. Khi kết nối điều khiển được thiết lập, PAC hoặc PNS có thể tạo các phiên bằng cách gửi các cuộc gọi yêu cầu và trả lời các cuộc gọi đến. Kết nối điều khiển có thể truyền thơng tin về các thay đổi trong hoạt động của một phiên bằng bản tin Set-Link-info. Các phiên làm việc riêng rẽ có thể được giải phóng bằng PAC hay PNS, và cũng phải thơng qua bản tin điều khiển.
Kết nối điều khiển tự bản thân nó duy trì bằng các bản tin hồi đáp keep- alive echo. Điều này cho thấy là có thể nhận biết các sai hỏng trong kết nối một cách liên tục và đều đặn. Các sai hỏng khác có thể được nhận biết qua bản tin điều khiển cảnh báo lỗi Wan-Error-Notify.
Trong tương lai, có thể có thêm các bản tin phục vụ cho việc quản lý, chẳng hạn như cho phép PNS yêu cầu biết trạng thái của một PAC, các bản tin này chưa được định nghĩa ở đây.
Kết nối đường hầm.
PPTP yêu cầu tạo một đường hầm cho mỗi cặp PNS-PAC. Đường hầm này được dùng để mang tất cả các gói tin của các phiên PPP giữa PNS-PAC đó. Để làm được điều này thì trong phần mào đầu GRE sẽ có một khóa chỉ định gói tin thuộc phiên nào. Như vậy, các gói tin PPP được ghép kênh và phân kênh trên cùng một đường hầm giữa một cặp PNS-PAC. Giá trị của khóa trong phần mào đầu được tạo bởi thủ tục khởi tạo cuộc gọi diễn ra trên kết nối điều khiển.
Phần mào đầu GRE cịn bao gồm thơng tin báo nhận và u cầu tiếp (acknowledgment và sequencing) dùng trong điều khiển tắc nghẽn và phát hiện lỗi trong đường hầm. Kết nối điều khiển được một lần nữa sử dụng để
quyết định tốc độ và các tham số bộ đệm có thể dùng để cho phép các gói tin PPP truyền đi bình thường trong đường hầm. PPTP khơng đưa ra một thuật toán cụ thể nào để điều khiển tắc nghẽn và điều khiển luồng mà chỉ gợi ý sử dụng một vài thuật tốn quyết định thời gian time-out thích hợp để khắc phục lỗi mất dữ liệu hoặc mất báo nhận trên đường hầm.
2.5.1.3 Cấu trúc đóng gói PPTP.
Gói tin truyền qua đường hầm được đóng gói như sau:
Hình 2-9: Cấu trúc gói tin PPTPQ trình đóng gói dữ liệu diến ra như sau: Q trình đóng gói dữ liệu diến ra như sau:
- Người dùng quay số tới chuyển mạch truy nhập từ xa ISP dùng giao thức PPP, gói tin được đóng gói trong khung PPP.
- Tại chuyển mạch, các khung này được gỡ bỏ, chuyển mạch truy nhập từ xa tạo một phiên qua đường hầm đến RAS, đóng gói lại tải tin vào phần mào đầu GRE, sau đó đóng gói trong mào đầu IP. Cuối cùng, gói tin được thêm phầm mào đầu của lớp liên kết dữ liệu, phần mào đầu này tùy thuộc mơi trường truyền dẫn. Trong q trình vận chuyển, phần mào đầu của lớp liên kết dữ liệu có thể bị thay đổi tùy thuộc mơi trường, chẳng hạn như Ethernet, Frame Relay, PPP over ISDN ..
- Máy chủ RAS xử lý gói tin PPTP đến giống như các cuộc gọi đến khác. Nó tách bỏ mào đầu của tầng liên kết dữ liệu, mào đầu IP, và mào đầu GRE khỏi tải tin rồi xử lý như các cuộc gọi PPP khác. RAS server xác
nhận khách hàng gọi đến bằng các phương thức chứng thực như : Chứng thực mã hóa của Microsoft, chứng thực mã hóa, hoặc bất kỳ loại chứng thực nào khác.
- Trước khi gói tin từ máy khách tới mạng LAN, khung PPP được tách khỏi vỏ bọc IP, NetBEUI, hay IPX.
Hình 2-10: Các tầng giao thức hoạt động trong một kết nối PPTP
Mào đầu GRE dùng trong PPTP được nâng cao một chút so với mô tả trong các tài liệu trước đây. Điểm khác biệt chính là trường số báo nhận Acknowledgment Number dùng để quyết định liệu gói tin hoặc một tập các gói tin đã đến đích chưa. Việc báo nhận khơng nhằm kết hợp với phát lại gói tin mà dùng để quyết định tốc độ phát gói tin qua đường hầm trong phiên truyền đó. Dạng của mào đầu GRE như sau:
Hình 2-11: Cấu trúc GRE header Các trường trong mào đầu GRE: Các trường trong mào đầu GRE:
C: (Bit 0) Cờ kiểm tra checksum. Nếu có kiểm tra thì cờ được xóa về 0 R: (Bit 1) Bít định tuyến (có hay khơng định tuyến). Xóa về 0
K: (Bit 2) Bit biểu thị có trường Key khơng. Thiết lập 1.
S: (Bit 3) Bit biểu thị có tải hay khơng. Thiết lập 1 nếu có tải, 0 nếu khơng có tải. s: (Bit 4) Tuyến đường giới hạn. Xóa về 0.
Recur: (Bits 5-7) Điều khiển quay lại. Xóa về 0.
A: (Bit 8) Biểu thị có trường Acknowledgment Number khơng. Nếu có thì thiết lập 1.
Flags: (Bits 9-12) Phải có giá trị 0. Ver: (Bits 13-15) Phải có giá trị 1.
Protocol Type: Loại giao thức có giá trị hex 880B Key: được chia làm hai trường như sau:
- Payload Length: Kích thước tải
- Call ID: số ID của phía sở hữu gói tin. Sequence Number: Số thứ tự của gói tin.