KIẾN TRÚC HỆ THỐNG QUẢN TRỊ MẠNG
DỰA TRÊN XML
Chuyên nghành: KHOA HỌC MÁY TÍNH
Mã số : 60.48.01
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
MỞ ĐẦU
Ngày nay, cùng với sự phát triển như vũ bão của công nghệ thông tin, điện tử
viễn thông, mạng viễn thông nói chung, mạng Internet nói riêng cũng được phát
triển hiện đại và phức tạp. Cùng với sự phát triển đó, các thiết bị quản trị mạng đòi
hỏi ngày càng phải phát triển đa dạng hơn. Điều này đặt ra cho người điều hành
mạng phải có kiến thức thông qua đào tạo và cập nhật kiến thức thường xuyên.
Việc quản lý nhiều loại mạng khác nhau, một mặt sẽ xuất hiện yêu cầu phải
thu thập một khối lượng lớn các số liệu, mặt khác các số liệu này còn phải được
phân tích, xử lý trước khi đưa ra một biện pháp quản lý thực sự; Điều này sẽ đặt ra
rất nhiều khó khǎn cho người điều hành, nếu không có một công cụ hiệu quả trong
tay. Hơn nữa, do có sự phát triển phức tạp của mạng, cùng với yêu cầu chất lượng
dịch vụ đòi hỏi ngày càng cao thì quản trị mạng dựa trên XML chính là công cụ tốt
để giải quyết các vấn đề trên; XML là ngôn ngữ được định nghĩa bởi tổ chức mạng
toàn cầu W3C, nó có rất nhiều lợi ích như:
XML có thể dễ dàng tạo, phân tích và xử lý các thông tin quản trị, nó hỗ trợ
cho việc tạo cấu trúc dữ liệu và có thể quản lý được sự tổ chức phức tạp của thông
tin. DTD và lược đồ XML có thể đặc tả và đánh giá cấu trúc của tài liệu XML, do
vậy những nhà phát triển hệ thống có thể dễ dàng định nghĩa được cấu trúc thông tin
quản trị theo nhiều cách khác nhau. XLST dùng để chuyển đổi từ tài liệu XML sang
các định dạng truyền thống khác như HTML. Xpath/Xquery có thể xử lý các phần
tử thông qua các biểu thức hoặc các điều kiện. Các thao tác XML có thể được
truyền thông qua SOAP, nó cho phép các chức năng quản trị được thực hiện như là
các dịch vụ Web.
Mặc dù quản trị mạng dựa trên XML là một lĩnh vực hiện nay đang được nghiên
cứu và triển khai, nhưng việc sử dụng XML vào quản trị mạng có rất nhiêu lợi ích
như đã nêu trên; Hơn nữa, trong lĩnh vực quản trị mạng việc áp dụng XML đã thành
công, có hiệu quả, nhất là gần đây quản trị mạng dựa trên XML đã được áp dụng
cho nhiều công nghệ quản trị mạng, do đó nó đã được đề xuất như là một cách thay
thế cho các công cụ quản trị mạng hiện có.
Từ những phân tích, trình bày như trên, tôi chọn "Kiến trúc hệ thống quản
trị mạng dựa trên XML" làm đề tài nghiên cứu cho luận văn của mình.
Nội dung của luận văn được trình bày trong 3 chương; Trong đó, chương 1
trình bày một cách tổng quan về các kiến trúc quản trị mạng, chương 2 trình bày về
kiến trúc quản trị mạng dựa trên XML và chương 3 là việc phát triển chuyển đổi
cổng XML/SNMP cho quản trị mạng tích hợp dựa trên XML.
MỤC LỤC
Trang phụ bìa
Lời cam đoan
Lời cảm ơn
Mục lục i
Danh mục các ký hiệu, các chữ viết tắt . iii
Danh mục các bảng iv
Danh mục các hình .v
MỞ ĐẦU . i
CHưƠNG 1 - TỔNG QUAN VỀ CÁC KIẾN TRÚC QUẢN TRỊ MẠNG 2
1.1 Giới thiệu . 2
1.2 Kiến trúc mạng . 6
1.2.1 Mô hình OSI 6
1.2.2 Mô hình TCP/IP 9
1.3 Kiến trúc và mô hình quản trị mạng . 10
1.3.1 Kiến trúc và mô hình quản trị mạng OSI 10
1.3.2 Kiến trúc và mô hình quản trị mạng SNMP . 14
1.3.3 Kiến trúc quản trị tích hợp OMP 20
1.4 Kết luận chương 1 23
CHưƠNG 2 - KIẾN TRÚC HỆ THỐNG QUẢN TRỊ MẠNG DỰA TRÊN XML . 25
2.1 Giới thiệu . 25
2.2 Những kỹ thuật liên quan đến XML . 26
2.3 Kiến trúc quản trị mạng dựa trên XML 27
2.4 Nghiên cứu về quản trị mạng dựa trên XML 32
2.4.1 Mô hình quản trị mạng dựa trên XML . 32
2.4.2 Hoạt động của kiến trúc quản trị mạng dựa trên XML . 35
2.4.3 Tích hợp XML - SNMP . 37
2.4.4 Kiến trúc quản trị tích hợp dựa trên Web . 38
2.5 Phương pháp để quản trị mạng tích hợp dựa trên XML 41
2.5.1 Bốn phương pháp cho tích hợp 41
2.5.2 Sự so sánh giữa 4 phương pháp . 43
2.6 Thiết kế hệ thống quản trị dựa trên XML . 44
2.6.1 Manager dựa trên XML . 44
2.6.2 Agent dựa trên XML . 46
2.6.3 Hệ thống quản trị XGEMS 47
2.7 Kết luận chương 2 52
CHưƠNG 3 - PHÁT TRIỂN CHUYỂN ĐỔI CỔNG XML/SNMP CHO QUẢN
TRỊ MẠNG TÍCH HỢP DỰA TRÊN XML 53
3.1 Giới thiệu . 53
3.2 Công việc liên quan và đề xuất giải pháp . 54
3.2.1 Các mặt hạn chế của quản trị mạng dựa trên SNMP 54
3.2.2 Thuận lợi của XML cho quản trị mạng 56
3.2.3 Quản trị mạng dựa trên XML . 58
3.3 Các phương pháp trao đổi của cổng XML/SNMP 60
3.3.1 Trao đổi dựa trên DOM . 61
3.3.2 Trao đổi dựa trên HTTP . 63
3.3.3 Trao đổi dựa trên SOAP 65
3.3.4 Phân tích các phương pháp đề xuất 67
3.4 Nghiên cứu về chuyển đổi SNMP MIB thành XML . 68
3.4.1 Thuật toán chuyển đổi . 69
3.4.2 Thực hiện chuyển đổi 79
3.4.3 Cổng XML/SNMP . 80
3.5 Kết luận chương 3 82
KẾT LUẬN . 83
TÀI LIỆU THAM KHẢO . 85
106 trang |
Chia sẻ: maiphuongtl | Lượt xem: 1627 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Kiến trúc hệ thống quản trị mạng dựa trên XML, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ng XPath
là một nhóm và có thể dễ dàng thực hiện một truy vấn phức tạp. Ví dụ, khi manager
tìm kiếm tổng số octets vào/ra của giao diện mạng với kiểu "Ethernet" trong giao
diện bảng, manager phải gửi một số lƣợng các yêu cầu để lấy tất cả các trƣờng của
đối tƣợng trong bảng và sau đó tính toán tổng số octets từ các giá trị trả lại.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
65
3.3.3. Trao đổi dựa trên SOAP
Nhƣ đã đề cập ở phần trƣớc, SOAP là một giao thức để trao đổi message
XML qua HTTP hoặc SMTP. Ở cấp độ chức năng cơ bản, SOAP có thể đƣợc sử
dụng nhƣ là một giao thức thông điệp đơn giản, và cũng có thể đƣợc mở rộng đến
giao thức RPC. Trong phần này, mô tả giao dịch dựa trên SOAP đƣợc coi nhƣ là
một phƣơng pháp chuyển đổi giữa quản trị dựa trên XML và cổng XML/SNMP.
Quản trị dựa trên XML thay đổi thông tin mã hóa XML với giao dịch ngang hàng;
Chẳng hạn nhƣ một agent dựa trên XML và cổng XML/SNMP điều đó có nghĩa là
thông tin yêu cầu từ manager và thông tin phản hồi từ cổng, tất cả đƣợc các định
dạng nhƣ là một tài liệu XML. SOAP định nghĩa một phƣơng pháp chuẩn để
chuyển thông tin mã hóa XML qua HTTP.
Message Ví dụ
Get Request
public1
// ifSpeed[1]
Set Request
media>1
//hostInfo/hostNamezeus
Response
64000
Bảng 3.3 - SOAP message của quản trị dựa trên XML và cổng
Xác định ba kiểu phần tử XML cho thông tin SOAP RPC cơ sở - Giữa quản
trị dựa trên XML và cổng XML/SNMP. Nhƣ đƣợc mô tả trong bảng 3.3, những yếu
tố này là tên và kiểu tƣơng tự để phƣơng pháp đƣợc đƣa ra bởi cổng và các phần tử
con tƣơng ứng với các thông số của các phƣơng pháp. "getRequest" hoặc
"setRequest" có "phiên bản" tƣơng tự các phiên bản của SNMP, Manager, nó có thể
truy cập vào một hay nhiều node bằng cách xác định phần tử "path" nhƣ là một
"oid". Một phần tử "query" đƣợc xác định có chứa biểu thức XQuery cho một truy
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
66
vấn phức tạp. Phần tử "setRequest" sử dụng phần tử "values" để thiết lập một giá trị
của một node sẽ đƣợc sửa đổi. Phần tử "response" cũng đƣợc định nghĩa nhƣ là một
thông tin phản hồi cho "getRequest" và "setRequest". "response" có phần tử
"result"đƣợc coi nhƣ là phần tử con. Manager tìm kiếm phƣơng pháp để gọi và
thông qua các tham số thích hợp với phƣơng pháp sử dụng lƣợc đồ XML, bao gồm
cả định nghĩa của các phần tử này.
Hình 3.5 minh họa kiến trúc dựa trên SOAP của quản trị dựa trên XML và
cổng. Trong kiến trúc này, SOAP client tạo ra XML mã hóa thông tin SOAP, ngƣợc
lại, SOAP server trong cổng phân tích thông tin và gọi một thủ tục thích hợp trong
cổng. SOAP client mang thông tin trong RPC từ ứng dụng quản trị và tạo ra thông
tin SOAP. Thông tin SOAP đƣợc thông qua HTTP client, sau đó gửi yêu cầu HTTP
POST cho HTTP server trong cổng.
Hình 3.5 - Kiến trúc dựa trên SOAP của manager và cổng
HTTP Server trong cổng chuyển đổi các message đến HTTP POST và gửi
message HTTP đến SOAP server. Sau đó, SOAP server phân tích message HTTP
thành một định dạng đúng, RPC gọi và đƣa ra đối tƣợng đƣợc phục vụ tƣơng ứng
bởi cổng. SOAP server nhận đƣợc các kết quả của phƣơng thức gọi và tạo ra thông
tin phản hồi SOAP hợp khuôn dạng. Thông tin phản hồi gửi lại SOAP client. Cuối
cùng, ứng dụng quản trị nhận đƣợc các kết quả của các phƣơng pháp đƣa ra. Đối
với thông báo đƣa ra, SOAP client trong cổng gửi sự kiện thông tin không đồng bộ
từ Trap Receiver vào SOAP Server trong manager.
Đây là phƣơng thức phổ biến để trao đổi dữ liệu mã hóa XML qua HTTP.
SOAP cung cấp một giải pháp tốt hơn XML/HTTP vì SOAP là một chuẩn mở với
phần thân đƣợc tạo ra bởi nhà phát triển và các nhà cung cấp hỗ trợ nó. SOAP định
nghĩa chuẩn từ vựng và cấu trúc cho thông tin giữa giao dịch ngang hàng. Lƣợc đồ
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
67
XML cung cấp các tính năng định nghĩa dữ liệu và giao diện kiểu nhƣ IDL trong
CORBA và DCOM và cung cấp một kỹ thuật RPC cơ sở.
Một trong những bất lợi của SOAP là quá tải trong chuyển đổi định dạng ban
đầu của dữ liệu ứng dụng thành thông tin SOAP dựa trên XML. Tuy nhiên, sự quá
tải đƣợc loại bỏ trong phƣơng pháp này vì cổng XML/SNMP đã đƣa vào với các tài
liệu XML từ DOM tree nhƣ là một thông điệp truyền thông. Khi có thêm nhà cung
cấp, SOAP cung cấp các sản phẩm và dịch vụ, do vậy các lợi ích của việc sử dụng
SOAP sẽ tăng.
3.3.4. Phân tích các phương pháp đề xuất
Bảng 3.4 là tóm tắt của các phƣơng pháp. Phƣơng pháp đầu tiên để giao dịch
trong cổng XML/SNMP là trao đổi dựa trên DOM. Cổng sử dụng cấu trúc DOM và
các giao diện để chuyển thông tin quản trị giữa XML và SNMP. DOM cung cấp
một phƣơng pháp để truy cập trực tiếp thông tin quản trị thông qua các giao diện
DOM cho quản trị mạng dựa trên XML.
Các phƣơng
pháp trao đổi
Ƣu điểm
Nhƣợc điểm
Trao đổi dựa
trên DOM
Không cần nắm bắt yêu cầu giữa cổng
và manager
Có thể áp dụng cho cổng trong và cổng
ngoài
Sử dụng DOM nhƣ là lƣu trữ cho
manager
Chịu sức ép trong quản
trị với hàng loạt các
giao diện cho yêu cầu
xử lý theo thứ tự thích
hợp
Trao đổi dựa
trên HTTP
Dễ dàng thực hiện sử dụng thông tin mở
rộng HTTP
Cung cấp kỹ thuật hiệu quả cho truy
vấn các đối tƣợng quản trị
Cần Xpath/Xquery
parser
Trao đổi dựa
trên SOAP
SOAP thực hiện đơn giản thông qua
HTTP
Kế thừa những ƣu điểm của chuyển đổi
dựa trên HTTP
Cung cấp chuẩn để thực hiện RPC
Quá tải gói thông tin
SOAP
Bảng 3.4 - Ƣu điểm và nhƣợc điểm của các phƣơng pháp
Phƣơng pháp này đặc biệt hữu ích với cổng trong, mà đƣợc tích hợp trong hệ
thống quản trị. Trong cổng, yêu cầu của manager sử dụng giao diện DOM là trực
tiếp đƣợc chuyển sang thao tác SNMP mà không có bất cứ yêu cầu phân tích ứng
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
68
dụng nào. Thay vào đó, manager có trách nhiệm bằng cách sử dụng giao diện DOM
và vì vậy cần phải hiểu đƣợc toàn bộ chức năng của giao diện. Phân tích yêu cầu từ
manager và chuyển nó đến giao diện DOM.
Phƣơng pháp trao đổi dựa trên HTTP đƣa ra lợi thế và hiệu quả về giao dịch
giữa manager và cổng bằng cách giảm số lƣợng thông tin yêu cầu, do đó phải
chuyển dữ liệu ít hơn. Cách này cũng có thể dễ dàng thực hiện trong XML/HTTP,
mở rộng URI với biểu thức truy vấn. Để hỗ trợ XPath và XQuery, manager và cổng
phải bao gồm modul XPath và XQuery vì nó đã đƣợc hỗ trợ bởi XML parsers.
Trao đổi dựa trên SOAP đƣợc coi nhƣ là một phƣơng pháp trao đổi thông
qua RPC. Cấu trúc xác định trong thông tin SOAP đƣợc chuyển sang một phƣơng
thức cụ thể đƣợc phục vụ bởi cổng. Phƣơng pháp này có lợi thế so với phƣơng pháp
thứ hai vì SOAP đƣợc dựa trên HTTP và thông tin SOAP cũng có thể bao gồm
XPath và XQuery. Bằng cách sử dụng SOAP, cổng có thể nhận đƣợc yêu cầu phản
hồi và gửi đến quản trị mạng dựa trên XML nhƣ một chuẩn và loại trừ quá tải của
phân tích và xử lý các thông tin. Manager cũng có một lợi thế, đó là nó có thể truy
cập từ xa vào cổng mà không cần biết làm thế nào để gói XML message và thực
hiện HTTP request.
Cuối cùng, cổng có thể trao với bất kỳ kiểu quản trị nào mà có thể hiểu đƣợc
lƣợc đồ XML và có thể tạo ra SOAP RPC message từ các định nghĩa.
3.4. Nghiên cứu về chuyển đổi SNMP MIB thành XML
Các nghiên cứu đã có về các phƣơng pháp để chuyển đổi SNMP MIB thành
XML là nhƣ sau:
Trƣớc tiên, JP Martin-Flatin trình bày một ví dụ về phƣơng pháp lập bản đồ
để chuyển đổi MIB thành XML; Trong nghiên cứu này, ông đã mô tả kết quả
chuyển đổi về nhóm „hệ thống‟ và nhóm „giao diện‟ của MIB II bởi ví dụ mà không
có phƣơng pháp trình bày trên toàn bộ thuật toán chuyển đổi MIB.
Thứ hai, đó là nghiên cứu về biểu thức XML của SNMP MIB trong cổng
CORBA/SNMP. Tuy nhiên, nghiên cứu này đã không đƣa ra một thuật toán chuyển
đổi cụ thể, mà chỉ đƣa ra một ví dụ về tài liệu XML sử dụng định nghĩa XML DTD,
dữ liệu thực tế cho các tài liệu MIB II nodes.
Thứ ba là thƣ viện xử lý MIB của Frank Strauss, 'libsmi', thƣ viện này
chuyển đổi SNMP MIB thành các ngôn ngữ khác, chẳng hạn nhƣ Java, CORBA, C,
XML ... Tuy nhiên, chƣơng trình thƣ viện này lại gây ra mất thông tin và chuyển
đổi XML không chứa đựng tất cả các thông tin của các mã nguồn MIB , cũng nhƣ
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
69
những cấu trúc và tên node , với nhiều tính năng của mỗi MIB node bị bỏ qua . Vì
vậy, chƣơng trình này hiện không có thuật toán chuyển đổi. Cuối cùng, IBM công
bố một nghiên cứu về chuyển đổi ASN.1 thành XML. Tuy nhiên, nó không hỗ trợ
việc chuyển đổi các chức năng macro đƣợc xác định trong SNMP SMI và các
phƣơng pháp chuyển đổi sử dụng DTD.
Nhƣ̃ng nghiên cứu trên không cung cấp các thuật toán chuyển đổi cụ thể và
có thông tin có thể bị mất trong quá trình chuyển đổi. Thiệt hại lớn nhất là sự mất
mát các kiểu giá trị dữ liệu của MIB nodes, do đó các nghiên cứu này có những hạn
chế nhƣ các phƣơng thức chuẩn.
Vấn đề đƣợc đặt ra với hệ thống quản trị mạng dựa trên SNMP là hệ thống
quy mô và hiệu quả thấp, mặc dù SNMP đang đƣợc sử dụng rộng rãi. Nhằm giải
quyết vấn đề này, hệ thống quản trị mạng dựa trên XML đang đƣợc phát triển. Hệ
thống quản trị của hệ thống quản trị mạng dựa trên dựa trên XML đƣợc gọi là quản
trị mạng dựa trên XML. Quản trị mạng dựa trên XML trình bày một phƣơng pháp
để quản trị một mạng rộng lớn, nhƣng nó cũng không cung cấp phƣơng pháp để
quản trị sử dụng rộng rãi theo SNMP agent.
Nội dung trong nghiên cứu này là nhằm đề xuất quản trị mạng dựa trên XML
trực tiếp quản trị kế thừa SNMP agent nhƣ thế nào . Nó đƣa ra các vấn đề về cổng ,
đó là điều khiển các thông điệp giữa các agent dựa trên SNMP và manager dựa trên
XML. Quản trị mạng dựa trên XML sử dụng phƣơng pháp để chuyển dữ liệu là tài
liệu XML qua HTTP và SNMP agent chuyển dữ liệu đến SNMP manager thông qua
SNMP. Cổng này điều khiển và chuyển đổi dữ liệu giữa hai giao thức. Việc thực
hiện của cổng cần đặc tả chuyển đổi và tƣơng tác chuyển đổi. Để có đặc tả chuyển
đổi của cổng, cần phải chuyển SNMP MIB thành XML. Các nghiên cứu trƣớc cho
chuyển đổi này hiện không có thuật toán chuyển đổi. Xác định thuật toán chuyển
đổi SNMP MIB thành XML đƣợc coi nhƣ là một phƣơng pháp chuẩn và tiếp theo là
triển khai thực hiện chuyển đổi tự động với thuật toán này. Để ngăn ngừa bị mất
thông tin trong quy trình chuyển đổi, cần sử dụng lƣợc đồ XML với hỗ trợ của
nhiều kiểu dữ liệu đƣợc xác định trong SNMP SMI.
Với tƣơng tác chuyển đổi của cổng, cần định nghĩa mô hình bản đồ cho từng
thao tác của SNMP trong HTTP để chuyển đổi giữa thông tin SNMP và tài liệu
XML. Việc thực hiện chuyển đổi cũng giống nhƣ modul của cổng.
3.4.1. Thuật toán chuyển đổi
Trƣớc tiên, xem xét chuyển đổi mô hình thông tin cho quản trị mạng và lƣu
giữ tất cả các thông tin của mô hình trƣớc khi chuyển đổi và mô hình sau khi
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
70
chuyển đổi. Đối với mục đích này, điều quan trọng là để giữ cấu trúc của một mô
hình thông tin bằng nhau. Bảng 3.5 đƣa ra cách thức để chuyển đổi cấu trúc tài liệu
từ SNMP SMI thành lƣợc đồ XML.
SNMP SMI Lƣợc đồ XML
Node (định nghĩa macro) Phần tử
Tên node Tên phần tử
Các mệnh đề trong node Các thuộc tính của phần tử
Bảng 3.5 - Chuyển đổi cấu trúc tài liệu
Mỗi node của SNMP MIB đƣợc chuyển đổi thành một phần tử của lƣợc đồ
XML và tên của node đƣợc chuyển đổi thành tên của phần tử. Mệnh đề bên trong
của MIB node đƣợc chuyển đổi thành thuộc tính của phần tử XML. Định nghĩa kiểu
dữ liệu: Để xác định kiểu dữ liệu của SNMP MIB thành XML, sử dụng lƣợc đồ
XML đƣợc tạo ra nhƣ là một chuẩn của W3C, vì nó không thể biểu diễn các kiểu dữ
liệu với XML DTD.
Bảng 3.6 chỉ ra lƣợc đồ XML định nghĩa chuyển đổi kiểu dữ liệu từ SMIv1 .
Kiểu địa chỉ IP là kiểu đặc biệt đƣợc xác định với dãy các địa chỉ IP, [0-255]. [0-255].
[0-255]. [0-255]. Bên cạnh đó, các kiểu dữ liệu, chẳng hạn nhƣ kiểu số, kiểu chuỗi
có thể thay đổi mà không mất mát thông tin.
Biểu thức SMI Định nghĩa lƣợc đồXML
IpAddress
: : =
OCTETSTRING(SIZE(4))< xsd:pattern value = " (([1 - 9] ?
[0-9]|1[0-9][0-9][2[0-4][0-9]|25[0-5])\.){3}([1-
9]?[0-9] | 1 [0 - 9] [0 - 9]| 2 [0 - 4] [0 - 9]| 25 [0 -5]) " / >
Counter
: : =
INTEGER (0 ..
4294967295)
TimeTicks
: : =
INTEGER (0 ..
4294967295)
Opaque
: : =
OCTET STRING
Bảng 3.6 - Định nghĩa lƣợc đồ XML của kiểu dữ liệu SMIv1
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
71
Chuyển đổi kiểu dữ liệu đƣợc định nghĩa trong SMIv2 thành lƣợc đồ XML
đƣợc định nghĩa trong bảng 3.7.
Biểu thức SMI Định nghĩa lƣợc đồXML
Counter64 ::=INTEGER
(0..18446744073709551615)
Gauge32 :: = INTEGER
(0..4294967295)
Unsigned32 ::=INTEGER
(0..4294967295)
Bảng 3.7 - Định nghĩa lƣợc đồ XML của kiểu dữ liệu SMIv2
Các kiểu phù phù hợp với kiểu dữ liệu chính đƣợc xác định bởi lƣợc đồ
XML. Kiểu dữ liệu đƣợc định nghĩa bởi ngƣời dùng sẽ đƣợc chuyển đổi thành lƣợc
đồ XML định nghĩa trong Bảng 3.8.
Kiểu dữ liệu đƣợc định nghĩa trong SNMP MIB bởi ngƣời sử dụng có thể
định nghĩa bằng cách sử dụng chuỗi ký tự thay thế nhƣ 'DisplayString:: = OCTET
String'. Ngƣời thiết kế có thể định nghĩa kiểu dữ liệu mới, nếu sử dụng lƣợc đồ
XML mặc dù không thể thực hiện với XML DTD.
Định nghĩa MIB Định nghĩa lƣợc đồ XML
Enumerated INTEGERs
(ex) :
SYNTAX
INTEGER {
Up (1)
Down (2)
Testing (3) }
DisplayString <xsd:simpleType name =
(SIZE (0 .. 255)) "DisplayString_0_255">
Bảng 3.8 - Định nghĩa lƣợc đồ XML của kiểu dữ liệu do ngƣời dùng định nghĩa
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
72
* Chuyển đổi của macro:
SNMP MIB đƣợc xác định bởi định nghĩa macro và đƣợc định nghĩa trong
SMI. Vì vậy, trƣớc tiên chúng ta phải chuyển đổi các định nghĩa macro thành định
nghĩa XML. Hiện có macro OBJECT-TYPE và TRAP-TYPE macro trong SMIv1.
OBJECT-TYPE macro là một macro đại diện, định nghĩa các bảng node,
hoặc dữ liệu node của MIB. Thông qua phƣơng pháp chuyển đổi macro này, chúng
ta có thể hiểu đƣợc một phƣơng pháp để thay đổi node của MIB thành phần tử của
XML. Mô tả kiểu chung của biểu thức MIB node sử dụng các OBJECT-TYPE
macro là nhƣ sau:
NodeName OBJECT-TYPE
SYNTAX "SyntaxType"
ACCESS "AccessType"
STATUS "StatusType"
DESCRIPTION "DescriptionText"
REFERENCE "ReferenceType"
INDEX "IndexList"
DEFVAL "DefaultValue"
: : = {parentNodeName nodeNumber}
Biểu thức MIB node có thể đƣợc trình bày trong lƣợc đồ XML nhƣ sau:
(lower part node definition part)
<xsd:attribute name = "oid" type = "xsd:string" use = "fixed"
value = "OidValue" />
<xsd:attribute name = "Description" type = "xsd:string" use = "fixed" value =
"DescriptionText" />
<xsd:attribute name = "Reference" type = "xsd:string" use = "fixed" value =
"ReferenceType" />
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
73
<xsd:attribute name = " Defval " type = "xsd:string" use = "fixed" value =
"DefaultValue" />
Thay đổi 'NodeName' tƣơng ứng với tên của node thành tên một phần tử
trong XML và những đoạn ở bên trong, giống nhƣ là „ACCESS‟, „STATUS‟…
đƣợc định nghĩa thành các thuộc tính của phần tử tƣơng ứng với ý nghĩa của chúng.
Định thuộc tính mới của 'OID' và giá trị của 'OID' là giá trị tuyệt đối OID của các
node có liên quan. Giá trị 'OID' đƣợc sử dụng bởi khóa để chỉ ra mỗi node. Giá trị
OID của 'hệ thống' node trong MIBII là „1.3.6.1.2.1.1‟ .
TRAP-TYPE macro đƣợc sử dụng để định nghĩa chức năng của „trap‟, nơi
mà agent báo cáo các sự kiện đến manager. Các mẫu node chính của TRAP-TYPE
macro nhƣ sau:
NodeName TRAP-TYPE
ENTERPRISE "EnterpriseName"
VARIABLES "VariableType"
DESCRIPTION "DescriptionText"
REFERENCE "ReferenceType"
: : = trapNumber
Nếu chuyển đổi các định nghĩa MIB ở trên thành lƣợc đồ XML, kết quả sẽ là :
<xsd:attribute name = "Trapnumber"
type = "xsd:int" use = "fixed" value = "TrapNumber" />
<xsd:attribute name = "Enterprise" type = "xsd:string" use = "fixed" value =
"EnterpriseName" />
<xsd:attribute name = "Description" type = "xsd:string" use = "fixed" value =
"DescriptionText" />
<xsd:attribute name = "Reference" type = "xsd:string" use = "fixed" value =
"ReferenceType" />
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
74
Chuyển đổi này, thay đổi tên của node thành tên của phần tử và các mệnh đề
bên trong thành các thuộc tính của phần tử. SNMPv2 SMI có nhiều kiểu macro,
thêm vào OBJECT-TYPE macro để mở rộng macro trƣớc đó.
MODULE-IDENTITY macro đã có thông tin về modul. Nếu xác định node
sử dụng macro này để định nghĩa macro, mẫu chung có thể xuất hiện nhƣ sau:
NodeName MODULE-IDENTITY
LAST-UPDATED "Last-updated"
ORGANIZATION "Organization"
CONTACT-INFO "Contact-info"
DESCRIPTION "Description"
REVISION "Revision"
DESCRIPTION
"Revision_description"
: : = {parentNodeName nodeNumber}
Node này có modul thông tin thực hiện chức năng nhƣ là một nhóm node.
Các chức năng nhƣ nhóm node có thể thay đổi thành một phần tử chỉ với một thuộc
tính: 'OID'. Định nghĩa lƣợc đồ XML đƣợc thể hiện nhƣ sau:
(...lower part element definition ...)
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
75
< xsd:attribute name = "oid" type = "xsd:string" use = "fixed" value = "
parent_oid.NodeNumber " />
Kiểu chung của một MIB node sử dụng một OBJECT-TYPE macro đƣợc
xác định trong SMIv2 nhƣ sau:
NodeName OBJECT-TYPE
SYNTAX "SyntaxType"
UNITS "UnitsType"
MAX-ACCESS "AccessType"
STATUS "StatusType"
DESCRIPTION "DescriptionText"
REFERENCE "ReferenceType"
INDEX "IndexList"
DEFVAL "DefaultValue"
: : = {parentNodeName nodeNumber}
Phƣơng thức chuyển đổi tƣơng tự nhƣ OBJECTTYPE macro của SMIv1 và
chuyển đổi lƣợc đồ XML đƣợc định nghĩa:
(lower part node definition part)
<xsd:attribute name = "Units" type = "xsd:string" use = "fixed" value =
"UnitsType" />
<xsd:attribute name = "Access" type = "xsd:string" use = "fixed" value =
"AccessType" />
<xsd:attribute name = "Status" type = "xsd:string" use = "fixed" value =
"StatusType" />
<xsd:attribute name = "Description" type = "xsd:string" use = "fixed" value =
"DescriptionText" />
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
76
<xsd:attribute name = "Reference" type = "xsd:string" use = "fixed" value =
"ReferenceType" />
<xsd:attribute name = "Defval" type = "xsd:string" use = "fixed" value =
"DefaultValue" />
Mẫu node chung sử dụng NOTIFICATION- TYPE macro là:
NodeName NOTIFICATION-TYPE
OBJECTS "ObjectsType"
STATUS "StatusType"
DESCRIPTION "DescriptionText"
REFERENCE "ReferenceType"
: : = {parentNodeName nodeNumber}
Node này tác động nhƣ một sự kiện báo, mà không có giá trị. Vì vậy, nhƣ đã
nêu ở trên mẫu node có thể xuất hiện dƣới hình thức sử dụng lƣợc đồ XML nhƣ sau:
<xsd:attribute name = "oid" type = "xsd:string" use = "fixed"
value = "OidValue" />
<xsd:attribute name = "Objects" type = "xsd:string" use = "fixed" value =
"ObjectsType" />
<xsd:attribute name = "Status" type = "xsd:string" use = "fixed" value =
"StatusType" />
<xsd:attribute name = "Description" type = "xsd:string" use = "fixed" value =
"DescriptionText" />
<xsd:attribute name = "Reference" type = "xsd:string" use = "fixed" value =
"ReferenceType" />
Tên của node đƣợc sử dụng nhƣ là tên của phần tử và các đoạn bên trong của
node đƣợc xác định bởi thuộc tính của các phần tử. Thuộc tính 'OID' có giá trị OID
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
77
của các node, đƣợc coi nhƣ là giá trị khoá cho truyền thông. Node chính sử dụng
OBJECT-IDENTITY macro là:
NodeName OBJECT-IDENTITY
STATUS "StatusType"
DESCRIPTION "DescriptionText"
REFERENCE "ReferenceText"
: : = {parentNodeName nodeNumber}
Node thể hiện một nhóm node mà không có giá trị của các node con. Nếu ở
trên node chính đƣợc hiển thị bởi lƣợc đồ XML, thì kết quả sẽ là:
<xsd:attribute name = "Status" type = "xsd:string" use = "fixed" value =
"StatusText" />
< xsd:attribute name = "Description" type = "xsd:string" use = "fixed" Value
= "DescriptionText" />
< xsd:attribute name = "Reference" type = "xsd:string" use = "fixed" Value =
"ReferenceText" />
Tên modul và nhóm node: Modul SNMP MIB xác định thông tin quản trị giữa
'BEGIN' và 'END' với từ khóa „DEFINITION‟ theo các nguyên tắc ASN.1.
moduleName DEFINITIONS ::= BEGIN
......management information definotion
...
END
Bởi tài liệu XML phải có một phần tử gốc bao gồm toàn bộ tài liệu trong ngữ
pháp XML nên mô hình tên của 'moduleName' đƣợc thay đổi thành phần tử cấp trên
(phần tử gốc). Lƣợc đồ XML đƣợc biểu diễn nhƣ sau:
<xsd:schema xmlns:xsd = " XMLSchema"
elementFormDefault = "Qualified">
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
78
(...management information
definition ...)
<xsd:attribute name = "Version"
type = "xsd:string" use = "required" />
Node „OBJECT IDENTIFIER‟ là một phƣơng pháp để diễn tả nhóm node,
các node con mà không có mệnh đề bên trong. Node này tƣơng ứng với các node
trung gian trong một cấu trúc cây và có thể có nhiều node. Các node giữa của
SNMP MIB không có giá trị. Ví dụ định nghĩa nhƣ RFC121313 là:
Mib-2 OBJECT IDENTIFIER : : = {mgmt 1}
Sự thể hiện này có nghĩa là mgmt node là node con đầu tiên của MIB-2 node.
Nếu sự thể hiện này đƣợc biểu diễn bởi lƣợc đồ XML, thì các kết quả chuyển đổi là:
(......child element definition ...)
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
79
Tóm lại, các phƣơng pháp chuyển đổi chính nhƣ sau: Mỗi node của MIB đƣợc
thay đổi thành mỗi phần tử có liên quan của lƣợc đồ XML và các tên node đƣợc sử
dụng nhƣ là tên phần tử có liên quan, đó là „bản đồ mức mô hình‟ phƣơng pháp đặt tên
của JP martin-Flatin. Ngoài ra, tất cả các mệnh đề của mỗi node đƣợc chuyển đổi thành
thuộc tính của các phần tử có liên quan của định nghĩa lƣợc đồ XML và tất cả các phần
tử có thuộc tính 'OID' đánh dấu giá trị OID của MIB node có liên quan.
3.4.2. Thực hiện chuyển đổi
Chuyển đổi định nghĩa MIB SNMP thành định nghĩa lƣợc đồ XML tự động mà
không mất thông tin đối tƣợng quản trị. Dữ liệu đƣợc đƣa vào từ một URL hoặc một
tập tin. Dữ liệu ra của sự chuyển đổi này là tệp tin lƣợc đồ XML và cấu trúc cây XML
DOM. Tập tin XML đƣợc dùng để đánh giá từng trƣờng hợp của tài liệu XML và
DOM đƣợc sử dụng cho xử lý và tạo ra các tài liệu XML có chứa dữ liệu quản trị.
Hình 3.6 - Cấu trúc chuyển đổi SNMP MIB thành XML
Bộ chuyển đổi có thể thay đổi DOM tree và có các chức năng để thao tác
trên DOM, chẳng hạn nhƣ thêm hoặc xóa các phần tử vv… Cấu trúc của bộ chuyển
đổi đƣợc miêu tả trong Hình 3.6.
Bộ phân tích cú pháp SMI đọc định nghĩa SNMP MIB, xóa chú thích, chia
một loạt các thẻ, và kiểm tra xem định nghĩa MIB, đƣợc xác định theo các quy định
của SMI và ASN.1.
Nếu một lỗi xảy ra, bộ chuyển đổi trả về một mã lỗi. Bảng node tạo ra một
bảng đối tƣợng quản trị. Mỗi node đƣợc ánh xạ vào một lớp và bảng chứa một loạt
các lớp. Trong trƣờng hợp có ngƣời dùng xác định kiểu dữ liệu, thì kiểu này đƣợc
chuyển đổi thành một lớp và đƣợc lƣu trữ vào bảng kiểu dữ liệu. Lƣợc đồ XML tạo
ra một định nghĩa lƣợc đồ XML tƣơng ứng với định nghĩa nguồn MIB, bằng cách
sử dụng thông tin từ bảng MO. Khi đó lƣợc đồ XML tƣơng ứng với chuẩn W3C.
DOM generator tạo ra DOM tree bằng cách sử dụng thông tin quản trị đã
đƣợc lƣu giữ trong các bảng MO. Việc tạo ra cây DOM đƣợc sử dụng nhƣ là vùng
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
80
lƣu trữ trung gian cho thông tin quản trị khi manager và agent giao tiếp với nhau.
Để nắm giữ DOM tree, sử dụng chuẩn API cho XML DOM.
Hình 3.7 - Ứng dụng của cổng XML/SNMP.
3.4.3. Cổng XML/SNMP
Phần này giải thích về việc triển khai thực hiện các thủ tục cho phát triển
cổng XML/SNMP để quản trị SNMP agent với quản trị dựa trên XML. Cổng
chuyển đổi thông tin SNMP thành tài liệu XML và phân chia tài liệu XML đến
manager dựa trên XML, và ngƣợc lại. Cổng là cần thiết cho việc trao đổi giữa
manager dựa trên XML và agent dựa trên SNMP để chuyển đổi hai giao thức,
HTTP và SNMP.
Chúng ta phải xem xét cả tƣơng tác chuyển đổi và đặc tả chuyển đổi để xác
định các hoạt động của cổng. Đối với tƣơng tác chuyển đổi, phƣơng pháp thực hiện
là xác định lập bản đồ thao tác. Tƣơng tác chuyển đổi chuẩn chuyển đổi các biểu
thức và các phƣơng pháp cho các dữ liệu thực tế. Trong giao thức SNMP, các thao
tác của SNMP đƣợc chia thành ba kiểu: get, set và trap. Thao tác get là hoạt động
mà SNMP mangager mang dữ liệu đến từ agent. Thao tác set là hoạt động mà
SNMP manager gửi dữ liệu đến agent và các thay đổi giá trị node tƣơng ứng của
agent. Nếu một sự kiện xảy ra trong agent, thao tác trap sẽ xảy ra. Thao tác trap là
hành động mà SNMP agent tự động báo cáo các sự kiện thông tin cho manager.
Khi manager yêu cầu thông tin từ agent của HTTP, thông điệp HTTP gồm 5
thông số: host, operation, community, xpath, value. „Host‟ sẽ hiển thị địa chỉ của
SNMP agent. „operation‟ có nghĩa là thao tác, kiểu „set‟ cho hành động set và „get‟
cho hành động get. „community‟, cung cấp tên của định nghĩa chung đƣợc xác định
trong SNMP agent. „path‟ cung cấp tên của node có dữ liệu mà mamager muốn biết.
„value‟ lƣu giữ dữ liệu mà manager gửi đến agent trong trƣờng hợp của thao tác
SNMP set. Hình 3.7 cho thấy cấu trúc của cổng này.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
81
Thao tác SNMP Thao tác HTTP Ghi chú
Get http://(gateway_address)/SNMP?host = agent_name HTTP GET
&community = community_name&operation = get
&path = node_name
Set http://(gateway_address)/SNMP ?Host = agent_name HTTP GET /
& community = community_name&operation = set HTTP POST
& xpath = node name&value = value_string
Trap http://(manager-address)/NOTIFICATION/SNMP? Host HTTP POST
= host_name
Bảng 3.9 - Các thao tác của SNMP và HTTP
Hình 3.7- Kiến trúc của cổng XML/SNMP
Các chức năng mỗi modul của cổng gồm:
• HTTP handler dành cho trao đổi với manager dựa trên XML . Modul này sẽ
nhận đƣợc một yêu cầu HTTP từ manager cung cấp để yêu cầu phân tích, và cung
cấp tài liệu XML đƣợc tạo ra bởi modul XML generator tới manager.
• Request parser phân tích HTTP request và gọi các chức năng tƣơng ứng với
yêu cầu.
• XML DOM là cấu trúc dữ liệu cho chuyển đổi dữ liệu, do đƣợc tạo ra bởi
các MIB XML converter.
• XML generator tạo ra các tài liệu XML trên cơ sở DOM và cung cấp chúng
cho HTTP handler.
• MIB to XML Translator đƣợc sử dụng để đặc tả chuyển đổi, modul này tạo
ra lƣợc đồ XML DOM tree từ các tập tin MIB đƣợc sử dụng trong SNMP agent.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
82
• SNMP poller là một modul SNMP polling. Modul này gửi SNMP request
message đến SNMP agent và cập nhật DOM tree với dữ liệu nhận đƣợc từ agent.
• Trap receiver nhận SNMP trap message từ agent, và cập nhật DOM với dữ
liệu nhận đƣợc.
• Scheduler là để thay đổi lịch biểu cho polling và agent đích.
• XSL generator tạo ra một tập tin XSL, đó là một kiểu bảng có tính thân
thiện với ngƣời sử dụng.
Kiểu kiến trúc này đƣợc dùng khi các cổng đƣợc sử dụng nhƣ là một MIB browser.
3.5. Kết luận chương 3
Trong phần này, đã đƣa ra những phân tích để sử dụng XML cho chuyển đổi
tƣơng tác. Tiếp đó là giới thiệu phƣơng pháp trao đổi tƣơng tác giữa quản trị dựa
trên XML và cổng XML/SNMP; Cổng này sử dụng DOM tree để xử lý yêu cầu từ
manager, và chuyển dữ liệu quản trị tƣơng ứng vào biến MIB tại SNMP agent. Các
phƣơng pháp trao đổi gồm: Thứ nhất là trao đổi dựa trên DOM, phƣơng pháp này
cho phép manager có thể truy cập trực tiếp vào DOM. Thứ hai là trao đổi dựa trên
HTTP, phần này có mở rộng một chuỗi URI chứa các thông tin một yêu cầu với
XPath và XQuery. XPath và XQuery có thể dễ dàng áp dụng cho URIs để chỉ ra
đƣờng dẫn vị trí của các đối tƣợng quản trị và cung cấp các truy vấn message yêu
cầu. Phƣơng pháp này cải thiện hiệu quả và là phổ biến nhất trong trao đổi tài liệu
XML. Thứ ba là trao đổi dựa trên SOAP, phƣơng pháp này cung cấp một cách linh
hoạt và chuẩn hoá phƣơng pháp tƣơng tác với manager dựa trên XML trong môi
trƣờng phân tán.
Nội dung tiếp theo là phát triển cổng nhằm chuyển các messages giữa SNMP
và XML/SNMP. Để có cổng này, nội dung của luận văn có đề xuất một thuật toán
chuyển đổi SNMP MIB thành lƣợc đồ XML thông qua phƣơng pháp đặc tả chuyển
đổi và thực hiện chuyển đổi MIB thành XML để thể hiện thuật toán.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
83
KẾT LUẬN
1. Kết quả đạt được trong luận văn
Quản trị mạng dựa trên XML là một lĩnh vực mới đƣợc nghiên cứu và phát
triển trong những năm gần đây, song nó đã đƣợc ứng dụng rất nhiều trong thực tế,
ví dụ nhƣ trong các ứng dụng của trình duyệt Web Internet Explorer, Netcapes…
Những nghiên cứu về Kiến trúc hệ thống quản trị mạng dựa trên XML sẽ là cơ sở
cho những nghiên cứu tiếp theo.
Mục đích của luận văn này là chỉ giới hạn nghiên cứu về kiến trúc hệ thống
quản trị mạng dựa trên XML bằng các phƣơng pháp tham khảo, tìm hiểu, phân tích
và thiết kế hệ thống.
Để hiểu đƣợc vấn đề này, tôi bắt đầu tìm hiểu các khái niệm, các lĩnh vực
nghiên cứu cơ bản trong quản trị mạng (đƣợc trình bày trong chƣơng 1). Trong
phần nghiên cứu về kiến trúc quản trị mạng, có hai nội dung cơ bản đƣợc đề cập
đến, đó là: Kiến trúc mạng và mô hình quản trị mạng.
Tiếp theo là việc nắm đƣợc những kiến thức về kiến trúc quản trị mạng dựa
trên XML (chƣơng 2). Nội dung phần này là nghiên cứu về XML, kiến trúc quản trị
mạng dựa trên XML, phƣơng pháp quản trị mạng tích hợp dựa trên XML và thiết kế
hệ thống quản trị mạng dựa trên XML.
Phần thứ 3 là trình bày về việc phát triển chuyển đổi cổng XML/SNMP cho
quản trị mạng tích hợp dựa trên XML. Đƣợc nghiên cứu tập trung chủ yếu vào tìm
hiểu về các phƣơng pháp trao đổi của cổng XML/SNMP và xây dựng thuật toán
chuyển đổi từ SNMP MIB thành tài liệu XML. SNMP tuy còn có những hạn chế
trong quy mô và hiệu quả, song với sự phát triển của các mạng ngày càng lớn mạnh
thì nghiên cứu về quản trị mạng dựa trên XML đƣợc phát triển chính là để giải
quyết những thiếu sót của quản trị mạng dựa trên SNMP. Quản trị mạng dựa trên
XML cho phép quản lý dữ liệu quản trị trong các mạng rộng lớn. Quản trị mạng dựa
trên XML cung cấp dữ liệu quản trị ở dạng tài liệu XML thông qua giao thức
HTTP. Đây là phƣơng pháp hiệu quả để chuyển số lƣợng lớn dữ liệu. Tuy nhiên,
quản trị mạng dựa trên XML không thể quản trị trực tiếp kế thừa các SNMP agent,
nên nội dung phần này đƣợc nghiên cứu với mục tiêu là làm thế nào để quản trị
SNMP agent nhằm mang tính kế thừa bằng cách sử dụng lợi thế của quản trị mạng
dựa trên XML.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
84
2. Hướng nghiên cứu tiếp theo
Do tính tƣơng thích tuyệt vời và các tính năng thân thiện với ngƣời sử dụng
của XML, nên việc tích hợp dữ liệu vào XML dự kiến sẽ đƣợc phát triển mạnh
trong tƣơng lai. Cụ thể, để có thể sử dụng XML nhƣ là phần trung gian cho truyền
thông tin giữa các hệ thống khác nhau, một phƣơng pháp chuyển đổi chuẩn để thay
đổi SNMP MIB thành XML vào trong việc truyền các thông tin cho mạng và hệ
thống quản trị mạng là rất cần thiết.
Trong tƣơng lai, cần phải nâng cao thuật toán chuyển đổi SNMP MIB thành
XML thông qua đánh giá hiệu suất của thuật toán. Để mở rộng quy mô, cần phải
nghiên cứu về một manager có thể quản lý nhiều SNMP agent đƣợc phân phối cho
các mạng rộng lớn ví dụ nhƣ các mạng kinh doanh.
Hiện tại việc sử dụng thuật toán để thực hiện chuyển đổi tự động SNMP
MIB thành tài liệu XML cho cổng XML/SNMP mới đang ở bƣớc triển khai trong
phạm vi hẹp. Hƣớng phát triển trong tƣơng lai sẽ là xây dựng sự thực hiện của cổng
XML/ SNMP với những cải tiến mang tính hiệu quả, đánh giá đƣợc hiệu suất và các
khả năng của cổng.
Trong quá trình thực hiện luận văn, tôi đã cố gắng tập trung tìm hiểu và
tham khảo nhiều tài liệu có liên quan. Tuy nhiên do thời gian nghiên cứu, do giới
hạn của luận văn đã xác định và trình độ có hạn, nên không tránh khỏi những thiếu
sót. Tôi rất mong nhận được sự nhận xét, góp ý của thầy cô giáo, bạn bè đồng
nghiệp và những ai quan tâm đến đề tài này để luận văn được hoàn thiện hơn.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
85
TÀI LIỆU THAM KHẢO
[1] Nguyễn Phƣơng Lan (2003), XML nền tảng & ứng dụng, NXB Lao động xã hội.
[2] Brett McLaughlin (May-2002), Java and XML Data Binding, O'Reilly.
[3] Douglas Mauro, Kevin Schmidt (Sep - 2005), Essential SNMP, 2nd Edition, O'Reilly.
[4] DMTF (Jul-1999), Specification for the Representation of CIM in XML Version 2.0,
DMTF Specification.
[5] Martin-Flatin JP(Oct - 2000), Web-Based Management of IP Networks and Systems,
Swiss Federal Institute of Technology.
[6] Mi-Jung Choi, Yun-Jung Oh, Hong-Taek Ju, James W. Hong (April - 2002), XML -
based Integrated Network Management For IP-based Networks, Proc. of the IEEE/IFIP.
[7] Mi-Jung Choi, Yun-Jung Oh, Hong-Taek Ju, James W. Hong (Sep- 2002), Interaction
Translation Methods for XML/SNMP Gateway Using XML Technologies, Proc. of the
Asia-Pacific Network Operations and Management Symposium, Korea.
[8] John Soldatos, Dimits Alexopoulos (2004), An Architecture for Cost Effective Network
Management, National Technical University of Athens .
[9] Kim YD et al (Sept - 2001), Web-based network management using translation
SNMPSMI to XML, Proc. Of APNOMS.
[10] Eric (2002), Understanding Web Services, Addison Wesley.
[11] Elliotte (2002), Processing XML with Java, Harold.
[12] Phil Shafer (2001), XML-based Network Management, Juniper Networks.
[13] AvayaLabs, XML based Management Interface for SNMP Enabled Devices,
[14] Frank Strauss (), A Library to Access SMI MIB Information,
[15] W3C, Extensible Markup Language (XML), W3C Recommendation,
October -2000.
[16] W3C, Document Object Model (DOM) Level 2 Traversal and Ranges Specification,
W3C Recommendation, Nov - 2000.
[17] W3C, XML Path Language (XPath) Version 2.0, W3C Working Draft, Apr - 2002.
[18] W3C, XQuery 1.0: An XML Query Language, W3C Working Draft, Apr - 2002.
[19] W3C, XSL Transformations (XSLT) Version 1.0, W3C Recommendation, Nov -1999.
[20] W3C, XML Schema, W3C Recommendation, May - 2001. Z
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
PHỤ LỤC
1. ToXMLTrap.java
import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.sax.*;
public class ToXMLTrap {
BufferedReader in;
StreamResult out;
TransformerHandler th;
AttributesImpl atts;
Attributes d;
public static void main (String args[]) {
new ToXMLTrap().doit();
}
public void doit () {
try{
in = new BufferedReader(new FileReader("datatrap.txt"));
out = new StreamResult("datatrap.xml");
initXML();
String str;
while ((str = in.readLine()) != null) {
process(str);
}
in.close();
closeXML();
}
catch (Exception e) { e.printStackTrace(); }
}
public void initXML() throws ParserConfigurationException,
TransformerConfigurationException, SAXException {
SAXTransformerFactory tf =
(SAXTransformerFactory) SAXTransformerFactory.newInstance();
th = tf.newTransformerHandler();
Transformer serializer = th.getTransformer();
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
serializer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
serializer.setOutputProperty
("{}indent-amount", "4");
serializer.setOutputProperty(OutputKeys.INDENT,"yes");
th.setResult(out);
th.startDocument();
atts = new AttributesImpl();
th.startElement("","","xsd:element name ='NodeName'",atts);
th.startElement("","","xsd:complexType",atts);
th.startElement("","","xsd:simpleContent",atts);
th.startElement("","","xsd:restriction base = 'xsd:string'",atts);
System.out.println("?xml version='1.0' encoding='ISO-8859-1'?");
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("");
}
public void process (String s) throws SAXException {
String [] elements = s.split("\\ ");
atts.clear();
System.out.println("<xsd:attribute name = "+"'"+ elements[0]+"'"+" type =
'xsd:string' use = 'fixed' value =");
System.out.println(elements[1]+"/ >");
th.startElement("","","xsd:attribute name =",atts);
th.characters(elements[0].toCharArray(),0,elements[0].length());
th.startElement("","","type = 'xsd:string' use = 'fixed' value =",atts);
th.characters(elements[1].toCharArray(),0,elements[1].length());
th.endElement("","","");
}
public void closeXML() throws SAXException {
th.endElement("","","xsd:restriction");
th.endElement("","","xsd:simpleContent");
th.endElement("","","xsd:complexType");
th.endElement("","","xsd:element");
th.endDocument();
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("");
}
}
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2. ToXMLIdentyti.java
import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.sax.*;
public class ToXMLIdentity {
BufferedReader in;
StreamResult out;
TransformerHandler th;
AttributesImpl atts;
Attributes d;
public static void main (String args[]) {
new ToXMLIdentity().doit();
}
public void doit () {
try{
in = new BufferedReader(new FileReader("dataidentity.txt"));
out = new StreamResult("dataidentity.xml");
initXML();
String str;
while ((str = in.readLine()) != null) {
process(str);
}
in.close();
closeXML();
}
catch (Exception e) { e.printStackTrace(); }
}
public void initXML() throws ParserConfigurationException,
TransformerConfigurationException, SAXException {
SAXTransformerFactory tf =
(SAXTransformerFactory) SAXTransformerFactory.newInstance();
th = tf.newTransformerHandler();
Transformer serializer = th.getTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
serializer.setOutputProperty
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
("{}indent-amount", "4");
serializer.setOutputProperty(OutputKeys.INDENT,"yes");
th.setResult(out);
th.startDocument();
atts = new AttributesImpl();
th.startElement("","","xsd:element name ='NodeName'",atts);
th.startElement("","","xsd:complexType",atts);
th.startElement("","","xsd:sequence ",atts);
th.startElement("","","<xsd:attribute name = 'oid' type ='xsd:string' use = 'fixed'
value ='OidValue' / ",atts);
System.out.println("?xml version='1.0' encoding='ISO-8859-1'?");
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("(children element definition )");
System.out.println("");
System.out.println("<xsd:attribute name = 'oid' type ='xsd:string' use = 'fixed'
value ='OidValue' / >");
}
public void process (String s) throws SAXException {
String [] elements = s.split("\\ ");
atts.clear();
System.out.println("<xsd:attribute name = "+"'"+ elements[0]+"'"+" type =
'xsd:string' use = 'fixed' value =");
System.out.println(elements[1]+"/ >");
th.startElement("","","xsd:attribute name =",atts);
th.characters(elements[0].toCharArray(),0,elements[0].length());
th.startElement("","","type = 'xsd:string' use = 'fixed' value =",atts);
th.characters(elements[1].toCharArray(),0,elements[1].length());
th.endElement("","","");
}
public void closeXML() throws SAXException {
th.endElement("","","xsd:complexType");
th.endElement("","","xsd:element");
th.endDocument();
System.out.println("");
System.out.println("");
}
}
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4. ToXMLNotification.java
import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.sax.*;
public class ToXMLNotification {
BufferedReader in;
StreamResult out;
TransformerHandler th;
AttributesImpl atts;
Attributes d;
public static void main (String args[]) {
new ToXMLNotification().doit();
}
public void doit () {
try{
in = new BufferedReader(new FileReader("datanotification.txt"));
out = new StreamResult("datanotification.xml");
initXML();
String str;
while ((str = in.readLine()) != null) {
process(str);
}
in.close();
closeXML();
}
catch (Exception e) { e.printStackTrace(); }
}
public void initXML() throws ParserConfigurationException,
TransformerConfigurationException, SAXException {
SAXTransformerFactory tf =
(SAXTransformerFactory) SAXTransformerFactory.newInstance();
th = tf.newTransformerHandler();
Transformer serializer = th.getTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
// pretty XML output
serializer.setOutputProperty
("{}indent-amount", "4");
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
serializer.setOutputProperty(OutputKeys.INDENT,"yes");
th.setResult(out);
th.startDocument();
atts = new AttributesImpl();
th.startElement("","","xsd:element name ='NodeName'",atts);
th.startElement("","","xsd:complexType",atts);
th.startElement("","","<xsd:attribute name = 'oid' type ='xsd:string' use = 'fixed'
value ='OidValue' / ",atts);
System.out.println("?xml version='1.0' encoding='ISO-8859-1'?");
System.out.println("");
System.out.println("");
System.out.println("<xsd:attribute name = 'oid' type ='xsd:string' use = 'fixed'
value ='OidValue' / >");
}
public void process (String s) throws SAXException {
String [] elements = s.split("\\ ");
atts.clear();
System.out.println("<xsd:attribute name = "+"'"+ elements[0]+"'"+" type =
'xsd:string' use = 'fixed' value =");
System.out.println(elements[1]+"/ >");
th.startElement("","","xsd:attribute name =",atts);
th.characters(elements[0].toCharArray(),0,elements[0].length());
th.startElement("","","type = 'xsd:string' use = 'fixed' value =",atts);
th.characters(elements[1].toCharArray(),0,elements[1].length());
th.endElement("","","");
}
public void closeXML() throws SAXException {
th.endElement("","","xsd:complexType");
th.endElement("","","xsd:element");
th.endDocument();
System.out.println("");
System.out.println("");
}
}
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
5. ToXMLObjectv1.java
import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.sax.*;
public class ToXMLObjectv1 {
BufferedReader in;
StreamResult out;
TransformerHandler th;
AttributesImpl atts;
public static void main (String args[]) {
new ToXMLObjectv1().doit();
}
public void doit () {
try{
in = new BufferedReader(new FileReader("dataobjectv1.txt"));
out = new StreamResult("dataobjectv1.xml");
initXML();
String str;
while ((str = in.readLine()) != null) {
process(str);
}
in.close();
closeXML();
}
catch (Exception e) { e.printStackTrace(); }
}
public void initXML() throws ParserConfigurationException,
TransformerConfigurationException, SAXException {
SAXTransformerFactory tf =
(SAXTransformerFactory) SAXTransformerFactory.newInstance();
th = tf.newTransformerHandler();
Transformer serializer = th.getTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
serializer.setOutputProperty
("{}indent-amount", "4");
serializer.setOutputProperty(OutputKeys.INDENT,"yes");
th.setResult(out);
th.startDocument();
atts = new AttributesImpl();
th.startElement("","","xsd:element name ='NodeName'",atts);
th.startElement("","","xsd:complexType",atts);
th.startElement("","","xsd:simpleContent",atts);
th.startElement("","","xsd:restriction base = 'xsd:string'",atts);
th.startElement("","","xsd:sequence ",atts);
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
th.endElement("","","xsd:sequence");
th.startElement("","","<xsd:attribute name = 'oid' type ='xsd:string' use = 'fixed'
value ='OidValue' / ",atts);
System.out.println("?xml version='1.0' encoding='ISO-8859-1'?");
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("(lower part node definition part)");
System.out.println("");
System.out.println("<xsd:attribute name = 'oid' type ='xsd:string' use = 'fixed'
value ='OidValue' / >");
}
public void process (String s) throws SAXException {
String [] elements = s.split("\\ ");
atts.clear();
System.out.println("<xsd:attribute name = "+"'"+ elements[0]+"'"+" type =
'xsd:string' use = 'fixed' value =");
System.out.println(elements[1]+"/ >");
th.startElement("","","xsd:attribute name =",atts);
th.characters(elements[0].toCharArray(),0,elements[0].length());
th.startElement("","","type = 'xsd:string' use = 'fixed' value =",atts);
th.characters(elements[1].toCharArray(),0,elements[1].length());
th.endElement("","","");
}
public void closeXML() throws SAXException {
th.endElement("","","xsd:restriction");
th.endElement("","","xsd:simpleContent");
th.endElement("","","xsd:complexType");
th.endElement("","","xsd:element");
th.endDocument();
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("");
}
}
6. IndentingParser.java
import org.w3c.dom.*;
import org.apache.xerces.parsers.DOMParser;
public class IndentingParser
{
static String displayStrings[] = new String[1000];
static int numberDisplayLines = 0;
public static void displayDocument(String uri)
{
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
try {
DOMParser parser = new DOMParser();
parser.parse(uri);
Document document = parser.getDocument();
display(document,"");
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
public static void display(Node node, String indent)
{
if (node == null){
return;
}
int type = node.getNodeType();
switch(type) {
case Node.DOCUMENT_NODE:{
displayStrings[numberDisplayLines] = indent;
displayStrings[numberDisplayLines] += "<?xml version =
\"1.0\"encoding =\""+ "UTF-8"+"\"?";
numberDisplayLines ++;
display(((Document)node).getDocumentElement(),""); break; }
case Node.ELEMENT_NODE:{
displayStrings[numberDisplayLines] = indent;
displayStrings[numberDisplayLines] +="<";
displayStrings[numberDisplayLines] += node.getNodeName();
int length = (node.getAttributes()!= null) ?
node.getAttributes().getLength() : 0;
Attr attributes[] = new Attr[length];
for (int loopIndex = 0; loopIndex <length; loopIndex ++){
attributes[loopIndex] =
(Attr)node.getAttributes().item(loopIndex); }
for (int loopIndex = 0; loopIndex < attributes.length;loopIndex ++){
Attr attribute = attributes[loopIndex];
displayStrings[numberDisplayLines] += " ";
displayStrings[numberDisplayLines] += attribute.getNodeName();
displayStrings[numberDisplayLines] +="=\"";
displayStrings[numberDisplayLines] += attribute.getNodeValue();
displayStrings[numberDisplayLines] +="=\"";
}
displayStrings[numberDisplayLines] +=">";
numberDisplayLines ++;
NodeList childNodes = node.getChildNodes();
if (childNodes != null) {
length = childNodes.getLength();
indent += " ";
for (int loopIndex = 0; loopIndex <length; loopIndex ++){
display(childNodes.item(loopIndex),indent);
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
}
}
break;}
case Node.CDATA_SECTION_NODE:{
displayStrings[numberDisplayLines] = indent;
displayStrings[numberDisplayLines] += "<![CDATA[";
displayStrings[numberDisplayLines] +=node.getNodeValue();
displayStrings[numberDisplayLines] +="]]>";
numberDisplayLines ++;
break;
}
case Node.TEXT_NODE: {
displayStrings[numberDisplayLines] = indent;
String newText =node.getNodeValue().trim();
if(newText.indexOf("\n")0) {
displayStrings[numberDisplayLines] +=newText;
numberDisplayLines ++;
}
break; }
case Node.PROCESSING_INSTRUCTION_NODE: {
displayStrings[numberDisplayLines] = indent;
displayStrings[numberDisplayLines] += "<?";
displayStrings[numberDisplayLines] += node.getNodeName();
String text = node.getNodeValue();
if(text != null && text.length()>0) {
displayStrings[numberDisplayLines] +=text;
}
displayStrings[numberDisplayLines] += "?>";
numberDisplayLines ++;
break;
}
}
if (type == Node.ELEMENT_NODE){
displayStrings[numberDisplayLines] = indent.substring (0,indent.length() - 3);
displayStrings[numberDisplayLines] += "</";
displayStrings[numberDisplayLines] += node.getNodeName();
displayStrings[numberDisplayLines] += ">";
numberDisplayLines ++;
indent +=" "; }}
public static void main(String args[])
{
displayDocument(args[0]);
for (int loopIndex = 0; loopIndex < numberDisplayLines; loopIndex ++){
System.out.println(displayStrings[loopIndex]);
}
}
}
Các file đính kèm theo tài liệu này:
- 19LV09_CNTT_KHMTDinhThiKimNgoc.pdf