个人管理功能

在CSDN Blog撰写技术文章,即有机会入选CSDN技术中心,现在就去免费注册!已注册用户,点击登录

搜索
热门标签
专题历史

有人说SOA是一种IT策略,有人说SOA是一种架构理念,还有人说SOA是一种服务。SOA到底是什么?它将带来什么?软件产业的变革亦或是新的机遇下的挑战?业界权威专家带领我们一起去深究,去探索。BEA三位重量级专家与您共同探讨SOA

随着WPF/E更名为正式名称Silverlight,以及Silverlight 1.1 Alpha 版本的发布,答案变得清晰,而且令人兴奋! - 一个跨操作系统,跨浏览器的Web应用平台出现了。Silverlight 这样一个4.5MB的浏览器插件(1.1 Alpha文件)是如何做到的这些的?周岳: SilverLight-Web应用的一道强光

中国移动用户数量在大踏步地发展与增长,根据产业部的数据,仅三月就新增了670万户。预估计6月份之后,中国很快将迎来第五亿手机用户(平均不到3人拥有一台手机)而J2ME做为最重要的手机跨平台技术,凭借Java平台以其良好的开放性和支持能力,得到了众多手机厂商的支持。对众多开发者来说,J2ME程序易于移植,轻松实现“一次编写,到处运行”。J2ME系列开发专题,将带你从最基本的工具安装,环境配置开始,进入移动应用开发的世界。
 
CSDN移动开发系列之-“J2ME开发实训”

7月31日-8月1日,即将在上海召开甲骨文全球大会•亚太地区会议同期举行的甲骨文开发者大会,这是一项付费参加的面向开发人员的活动。在甲骨文开发者大会期间,您将听到世界一流的专家讲述如何使用Java、.NET、XML和PL/SQL以及Ajax、PHP、Spring、Groovy on Rails等流行技术来简化开发过程。在为期两天的甲骨文开发者大会中,您将能够提高自身的开发技能,扩充知识,参加几十场由专家主持的深入细致的技术讲座并在专家的辅导下进行上机操作、了解高级技能和获得详细指导。在甲骨文开发者大会期间,您有机会直接向业界一流的技术专家和开发人员请教。欢迎参加甲骨文全球大会·2007·亚太地区开发者大会

2007年6月29日,自由软件基金会宣布,其创始人Richard Stallman将在GNU的网站上,在本周太平洋时间星期五上午9点通过视频发布GPLv3。本来,GPL并不是所有开源组织所认可的协议。其从出现以来一直存在争议,GPL被认为是一种“病毒式”的协议,BSD的fans和老牌Unix黑客们认为,他们编写Unix的年头都比GPL声明要长得多,他们更愿意采用比GPL更加的自由的BSD协议。今天,开源社区中有70%左右的项目采用了GPL。很多在开源社区的老牌黑客们认为,Richard Stallman所鼓吹开源软件的言行与当年卡尔·马克思号召产业无产阶级反抗工作的努力如出一辙。在GPLv3的第三版修订案发布时,开源软件团体中的许多成员都反对这种协议。尤其是Linux的核心开发小组,其中29个高级架构师有28个反对这个协议。Linus Torvalds称这个协议有“宗教性质”,并公开反对。而整个软件行业特别是开源社区对GPLv3的争论也愈演愈烈。GPLv3:大教堂和集市的新一轮对抗

2007年7月14日由CSDN与ThoughtWorks联合主办的第二届“敏捷中国”技术大会在北京丽亭华苑酒店召开,多位开源社区和ThoughtWorks公司的技术领袖即将带来精彩的演讲。本次“敏捷中国”技术大会集中展现塑造敏捷企业所需的方方面面:业界领先的敏捷项目管理工具;极大提升软件开发效率的新语言和新框架;数据库领域的敏捷实践;全方位的敏捷项目管理指导;还有身临其境的亲身体验。来自开源社区和ThoughtWorks公司的技术领导者们将带领听众全面感受敏捷企业。“敏捷中国大会”现场直击

从2004年起,在每年的夏季,CSDN都会举办面向中国程序员的大型网上调查活动。这是中国样本最丰富的开发者社区调查,持续、全面和深入地反映了中国开发者社群自身状况、各项技术、工具、产品的使用状况和发展趋势,是完整、准确地了解中国开发者市场的重要参考资料。本次调查覆盖基础信息、.NET、Java、C/C++、Web开发、数据库应用开发、软件工程及项目管理、移动及嵌入式开发、开放源代码、企业信息化等10个领域。还有惊喜大奖等着你哦,赶快进入吧! 2007中国软件开发者大调查正式启动

