PPP (Point-to-Point Protocol) là 1 giao thức trao đổi số liệu trong kết nối điểm-điểm ở ngay trên mức liên kết số liệu (data link). Đây là giao thức được sử dụng chính trong các dịch vụ Internet hiện nay như Dialup, xDSL. Giao thức PPP bao gồm các giao thức sau:
- Giao thức trao đổi số liệu ở mức liên kết dữ liệu (Data Link Layer Protocol) – tương tự giao thức chuẩn HDLC (High-Level Data Link Control) – cho phép thực hiện kết nối PPP trong môi trường liên kết dữ liệu cụ thể
- Giao thức điều khiển mức liên kết dữ liệu LCP (Link Control Protocol): Cung cấp thông tin điều khiển để thiết lập kết nối, các thông số để cấu hình kết nối, kiểm tra chất lượng kết nối và giải phóng kết nối ở mức liên kết dữ liệu
- Giao thức điều khiển mức mạng NCP (Network Control Protocol): Cung cấp các thông tin điều khiển để thiết lập kết nối, cấu hình kết nối, giám sát trạng thái hoạt động của kết nối và giải phóng kết nối ở mức mạng.
Hình 2.16. Giao thức PPP Giao thức kết nối điểm điểm PPP có những ưu điểm sau:
- Thực hiện thiết lập và giải phóng kết nối động: khi không có dữ liệu cần trao đổi, tiến trình PPP giải phóng đường truyền vật lý và duy trì kết nối logic. Khi tiến trình này truyền hay nhận dữ liệu thì kết nối PPP vật lý được tự động thiết lập trở lại. Việt thực hiện thiết lập và giải phóng kết nối động như trên cho phép giảm cước phí đường truyền 1 cách đáng kể.
- Kiểm tra quyền truy nhập
- Kiểm tra, sửa lỗi và nén số liệu chuyển đổi
- Hỗ trợ cho các đường kết nối tốc độ cao (VD: đường E1 với tốc độ 2,048 Mbps)
2.6.1 Thiết lập kết nối PPP[3]
Đầu tiên, để thiết lập 1 kết nối điểm tới điểm, mỗi trạm của liên kết PPP phải gửi các gói LCP để cấu hình cũng như kiểm tra tầng liên kết dữ liệu (data link). Sau đó, các thực thể PPP có thể thực hiện những yêu cầu xác thực. Thực thể PPP phải gửi các gói NCP cho phép chọn và cấu hình các giao thức lớp mạng. Khi giao thức ở lớp mạng đã được xác định, việc trao đổi số liệu trong các ứng dụng thực sự của người dùng sẽ được thực hiện. Kết nối sẽ được duy trì cho đến khi các thực thể PPP gửi các gói LCP, NCP yêu cầu giải phóng kết nối. Các gói LCP có thể chia làm 3 loại:
1. Cấu hình kết nối PPP (Link Configure Packet) để thiết lập và cấu hình 1 kết nối PPP, bao gồm các gói điều khiển sau đây: yêu cầu cấu hình (Configure Request), xác nhận cấu hình (Configure ACK) và phủ nhận cấu hình (Configure NAK).
2. Giải phóng kết nối PPP, bao gồm các gói điều khiển sau đây: yêu cầu giải phóng kết nối (Terminate Request) và xác nhận giải phóng kết nối (Terminate ACK).
3. Duy trì kết nối để điều khiển và giám sát trạng thái hoạt động của kết nối, bao gồm các gói điều khiển sau đây: Phủ nhận mã (Code Project), phủ nhận giao thức (Protocol Reject), trả lời lặp lại (Echo Reply), yêu cầu lặp lại (Echo Request) và yêu cầu hủy bỏ (Discard Request).
Mỗi khi nhận được gói yêu cầu cấu hình (Configure Request), thực thể PPP có thể trả lời bằng 1 trong 3 loại gói điều khiển sau:
a. Gói xác nhận cấu hình
Khi nhận được gói yêu cầu cấu hình 1 kết nối PPP với các giá trị được chấp nhận thì thực thể PPP nhận sẽ trả lời bằng 1 gói xác nhận cấu hình (Configure ACK Packet). Trường tùy chọn giữ nguyên các giá trị trong gói yêu cầu cấu hình cuối cùng.
b. Gói phủ nhận cấu hình.
Khi nhận được gói yêu cầu cấu hình 1 kết nối PPP với 1 số giá trị được chấp nhận và 1 số giá trị không được chấp nhận thì thực thể PPP nhận sẽ trả lời bằng 1 gói phủ nhận cấu hình (Configure NAK Packet). Trường tùy chọn giữ nguyên các giá trị tùy chọn không được chấp nhận nhưng với giá trị mặc định được chấp nhận. Trường định danh lấy giá trị của gói yêu cầu cấu hình cuối cùng. Nếu gói yêu cầu cấu hình có trường tùy chọn (tùy chọn logic) không chứa giá trị thì sẽ được trả lời bằng gói loại bỏ cấu hình (Configure Reject). Sau khi nhận được gói phủ nhận cấu hình, và nếu thực thể PPP gửi các gói yêu cầu cấu hình kết nối PPP tiếp theo, thì các giá trị trong trường tùy chọn của các gói yêu cầu cấu hình này sẽ được sửa theo các giá trị trong trường tùy chọn của gói phủ nhận cấu hình.
c. Gói loại bỏ cấu hình
Khi nhận được gói yêu cầu cấu hình có một số trường tùy chọn (kiểu logic) không chứa giá trị thích hợp, thì các gói yêu cầu này không thể chấp nhận được và sẽ được trả lời bằng gói loại bỏ cấu hình (Configure Reject). Trường tùy chọn sẽ bao gồm các tùy chọn không được chấp nhận. Trường định danh lấy giá trị của gói yêu cầu cấu hình cuối cùng.
2.6.2 Kiểm tra quyền truy nhập[3]
Sau khi thiết lập kết nối, tiến trình PPP yêu cầu kiểm tra quyền truy nhập kết nối bằng 2 giao thức sau đây:
a. Giao thức kiểm tra bằng mật khẩu PAP (Password Authentication Protocol)
b. Giao thức kiểm tra bằng yêu cầu bắt tay CHAP (Challenge Handshake Authentication Protocol).
Khi sử dụng giao thức PAP, thiết bị đuợc đòi hỏi xác thực phải gửi định danh và mật khẩu của người sử dụng tới thiết bị yêu cầu xác thực, cho tới khi được chấp nhận hoặc kết thúc
kết nối PPP. PAP không phải là 1 giao thức xác thực tốt bởi vì định danh và mật khẩu của người sử dụng được gửi rõ ràng dưới dạng văn bản (plain text), không được mã mật.
Với giao thức CHAP, thiết bị khởi tạo gửi cho thiết bị kia 1 bản tin (message). Thiết bị nhận lời nhắn sẽ tính toán đáp lại lời nhắn theo quy tắc bí mật đã được hai bên thỏa thuận trong giai đoạn thiết lập kết nối LCP. Thiết bị khởi tạo khi nhận được lời đáp sẽ so sánh với giá trị nó tính được. Nếu 2 giá trị khờp nhau thì nó sẽ gửi lại gói thông báo tốt đẹp (Success message) và kết nối được thiết lập. Trường hợp ngược lại, kết nối không được thực hiện. CHAP còn cho phép tiến hành việc xác thực từng chu kỳ hoặc ở bất cứ thời điểm cần thiết nào để khẳng định chắc chắn rằng đối tượng kết nối ở đầu bên kia là hợp pháp.
2.6.3 Cấu trúc gói số liệu[2,3]
Hình 2.17. Cấu trúc gói số liệu PPP
- Cờ (Flag Byte): giới hạn 1 khung số liệu. Khi không trao đổi số liệu, đường truyền được giữ đồng bộ bởi việc phát liên tục các cờ này.
- Trường địa chỉ (Address Byte): xác định địa chỉ thiết bị nguồn phát sinh ra gói số liệu
- Trường điều khiển (Control byte): cho biết đây là gói số liệu điều khiển hay là gói số liệu của người dùng.
- Trường giao thức (Protocol Field): cho biết số liệu trong trường số liệu thuộc giao thức nào.
Thí dụ: với giá trị 0021 thì trường dữ liệu là gói IP; nếu là c021 thì trường dữ liệu là các gói LCP;
nếu là 8021 thì trường dữ liệu là các gói NCP.
- Trường dữ liệu (Data Field): chứa dữ liệu cần trao đổi. Chiều dài của trường này nhỏ hơn hoặc bằng giá trị MTU (Maximum Transmission Unit). Giá trị MTU mặc định là 1600 byte, còn giá trị thực tế sẽ do LCP quyết định trong qúa trình trao đổi các gói cấu hình.
- Trường kiểm tra CRC (Cyclic Redundancy Check): trường này có độ dài là 2 byte, tính toán dựa trên các bit của các trường địa chỉ, trường điều khiển, trường giao thức và trường dữ liệu.
2.6.4 Kiểm tra chất lượng đường kết nối[3]
Để kiểm tra chất lượng đường kết nối, PPP sử dụng:
a. Gói điều khiển chất lượng kết nối LQM (Link Quality Monitoring) b. Gói thông báo chất lượng kết nối LQR (Link Quality Report)
Các gói LQR chứa thông tin về số lượng các gói dữ liệu đã gửi và nhận ở mỗi thiết bị kết nối. Mỗi khi một thiết bị kết nối nhận được 1 gói LQR, PPP sử dụng thông tin trong gói đó để tính “chất lượng gửi” (outbound quality)-chính là tỷ lệ phần trăm các gói số liệu do thiết bị này gửi đi và thiết bị kia nhận được và “chất lượng nhận” (inbound quality)-chính là tỷ lệ phần trăm các gói số liệu thiết bị kết nối kia gửi đi và thiết bị kết nối này nhận được.
Sau 5 chu kỳ trao đổi LQR, PPP tình trung bình các giá trị “chất lượng gửi” và “chất lượng nhận” và so sánh với giá trị ngưỡng đã đặt. Nếu 1 trong 2 giá trị “chất lượng gửi” hoặc
“chất lượng nhận” nhỏ hơn giá trị ngưỡng cho phép thì PPP sẽ giải phóng kết nối. Khi chất lượng đường truyền được cải thiện, PPP sẽ tự động khởi tạo lại kết nối