2.1.1. Tổng quan
SNMP là thuật ngữ viết tắt từ Simple Network Management Protocol (Giao thức quản lý mạng đơn giản). Như phần trên đã trình bày, sự phức tạp của việc quản lý mạng máy tính đã gây rất nhiều khó khăn cho các nhà quản lý mạng, và SNMP ra đời nhằm trợ giúp giải quyết vấn đề này. Năm 1988 SNMP được phát triển thành chuẩn cho việc quản lý các thiết bị mạng IP bởi tổ chức IETF (Internet Engineering Task Force). Nó cung cấp một cách có hệ thống phương pháp giám sát và quản lý mạng máy tính bằng những thông báo trạng thái hoặc những báo cáo về các sự cố trên mạng tới người quản lý mạng. Ngày nay, SNMP là giao thức phổ biến nhất để quản lý các liên mạng, như mạng máy tính, mạng viễn thông…
Mô hình quản lý mạng của SNMP dựa trên kiến trúc Manager/Agent. SNMP sử dụng giao thức UDP (User Datagram Protocol) để truyền dữ liệu giữa các trạm làm việc với nhau. SNMP sử dụng số hiệu cổng dịch vụ 161 để gửi và nhận thông tin, và số hiệu cổng dịch vụ 162 để nhận thông tin bẫy (Trap) từ các trạm hay đối tượng được quản lý. Mỗi đối tượng có tích hợp SNMP thì hầu hết đều phải có một số hiệu cổng mặc định (161, 162), tuy nhiên một số nhà sản xuất cho phép thay đổi số hiệu cổng dịch vụ mặc định.
Trong mô hình hoạt động của SNMP, có hai thành phần quan trọng là thành phần quản lý (NMS – Network Management Station, hay còn gọi là Manager) và các thành phần đóng vai trò như các tác tử quản lý (Agent). Thành phần quản lý NMS có nhiệm vụ truy vấn các thông tin từ Agent, xử lý các thông tin mà Agent gửi về, đồng thời ra các quyết định tương ứng với thông tin đó. Còn thành phần Agent có nhiệm vụ thu thập thông tin trên các máy trạm hoặc thiết bị mà nó tích hợp để báo cáo về NMS.
Ngoài hai thành phần chính này, SNMP còn cần một số thành phần khác cũng rất quan trọng. Đó là cơ sở thông tin quản lý MIB (MIB - Management Information Base), và kiến trúc thông tin quản lý SMI (SMI –
Structure of Management Information). SMI cung cấp cách thức để định nghĩa các đối tượng quản lý và cách thức làm việc với chúng. Một Agent sẽ có danh sách các đối tượng mà nó theo dõi. Một đối tượng có thể có các trạng thái khác nhau (ví dụ với một giao tiếp mạng thì có thể có trạng thái hoạt động hoặc không hoạt động). Còn MIB là cơ sở dữ liệu lưu các thông tin về đối tượng quản lý mà Agent theo dõi. Các thông tin mà NMS có thể truy nhập sẽ được định nghĩa trong MIB. Tức là, SMI cung cấp cách thức để định nghĩa các đối tượng quản lý, còn MIB dùng cú pháp của SMI để định nghĩa bản thân các đối tượng đó.
SNMP là giao thức quản lý mạng đơn giản vì các Agent của nó đòi hỏi rất ít tài nguyên và hầu hết các công việc xử lý, lưu trữ đều nằm trên phía Manager, đồng thời nó có một tập lệnh khá đơn giản để thực hiện các thao tác trao đổi thông tin. Các lệnh cơ bản là:
1- get: được NMS dùng để gửi các yêu cầu đến Agent
2- get-next: cho phép người quản trị thực hiện lệnh để lấy tuần tự một nhóm giá trị được định nghĩa trong cơ sở thông tin quản lý MIB 3- set: được dùng để thay đổi các giá trị cho một đối tượng quản lý 4- get-response: được Agent sử dụng để trả lời các yêu cầu từ NMS 5- trap: được Agent sử dụng để thông báo cho NMS một sự việc bất
thường nào đó xẩy ra, như các trường họp lỗi bất thường.
Ngoài tập lệnh cơ bản này, còn có một số lệnh khác, các lệnh này chỉ có trong các phiên bản SNMPv2 và SNMPv3: get-bulk, notification, inform,
report. Trong đó get-bulk là cách để NMS yêu cầu Agent gửi tất các trả lời có thể, điều này khác với get và get-next là Agent sẽ báo lỗi nếu số lượng trả lời quá lớn. Trong phiên bản SNMPv1, định dạng thông điệp trap (hay SNMPv1 trap) có sự khác nhau với các lệnh get và set, do đó trong phiên bản SNMPv2 đã định nghĩa lệnh notification nhằm chuẩn hoá định dạng thông điệp cho phù hợp với hai lệnh đó. Trong thực tiễn thì một mạng lớn có thể có nhiều NMS, do đó SNMpv2 đã định nghĩa lệnh inform nhằm cung cấp khả năng kết nối giữa các NMS này, lệnh này cũng cho phép gửi một SNMPv2 trap đến một
NMS. Lệnh report cũng được định nghĩa bởi SNMPv2 nhưng nó không được sử dụng, nhưng trong phiên bản SNMPv3 nó được sử dụng để cho phép các
SNMP Engine trao đổi với nhau
Để hiểu rõ hơn về các phiên bản của SNMP, sau đây ta sẽ xem xét sơ lược từng phiên bản.
- SNMP phiên bản 1 (SNMPv1) là phiên bản đầu tiên của giao thức SNMP, nó được định nghĩa trong RFC 1157 (Request For Comments). Đây là chuẩn đầu đủ của IETF. Hoạt động của SNMPv1 dựa trên ba tên định danh: read-only, read-write và trap. Các tên định danh này được coi như các mật khẩu (nhưng ở dạng xâu ký tự rõ), chúng cho phép các ứng dụng dựa trên SNMP có thể truy nhập được các thông tin của đối tượng được quản lý. Các thao tác trao đổi thông tin dựa trên tập lệnh cơ bản.
- SNMP phiên bản 2 (SNMPv2) được định nghĩa trong RFC 1905, RFC 1906, RFC 1907. Phiên bản này được coi là phiên bản thử nghiệm của IETF, một số nhà sản xuất chỉ hỗ trợ nó trong việc thực nghiệm. SNMPv2 bắt nguồn từ hai phát kiến vào năm 1992: một là Secure SNMP và một là SMP (Simple Management Protocol). Secure SNMP có những đặc tính an toàn mà SNMPv1 không có, nhưng nó lại sử dụng định dạng gói tin không tương thích với SNMPv1. So với SNMPv1 thì SNMPv2 cung cấp nhiều cách thức linh hoạt hơn trong quản lý, trong kích thước dữ liệu truyền đi và môi trường mà nó có thể vận hành.
- SNMP phiên bản 3 (SNMPv3) cũng là một phiên bản chuẩn của IETF. Nó được định nghĩa trong rất nhiều tài liệu RFC, như RFC2571, RFC2572, RFC2573, RFC2574, RFC 2575. SNMPv3 hỗ trợ tất cả các thao tác và định nghĩa trong phiên bản SNMPv1 và SNMPv2. Trong phiên bản này, IETF đã đưa vào khả năng hỗ trợ an ninh bằng cách xác thực và có các thông báo riêng giữa các thực thể quản lý. SNMPv3 cũng giải quyết tiếp một số tồn tại kéo dài liên quan đến việc triển khai nâng cấp của SNMP để quản lý cấu hình,
tính toán và quản lý lỗi. Tuy nhiên, SNMPv3 chưa phải là chuẩn đầy đủ, do vậy chỉ có một vài nhà sản xuất có sản phẩm hỗ trợ SNMPv3. SNMPv1 và SNMPv2 dùng các tên định danh để thiết lập các hoạt động tin cậy giữa NMS và Agent. Một Agent sẽ được cấu hình với ba tên định danh:
- read-only: cho phép ta chỉ đọc giá trị dữ liệu mà không cho phép thay đổi nó. Ví dụ như nó chỉ cho phép ta lấy giá trị về số lượng gói tin đi qua giao tiếp mạng trên bộ định tuyến, nhưng không cho phép thiết lập lại bộ đếm.
- read-write: không những cho phép đọc giá trị của bộ đếm mà nó còn cho phép thiết lập lại, và thậm chí còn có thể thiết lập được các thông số giao tiếp mạng cũng như cấu hình lại bộ định tuyến.
- trap: cho phép nhận các bẫy (là các thông báo không đồng bộ) từ các Agent. Trap chính là cách thức mà Agent nói với NMS một vấn đề bất thường nào đó xẩy ra.
Hầu hết các nhà sản xuất đều thiết lập mặc định trên sản phẩm của họ các định danh này. Trong đó read-only cho phép truy nhập công cộng, còn
read-write chỉ cho phép truy nhập vào các thành phần riêng tư. Các trap có thể được thiết lập để phát sinh các thông báo lỗi xác thực khi có một ai đó cố tình truy vấn các thiết bị bất hợp pháp.
Vì các từ định danh này là dạng chuỗi văn bản rõ trong phiên bản SNMPv1 và SNMPv2 nên sẽ có nhiều nguy cơ mất an toàn khi chúng được truyền trên môi trường mạng. Do vậy, để giảm nguy cơ rủi ro trong quá trình trao dổi dữ liệu cần có các biện pháp hỗ trợ khác như bức tường lửa và mạng riêng ảo. Bức tường lửa có thể thiết lập trên các trạm phía Agent chỉ cho phép các địa chỉ từ các NMS truy nhập trên cổng dịch vụ 161 (UDP) để tránh việc ai đó cố tình truy nhập với mục đích xấu, còn mạng riêng ảo dùng để mã hoá dữ liệu trên đường truyền. Tuy nhiên, trong phiên bản SNMPv3 vấn đề an toàn được đặt ra giúp cho quá trình hoạt động của hệ thống được đảm bảo.
2.1.2. Kiến trúc Manager và Agent
Như trên đã trình bày, kiến trúc hệ thống quản lý mạng cơ bản là kiến trúc Manager/Agent. Kiến trúc Manager/Agent gồm bốn thành phần chính:
- Một hệ thống quản lý (Management System) - Một hệ thống được quản lý (Managed System)
- Một cơ sở dữ liệu thông tin quản lý (Management Database) - Giao thức mạng
Kiến trúc này được thể hiện như hình 2.1.
* Hệ thống quản lý có nhiệm vụ cung cấp giao diện giữa người quản trị mạng và các thiết bị được quản lý. Nó cũng cung cấp các tiến trình quản lý mạng. Tiến trình quản lý thực hiện các công việc như đo lường lưu thông trên các phần mạng LAN hoặc ghi các tốc độ truyền và địa chỉ vật lý của giao tiếp mạng trên bộ định tuyến LAN. Hệ thống quản lý cũng cung cấp một vài loại kết xuất báo cáo để trình diễn dữ liệu quản lý như dạng đồ hoạ hay các trạng thái tĩnh,…
Một hệ thống quản lý có thể có một vài trạm quản lý mạng, đây chính là Manager. Manager thường là một máy chủ chạy các phần mềm hệ thống để có thể thực hiện các chức năng quản lý các tác vụ cho một mạng. Thông thường Manager được đặt trên các máy có cấu hình tốt để xử lý thông tin và
hiển thị các thông tin thời gian thực về hệ thống mạng mà nó quản lý. Thành phần này có nhiệm vụ cơ bản là liên tục thực hiện truy vấn (poll), các sự kiện bẫy (trap) từ tác tử quản lý (Agent), xử lý các thông tin đó và hiển thị kết quả tới người dùng. Manager có thể được hiểu như thành phần trung gian mà qua đó người quản trị mạng có thể thực hiện các chức năng quản lý mạng. Hiện nay, giao diện người dùng hầu hết là dạng đồ hoạ GUI (GUI – Graphic User Interface) hoặc Web. Thông thường một Manager có các chức năng sau:
- Cài đặt một giao thức quản lý mạng (ở đây là giao thức SNMP). - Làm chức năng của một trung tâm giám sát và quản lý mạng.
- Thực hiện các chức năng: yêu cầu các Agent cung cấp thông tin quản lý, nhận trả lời từ Agent, thiết lập các thông số trong Agent, nhận các sự kiện trap từ Agent.
* Hệ thống được quản lý gồm tiến trình tác tử quản lý (Agent) và các đối tượng được quản lý. Tiến trình Agent thực hiện các thao tác quản lý mạng như thiết lập các tham số cấu hình, các trạng thái của đối tượng quản lý… Các đối tượng quản lý bao gồm các máy trạm làm việc, máy chủ, hub, switch, máy in, hoặc cũng có thể là phần mềm… Các đối tượng này có các thuộc tính có thể được định nghĩa tĩnh (như tốc độ giao diện mạng), động (như bảng định tuyến), hoặc các thông tin đo lường (như số lượng gói tin truyền lỗi).
Agent thực chất là các môđun chương trình thực hiện các chức năng quản lý mạng trên những thực thể được quản lý. Các Agent này truy cập đến các thực thể được quản lý trong phạm vi nó phụ trách để lấy các thông tin cần thiết, sau đó tập hợp lại và gửi tới Manager theo yêu cầu thông qua giao thức quản lý mạng đơn giản SNMP. Ngày nay, Agent đã được phát triển và tích hợp vào hầu hết các thiết bị phần cứng như các Switch, Router, UPS…, hệ điều hành như Unix, Window 2000 Server,… Thông thường Agent cần có các tính năng sau:
- Cài đặt giao thức (ở đây là giao thức SNMP)
- Lưu trữ dữ liệu thông tin quản lý trong cơ sở thông tin quản lý và tìm kiếm các thông tin này khi cần thiết.
- Có khả năng thông báo các sự kiện theo những điều kiện được xác lập trước đến Manager.
- Có thể thực hiện quản lý đối với các thực thể không tuân theo chuẩn giao thức SNMP (thực thể “ngoại lai”) với cơ chế uỷ quyền (Proxy). * Cơ sở dữ liệu thông tin quản lý mạng còn được gọi là Management Information Base – MIB. MIB được kết nối với cả Manager và Agent. Để định nghĩa cấu trúc dữ liệu trong MIB, người ta sử dụng cách tổ chức thông tin logic gọi là kiến trúc thông tin quản lý SMI (SMI – Structure of Management Information). SMI được tổ chức thành một cây cấu trúc, bắt đầu từ gốc (root) với các nhánh là các đối tượng được quản lý tổ chức như các mục logic. MIB thể hiện các đối tượng quản lý như các lá của nhánh.
* Giao thức quản lý cung cấp cách thức cho Manager, các đối tượng quản lý và các Agent có thể liên lạc truyền thông được với nhau. Để thiết lập quá trình kết nối, giao thức sẽ định nghĩa các thông điệp. Các thông điệp này có thể hiểu như các lệnh, các trả lời và các thông báo. Manager dùng các thông điệp này để yêu cầu các thông tin quản lý và Agent dùng chúng để trả lời. Giao thức phổ biến nhất hiện này là giao thức quản lý mạng đơn giản SNMP.
Trong kiến trúc quản lý mạng dựa trên SNMP thì mô hình tổng quan sẽ có dạng như Hình 2.2. Trong mô hình này, NMS (Network Management
Hình 2.2 - Tổng quan mô hình quản lý mạng dựa trên SNMP
MIB NMS Network Agent MIB MIB NMS Agent Agent
Station) là trạm quản lý, đây chính là Manager, và được gọi là SNMP Manager. Còn tác tử quản lý sẽ là SNMP Agent.
Để hình dung rõ mối quan hệ giữa Manager và Agent dựa trên SNMP, ta xem xét mô hình trong hình 2.3.
SNMP Agent cung cấp các thông tin quản lý bằng cách lưu dấu vết hàng loạt các hoạt động của thực thể nó quản lý. Ví dụ, một Agent trên Router có thể lưu dấu các trạng thái của mỗi giao tiếp mạng: trạng thái kích hoạt (Up), trạng thái không kích hoạt (Down)... Khi đó Manager có thể truy vấn để lấy trạng thái về các giao tiếp mạng trên Router này, và nếu có một giao tiếp mạng nào ở trạng thái Down thì nó có thể có các hành động phù hợp để xử lý, như kích hoạt hoặc báo lỗi.
Trong trường hợp, SNMP Agent phát hiện một lỗi bất thường xẩy ra, nó sẽ phát sinh một thông điệp trap và gửi đến SNMP Manager. Sau khi các sự cố được khắc phục, thì SNMP Agent sẽ gửi thông điệp trap mang nội dung là “All clear”, điều này rất hữu ích để chỉ ra rằng các trạng thái lỗi đó đã được khắc phục. Như mô hình quan hệ trên, ta có thể thấy các thông điệp trên (poll
và trap) có thể xẩy ra đồng thời. Không có một hạn chế nào khi mà SNMP Manager truy vấn hoặc SNMP Agent gửi thông điệp trap.
Trong trường hợp có các trạm cần quản lý nhưng lại không tuân theo các chuẩn mà giao thức SNMP cung cấp, khi đó SNMP Agent có thể thiết lập để hoạt động như một dạng uỷ quyền (Proxy). Mô hình được thể hiện trên hình 2.4.
Hình 2.3 - Mối quan hệ giữa Manager và Agent
SNMP Manager
(NMS)
SNMP Agent
Trap gửi tới NMS Truy vấn đến Agent Trả lời truy vấn từ Agent
Trong kiến trúc uỷ quyền này, trạm quản lý liên lạc với Agent uỷ quyền và chỉ ra định danh của thực thể không thuộc chuẩn hỗ trợ. Tiếp đó Agent uỷ quyền chuyển các tương tác mà nó nhận được từ trạm quản lý đến thực thể đó. Trong trường hợp này, cơ sở thông tin quản lý (MIB) trong Agent uỷ quyền tương ứng với thông tin quản lý hiện tại của thực thể “ngoại lai”.
Hình 2.4 - Kiến trúc Manager/Agent với cơ chế uỷ quyền
Hình 2.5 – Tổng thể mô hình Manager/Agent