Mô hình thực tiễn này có các trạm quản trị SNMP Manager, trạm SNMP Agent và Proxy Agent. Ngoài ra, trong hình cũng thể hiện các cơ sở dữ liệu thông tin quản trị MIB cho Agent của máy trạm thông thƣờng và Agent cho các thiết bị mạng nhƣ Router.
2.2.2. Nguyên lý trao đổi thông tin
Để hình dung rõ mối quan hệ giữa Manager và Agent dựa trên SNMP và cũng nhƣ nắm rõ nguyên lý trao đổi thông tin giữa Manager và Agent, thể hiện nhƣ trong hình 2.6. SNMP Manager (NMS) SNMP Agent Trap gửi tới NMS
Truy vấn đến Agent Trả lời truy vấn từ Agent
Hình 2.6 : Nguyên lý trao đổi thông tin giữa Manager và Agent Hình 2.5: Tổng thể mô hình Manager/Agent Hình 2.5: Tổng thể mô hình Manager/Agent
Trong quá trình hoạt động, SNMP Manager (hay NMS) thƣờng gửi những tín hiệu thăm dò tới các Agent để kiểm tra trạng thái của các thiết bị. Quá trình thăm dò có thể đƣợc làm tự động hoặc ngƣời sử dụng sẽ khởi tạo tham số thăm dò. Khi nhận đƣợc các tín hiệu thăm dò, phía SNMP Agent sẽ trả lời các tín hiệu này. Để thực hiện đƣợc các tác vụ này, SNMP Agent phải đọc các thông tin của thực thể mà nó quản trị và lƣu trữ trong một cơ sở dữ liệu quản trị. Khi có yêu cầu, SNMP Agent sẽ đọc các thông tin và phản hồi lại cho phía trạm quản trị NMS.
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 không kích hoạt (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ệ giữa Manager và Agent cho thấy các thông điệp truy vấn poll hay cảnh báo 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 cảnh báo.
2.3. Giao thức quản trị mạng SNMP 2.3.1. Các thành phần 2.3.1. Các thành phần
SNMP quy định trong quản trị mạng có 3 thành phần chính, đó là: - Đối tƣợng bị quản trị (managed devices, managed applications). - Các tác tử (Agents).
- Hệ quản trị (NMS).
Đối tượng bị quản trị: là các thành phần mạng hỗ trợ giao thức SNMP. Chúng có nhiệm vụ thu thập thông tin quản trị và lƣu trữ để phục vụ cho NMS. Thành phần bị quản quản trị có thể là Router, Access server, Switch, Bridge, Hub, Printer, Web server, Mail server,….
Tác tử (Agent): là một phần mềm quản trị cài đặt trên đối tƣợng bị quản trị. Agent hiểu đƣợc các thông tin quản trị trên các đối tƣợng đó và biên dịch sang dạng có thể hiểu đƣợc của NMS.
Hệ quản trị (NMS): có nhiệm vụ thực thi phần mềm quản trị. Trong một hệ thống mạng, có thể có 1 hoặc nhiều NMS.
2.3.2. Các lệnh trong SNMP
SNMP sử dụng 3 lệnh cơ bản read, write, trap và một số lệnh tuỳ biến để quản trị thiết bị.
Lệnh Read đƣợc NMS dùng để đọc thông tin từ đối tƣợng bị quản trị. Các thông tin này đƣợc cung cấp qua các biến SNMP lƣu trữ trên đối tƣợng và đƣợc cập nhật bởi đối tƣợng đó.
Lệnh Write đƣợc NMS dùng để ghi các thông tin điều khiển lên đối tƣợng bằng cách thay đổi giá trị các biến SNMP.
Lệnh Trap dùng nhận các sự kiện gửi từ đối tƣợng bị quản trị tới NMS. Khi có sự kiện xảy ra trên đối tƣợng, lệnh trap sẽ đƣợc gửi tới NMS.
SNMP điều khiển, theo dõi thiết bị bằng cách thay đổi hoặc thu thập thông tin qua các biến giá trị lƣu trên đối tƣợng. Các Agent cài đặt trên đối tƣợng tƣơng tác với những chíp điều khiển hỗ trợ SNMP để lấy nội dung hoặc viết lại nội dung. Phƣơng thức hoạt động này có hai lợi ích:
- Giảm thiểu các lệnh điều khiển mà Agent phải hỗ trợ. - Không phải cài đặt nhiều thông tin về giao thức.
Việc giảm thiểu số lệnh điều khiển trực tiếp lên thiết bị giúp cho việc quản lý đƣợc an toàn hơn. Phần lớn số lệnh hiện nay là đọc nội dung biến điều khiển hoặc ghi lại nội dung mới. Bằng cách thay đổi nội dung biến điều khiển, SNMP sẽ gián tiếp điều khiển lên các thành phần mạng bị quản trị.
2.3.3. Cấu trúc gói dữ liệu
Mỗi gói tin SNMP gồm có 3 phần cơ bản: Version, Community, PDU, và đƣợc thể hiện nhƣ hình 2.7.
- Version: chỉ phiên bản của SNMP đang sử dụng (1.0, 2.0 hoặc 3.0). - Community: thể hiện các tên định danh (read-only, read-write, trap).
Một giao tiếp SNMP (Community) ứng với một quyền truy nhập: read- only (chỉ xem những cấu hình và thông tin) hoặc read-write (xem những cấu hình, thực thi những chƣơng trình & thay đổi chúng) hoặc trap (gửi những cảnh báo).
- PDU: chứa dữ liệu, các trƣờng của phần PDU này sẽ khác nhau tuỳ theo từng lệnh.
PDU có 5 kiểu lệnh
Kiểu lệnh Chức năng
GET REQUEST Đƣợc dùng để lấy thông tin từ MIB
GETNEXT REQUEST Đƣợc dùng để lần lƣợt đọc các giá trị của biến (trong trƣờng hợp đối tƣợng lƣu giữ một mảng các biến liên tục)
GET RESPONSE Đƣợc dùng để trả lời lại các gói tin GET và SET SET REQUEST Đƣợc dùng khi cần thay đổi giá trị của các biến
trong MIB, NMS gửi một bản tin có PDU dạng SETREQUEST tới Agent
TRAP Đƣợc dùng khi Agent phát hiện lỗi và muốn gửi cảnh báo đến NMS
Khuôn dạng của gói tin GET/SET PDU
PDU Var bind list Error index Error status Request ID
- Trƣờng Request ID:đƣợc dùng để định danh yêu cầu, ứng với mỗi yêu cầu sẽ có một trả lời với ID tƣơng ứng. Tại một thời điểm, có nhiều yêu cầu gửi tới agent nên cần có một ID để liên kết tƣờng minh và trả lời. - Trƣờng Error status: chỉ ra trạng thái của yêu cầu có đƣợc thực thi hay
không. Trong trƣờng hợp không, ứng với mã lỗi trả về sẽ biết lý do gây lỗi. Mã lỗi trả về có giá trị từ 0 đến 5. Nếu mã trả về là 0, yêu cầu đã đƣợc thực thi. Các mã lỗi từ 1 đến 4 sẽ chỉ ra nguyên nhân gây lỗi. Nếu trả lời lại có độ lớn vƣợt quá độ lớn của PDU, mã lỗi trả về là 1. Cụ thể nhƣ trong bảng 2.
Mã lỗi Ý nghĩa
0 Không lỗi 1 Giá trị quá lớn 2 Không có biến này
Hình 2.8: Khuôn dạng gói tin GET/SETBảng 1: Kiểu lệnh của PDU Bảng 1: Kiểu lệnh của PDU
3 Giá trị ghi vào biến vƣợt qua khoảng xác định 4 Biến chỉ đọc (không tiếp nhận yêu cầu ghi) 5 Lỗi không rõ nguyên nhân
- Trƣờng Error index: Lƣu chỉ số của biến bị lỗi trong danh sách biến. Nếu trong danh sách có 3 biến. Biến thứ 2 không thể ghi đƣợc, Error Index sẽ có giá trị 2.
- Trƣờng Var Bind List: Lƣu danh sách các tên biến và giá trị tƣơng ứng của nó. Chỉ với một bản tin, NMS có thể quy định giá trị cho nhiều biến dữ liệu của agent. Ví dụ, nếu agent truyền bản tin chậm do TTL nhỏ, bị phân mảnh, và độ lớn của bản tin quá lớn, trƣờng “VarBindList” có thể chứa các biến:
TTL: 12
Length: 512
DF: 0
TTL tăng lên 12; Độ lớn tối đa của gói tin IP là 512 byte và không phân mảnh. Tập các biến này đƣợc lƣu trong phần header của gói IP.
Khuôn dạng của gói tin TRAP PDU
Gói tin TRAP đƣợc Agent sử dụng để báo cho Manager khi có sự cố xảy ra tại Agent. Nó sẽ có dạng nhƣ trong hình 2.9.
TRAP PDU Enterprise Agent address Generic trap Specific trap Time stamp Variable bindings
Hình 2.9: Khuôn dạng gói tin TRAP PDUBảng 2: Mã lỗi Bảng 2: Mã lỗi
- Trƣờng Enterprise: chỉ ra định danh của đối tƣợng gửi TRAP. Ví dụ, dữ liệu ở đây là OID (1.3.6.1.2.1) đƣợc lấy theo cây địa chỉ MIB nhƣ trong hình 2.10.
- Trƣờng Agent Address: Lƣu địa chỉ mạng của đối tƣợng gửi TRAP. - Trƣờng Generic Trap: Có giá trị trong khoảng 0 – 6, xem bảng 3.
Giá trị Ý nghĩa
0 ColdStart
1 Warm Start
1.3.6.1.2.1
Root
ISO [1] CCITT [2] ISO-CCITT [3]
ORG [3]
NIST DoD [6] INTERNET [1]
Directory [1] Exp. [3] Private [4]
Mgmt [2]
MIB [1] MIB [2]
2 Link down
3 Link up
4 Authentication Failure
5 EGP neighbourhood
6 Enterprise Specific
+ Giá trị của Generic Trap sẽ là 4 nếu gói tin SNMP không đƣợc chứng thực theo chuỗi Community.
+ Giá trị của Generic Trap sẽ là 5 khi gateway gửi gói tin thông báo cho Manager về sự cố của gateway lân cận.
+ Giá trị của Generic Trap sẽ là 6 khi các phần tử muốn gửi bản tin chuyên biệt tới Manager. Ý nghĩa của gói tin đƣợc quy định riêng mà chỉ có các thành phần mạng Agent và Manager hiểu.
- Trƣờng Specific Trap: Thông báo các lỗi đặc biệt theo quy định của nhà sản xuất và trƣờng này chỉ có ý nghĩa khi giá trị của
GenericTrap là 6.
Ví dụ : Tỉ lệ traffic error vƣợt quá giới hạn, gateway bị tấn công DoS (Tấn công từ chối dịch vụ) hay thời gian trả lời của máy trạm bị timeout,…
- Trƣờng TimeStamp: Chỉ số miligiây kể từ khi thiết bị đƣợc khởi động. Giá trị này có thể đƣợc sử dụng để xác định các sự cố xảy ra với thiết bị.
- Trƣờng Variable Binding List: Danh sách các cặp biến/giá trị có liên quan của TRAP PDU. Phần tử mạng có thể gửi các thông số thống kê trong trƣờng hợp có lỗi xảy ra.
Ví dụ về danh sách biến nhƣ sau: ErrorCount = 25
DatagramSent = 0
DatagramReceived = 30
Đối với PDU tuỳ từng lệnh mà có các trƣờng khác nhau. Và để tạo thành một gói tin SNMP, nhƣ đã trình bày ở trên, nó còn đƣợc gắn thêm trƣờng Version và Community.
Gói tin SNMP này sẽ đƣợc đóng gói thành gói tin UDP rồi thành Frame trƣớc khi truyền đi, nó sẽ có dạng nhƣ hình 2.11.
Kích cỡ gói tin tối đa phụ thuộc vào kích cỡ của gói tin UDP, còn kích cỡ gói tin UDP tối thiểu chứa gói tin SNMP sẽ phải là 484 octet ( 1 octet = 8 bit = 1 byte).
2.3.4. Nguyên lý trao đổi thông tin
Nhƣ đã nói, SNMP hoạt động dựa trên mô hình Manager/Agent, trong đó Manager chính là hệ thống quản trị NMS và Agent đại diện cho phía các thành phần bị quản trị. Giao thức SNMP làm nhiệm vụ trao đổi thông tin giữa Manager và Agent. Giao thức SNMP sử dụng UDP để truyền thông tin giữa các Manager và Agent. UDP là giao thức không hƣớng kết nối, tức là sẽ không có kết nối nào đƣợc thiết lập giữa Manager và Agent trƣớc khi chúng trao đổi dữ liệu cho nhau. Vấn đề này đã từng đƣợc coi là dấu hiệu không tin cậy khi truyền tin với giao thức UDP. Tuy nhiên, với các ứng dụng của SNMP điều này đã hoàn toàn đƣợc khắc phục. Khi Manager gửi một gói tin UDP đến Agent, nó sẽ đợi trả lời (thời gian đợi này tuỳ thuộc vào việc cấu hình). Nếu hết thời gian mà Manager vẫn không nhận đƣợc trả lời thì nó sẽ gửi lại gói tin đó (số lần gửi lại này cũng tuỳ thuộc vào việc cấu hình). Trƣờng hợp Agent lỗi, sau khi khôi phục nó sẽ tự động gửi lại tín hiệu
trap thông báo cho Manager. Tất nhiên cũng có thể có trƣờng hợp xấu nhất là khi gói tin mà NMS gửi không thể đến đƣợc Agent và trap mà Agent gửi
cũng không đến đƣợc NMS. Tuy nhiên, thực tiễn đã cho thấy là SNMP hoạt động hiệu quả và ảnh hƣởng không nhiều đến hiệu suất của mạng.
Trong mô hình truyền thông TCP/IP, mô hình hoạt động của SNMP đƣợc thể hiện nhƣ hình 2.12.
Trong đó:
Các cảnh báo (TRAP) gửi tới cổng 162 trên NMS.
Các yêu cầu (GET REQUEST, GETNEXT REQUEST, SET REQUEST) gửi từ NMS đến Agent trên cổng 161. Trả lời yêu cầu (GET RESPONSE) gửi từ Agent đến cổng
161 của Manager.
Khi Manager hoặc Agent muốn thực hiện một chức năng của SNMP thì nó sẽ thực hiện tuần tự nhƣ sau:
- Tầng ứng dụng: đây là tầng đầu tiên sẽ phải xác định cần phải làm gì, tức là tầng ứng dụng SNMP sẽ cho phép ngƣời dùng cuối thực hiện các dịch vụ mà nó cung cấp. Ví dụ nhƣ thao tác yêu cầu thông tin về trạng thái của một giao tiếp mạng trên một bộ định tuyến. - Tầng UDP: là tầng tiếp theo cho phép hai trạm làm việc có thể
truyền thông với nhau. Định dạng HEADER của gói tin UDP sẽ chứa số hiệu cổng dịch vụ đích mà gói tin sẽ đƣợc gửi đến đó.
SNMP Application
UDP
IP
Medium Access Control
Network Access Protocol
SNMP Application
UDP
IP
Medium Access Control
Manager Agent
- Tầng IP: truyền gói tin SNMP đến đích bằng việc gán địa chỉ IP đích.
- Tầng MAC: là tầng cuối cùng thực hiện truyền vật lý gói tin đến đích.
Và quá trình nhận gói tin sẽ đƣợc thực hiện ngƣợc lại, bắt đầu từ tầng MAC đến tầng ứng dụng.
Nhƣ đã nói trên, SNMP sử dụng cơ chế GET/SET để quản lý mạng. Manager sẽ nhận thông tin (GET) từ các phần tử trong mạng và tuỳ theo thông tin để điều khiển bằng cách điền thông tin (SET) vào các biến điều khiển trên các Agent. Khi cần thu thập thông tin, Manager sẽ gửi bản tin PDU dạng GET. Agent sẽ xử lý PDU và gửi trả lại những thông tin yêu cầu. Khi cần thay đổi giá trị những biến MIB, Manager gửi bản tin với PDU dạng SET với định danh của đối tƣợng và giá trị biến sẽ đƣợc thay đổi.
Nguyên lý trao đổi thông tin trong SNMP khá đơn giản: Agent sẽ lắng nghe tín hiệu trên cổng 161, số hiệu này do Agent đăng ký với hệ điều hành. Khi Manager khởi tạo việc truyền tin, ngoài việc nó sử dụng số hiệu cổng 161 đã đăng ký với hệ điều hành nó có thể đƣợc hệ điều hành cung cấp một số hiệu cổng dịch vụ động (khoảng từ 1024 - 65535). Do đó trả lời yêu cầu từ Agent sẽ đƣợc gửi tới số hiệu cổng động này trên Manager. Sau phiên giao dịch, số hiệu cổng động này sẽ đƣợc hệ điều hành giải phóng. Riêng tín hiệu trap do Agent phát đi và gửi tới Manager nên Manager đăng ký lắng nghe trên một cổng cố định số hiệu là 162. Tức là khi có sự cố Agent sẽ gửi cảnh báo trap từ cổng 161 đến cổng 162 của Manager.
2.3.5. Các phiên bản SNMP
SNMP đã phát triển tới phiên bản 3 nhƣng SNMPv1 và SNMPv2 đƣợc sử dụng phổ biến, trong đó SNMPv2 chiếm ƣu thế hơn và đƣợc cài đặt ở hầu hết trên các phần mềm quản trị mạng hiện nay. Để hiểu rõ hơn tại sao SNMPv2 lại đƣợc sử dụng phổ biến, trƣớc hết ta xem xét sơ lƣợc từng phiên bản.
- SNMPv1: là phiên bản đầu tiên của giao thức SNMP, nó đƣợc định nghĩa trong RFC 1157. Đây là chuẩn đầy đủ của IETF. Vấn đề bảo mật của SNMPv1 dựa trên nguyên tắc cộng đồng. 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 (ở dạng xâu ký tự
rõ), chúng cho phép bất kỳ ứng dụng nào dựa trên SNMP cũng 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.
- SNMPv2 hay SNMPv2c: là phiên bản thứ 2 của giao thức SNMP. Trong đó, SNMPv2c dựa trên các chuỗi “community”. Nó đƣợc định nghĩa trong RFC 1905, 1906, 1907 và đây chỉ là bản thử nghiệm của IETF. Mặc dù SNMPv2 là phiên bản thử nghiệm nhƣng nhiều nhà sản xuất đã đƣa nó vào thực nghiệm. SNMPv2 bắt nguồn từ hai phát kiến