(a)Tìm kiếm dữ liệu quản trị, (b) điều khiển và định cấu hình, (c) truyền thông báo
Hình 4.3 mô phỏng cấu trúc của cổng chuyển đổi và 3 hoạt động chính của nó: (a) XBM manager cố gắng đọc dữ liệu quản trị, sau đó gửi yêu cầu HTTP GET tới cổng chuyển đổi. Lúc này URL bao gồm giao thức (http hoặc https), máy chủ chứa cổng và đường dẫn tới dịch vụ cổng trên máy chủ và cuối cùng là một chuỗi truy vấn HTTP quy định hoạt động này (GET) và biểu thức xác định
dữ liệu quản trị được yêu cầu. Cần lưu ý rằng, biểu thức này là biểu thức thiết lập nút tương thích Xpath: nó bắt đầu với nút gốc chung và một nút con ngữ cảnh với một tập các thuộc tính ngữ cảnh giúp xác định các agent, các ủy nhiệm bảo mật truy cập và các thuộc tính lưu trữ. Biểu thức này được theo sau bởi tên nút thuộc tính đi kèm giúp xác định bộ lọc dành cho các phần dữ liệu yêu cầu do các agent cung cấp. Để mô phỏng quá trình này, giả sử yêu cầu sau được sử dụng để tìm kiếm một danh sách mô tả giao diện trên thiết bị talisker.ibr.cs.tu- bs.de mà hiện tại không ở trạng thái hoạt động để thiết bị có thể thực hiện cấu hình quản trị:
lynx -dump ’http://www.ibr.cs.tu-bs.de\/snmp-xml-gw?get=/snmp-ata/context\ [@hostname="talisker.ibr.cs.tu-bs.de"]\/ifEntry[ifOperStatus!=ifAdminStatus] \/ifDescr’> interfaces.xml
Khi HTTP engine của cổng chuyển đổi nhận được yêu cầu này, đường dẫn trên của biểu thức Xpath được biên dịch và đơn vị lõi của bộ chuyển đổi (Translator) tạo ra một chuỗi thao tác GET SNMP để đáp ứng yêu cầu. Để đạt được điều này, cổng chuyển đổi tham chiếu đến kho các định nghĩa XML Schema cung cấp các thông tin theo yêu cầu được hỗ trợ của nó, ví dụ như ánh xạ các tên nút sang các OID, các thuộc tính thành tố sang thông tin chỉ mục bảng, các nhãn của các giá trị liệt kê sang các giá trị số…
Các đáp ứng SNMP nhận được từ agent sẽ được chuyển đổi thành các mục thông tin của thành tố XML, và cũng được lấy từ kho XML Schema. Các đoạn thông tin XML được thêm vào cây DOM của bộ chuyển đổi. Khi việc tìm kiếm dữ liệu hoàn thành (hoặc hết thời gian tìm kiếm), cây DOM được lọc trên cơ sở phần xác nhận của biểu thứcXpath của yêu cầu. Phần yêu cầu được chuyển đến HTTP engine tạo nên một tài liệu XML mà sau đó tài liệu này sẽ được chuyển trở lại như một đáp ứng với yêu cầu HTTP GET ban đầu.
Trong một số trường hợp, các ứng dụng quản trị dựa trên XM L sẽ truy cập vào các đối tượng hoặc nhóm các đối tượng quản trị nhiều lần để tìm kiếm một hoạt động mức cao hơn duy nhất. Trong những trường hợp này, ứng dụng thường không yêu cầu cổng chuyển đổi tìm kiếm cùng một dữ liệu SNMP nhiều lần từ agent. Để tận dụng những lợi thế trong trường hợp này và giúp cải thiện hiệu năng, cổng chuyển đổi có thể hỗ trợ việc tạm nắm lấy thông tin tìm kiếm được từ agent và HTTP client có thể xác định thời gian dung nạp dữ liệu được yêu cấu lâu nhất, ví dụ như thông qua biểu thức Xpath trên thuộc tính @time của thành tố <context>.
(b) Tương tự như yêu cầu GET, XBM manager có thể ban hành các yêu cầu HTTP POST để kiểm soát hoặc cấu hình các agent thông qua các tài liệu XML. Trong trường hợp này, chuỗi truy vấn URL chỉ bao gồm chế độ thao tác (SET) trong chuỗi truy vấn HTTP. Văn bản XML truyền đi được tách thành các biểu diễn bên trong DOM. Sau đó bộ chuyển đổi sẽ duyệt cây để xác định các nút mà các định nghĩa đối tượng MIB bên dưới cho phép SNMP ghi các truy cập. Và một lần nữa, kho XML Schema lại cung cấp tất cả thông tin để thực hiện điều này. Dựa trên các nút này, bộ chuyển đổi sẽ tạo ra các yêu cầu SNMP SET và gửi chúng tới agent. Các đáp ứng SNMP được sử dụng để phê chuẩn các chuyển đổi trong cây DOM hoặc bổ sung thông tin lỗi vào cây DOM khi thao tác SNMP SET bị lỗi. Cuối cùng cây DOM thu được sẽ được dùng để chuyển tài liệu XML như một đáp ứng thành yêu cầu HTTP POST ban đầu.
Lưu ý rằng tài liệu XML được đăng ký thông qua yêu cầu HTTP POST có thể dựa trên một tài liệu đã được tìm kiếm thông qua yêu cầu HTTP GET tương ứng trước đó. Điều này cho phép dễ dàng nhận biết các ứng dụng quản trị có hỗ trợ các sửa đổi cấu hình đơn giản trong chu kỳ pull-edit-push hay không.
Hãy giả sử rằng trong ví dụ GET ở trên, toán tử (hay một thuật toán quản trị tự động) quyết định gỡ bỏ một số giao diện. Việc này được thực hiện bằng cách thêm thành tố sau vào các giao diện đó trong tài liệu XML được tìm:
:<IF-MIB:ifAdminStatus>down</IF-MIB:ifAdminStatus>
Sau đó tài liệu thực hiện đăng ký đến cổng chuyển đổi (chương trình Java này chỉ quan tâm đến việc mã hóa chính xác nội dung HTTP):
java GatewayClient http://www.ibr.cs.tu-\bs.de/snmp-xml-gw set interfaces.xml. (c) Cuối cùng, cổng chuyển đổi cũng có thể hoạt động như một SNMP Trap. Khi bộ chuyển đổi nhận được thông báo, nó sẽ tìm kiếm các OID liên quan và các giá trị từ kho XML Schema và tạo ra một mục thông tin thành tố nhỏ trên mỗi thông báo. Những mục thông tin này được xử lý theo 2 cách. Chúng có thể được gửi đi dưới dạng một tài XML ngắn trong các yêu cầu HTTP POST tới các XBM manager. Điều này đòi hỏi cổng chuyển đổi hoạt động như một HTTP client. Ngoài ra, tất cả các mục thông tin thông báo đều được thêm vào tài liệu XML cục bộ để giúp tạo ra nhật ký thông báo chung. Điều này cho phép các XBM manager dễ dàng truy cập vào nhật ký thông báo tại bất kỳ thời điểm nào tiếp theo với phương thức tương tự mà thông tin quản trị được truy cập thông qua các yêu cầu HTTP GET, ví dụ như Xpath dựa trên việc lọc các thông báo được hộ trợ và cổng chuyển đổi không được yêu cầu phải hoạt động như một HTTP client trong trường hợp này.
Kiến trúc cổng chuyển đổi này được thực thi – trừ việc hỗ trợ các thông báo – như một Java Servlet. Nó được triển khai và sử dụng thành công trên hệ điều hành Linux/Apache/Tomcat. Mã nguồn được trình bày trên trang web libsmi.
4.4. Tích hợp SNMP agent dựa trên cổng XML/SNMP
Một cổng XML/ SNMP cung cấp một phương pháp để quản trị mạng được trang bị các SNMP agent trong một XBM manager. XBM manager chuyển các bản tin XML bằng cách sử dụng SOAP/HTTP, và các SNMP agent qua bản tin SNMP bằng SNMP. Cổng sẽ chuyển đổi và chuyển tiếp dữ liệu quản trị giữa hai ứng dụng quản trị. Nhiệm vụ quản trị của một cổng XML/SNMP sẽ được đề cập về các khía cạnh mô hình thông tin và giao thức quản trị.
4.4.1. Mô hình thông tin
Để tương tác giữa XBM manager và SNMP agent, cổng XML/SNMP gateway trước tiên sẽ chuyển đổi thông tin quản trị SNMP SMI thành XML Schema. Phần này mô tả thuật toán chuyển đổi SNMP MIB sang XML Schema trong chuyển đổi đặc tả của cổng. Trong cổng XML/SNMP, bộ chuyển đổi sẽ chuyển mỗi nút của SNMP MIB thành một thành tố của XML Schema, và tên của nút MIB này thành tên của thành tố. Các mệnh đề bên trong nút MIB như “access”, “status”,... được chuyển thành các thuộc tính của thành tố XML. Bảng 2 cho thấy việc chuyển cấu trúc tài liệu giữa SNMP SMI và XML Schema. Các ví dụ kết quả chuyển đổi đặc tả trong bảng 3 cho thấy làm thế nào mà một định nghĩa MIB được chuyển vào XML Schema. Mệnh đề <syntax> của mỗi nút được áp dụng cho định nghĩa kiểu dữ liệu của thành tố trong XML Schema. Một thuộc tính bổ sung kiểu "ID", mang giá trị "OID" của nút. Một thuộc tính "OID" của kiểu "ID" cho phép truy cập ngẫu nhiên đến một nút đặc biệt nhờ giá trị "OID" của nó trong cây DOM.
Bảng 4.3: Chuyển đổi cấu trúc tài liệu
SNMP SMI XML Schema Giao diện DOM
MIB Mô đun Tài liệu XML Tài liệu
Tên mô đun MIB Tên thành tố gốc Element::tagName Nút lá (định nghĩa Macro) Thành tố với một hoặc nhiều nút văn bản con Element
Tên nút Tên thành tố Element::tagName
Mệnh đề của nút MIB Thuộc tính của thành tố Attr Object Identifier (OID) Thuộc tính kiểu “ID” Attr
Bảng 4.4: Ví dụ về chuyển đổi đặc tả
MIB II Kết quả chuyển đổi
sysUpTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read- only STATUS mandatory DESCRIPTION "The time..." ::= { system 3 } <xsd:element
name="sysUpTime"><xsd:complexType> <xsd:simpleContent><xsd:restriction base="TimeTicks">
<xsd:attribute name="oid" type="xsd:string" use="fixed" value="1.3.6.1.2.1.1.3"/>
<xsd:attribute name="access"
type="xsd:string" use="fixed" value="read- only"/>
<xsd:attribute name="status" type="xsd:string" use="fixed" value="mandatory"/>
<xsd:attribute name="description"
type="xsd:string" use="fixed" value= "The time..."/>
</xsd:restriction></xsd:simpleContent></xsd: complexType></xsd:element>
4.4.2. Giao thức quản trị
Có 2 phương pháp chuyển đổi tương tác trong cổng XML/SNMP: phương pháp chuyển đổi dựa trên HTTP, DOM và SOAP. Để tích hợp XBM manager, phương pháp chuyển đổi dựa trên SOAP được sử dụng. Các dịch vụ được định nghĩa trong ba hoạt động lớn: Set, Get và Trap. Mỗi hoạt động có một tham số và giá trị trả về, được định nghĩa như là một thành tố XML giữa manager và cổng. Ngoài các hoạt động cần thiết, Get, Set và Trap, các hoạt động SNMP GetBulk hoặc các kiểu yêu cầu phức tạp khác có thể được định nghĩa bằng cách mở rộng hoạt động Get hoặc Set với XPath hoặc XQuery. XPath, XQuery và XUpdate cung cấp một công cụ hiệu quả để chỉ ra các đối tượng quản trị tìm kiếm được. XPath, XQuery và XUpdate cũng có thể được áp dụng trong các bản tin yêu cầu SOAP như một tham số của từng phương pháp.
4.4.3. Kiến trúc cổng XML/SNMP
Hình 4.4 minh họa kiến trúc của một cổng XML/SNMP, nghĩa là, kiến trúc dựa trên SOAP gồm XBM manager và cổng chuyển đổi. Trong kiến trúc này, SOAP Client ở manager tạo ra một yêu cầu SOAP được mã hóa bởi XML, như get và set. Sau đó, các HTTP Client sẽ gửi yêu cầu HTTP POST, bao gồm các
yêu cầu SOAP của nó vào HTTP Server ở cổng chuyển đổi. SOAP Server phân tích các bản tin HTTP thành một cuộc gọi RPC đã được định dạng thích hợp và gọi một phương pháp thích hợp do cổng chuyển đổi ban hành. SOAP Server sẽ nhận kết quả từ phương pháp này và tạo ra một bản tin đáp ứng SOAP. Bản tin đáp ứng theo lối cũ trở về SOAP Client ở manager. Cuối cùng, ứng dụng của manager sẽ nhận kết quả của theo yêu cầu của phương pháp. Bất cứ khi nào Handler Trap nhận được một bản tin thông báo từ SNMP agent, nó sẽ gọi sự kiện DOM cho các nút Trap trong cây DOM. Đối với việc phân phối thông báo, SOAP Client ở cổng chuyển đổi sẽ gửi một bản tin thông báo sự kiện không đồng bộ được định nghĩa tại XML Trap Schema đến SOAP Server ở manager.