1 ðịnh dạng thơng điệp[4]

Một phần của tài liệu (LUẬN văn THẠC sĩ) giao thức quản lý mạng và công nghệ dịch vụ web thực hiện khai thác đường dây thuê bao (Trang 33)

1.3.1.2 ðịnh dạng PDU

Tất cả các PDU trong SNMP V1,2 đều có định dạng giống nhau, riêng PDU của thơng điệp Trap thì khác. Ngữ nghĩa chính xác trong mỗi trường của PDU dựa trên thơng điệp cụ thể. Ví dụ, trường ErrorStatus chỉ có nghĩa trong thơng điệp trả lời khơng có trong thơng điệp u cầu, và các giá trị ñối tượng sử dụng cũng khác nhau trong các thơng điệp yêu cầu và thông ñiệp trả lời [4].

1.3.1.2.1 ðịnh dạng PDU chung cho các phương thức

Các bảng và hình dưới biểu diễn định dạng chung cho hầu hết các PDU SNMPv1,2: GetRequest-PDU, GetNextRequest-PDU, SetRequest-PDU và GetResponse-PDU[4].

PDU type RequestID ErrorStatus Errorindex Variable Bindings Hình 1.3.1.2.1 - ðịnh dạng chung PDU Tên trường Kiểu DL Kích cỡ (bytes) Mơ tả

PDU Type Integer (Enumerated)

4

Xem bảng 8

Request ID

Integer 4 Request Identifier: Một số ñược sử dụng

ñể khớp nối giữa ñịnh danh yêu cầu và trả

lời. Nó được sinh ra bới thiết bị gửi yêu cầu và coppy vào trong trường này trong

GetResponse-PDU của thơng điệp trả lời. Error Status Integer (Enumerated) 4 Xem bảng 9 Error Index

Integer 4 Error Index: Khi Error Status khác 0,

trương này chứa một con trỏ chỉ rõ ñối tượng sinh ra lỗi, ln ln =0 trong thơng điệp u cầu.

Variable Bindings

Variable Variabl e

Variable Bindings: Một tập hợp các cặp

tên-giá trị xác ñịnh các ñối tượng MIB trong PDU, và trong trường hợp của một SetRequest-PDU hoặc GetResponse-PDU, có chứa các giá trị của chúng.

Bảng 1.3.1.2.1 - ðịnh dạng chung PDU

1.3.1.2.2 Kiểu PDU và trạng thái lỗi

PDU[4] (các giá trị kiểu PDU của version 1 tương ứng từ 0-3):

Giá trị PDU

Type PDU Type

0 GetRequest-PDU

1 GetNextRequest-PDU

2 GetResponse-PDU

3 SetRequest-PDU

4 Không sử dụng(Trap-PDU trong SNMPv1)

5 GetBullRequest-PDU

6 InformRequest-PDU

7 Trapv2-PDU

8 Report-PDU

36

Trạng thái lỗi [4] (Các giá trị lỗi của version 1 tương ứng các dòng từ 0-5)

Giá trị trạng thái lỗi Mã lỗi Mơ tả

0 noError Khơng có lỗi.

1 tooBig Kích thước của Response-PDU có thể q lớn để truyền qua mạng.

2 noSuchName Khơng tìm thấy tên ñối tượng yêu cầu.

3 badValue Một giá trị trong yêu cầu khơng phù. Ví dụ, một ñối tượng trong yêu cầu ñược quy ñịnh với chiều dài hoặc kiểu khơng chính xác.

4 readOnly Xuất hiện khi cố gắng gán giá trị cho một biến chỉ cho phép ñọc giá trị.

5 genErr Xuất hiện khi một lỗi xảy ra khơng được định nghĩa trước trong bảng này.

6 noAccess Truy nhập bị từ chối vì nguyên nhân bảo mật. 7 wrongType Khơng đúng kiểu đối tượng.

8 wrongLength ðộ dài khơng phù hợp với đối tượng trong biến 9 wrongEncoding Mã hóa khơng phù hợp với ñổi tượng trong biến

10 wrongValue Giá trị truyền vào trong biến khơng thể gán cho đối tượng.

11 noCreation Biến chưa tồn tại và không thể khởi tạo. 12 inconsistentValu

e

Biến truyền vào giá trị phù hợp với ñối tượng nhưng không thể gán cho ñối tượng tại thời ñiểm này

13 resourceUnavail able

Tài ngun khơng có sẵn.

15 undoFailed Thực hiện lùi lại khơng thành cơng các thiết lập đã thực hiện.

16 authorizationErr or

