Thuật toán chuyển đổi

Một phần của tài liệu Kiến trúc hệ thống quản trị mạng dựa trên xml (Trang 80 - 90)

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> (adsbygoogle = window.adsbygoogle || []).push({});

<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}

Biểu thức MIB node có thể đƣợc trình bày trong lƣợc đồ XML nhƣ sau: <xsd:element name = "NodeName">

<xsd:complexType> <xsd:simpleContent>

<xsd:restriction base = "xsd:string"> <xsd:sequence>

(lower part node definition part) </ xsd:sequence>

<xsd:attribute name = "oid" type = "xsd:string" use = "fixed" value = "OidValue" />

<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" />

<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 http://www.lrc-tnu.edu.vn

<xsd:attribute name = "Index" type = "xsd:string" use = "fixed" value = "IndexList" /> <xsd:attribute name = " Defval " type = "xsd:string" use = "fixed" value = "DefaultValue" />

</ xsd:restriction> </ xsd:simpleContent> </ xsd:complexType> </ xsd:element>

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:element name = "NodeName">

<xsd:complexType> <xsd:simpleContent>

<xsd:restriction base = "xsd:string"> <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 http://www.lrc-tnu.edu.vn (adsbygoogle = window.adsbygoogle || []).push({});

</ xsd:restriction> </ xsd:simpleContent> </ xsd:complexType> </ xsd:element>

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:

<xsd:element name = "ParentNodeName"> <xsd:complexType>

<xsd:sequence>

<xsd:element ref = "NodeName" /> </ xsd:sequence>

<xsd:attribute name = "oid" type ="xsd:string"use ="fixed"value ="Parent_oid" /> </ xsd:complexType>

</ xsd:element>

<xsd:element name = "NodeName"> <xsd:complexType>

<xsd:sequence>

(...lower part element definition ...) </ xsd:sequence>

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

< xsd:attribute name = "oid" type = "xsd:string" use = "fixed" value = " parent_oid.NodeNumber " />

</ xsd:complexType> </ xsd:element>

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:

<xsd:element name = "NodeName"> <xsd:complexType>

<xsd:simpleContent>

<xsd:restriction base = "xsd:string"> <xsd:sequence>

(lower part node definition part) </ xsd:sequence>

<xsd:attribute name = "oid" type ="xsd:string" use = "fixed" value = "OidValue" /> <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 http://www.lrc-tnu.edu.vn

<xsd:attribute name = "Reference" type = "xsd:string" use = "fixed" value = "ReferenceType" />

<xsd:attribute name = "Index" type = "xsd:string" use = "fixed" value = "IndexList" /> <xsd:attribute name = "Defval" type = "xsd:string" use = "fixed" value = "DefaultValue" /> (adsbygoogle = window.adsbygoogle || []).push({});

</ xsd:restriction> </ xsd:simpleContent> </ xsd:complexType> </ xsd:element>

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:element name = "NodeName">

<xsd:complexType>

<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" />

</ xsd:complexType> </ xsd:element>

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 http://www.lrc-tnu.edu.vn

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:element name = "NodeName"> <xsd:complexType>

<xsd:sequence> </ xsd:sequence>

<xsd:attribute name = "oid" type ="xsd:string"use = "fixed" value = "OidString" /> <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" />

</ xsd:complexType> </ xsd:element>

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:

<?xml version="1.0" encoding="utf-8"?>

<xsd:schema xmlns:xsd = "Http://www.w3.org/2000/10/ XMLSchema" elementFormDefault = "Qualified">

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 (adsbygoogle = window.adsbygoogle || []).push({});

<xsd:element name = "moduleName"> <xsd:complexType>

<xsd:sequence>

(...management information definition ...)

</ xsd:sequence>

<xsd:attribute name = "Version" type = "xsd:string" use = "required" /> </ xsd:complexType>

</ xsd:element> </ xsd:schema>

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à: <xsd:element name = "Mgmt">

<xsd:complexType> <xsd:sequence>

<xsd:element ref = "Mib-2" /> </ xsd:sequence>

<xsd:attribute name = "oid" type = "xsd:string" use = "fixed" value = "1.3.6.1.2" /> </ xsd:complexType>

</ xsd:element>

<xsd:element name = "Mib-2"> <xsd:complexType>

<xsd:sequence>

(...child element definition ...) </ xsd:sequence>

<xsd:attribute name = "oid" type ="xsd:string"use ="fixed" value = "1.3.6.1.2.1" /> </ xsd:complexType>

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

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.

Một phần của tài liệu Kiến trúc hệ thống quản trị mạng dựa trên xml (Trang 80 - 90)