2.3. Giao thức quản trị mạng SNMP
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.