推荐作者
  • 大宝大宝

    时间如流水,知惜方成功。

  • SkymanSkyman

    江苏人氏,梅兰芳之老乡。现游学渝州之最...

  • ralph623ralph623

新进作者
  • 冲 s冲 s

  • 小鱼小鱼

  • 棱角棱角

    多年J2EE构架设计与开发经验,专注于企业信息系统建设,精通Java设计模式,并能熟练的运用到企业开发中。 精通Struts与Spring框架。数据库方面精通Oracle数据库,从事过数据库方面的开发以及oracle优化方面的工作。

最新技术图书推荐
SNMP协议详解—消息调度与处理

发表日期:2007-6-15
更新日期:2007-6-15
作者文章阅读次数:3961

源自:jitom (个人网站) 标签:网络管理

您认为本文应该得        共有4人参与打分打印|收藏|讨论|投诉

本文是笔者在路由器上添加网络管理功能,阅读RFC3412协议规范时所做读书笔记,由于该规范尚无中文翻译,笔者便将本笔记公布,限于笔者水平,此文档仅供参考。

1、调度程序

调度程序是SNMP引擎中的关键部分,每个SNMP引擎只有一个调度程序。其任务是调度任务给各个版本相应的消息处理模型,将PDU调度给相关的应用程序。

对于外流的消息,某个应用程序将提供被发送的PDU,添加一些准备和发送信息需要的数据之后,应用程序确定将要使用的消息处理模型的版本以及期望的安全处理。

对于引入的消息,调度程序确定版本信息,并将该消息传送给相应版本的消息处理模型提取消息数据,协同安全处理服务对该消息进行处理。版本确定之后,PDU调度程序决定该PDU应当发送给哪个应用程序。

 

2、消息处理子系统

消息处理子系统是SNMP引擎的一部分,它同调度程序交互处理对应版本的消息,消息处理子系统包含一个或多个消息处理模型。

 

3、消息处理和调度的元素

RFC3411中定义了如下元素:

contextEngineID
contextName
scopedPDU
maxSizeResponseScopedPDU
securityModel
securityName
securityLevel
messageProcessingModel

上述元素的值,对于引入的消息来说,相应版本的消息处理模块将它们的值提供给调度程序。对于流出的消息来说,由应用程序提供它们的值给调度程序。

对于某些版本的消息处理模块,这些值是从收到的消息中萃取而来;而对于其他的版本,这些值是通过某种算法计算或某种定义好的机制而来。而这种机制定义的值与调度程序不相关。

 

(1)   消息处理模型(messageProcessingModel

messageProcessingModel的值标识消息处理模型。消息处理模型描述从消息中萃取数据的特定版本过程、产生消息、调用安全模型对消息提供安全服务;消息处理模型还负责将数据从特定版本的消息格式转换为一般格式数据,或者将一般格式数据转换成特定版本格式的数据。

 

(2)   Pdu版本(PduVersion

PduVersion的值描述协议操作的详细版本信息和与其关联的PDU格式。例如:SNMPv1SNMPv2等。这个值还明确了消息中包含的PDU版本,同时指明了处理该PDU的应用程序。调度程序并不直接使用该值。

当应用程序请求调度程序向其他SNMP引擎发送PDU时,它将指定PduVeesion给调度程序,调度程序将该PduVersion传递给消息处理模型,消息处理模型将知道该如何处理该PDU

对于引入的消息,pduVersion由相应版本的消息处理模块提供给调度程序,PDU调度程序将pduVersion传递给相应的应用程序,应用程序知道如何恰当的处理该PDU

 

(3)   Pdu类型(PduType

PduType的值描述了协议操作的特定类型,是消息包含的PDU版本。应用程序为特定的contextEngineID注册特定的pduType。对于引入的消息,pduType由相应版本的消息处理模块提供给调度程序,随后用来调度该PDU给注册了该pduTypecontextEngineID对应的应用程序。

(4)   发送PDU句柄(sendPduHandle

sendPduHandle用于协调SNMP引擎和应用程序之间请求与应答操作,该句柄必须在所有版本的消息处理模块中是唯一的,并且只具有本地意义。

 

4、过程的调度程序元素(Dispatcher Elements of Procedure)

(1) 发送SNMP消息到网络

1)发送请求或通知

l        应用利用如下抽象原语请求发送一个这样的消息到网络。

l        如果messageProcessingModel的值标识的不是调度器所能识别的消息处理模型,返回一个errorIndication给应用,停止下面的工作。

l        调度器产生一个sendPduHandle,用于协调子系统的处理。

l        消息调度器根据messageProcessingModle利用如下原语将请求发送给相应版本的消息处理模块。

l        如果statusInformation显示一个错误,则返回一个errorIndication给相应请求。

l        如果statusInformation显示成功,sendPduHandle返回给应用,并且发送outgoingMessage。同时,通过destTransportDomain返回Transport,经由destTransportAddress返回地址。

 

2)发送应答到网络上

l        能够发送应答的应用通过如下抽象服务原语发送应答。

l        调度器通过如下原语将该请求发送到messageProcessingModel标识的消息处理模型。

l        如果result显示为errorIndicationerrorIndication将被返回到应用,停止下面的工作。

l        如果result显示为成功,outgoingMessage将被发送,同时通过destTransportDomain返回Transport,经由destTransportAddress返回地址。

 

(2)从网络上接收消息

1)对收到的消息进行消息调度

l        snmpInPkts计数器自加。

l        消息的版本被确定,如果消息不能清晰的被解析出其版本,则产生snmpInASNParseErrs计数器自加,丢弃消息;如果消息版本不支持,snmpInBadVersions计数器自加,丢弃消息。

l        确定源transportDomain和源transportAddress

l        消息被传递给相应版本的消息处理模块,并返回抽象数据元素给调度器。这个操作是利用如下原语完成的。

l        如果result显示为errorIndication,消息将被丢弃。

l        至此,抽象数据元素准备好了,接下来的处理如下一部分描述。

 

2)对传入的消息进行PDU调度

