3.1 Giao thức quản lý mạng đơn giản SNMP
3.1.6 Cấu trúc thông tin quản lý (SMI)[4]
Cấu trúc thông tin quản lý (SMI Structure of Management Information) sử dụng ASN.1 (Abstract Syntax Notation One - Ngôn ngữ ký pháp cú pháp trừu t-ợng) để định nghĩa những quy tắc mô tả
thông tin quản lý.
SMI tạo ra 3 chìa khoá để mô tả thông tin: kiểu dữ liệu ASN.1, SMI - kiểu dữ liệu đặc thù và bảng SNMP MIB.
3.1.6.1 Kiểu dữ liệu ASN.1
Những SNMP SMI chỉ rõ tất cả những đối t-ợng cần quản lý mô tả bằng một tập con của dữ liệu kiểu ASN.1 t-ơng ứng với chúng. Ba kiểu dữ liệu ASN.1 cần đòi hỏi là: tên, cú pháp và mã hoá.
Tên để xác định đối t-ợng (Object ID).
Cú pháp định nghĩa kiểu dữ liệu của đối t-ợng (ví dụ số nguyên hoặc chuỗi).
Sử dụng dữ liệu mã hoá mô tả để thông tin liên quan đến đối t-ợng cần quản lý. Dữ
liệu đ-ợc định dạng nh- một chuỗi kí tự để truyền qua mạng.
3.1.6.2 Kiểu dữ liệu đặc thù
SMI sử dụng một số kiểu dữ liệu đặc thù, các kiểu dữ liệu này đ-ợc phân làm 2 loại: kiểu dữ liệu
đơn giản (simple data types) và kiểu dữ liệu ứng dụng mở rộng (application-wide data types).
Có một số kiểu dữ liệu đơn giản đ-ợc định nghĩa trong SNMP SMI là số nguyên (integers), chuỗi 8 bít (octet strings), và mã đỗi t-ợng (object IDs):
Kiểu dữ liệu số nguyên là một số nguyên có dấu trong phạm vi từ -2,147,483,648 tíi 2,147,483,647.
Octet strings là chuỗi chiều dài từ 0 tới 65,535 octet.
Object ID là giá trị trong tập hợp tất cả các đối t-ợng đã đ-ợc cấp phù hợp với những quy tắc của ASN.1.
Các kiểu dữ liệu ứng dụng mở rộng đ-ợc định nghĩa trong SNMP SMI là: địa chỉ mạng (network addresses), số đếm (counters), số đo (gauges), thời gian (time ticks), dữ liệu không xác định (opaque).
Địa chỉ mạng (network address) thể hiện một địa chỉ từ giao thức nào đó. SNMP chỉ hỗ trợ những địa chỉ IP 32 bít.
Số đếm (counter) là những số nguyên không âm, nó tăng cho đến khi đạt đến giá trị cực đại sau đó trả về 0, kích th-ớc counter là 32 bít.
Số đo (gauges) là những số nguyên không âm mà có thể tăng thêm hoặc giảm bớt nh-ng ngăn không cho đạt giá trị cực đại.
Thời gian (time ticks) xác định thời gian xảy ra sự kiện tới 1/100 giây.
Dữ liệu không xác định (opaque) dữ liệu chuyển sang kiểu octet string, không tuân theo dữ liệu kiểu SMI.
3.1.6.3 Bảng SNMP MIB
Bảng SNMP SMI là sự định nghĩa những bảng có cấu trúc đ-ợc sử dụng để nhóm lại những thể hiện khác nhau của đối t-ợng để xếp thành bảng (các đối t-ợng chứa đựng nhiều biến).
Những bảng đ-ợc biên soạn với zero hoặc nhiều hàng, đ-ợc chỉ số hoá theo cách mà cho phép SNMP có thể gọi ra hoặc thay đổi một hay toàn bộ các hàng của bảng chỉ với một lệnh đơn Get, GetNext hoặc Set.
Liên hệ với tập lệnh của giao thức SNMP, 1 Client có thể đ-a ra 3 lệnh cơ bản đến server.
Hai trong các lệnh này là hiển nhiên và đòi hỏi việc ánh xạ trực tiếp. Client gửi Set request để gán 1 giá trị cho 1 biến. Nó gửi Get-request để lấy giá trị hiện đang l-u trữ trong 1 biến. Tr-ớc khi có thể thực hiện yêu cầu, server phải ánh xạ tên ASN.1 đ-ợc mã hóa theo ký số (có trong yêu cầu gửi
đến) thành các biến nội bộ thích hợp để l-u giữ các giá trị đối với tên này, với lệnh Set-request server còn kiểm chứng rằng mỗi biến không đ-ợc thiết kế theo loại read-only. Đối với biến MIB dạng bảng, client đ-a ra lệnh get-next-request. Không giống nh- lệnh set-request hay get-request, lệnh get-next-request không xác định tên của phần tử cần lấy giá trị. Thay vì thế, nó xác định 1 tên và yêu cầu server đáp lời bầng tên và giá trị của biến kế tiếp (theo thứ tự ngữ pháp). Lênh get- next-request đặc biệt hữu dụng trong việc truy xuất các giá trị trong bảng khi không biết kích th-íc.
Hỡnh 3.8. Mô tả cấu trỳc Logic và Vật lý của MIB
Để có thể thực hiện đ-ợc lệnh get-next-request, một số tên MIB t-ơng ứng với toàn bộ bảng thay vì từng phần tử riêng biệt. Các tên này không có các giá trị riêng biệt, và Client không thể sử dụng chúng trực tiếp trong lệnh get-request. Tuy nhiên, Client có thể xác định tên của bảng trong lệnh get-next-request để lấy phần tử đầu tiên trong bảng. Lấy ví dụ, MIB định nghĩa tên:
Iso.org.dod.internet.mgmt.mid.ip.ipAddrTable
để chỉ bảng các địa chỉ IP-từ đây ta biết đ-ợc máy của server. Cách biểu diễn ký số t-ơng đ-ơng
là: 1.3.6.1.2.1.4.20
Lênh get-request nào sử dụng tên bảng này thì sẽ bị hỏng bởi vì tên này không t-ơng ứng với 1 phần tử riêng biệt. Tuy nhiên, tên này là quan trọng bởi vì nó cho phép client tìm thấy phần
tử đầu tiên trong bảng mà không cần biết tên của biến MIB tr-ớc. Client đ-a ra lệnh get-next- request với tên bảng để trích ra phần tử đầu tiên trong bảng.