IMI和OSPF交互分析.docx_第1页
IMI和OSPF交互分析.docx_第2页
IMI和OSPF交互分析.docx_第3页
IMI和OSPF交互分析.docx_第4页
IMI和OSPF交互分析.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IMI和OSPF模块交互分析Published by:SKSpruce Software DepartmentVersionAuthorIssue DateRemarks1.02.03.0Skspruce Company ConfidentialThe information in this document is confidential and proprietary. This document is the property of SKSpruce and shall not be reproduced or copied or used in whole or in part without the written permission. This is an unpublished work protected under the Federal copyright laws.Contents1Introduction11.1Document Purpose11.2Intended audience11.3Reference Document11.4Reference Standard12FunctionRealization22.1Overview22.2Function Mechanism & Operation32.2.1 IMI进程介绍32.2.1.1 vty_server 介绍32.2.1.2 imi_server介绍32.2.1.3 show_client介绍42.2.1.4 show_server介绍42.2.2 OSPF进程介绍42.2.2.1 imi_client介绍52.2.2.2 show_server介绍52.2.3 LINE命令执行流程62.2.4 SHOW 命令执行流程72.3Special Consideration82.4Relationship with Other Modules83User Interface93.1CLI93.2Log93.3MIB93.4Trap93.5Prompt Message103.6Test consideration and suggestions103.7Debugging104Appendix11Functional Specification 1 Introduction 1.1 Document Purpose 本文档主要说明ZEBOS和SKOS适配后,IMI和OSPF的交互过程,主要用于软件工程师,测试工程师和系统工程师参考。在看本文档的时候,如果看得不是清楚的话,请参考主坤写的ZebOS和SKOS适配方案说明 1.2 Intended audienceQA,RD,SE 1.3 Reference DocumentNA 1.4 Reference StandardNA 2 FunctionRealization 2.1 OverviewZEBOS和SKOS适配后(详见主坤写的ZebOS和SKOS适配方案说明),现在OSPF模块包括OSPF、IMI和NSM三个子模块。其中IMI作为OSPF和NSM模块的中转,负责和这两个模块进行信息交互,这里主要分析IMI和OSPF之间的交互。主框图如下:图1 imi和ospf交互主框架OSPF中的命令分为两种方式,一种是LINE命令方式,另一种是SHOW命令方式。这两种命令执行流程不一样,其中SHOW 方式会先执行LINE方式的流程,在执行SHOW方式的流程。具体LINE方式在2.2.3小节介绍,SHOW方式在2.2.4小节介绍。 2.2 Function Mechanism & Operation2.2.1 IMI进程介绍 IMI进程启动后会创建三个server服务端,分别为show_server、vty_server和imi_server,其中vty_server主要负责接收OSPF进程发送过来的消息和给OSPF进程回消息;imi_server主要负责给其它进程的imi_client发送配置和发送命令字串,并接收imi_client的处理结果;show_server暂时没用,没有其它进程的show_client连接进来。当执行show命令时,还会创建一个show_client客户端去连接其它进程的show_server,把命令字串发送给对应进程处理,并接收处理结果。2.2.1.1 vty_server 介绍IMI和OSPF交互是通过TCP的socket通信方式,端口号为10023。首先FPCLI进程将用户输入的命令,经过解析后以字符串的方式通过PAPI机制发给OSPF进程,OSPF进程接收到该字符串后通过socket再发送给IMI进程,最后由IMI进程的vty_server服务端负责接收,如图1中的序号2。vty_server中几个重要函数的主要功能:vty_event管理vty事件vty_accept接收是否有新的连接。如有,则接收,并保存接收套接字;如没有,则一直等待连接vty_read接收OSPF进程发送过来的信息,接收完成后,再调用vty_execute函数处理vty_flush将缓存中的信息通过socket发给OSPF进程,OSPF进程再通过PAPI回发给FPCLI,最后打印到终端vty_out将处理的结果保存到buf缓存中,供vty_flush使用2.2.1.2 imi_server介绍imi_server采用的是unix的通信方式,path为/tmp/.imi_line。IMI进程启动后,imi_server会创建socket等待其它进程的imi_client连接。OSPF进程的imi_client启动后会创建socket去连接IMI进程的imi_server,如果连接成功后,imi_client会向imi_server获取配置信息,它们之间的这种连接会一直存在,而IMI进程的show_client和OSPF进程的show_server之间的连接关系是在需要时才连接,当不需要的时候会断开。当有配置命令执行时,imi_server会将命令字串通过socket发送给OSPF进程的imi_client,imi_client解析命令成功后,会调用注册的CLI函数,最后会将结果回发给imi_server。imi_server中几个重要函数的主要功能:message_server_accept接收imi_client连接请求Imi_server_read接收imi_client发送过来的消息,并回复结果imi_vty_command1、处理LINE方式和SHOW方式的命令字串,将命令字串通过socket发给命令对应进程的imi_client处理,并接受回复2、会调用IMI进程的本地函数generic_show_func,去执行show命令的流程2.2.1.3 show_client介绍show_client采用的是unix的通信方式,path为/tmp/.ospf_show。在执行show命令时,Show_client需要去连接OSPF进程的show_server服务端,并将命令字串通过socket发给OSPF进程的show_server,show_server接收到并解析成功后,会调用注册的CLI函数,最后将结果回发给show_client。当它们之间的交互结束后,这种连接会断开,直到下次连接。 2.2.1.4 show_server介绍IMI中的show_server采用的是unix的通信方式,path为/tmp/.imi_show。该服务端没有其它进程的show_client连接进来。2.2.2 OSPF进程介绍OSPF进程启动后会创建一个imi_client客户端和一个show_server服务端。2.2.2.1 imi_client介绍imi_client采用的是unix的通信方式,path为/tmp/.imi_line。OSPF进程启动后,会创建imi_client的socket,并会去连接IMI进程的imi_server,获取配置信息,这种连接关系会一直存在。当有命令执行后,IMI进程的imi_server会将命令字串通过socket发送给OSPF进程的imi_client,imi_client通过imi_client_read函数接收命令字串并解析,解析成功后,如果是配置命令,就调用注册的CLI函数,并把结果回发给imi_server;如果是show命令,就不执行注册的CLI函数,也不会返回错误信息给imi_server。imi_client中几个重要函数的主要功能:imi_client_create创建socket,注册回调函数imi_client_connect调用接收处理线程函数,并执行imi_client_read函数imi_client_read接收消息,解析,并调用注册的CIL函数;将buf缓冲中的信息,通过socket回发给imi_serverline_out将执行结果保存到buf缓冲中2.2.2.2 show_server介绍OSPF进程的show_server采用的是unix的通信方式,path为/tmp/.ospf_show。当OSPF进程启动后,会创建show_server的socket,并等到IMI进程的show_client连接。当执行show命令时,IMI进程的show_client会去连接OSPF进程的show_server,并通过socket将命令字串发给OSPF进程的show_server,show_server服务端的show_read函数接收到字串后解析,如果解析成功后,会调用注册的CLI函数,并将show的结果通过show_out函数保存到buf中,最后通过show_write函数将buf信息回发给IMI的show_client。show_server中几个重要函数的主要功能:Show_accept接收连接,并调用show_read函数Show_read接收传过来的消息,解析,并调用注册的CLI函数Show_write将buf缓存中的结果回发给IMI的show_clientShow_out将show的执行结果保存到buf缓存中,并调用show_write函数2.2.3 LINE命令执行流程根据如图1所示的模块交互图,LINE命令的执行流程步骤如下所示:1、如图序号1:FPCLI进程发送PAPI消息给OSPF进程从终端输入命令,经FPCLI进行合法性检测后,通过PAPI发送给OSPF进程2、如图序号2:OSPF进程以socket方式发送消息给IMI进程的vty_server(1)OSPF进程接收到该命令字符串后,经过简要解析,通过10023端口以socket的方式发送给IMI进程的vty_server服务端,vty_server通过vty_read函数接收该命令字符串(2)vty_read函数接收完后会依次调用vty_execute函数和vty_command函数处理(3)在vty_command中会解析该命令字符串,如果解析成功后,会做一些列封装,将封装的结果保存在vty结构中,包括会注册回调函数vty_out函数(4)调用回调函数imi_vty_command函数3、如图序号3:vty_server将命令通过imi_server代理给相应模块(1)在imi_vty_command函数中,封装结构line,从vty结构中提取数据赋值给line结构(2)调用imi_server_proxy函数和imi_server_send_line函数,将cli消息发送出去4、如图序号4:imi_server将命令字符串以socket的方式发送给OSPF进程的imi_client(1)压缩line结构头,采用unix的通信方式,path为/tmp/.imi_line,将该压缩后的数据通过socket发送给OSPF进程的imi_client(2)在imi_client中通过imi_client_read函数接收该压缩后的命令字符串,接收完后,解压缩line结构头,解析line结构 (3)判断解析是否成功(show命令解析会不成功,因为show命令走的分支不一样,此处只做命令合法性检测),如果成功了,会封装结构cli,从line结构中提取数据保存到cli结构中,供执行函数使用,并会注册回调函数line_out;如果失败了,返回给imi_server服务端的buf中不会有错误信息。 (4)如果解析成功了,执行注册的CLI函数,如果函数执行错误,需要返回信息时,则通过回调函数line_out将返回信息保存到buf中,最后返回给imi_server;如果函数执行没有出错,将不会有错误信息返给imi_server5、如图序号4:OSPF进程的imi_client返回信息给IMI进程的imi_server (1)OSPF进程的imi_client执行完注册函数后,返回信息给IMI进程的imi_server (2)如果没有错误信息返回,就不返回到终端;如果有错误信息返回,则需要通过第2步中注册的vty_out函数将错误信息保存到buf缓存中,再通过vty_write函数将buf发送给之前以10023端口建立连接的OSPF进程,OSPF进程将结果以PAPI的方式回给FPCLI进程,最后显示在终端注:如图1中,序号5是SHOW方式执行的流程,LINE方式不会执行。2.2.4 SHOW 命令执行流程根据如图1所示的模块交互图,SHOW命令的执行流程步骤如下所示:注:SHOW命令会先执行LINE方式流程,再执行SHOW方式流程1、如图序号1:FPCLI进程发送PAPI消息给OSPF进程从终端输入命令,经FPCLI进行合法性检测后,通过PAPI发送给OSPF进程2、如图序号2:OSPF进程以socket方式发送消息给IMI进程的vty_server(1)OSPF进程接收到该命令字符串后,经过简要解析,通过10023端口以socket的方式发送给IMI进程的vty_server服务端,vty_server通过vty_read函数接收该命令字符串(2)vty_read函数接收完后会依次调用vty_execute函数和vty_command函数处理(3)在vty_command中会解析该命令字符串,如果解析成功后,会做一些列封装,将封装的结果保存在vty结构中,包括会注册回调函数vty_out函数(4)调用回调函数imi_vty_command函数3、如图序号3:vty_server将命令通过imi_server代理给相应模块(1)在imi_vty_command函数中,封装结构line,从vty结构中提取数据赋值给line结构(2)调用imi_server_proxy函数和imi_server_send_line函数,将cli消息发送出去4、如图序号4:imi_server将命令字符串以socket的方式发送给OSPF进程的imi_client(1)压缩line结构头,采用unix的通信方式,path为/tmp/.imi_line,将该压缩后的数据通过socket发送给OSPF进程的imi_client(2)在imi_client中通过imi_client_read函数接收该压缩后的命令字符串,接收完后,解压缩line结构头,解析line结构,会解析失败,并且不会返回错误信息给imi_server(这是正常流程)5、如图序号4:OSPF进程的imi_client返回信息给IMI进程的imi_server (1)OSPF进程的imi_client执行完注册函数后,返回信息给IMI进程的imi_server (2)因为show命令会在IMI中注册一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论