网络管理中的XML与CORBA架构解析
1. XML在网络管理中的适用性
XML是一种实用的管理工具,部分网络设备供应商仅支持XML及其专有的命令行界面(CLI)。它有助于开发基于Web的管理应用程序,这些应用程序能够读写远程设备的网络配置信息。
使用文档类型定义(DTD)来生成应用程序显示的屏幕相对简单。这一点很重要,因为即使设备功能相似,通过XML管理的每个供应商的设备可能都有不同的DTD。
不过,XML编码数据的方式较为冗长。标签通常具有描述性,这意味着可能需要用几个文本单词来封装单个数据。与已知结构的二进制编码相比,这会带来较大的开销,但这也是它的一大优势,因为接收方可以轻松解析XML中的格式和含义。通过用于传输XML文档的协议中内置的压缩算法,在一定程度上可以克服XML编码的开销。
2. 通用对象请求代理架构(CORBA)
CORBA是一种分布式管理架构,采用面向对象的方法进行管理。它由对象管理组织(OMG)开发,该组织成立于1989年,目前正在开发CORBA规范的3.0版本。CORBA涵盖了被管理对象的规范、管理应用程序与被管理对象之间交换的通信和请求,以及对象之间的请求、访问控制、安全性和关系。
2.1 接口定义语言(IDL)
在CORBA中,每个被管理对象(如设备、线卡或连接)都由一个CORBA对象表示。对象由对象接口定义,该接口(类似于面向对象编程语言)指示对象内的可访问字段、可对对象执行的操作以及对象与其他对象之间的关系。与其他对象的关系通过继承定义。
IDL是OMG指定的一种面向对象语言,用于描述对象接口。它使用C++编程语言的一个子集,并扩展了一小部分额外的构造,以支持网络管理环境中所需的对象管理类型。最显著的扩展是
any
数据类型,可用于表示未知或未指定的数据类型。
2.2 CORBA架构
CORBA是一种客户端 - 服务器架构。客户端是一个管理代理,对由服务器控制的对象执行操作。客户端和服务器通过对象请求代理(ORB)连接,ORB负责关联客户端和服务器的位置,并管理它们之间的通信。这种架构使客户端无需了解每个对象的服务器位置,并允许以统一的方式管理本地和远程对象。
以下是CORBA对象管理架构(OMA)的主要组成部分:
-
ORB
:负责将客户端的请求转发到正确位置的正确组件。
-
应用程序接口
:客户端通常通过为特定管理应用程序开发的应用程序接口将请求传递给ORB。这些接口通常是为特定目的或管理应用程序开发的,有时可能会被OMG标准化。
-
公共设施
:面向应用程序的实用程序或操作,可能在多个应用程序中通用,如系统和任务管理、分布式文档处理操作以及信息管理等。
-
公共对象服务(COS)
:ORB用于响应客户端发出的请求的底层通用功能。包括确保对象事务端到端交付的必要组件,以及从对象定位和命名到对象关系管理、持久性和生命周期、定时、安全和事件通知等一系列通用服务。
-
域接口
:一组组件,其用途与公共设施和公共对象服务类似,但范围仅限于特定应用程序(即特定域)。这些组件作为对象定义的一部分进行指定,如果发现其中任何一个在多个域中通用,则可能会被标准化并纳入公共组件集。
-
对象适配器
:ORB通过对象适配器将对象操作传递给服务器,以应用于对象本身。与应用程序接口一样,对象适配器是特定于域的(即为管理特定的一组对象而开发)和特定于实现的,它在标准ORB请求和本地服务器实现之间进行转换。
下面是CORBA对象管理架构的简单流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(客户端):::process -->|应用程序接口| B(ORB):::process
B -->|请求转发| C(公共设施):::process
B -->|请求转发| D(公共对象服务):::process
B -->|请求转发| E(域接口):::process
B -->|对象适配器| F(服务器):::process
F -->|对象操作| G(对象):::process
客户端和服务器还分别持有接口存储库和实现存储库。接口存储库包含有关对象处理方式的信息,如接口和数据属性;实现存储库包含允许ORB定位和管理对象的信息,以及对象内字段的活动值。
从客户端到ORB的应用程序接口由三个组件提供:
-
ORB接口
:CORBA规范定义的与ORB的标准抽象接口,允许应用程序实现与ORB解耦。
-
IDL存根
:在本地应用程序和ORB之间提供对象格式的映射。当本地应用程序未使用IDL编程语言编码时,这种映射很重要。ORB开发工具包通常支持映射到标准语言(如C、C++和Java),并提供IDL编译器,以便用IDL定义新对象并转换为本地编程语言。
-
动态调用接口(DII)
:提供对ORB请求 - 响应机制的直接访问,包括IDL存根,但能完全了解对象的格式。
在服务器端,也有三个组件提供对实现存储库的访问:
-
ORB接口
:在服务器端提供与客户端相同级别的标准抽象交互。
-
IDL骨架
:在服务器端的作用与客户端的IDL存根相同,提供标准对象格式与实现存储库中存储的本地格式之间的映射。
-
动态骨架接口(DSI)
:提供对ORB请求 - 响应机制的直接访问,包括IDL骨架,但能完全了解对象的格式。
ORB之间使用通用对象请求代理协议(GIOP)进行通信。GIOP定义了一组应用层消息和数据表示,用于ORB之间的事务。它可以通过多种传输协议承载,在互联网传输方面,CORBA需要一个额外的适配层来使TCP/IP的功能达到GIOP的要求,并使对象所在节点的IP地址可见。GIOP和这个适配层的组合称为互联网对象请求代理协议(IIOP)。
3. CORBA通信
GIOP是由OMG与CORBA一起定义的通用对象交换协议,旨在映射到任何面向连接的传输协议。OMG列出的GIOP目标包括简单性、可扩展性、低成本、通用性和架构中立性。GIOP通过定义一组关于底层传输机制的假设、用于在传输机制上携带数据和数据操作请求的消息,以及消息中IDL数据类型表示的语法列表来实现这些目标。
3.1 GIOP通用数据表示(CDR)
CDR定义了对象和数据在消息中的编码方式,有以下几个关键点:
-
数据对齐
:所有数据类型在其自然边界上对齐,以便应用程序更轻松地读写消息中的数据。这可能导致消息比严格要求的更大,但简化了应用程序的实现。在将数据对象放入消息时,可能需要进行预填充以达到正确的字节偏移量。
-
整数格式
:消息中的整数以发送方的本机格式提供,这与通常所有整数以“网络字节序”(最高有效字节在前)传输的过程不同。这使得实现更简单,因为发送方在将数据放入消息之前无需进行操作。每个GIOP消息中的一个标志指示发送方的整数格式,只有当接收方的整数格式不同时,才需要处理消息中的数据。
-
其他编码封装
:其他编码(如用于SNMP请求的ASN.1)可以作为八位字节字符串(即透明字节流)封装在CDR中。
-
间接引用
:CDR包含一种称为间接引用的构造,允许消息的一部分指向消息另一部分中的数据。这实现了一定程度的压缩,使重复数据只需在消息中出现一次。
3.2 GIOP消息类型
GIOP是一种客户端 - 服务器协议。客户端负责使用底层传输机制发起与服务器的连接并启动通信。早期版本的GIOP中,服务器不允许发送请求消息,只能响应客户端的请求。如果两个节点希望对彼此的数据对象进行操作,则需要在它们之间维护两个连接。在较新的版本中,客户端和服务器的区别仅限于连接建立,允许在单个连接上进行双向请求交换。
所有GIOP消息都以一个公共头开始,包含魔术字符串“GIOP”、版本号、F位(指示是否为消息的最后或唯一片段)、B位(指示整数编码方式)、消息类型和消息长度。以下是GIOP消息类型的详细列表:
| 消息类型编号 | 消息类型 | 描述 |
| — | — | — |
| 0 | Request | 由客户端(或使用双向GIOP时的服务器)发送,用于调用CORBA对象,对对象进行读、写或其他操作。请求消息携带唯一的请求标识符,用于关联回复和片段。 |
| 1 | Reply | 响应Request发送,返回读取的数据或请求中操作的结果。Request中的一个标志指示是否应发送响应。 |
| 2 | CancelRequest | 由Request的发送方发送,尝试在接收方处理请求并发送Reply之前取消该请求。 |
| 3 | LocateRequest | 用于确定接收方是否能够对指定对象执行请求的操作。LocateReply可以确认或拒绝请求,也可以将请求重定向到另一个位置。 |
| 4 | LocateReply | 响应LocateRequest发送。 |
| 5 | CloseConnection | 由连接的任一端发送,指示发送方打算关闭连接,任何发送到该连接的未决请求将不会收到回复,也不会被处理。 |
| 6 | MessageError | 报告一般的高级解析错误,如不支持的版本号或未知的消息类型。更详细的特定消息错误在Reply消息中处理。 |
| 7 | Fragment | 用于继续和完成由Request或Reply开始的消息片段序列,这些消息的公共头中的F位设置为1,表示数据已在多个消息中分段。 |
3.3 IIOP协议
TCP/IP提供可靠的面向连接传输,理论上适合GIOP使用,但TCP/IP在连接失败或关闭方面存在局限性。特别是,TCP不提供优雅关闭机制,即在拆除连接之前刷新“管道”中的数据。这是GIOP的一个要求,因为服务器可能发送CloseConnection消息然后关闭连接。如果在TCP中尝试此操作,CloseConnection消息可能会丢失,导致客户端不确定是因为先前的连接失败需要新的调用,还是旧连接在应用程序控制下关闭。
为了弥补这一差距,在GIOP上添加了一个额外的适配层,形成了IIOP。由于IIOP是符合CORBA实现的最低要求,并且TCP/IP几乎无处不在,因此IIOP和GIOP这两个术语可以互换使用。IIOP也由OMG在CORBA基础规范中与GIOP一起定义。
IIOP的第一个要求是扩展对象配置文件,以包含对象所在的主机和可访问的端口。主机可以表示为部分或完全指定的主机名(如“enterprise”或“enterprise.accounts.mycompany.com”),或点分十进制表示的IP地址(如“192.231.79.52”)。端口号标识服务器(即指定主机)将监听的TCP端口。
IIOP修改了关闭连接的过程,规定CloseConnection消息的接收方必须关闭连接。这将连接关闭的责任从消息发送方转移开,使该过程能够成功完成。
下面是GIOP消息中数据值编码的BNF表示:
<value>::=
<value_tag> [<codebase_URL>] [<type_info>] <state> |
<indirection_tag> <indirection> |
<null_tag>
<state>::=
<octets> |
<value_chunk> [<end_tag>] |
<value> [<end_tag>]
<value_chunk>::=
<chunk_size_tag> <octets>
<octets>::=
octet [<octets>]
GIOP标签值如下表所示:
| 标签 | 固定值 | 最小值 | 最大值 |
| — | — | — | — |
| indirection_tag | 0xffffffff | | |
| end_tag | | 0x80000001 | 0 |
| null_tag | 0 | | |
| chunk_size_tag | | 1 | 0x7ffffeff |
| value_tag | | 0x7fffff00 | 0x7ffffff |
综上所述,XML和CORBA在网络管理中都有各自独特的优势和应用场景。XML适用于开发基于Web的管理应用程序,而CORBA则提供了一种强大的分布式管理架构,通过面向对象的方法和标准化的协议,实现了不同对象之间的有效通信和管理。在实际应用中,根据具体的需求和场景选择合适的技术和协议,能够更好地满足网络管理的要求。
网络管理中的XML与CORBA架构解析
4. XML与CORBA在实际网络管理中的应用对比
在实际的网络管理场景中,XML和CORBA有着不同的应用特点和适用范围。
4.1 XML的应用优势与场景
- 易于开发基于Web的应用 :XML便于开发基于Web的管理应用程序,这些应用可以方便地读写远程设备的网络配置信息。例如,在一个企业网络中,管理员可以通过浏览器访问基于XML的管理界面,对不同供应商的网络设备进行配置管理。由于XML标签具有描述性,使得配置信息的表示更加直观,易于理解和维护。
- 多供应商设备支持 :虽然不同供应商的设备可能有不同的DTD,但XML仍然能够适应这种多样性。管理员可以针对不同的DTD开发相应的解析程序,实现对各种设备的统一管理。
然而,XML也存在一些局限性。由于其编码方式较为冗长,会带来较大的开销,尤其是在处理大量数据时,可能会影响系统的性能。不过,通过协议中内置的压缩算法,可以在一定程度上缓解这个问题。
4.2 CORBA的应用优势与场景
- 分布式管理架构 :CORBA提供了一种强大的分布式管理架构,采用面向对象的方法,能够有效地管理本地和远程对象。在一个大型的分布式网络环境中,如云计算数据中心,不同的服务器、存储设备等可以被看作是CORBA中的对象,通过CORBA架构可以实现对这些对象的统一管理和操作。
- 标准化的接口和协议 :IDL作为CORBA中定义对象接口的语言,提供了标准化的接口描述方式,使得不同的应用程序可以方便地与CORBA对象进行交互。同时,GIOP和IIOP协议定义了ORB之间的通信规则,保证了不同节点之间的可靠通信。
CORBA的缺点主要在于其复杂性。由于涉及到多个组件和协议,开发和维护CORBA应用程序需要较高的技术水平和成本。
5. 网络管理技术的未来发展趋势
随着网络技术的不断发展,网络管理技术也在不断演进。XML和CORBA作为两种重要的网络管理技术,未来可能会朝着以下几个方向发展。
5.1 融合与互补
XML和CORBA可能会相互融合,发挥各自的优势。例如,在开发基于Web的分布式管理应用时,可以使用XML来表示和传输配置信息,同时利用CORBA的分布式管理架构来实现对远程对象的操作。这样可以结合XML的易用性和CORBA的强大管理能力,提高网络管理的效率和灵活性。
5.2 智能化与自动化
未来的网络管理将更加智能化和自动化。通过引入人工智能和机器学习技术,可以实现对网络故障的自动诊断和修复,以及对网络资源的智能分配和优化。XML和CORBA可以作为数据表示和通信的基础,为智能化网络管理提供支持。
5.3 与新兴技术的结合
随着物联网、5G等新兴技术的发展,网络管理面临着新的挑战和机遇。XML和CORBA可以与这些新兴技术相结合,实现对物联网设备的管理和5G网络的优化。例如,在物联网场景中,可以使用XML来描述设备的属性和配置信息,通过CORBA架构实现对大量物联网设备的分布式管理。
6. 总结
本文详细介绍了XML和CORBA在网络管理中的应用。XML是一种实用的管理工具,适用于开发基于Web的管理应用程序,能够方便地读写远程设备的网络配置信息。虽然其编码方式较为冗长,但通过压缩算法可以缓解开销问题。
CORBA是一种分布式管理架构,采用面向对象的方法,提供了标准化的接口和协议,能够有效地管理本地和远程对象。其组件包括ORB、公共设施、公共对象服务、域接口和对象适配器等,通过GIOP和IIOP协议实现ORB之间的通信。
在实际应用中,XML和CORBA各有优势和局限性。未来,网络管理技术将朝着融合、智能化和与新兴技术结合的方向发展。管理员在选择网络管理技术时,应根据具体的需求和场景,综合考虑XML和CORBA的特点,选择最合适的技术和协议,以提高网络管理的效率和质量。
以下是一个简单的mermaid流程图,展示了网络管理中XML和CORBA的应用流程:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(网络管理需求):::process -->|选择技术| B{XML or CORBA}:::process
B -->|XML| C(基于Web的管理应用开发):::process
C -->|读写配置信息| D(远程设备):::process
B -->|CORBA| E(分布式管理架构搭建):::process
E -->|管理对象操作| F(本地/远程对象):::process
通过以上的分析和介绍,希望能够帮助读者更好地理解XML和CORBA在网络管理中的应用,并为实际的网络管理工作提供参考。
超级会员免费看
6319

被折叠的 条评论
为什么被折叠?