Lỗi khi xác thực

17 notWritable Biến không cho phép gán hoặc khởi tạo. 18 inconsistentNam

e

Tên biến không tốn tại.

Bảng 1.3.1.2.2.2 - Các giá trị trường Error Status trong PDU SNMP

1.3.1.2.3 ðịnh dạng Trap-PDU PDU PDU PDU type Enterprise Agent Addr Generic trap Specific trap Time stamp Variable Bindings Hình 1.3.1.2.3 - ðịnh dạng Trap PDU [4] Tên trường Kiểu DL Kích cỡ (bytes) Mơ tả

PDU Type Integer (Enumerated)

4 PDU Type: Xác định kiểu PDU, ln là 4 cho thơng ñiệp Trap PDU.

Enterprise Sequence of Integer

Variable Enterprise: ðịnh danh ñối tượng của một nhóm, nó chỉ ra kiểu đối tượng sinh ra trap.

Agent Addr

NetworkAddress 4 Agent Address: ðịa chỉ IP của agent sinh ra trap. Nó cúng bao gồm trong IP header ở tầng thấp hơn nhưng cũng bao gôm trong ñịnh dạng thơng điệp SNMP

ñể dễ dàng ghi log trong SNMP, đồng

thời có thể phân biệt được trong trường có nhiều host.

Generic Trap

Integer (Enumerated)

4 Generic Trap Code: Giá trị mã xác ñịnh một trong các một số kiểu trap “chung chung” ("generic") hoặc ñã ñược xác

38

ñịnh trước. Specific

Trap

Integer 4 Specific Trap Code: Một giá trị mã xác ñịnh một loại trap thực hiện cụ thể Time

Stamp

TimeTicks 4 Time Stamp: Lượng thời gian kể từ khi thực thể SNMP ñang gửi thơng điệp này khởi tạo hoặc khởi tạo lại lần cuối. ðược sử dụng ñể ghi log thời gian. Variable

Bindings

Variable Variable Variable Bindings: Tập hợp các cặp tên-giá trị xác ñịnh các ñối tượng MIB trong PDU.

Bảng 1.3.1.2.3.1 - ðịnh dạng Trap PDU

Tên và số Generic trap

Mô tả

coldStart (0) Chỉ ra rằng một agent ñã bị khởi ñộng lại. warmStart (1) Chỉ ra rằng agent tự khởi tạo lại.

linkDown (2) ðược gửi khi một interface trên thiết bị bị lỗi. linkUp (3) ðược gửi khi một interface hoạt ñộng trở lại. authenticationFailure

(4)

Chỉ ra rằng một người nào đó đã cỗ gắng truy vấn agent mà khơng đúng chuỗi community, dùng ñể phát hiện các truy nhập bất hợp phát

egpNeighborLoss (5) Chỉ ra rằng EGP bên cạnh bị lỗi.

enterpriseSpecific (6) Chỉ ra trap cụ thể ñược nhà cung cấp thiết bị ñịnh nghĩa. Bảng 1.3.1.2.3.2 - Mô tả các Generic trap

1.3.1.2.4 ðịnh dạng GetBulkRequest-PDU SNMPv2c

PDU type Request Identify

Non Repeaters

Max

Repeaters PDU variable Bindings

Tên trường

Kiểu DL Kích cỡ (bytes)

Mơ tả

PDU Type Integer (Enumerated)

4 PDU Type: Một gái trị nguyên xác ñịnh kiểu PDU, với bản GetBulkRequest-PDU

thì giá trị là 5.

Request ID Integer 4 Request Identifier: Một số ñược sử dụng

ñể so khớp các thơng điệp yêu cầu với

các thơng điệp trả lời. Nó được sinh ra bởi thiết bị gửi yêu cầu và ñược copy vào trường này trong Response-PDU.

Non Repeaters

Integer 4 Non Repeaters: Chỉ ñịnh số ñối tượng đầu tiên khơng lặp lại lệnh getnext.

Max

Repetitions

Integer 4 Max Repetitions: Số lần lặp lại lệnh

getnext với các đối tượng cịn lại.

Variable Bindings

Variable Variable Variable Bindings: Một tập hợp các cặp

ten-gái trị ñịnh danh các ñối tượng MIB trong PDU.

Bảng 1.3.1.2.4 - ðịnh dạng GetBulkRequest-PDU [4]

1.3.1.3 ðịnh dạng thơng điệp SNMP Version 3 (SNMPv3)

