Luận văn Kiến trúc hệ thống quản trị mạng dựa trên XML

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

pdf106 trang | Chia sẻ: maiphuongtl | Lượt xem: 1552 | Lượt tải: 2download
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:

  • pdf19LV09_CNTT_KHMTDinhThiKimNgoc.pdf
Tài liệu liên quan