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 <m:getRequest xmlns:m="http:// example.org/ xmlsnmp">
<m:community>public</ m:community><m:version>1</m:version> <m:path>// ifSpeed[1] </m :path >
</m:getRequest>
Set Request <m:setRequest xmlns:m="http://example.org/xmlsnmp ">
<m:community>media</m:community>><m:version>1</m:version> <m:path>//hostInfo/hostName</m:path><m:value>zeus</m:value> </m:setRequest>
Response <m:response xmlns:m="http://example.org/xmlsnmp " >
<rpc:result xmlns:rpc="http://www.w3.org/2001/12/soap -rpc "> <ifSpeed> 64000 </ifSpeed>
</rpc:result> </m:response>
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 http://www.lrc-tnu.edu.vn
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 http://www.lrc-tnu.edu.vn
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 http://www.lrc-tnu.edu.vn
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 http://www.lrc-tnu.edu.vn
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 http://www.lrc-tnu.edu.vn
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 <xsd:simpleType name = "IpAddress">
: : = <xsd:restriction base = "xsd:string">
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]) " / > </ xsd:restriction>
</ xsd:simpleType>
Counter <xsd:simpleType name = "Counter"> : : = <xsd:restriction base = "xsd:unsignedInt"> INTEGER (0 .. </ xsd:restriction>
4294967295) </ xsd:simpleType>
TimeTicks <xsd:simpleType name = "TimeTicks"> : : = <xsd:restriction base = "xsd:unsignedInt"> INTEGER (0 .. </ xsd:restriction>
4294967295) </ xsd:simpleType>
Opaque <xsd:simpleType name = "Opaque"> : : = <xsd:restriction base = "xsd:string"> OCTET STRING </ xsd:restriction>
</ xsd:simpleType>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
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 <xsd:simpleType name = "Counter64"> (0..18446744073709551615) <xsd:restriction base = "xsd:unsignedLong"> </ xsd:restriction>
</ xsd:simpleType>
Gauge32 :: = INTEGER <xsd:simpleType name = "Gauge32"> (0..4294967295) <xsd:restriction base = "xsd:unsignedInt"> </ xsd:restriction>
</ xsd:simpleType>
Unsigned32 ::=INTEGER <xsd:simpleType name = "Unsigned32"> (0..4294967295) <xsd:restriction base = "xsd:unsignedInt"> </ xsd:restriction>
</ xsd:simpleType>
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 <xsd:complexType>
<xsd:simpleContent>
(ex) : <xsd:restriction base = "xsd:int"> <xsd:enumeration value = "1" /> SYNTAX <xsd:enumeration value = "2" /> INTEGER { <xsd:enumeration value = "3" /> Up (1) </ xsd:restriction>
Down (2) </ xsd:simpleContent> Testing (3) } </ xsd:complexType>
DisplayString <xsd:simpleType name = (SIZE (0 .. 255)) "DisplayString_0_255">
<xsd:restriction base = "xsd:string"> <xsd:minLength value = "0" /> <xsd:maxLength value = "255" /> </ xsd:restriction>
</ xsd:simpleType>
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
* 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}