ðịnh dạng tổng quát của SNMPv3 vẫn sử dụng ý tưởng thơng điệp tổng thể “mở rộng” của SNMPv2. Tuy nhiên, trong v3 khái niệm này ñược ñịnh nghĩa lại. Các trường header tự chia thành những vùng có hoặc không xử lý bảo mật. Các trường “non- security” là chung cho tất cả các triển khai SNMP v3, trong khi việc sử dụng các trường bảo mật có thể được thiết kế riêng cho từng mơ hình bảo mật SNMPv3, và được xử lý bởi module trong thực thể xử lý bảo mật SNMP. Giải pháp này cung cấp sự linh hoạt ñáng kể trong khi tránh những vấn ñề SNMPv2 bị hạn chế. Tất cả ñịnh dạng thơng điệp SNMP v3 được mơ tả trong RFC3412. Những ñặc ñiểm bảo mật cung cấp trong SNMPv3 là[4]:

40

- Sự xác nhận: Xác nhận nguồn của thơng tin gửi đến.

- Mã khố: ðảo nội dung của gói tin, ngăn cản việc gửi thông báo từ nguồn khơng được xác nhận.

Tuy nhiên việc sử dụng SNMPv3 rất phức tạp và cồng kềnh dù nó là sự lựa chọn tốt nhất cho vấn ñề bảo mật của mạng. Việc sử dụng sẽ tốn rất nhiều tài nguyên do trong mỗi thơng điệp truyền đi sẽ có phần mã hóa BER. Phần mã hóa này sẽ chiếm một phần băng thơng đường truyền do đó làm tăng chi phí. Mặc dù được coi là phiên bản đề nghị cuối cùng và ñược coi là ñầy ñủ nhất nhưng SNMPv3 vẫn chỉ là tiêu chuẩn dự thảo và vẫn đang được nghiên cứu hồn thiện[4].

Hình 1.3.1.3 - ðịnh dạng tổng qt thơng điệp SNMP Version 3 (SNMPv3)

Tên trường Kiểu DL Kích cỡ (bytes)

Mơ tả

Msg Version

Integer 4 Message Version Number: Mô tả số phiên bản

SNMP của thơng điệp, với SNMPv3 là 3. Msg ID Integer 4 Message Identifier: Một số ñược sử dụng ñể

xác ñịnh một thơng điệp SNMPv3 và để so khớp với thơng ñiệp trả lời với thông ñiệp yêu cầu. Sử dụng của trường này là tương tự như của trường Request ID trong các ñịnh dạng PDU, nhưng chúng khơng giống nhau. Trường này được tạo ra ñể cho phép kết hợp ở mức ñộ xử lý thơng điệp khơng phân biệt nội dung của PDU, ñể bảo vệ chống lại các cuộc tấn công bảo mật. Như vậy, Msg ID và Request ID

ñược sử dụng ñộc lập. Msg Max

Size

Integer 4 Maximum Message Size: Kích thước tối đa của

một thơng điệp. Tối thiểu là 484. Msg Flags Octet String 1 Msg Security Model

Integer 4 Message Security Model: Một giá trị nguyên

xác định mơ hình bảo mật nào được sử dụng

cho thơng điệp, với user-based(mặc ñịnh của SNMP v3) thì giá trị là 3.

Msg Security Parameters

— Variable Message Security Parameters: Một tập hợp

các trường chứa các tham sơ u cầu để thực hiện mơ hình bảo mật cụ thể được sử dụng cho thơng điệp. Nội dung của trường này được chỉ định trong mỗi văn bản mơ tả một mơ hình bảo mật SNMP v3. ví dụ, các tham số của mo hình user-based được mơ tả trong RFC3414.

Scoped PDU

— Variable

Bảng

42

Tên SubField Kích

thước(byte)

Mơ tả

Reserved 5/8(5 bit) Dự phòng cho tương lai

Reportable flag 1/8(1 bit) Khi đặt là 1, thiết bị nhận thơng điệp này phải gửi trở lại nơi sinh ra PDU, một Report-PDU mỗi lần các ñiều kiện phát sinh

Priv Flag 1/8(1 bit) Khi ñặt là 1, chỉ ra rằng sự mã hóa được sử dụng ñể bảo về sự riêng tư của thơng điệp. Có thể khơng là 1 trừ khi Auth Flag cũng ñược ñặt là 1.

Auth Flag 1/8(1 bit) Khi ñặt là 1, chỉ ra rằng xác thực ñược sử dụng ñể bảo vệ tính xác thức của thơng điệp

Bảng 1.3.1.3.2 - Msg Flags

Tên subfield Syntax Kích thước(byte) Mơ tả Context Engine ID Octet String