接下来的处理由sendPduHandle来决定PDU调度器进行什么工作。如果sendPduHandle的值是<NONE>,表明该消息是一个请求或者通知,则进行下面第一部分的操作,表明该消息是一个应答,否则进行第二部分的操作。

 

Section 1:传入的是请求或通知

l        通过contextEngineIDPduType的组合,确定哪个应用注册了这个请求或通知;

l        如果没有应用注册,则:

a)      snmpUnkownPDUHandle自加;

b)      利用如下原语产生一个请求;

c)      如果result显示为成功,这个准备好的消息被发送到destTransportDomaindestTransportAddress指示的请求产生者。同时通过destTransportDomain返回Transport,经由destTransportAddress返回地址。

d)      传入的消息被丢弃,这条消息的处理结束。

 

l        利用如下抽象服务原语,该PDU被调度到相应的应用中。

这条消息的处理结束。

 

Section 2:传入的是响应

l        利用sendPduHandle找到哪个应用正在等待这个应答;

l        如果没有找到这样的应用,消息被丢弃,同时stateReference被释放,snmpUnkownPDUHandle计数器自加,这条消息的处理结束。

l        丢弃所有缓存的关于该消息的信息(包括stateReference);

l        利用如下抽象服务原语将该应答被调度到相应的应用

该消息的处理结束。

 

(3)为正在处理的PDU类型注册应用

应用如果要处理某些PDU,必须在PDU调度器中进行注册,应用指出对哪些contextEngineIDPduType组合的消息负责。

l        应用利用如下抽象服务原语注册职责

注:实现应该针对同时注册多个contextEngineID提供一种请求注册手段,当然也要提供一种针对同时发生注册多个PduType值得情况。

l        检查参数的合法性,如果不合法,返回一个errorIndicationinvalidParameter)给该应用。

l        一个contextEngineIDPduType组合只能注册一次,如果其他应用也要注册该组合,将会返回一个errorIndicationalreadyRegistered)给该应用。

l        否则,该次注册被存储,PDU可依此调度到相应的应用。

 

(4)应用注销处理的PDU

如果应用不再处理某个PDU,必须到调度器中注销。

l        应用可以利用如下抽象服务原语注销

注:实现必须提供同时注销多个contextEngineID的手段,当然也要提供一种同时注销多个pduType的手段。

l        如果该contextEngineIDpduType被注册了,直接删除该注册。如果不存在,则忽略该注销。

 

本文可任意转载和复制,但不得用于商业目的。在转载时,请注明出处!

----------------->           支持开源                <-------------------

您认为本文应该得        共有4人参与打分打印|收藏|讨论|投诉

暂无图片

一个尚未成功的人,一个期待成功的人,一个必将成功的人!

评论

CSDN技术中心团队官方Blog:http://blog.csdn.net/techcenter/,反馈邮箱:techcenter at csdn.net (注意:请把 at 换成@)


网站简介广告服务网站地图帮助联系方式诚聘英才English问题报告

北京百联美达美数码科技有限公司  版权所有  京 ICP 证 020026 号

Copyright © 2000-2006, CSDN.NET, All Rights Reserved