Variable ðược sử dụng ñể ñịnh danh ứng dụng nào xử lý PDU

Context Name Octet String

Variable Một ñịnh danh ñối tượng chỉ rõ nội dung ñặc biệt ñược kết hợp với PDU

PDU - Variable PDU sẽ ñược truyền

Bảng 1.3.1.3.3 Scoped PDU

SNMPv3 sử dụng các hoạt ñộng giao thức từ SNMPv2, được mơ tả trong RFC3416 và sửa ñổi trong RFC1904, vì vậy định dạng PDU của SNMPv3 cũng tương tụ như SNMPv2[4].

1.3.2 Các phương thức

get getnext getbulk (SNMPv2 and SNMPv3) set getresponse trap notification (SNMPv2 and SNMPv3) inform (SNMPv2 and SNMPv3) report (SNMPv2 and SNMPv3)

1.3.2.1 Phương thức Get (GetRequest):

Thơng điệp GetRequest ñược Manager gửi ñến Agent để lấy một thơng tin

nào đó. Trong GetRequest có chứa ID của đối tượng muốn lấy. Ví dụ: Muốn lấy

thông tin tên của Device1 thì manager gửi thơng ñiệp GetRequest ID=1.3.6.1.2.1.1.5 ñến Device1, tiến trình SNMP Agent trên Device1 sẽ nhận được thơng điệp và tạo thơng ñiệp trả lời. Trong một thơng điệp GetRequest có thể chứa nhiều OID, nghĩa là dùng một GetRequest có thể lấy về cùng lúc nhiều thơng tin[6].

Hình 1.3.2.1 - Mơ hình truyền thơng điệp của phương thức get

1.3.2.2 GetNextRequest:

Thơng điệp GetNextRequest cũng dùng ñể lấy thông tin và cũng có chứa OID, tuy nhiên nó dùng để lấy thơng tin của đối tượng nằm kế tiếp object được chỉ ra trong thơng điệp. Chúng ta ñã biết khi ñọc qua những phần trên: một MIB bao gồm nhiều OID ñược sắp xếp thứ tự nhưng khơng liên tục, nếu biết một OID thì khơng xác định được OID kế tiếp. Do đó ta cần GetNextRequest ñể lấy về giá trị

44

của OID kế tiếp. Nếu thực hiện GetNextRequest liên tục thì ta sẽ lấy được tồn bộ thơng tin của Agent[6].

1.3.2.3 SetRequest:

Thơng điệp SetRequest ñược Manager gửi cho Agent ñể thiết lập giá trị cho một đối tượng nào đó. Ví dụ: Có thể đặt lại tên của một máy tính hay router bằng phần mềm SNMP Manager, bằng cách gửi thơng điệp SetRequest có OID là 1.3.6.1.2.1.1.5.0 (sysName.0) và có giá trị là tên mới cần đặt[6].

1.3.2.4 GetResponse:

Mỗi khi SNMP Agent nhận được các thơng điệp GetRequest, GetNextRequest hay SetRequest thì nó sẽ gửi lại thơng điệp GetResponse để trả lời. Trong thơng điệp GetResponse có chứa OID của ñối tượng ñược yêu cầu và giá trị của đối tượng đó[6].

1.3.2.5 GetBulkRequest:

Chức năng của câu lệnh GetBulkRequest tương tự như câu lệnh GetNextRequest ngoại trừ vấn ñề liên quan tới số lượng dữ liệu ñược lấy ra. GetBulkRequest cho phép Agent gửi lại Manager dữ liệu liên quan tới nhiều đối tượng thay vì từng đối tượng bị quản lý. Như vậy, GetBulkRequest có thể giảm bớt lưu lượng truyền dẫn và các bản tin đáp ứng thơng báo về các điều kiện vi phạm[6].

Tuy nhiên, kích thước của câu hỏi có thể bị giới hạn bởi Agent. Khi đó nếu nó khơng thể trả lời tồn bộ u cầu, nó gửi trả một thơng điệp lỗi mà khơng có dữ liệu. Với trường hợp dùng câu lệnh ”get-bulk”, Agent sẽ gửi cang nhiều trả lời nếu nó có thể. Do đó, việc trả lời một phần của yêu cầu là có thể xảy ra. Hai trường cần khai báo trong ”get-bulk” là: ”nonrepeaters” và ”max-repetitions”. ”nonrepeaters” báo cho Agent biết N đối tượng đầu tiên có thể trả lời lại như một câu lệnh ”get”

ñơn. ”max-repeaters” báo cho Agent biết cần cố gắng tăng lên tối ña M yêu cầu

”get-next” cho các đối tượng cịn lại[6]. Ví dụ :

$ snmpbulkget -v2c -B 1 3 linux.ora.com public sysDescr ifInOctets ifOutOctets

system.sysDescr.0 = “Linux linux 2.2.5-15 #3 Thu May 27 19:33:18 EDT 1999 i686″ interfaces.ifTable.ifEntry.ifInOctets.1 = 70840 interfaces.ifTable.ifEntry.ifOutOctets.1 = 70840 interfaces.ifTable.ifEntry.ifInOctets.2 = 143548020 interfaces.ifTable.ifEntry.ifOutOctets.2 = 111725152 interfaces.ifTable.ifEntry.ifInOctets.3 = 0 interfaces.ifTable.ifEntry.ifOutOctets.3 = 0

ở ñây, ta hỏi về 3 varbind: sysDescr, ifInOctets, và ifOutOctets. Tổng số varbind được tính theo cơng thức: N + (M * R)

N: nonrepeater, tức số các đối tượng vơ hướng M: max-repeatition

R: số các đối tượng có hướng, trong yêu cầu chỉ có sysDescr là vơ hướng. Với N = 1, M ñặt là 3 , tức là 3 trường cho cặp ifInOctets và ifOutOctets. Có 2 đối tượng có hướng là ifInOctets và ifOutOctets vậy R = 2

Tổng số có 1 + 3*2 = 7 varbind

Còn trường ”–v2c” là do ”get-bulk” là câu lệnh của SNMPv2 nên sử dụng ”- v2c” ñể chỉ rằng sử dụng PDU của SNMPv2. ”-B 1 3” là ñể ñặt tham số N và M cho lệnh.

Hình 1.3.2.5 - Mơ hình truyền thơng điệp của phương thức get-bull

1.3.2.6 Trap

Thơng điệp Trap được Agent tự động gửi cho Manager mỗi khi có sự kiện xảy ra bên trong Agent, các sự kiện này không phải là các hoạt ñộng thường xuyên của Agent mà là các sự kiện mang tính biến cố. Ví dụ: Khi có một port down, khi có

46

một người dùng login khơng thành cơng, hoặc khi thiết bị khởi động lại, Agent sẽ gửi trap cho Manager. Tuy nhiên không phải mọi biến cố đều được Agent gửi trap, cũng khơng phải mọi Agent ñều gửi trap khi xảy ra cùng một biến cố. Việc Agent gửi hay không gửi trap cho biến cố nào là do hãng sản xuất Device/Agent quy định[6].

Hình 1.3.2.6 - Mơ hình biểu diễn sự phát sinh trap

1.3.2.7 SNMP Notification

ðể hồn thiện và chuẩn hóa ñịnh dạng PDU của trap SNMP v1, SNMPv2

ñịnh nghĩa một NOTIFICATION-TYPE. ðịnh dạng PDU cho NOTIFICATION-

TYPE giống nhau cho cả get và set. RFC2863 ñịnh nghĩa lại kiểu thông báo chung chung linkDown như sau[6]:

linkDown NOTIFICATION-TYPE

OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } STATUS current

DESCRIPTION

"A linkDown trap signifies that the SNMPv2 entity, acting in an agent role, has detected that the ifOperStatus object for one of its communication links left the down state and transitioned into some other state (but not into the notPresent state). This other state is indicated by the included value of ifOperStatus." ::= { snmpTraps 3 }

iso.org.dod.internet.snmpV2.snmpModules.snmpMIB.snmpMIBObjects.snmpTraps .linkDown.

1.3.2.8 SNMP Inform

SNMPv2 cung cấp cơ chế truyền thông giữa những NMS với nhau, gọi là SNMP inform. Khi một NMS gửi một SNMP inform cho một NMS khác, NMS nhận ñược sẽ gửi trả một ACK xác nhận sự kiện. Việc này giống với cơ chế của “get” và “set”.. [6]

1.3.2.9 SNMP Report

ðược ñịnh nghĩa trong bản nháp của SNMPv2 nhưng khơng được phát triển. Sau đó được ñưa vào SNMPv3 và hy vọng dùng ñể truyền thông giữa các hệ thống SNMP với nhau[6].

1.4 Sử dụng SNMP4J API xây dựng Một số phương thức SNMP

Một phần của tài liệu (LUẬN văn THẠC sĩ) giao thức quản lý mạng và công nghệ dịch vụ web thực hiện khai thác đường dây thuê bao (Trang 33)

Tải bản đầy đủ (PDF)

(101 trang)