欢迎大家光临【无师自通-教程网】您的到来是我们的荣幸。本站提供photoshop教程,ps教程,flash教程,cad教程,网页制作教程,excel教程,asp教程,vb教程,3d教程,c语言教程,html教程,coreldraw教程,dreamweaver教程,java教程,3dmax教程 等各种教程为主题的内容和服务,相信您会在这里找到您所需要的东东。无师自通伴您一生-谢谢您的光临!!
网站地图 设为首页
简繁切换 加入收藏
栏目待定 留言本站
您现在的位置: 无师自通-教程网 >> 网络应用 >> 网络接入教程 >> 网络接入技术应用 >> 教程正文

  没有公告

ADSL网管系统地完成 更多...
ADSL网管系统地完成
     黑龙江省数据通信局 车雪松
    
       ADSL是一项变得越来越为家庭和中小企业用户所熟知的宽带技术,它被称为“非对称”是由于其双向或双工带宽中的大部分被分配给了下行方向,即向用户发送数据的方向。ADSL下行速率可高达6.1Mbps,而上行速率最多为640Kbps。由于ADSL技术具有在带宽和资费上的优势,各ISP都在广泛地推广ADSL业务。
    
    
    
       一个大型ISP的网络往往由许多节点组成,ADSL设备被分布在各个节点中为用户提供接入服务,同时每个节点中又可能存在不同厂家的或同一厂家的不同型号的ADSL设备。目前的情况是,各厂家提供的ADSL网管系统只是针对本身设备或单个节点的ADSL设备进行网络管理,而无法对ISP所有各节点的不同种类的ADSL设备进行统一管理。笔者对黑龙江省所采用的ADSL设备进行了分析研究,开发出一套ADSL网络管理系统,将全省各节点的各种ADSL设备统一到了一个管理平台上。
    
    
    
     系统的总体设计
    
    
    
       为了提高整个系统的运行效率,同时也为了使系统管理员在访问网管系统时有一个好的视觉效果,我们将ADSL网络管理系统分为前台和后台两个部分。前、后台程序相对独立运行。前台程序用HTML语言编写,调用后台程序的输出结果并加入说明。后台程序用C语言编写,负责采集数据、处理数据、生成结果输出。另外,为了便于前台和后台的交互,在系统中采用CGI技术来显示ADSL接入设备的面板。这样系统管理员在需要调用此网络系统时,在任意计算机上调用浏览器就可以看到相应ADSL设备的运行情况。
    
    
    
       对于一个ADSL网络管理系统来说,第一步要做的事情就是采集ADSL接入设备上有关接入端口当前占用情况的原始数据。我们利用SNMP协议来获得这些数据,通过开发基于UDP的SNMP通信程序取得ADSL接入设备上MIB中的相应项。如果没有一个唯一对应的MIB项是我们所需要的,还可以通过取得ADSL上每个接入端口状态的方法来最终统计出所需要的数据。
    
    
    
       在采集数据时生成两种库文件:一种为.temp文件,另一种为.che文件。这两种库文件都是文本文件。首先将取得的原始数据放入每台ADSL接入设备所对应的数据库中,因为对每台ADSL接入设备来说,其槽位和端口号是固定的,所以此数据库可以简化为一个文本文件,其内容是顺序存放的端口状态,而文件名则为相应ADSL接入设备的网管IP地址+.temp。这样,当后台程序的采集部分执行完毕后,对每台ADSL接入设备就有了一个唯一对应的库文件,文件内容为当前该设备各端口的状态标识,每次后台程序执行时这些库文件被清空重写。.che库文件存放的内容为每天各节点的占用端口数及总的占用端口数,每条记录对应两个数据项,分别为端口数及所对应的时间。
    
    
    
       在后台程序的数据处理部分,其输入为数据采集部分的输出,可统计出现有设备的端口占用情况和设备的运行情况。
    
    
    
     系统的程序实现
    
    
    
     1.总体流程
    
    
    
     前台程序
    
     后台程序 
     
     
     
     
     
     
     
      
     
     图1 程序流程图
    
    
    
     2.SNMP通信程序
    
       后台程序进行数据采集时利用基于UDP的SNMP协议获取ADSL接入设备上的端口状态信息。利用SNMP协议进行通信的过程如图2所示。 图3 通信过程图
    
    
    
       本文以华为公司的ADSL设备为例介绍程序的实现过程。华为的MA5100提供对用户的接入服务,MA5100采用标准插框结构设计,每框16个槽位,可插16块板,其中7块为ADSL用户接入板,每块板上提供16个端口。
    
       有关端口状态的M

  

IB项如下:
    
       1.3.6.1.4.1.2011.2.6.3.6.3.2.1.1.0.0.0
    
       其中,倒数第三个0代表机框号为0,当MA5100为单机框时,此项为0。倒数第二个0代表槽位号为0,为了获取一个设备上的所有用户状态信息,在此项上分别填入0~6。倒数第一个0代表端口号为0,在程序中应依次填入0~15。
    
       以上的MIB项有7个取值,分别代表的含义为:0:激活;1:去激活;2:物理损坏;3:正在激活;4:正在去激活;5:阻塞;6:解阻塞。其中我们取0和3状态为用户在线状态。
    
       我们利用adslwalk程序来遍历MIB树,该程序每执行一次,获取一块板上的信息,需执行7次获取一台设备上的所有信息。以下为adslwalk程序的主要部分,程序中的函数调用了如图3所示的一些基本通信函数:
    
     if ((fp=fopen(filebuf,“a”))==NULL)
    
     printf(“cann’t open file\n”);
    
     while (1)
    
     {
    
     pdu = snmp_pdu_create(SNMP_PDU_GETNEXT);
    
     snmp_add_null_var(pdu, name, name_length);
    
     status = snmp_synch_response(ss, pdu,&response);
    
     for (vars = response->variables; vars; vars = vars->next_variable)
    
     {
    
     memcpy((char *)name, (char *)vars->name,
    
     vars->name_length * sizeof(oid));
    
     name_length = vars->name_length;
    
     sprint_value(buf,vars->name,vars->
    
     name_length,vars);
    
     j=strlen(buf);
    
     buf[j]=‘\n’;
    
     buf[j+1]=‘\0’;
    
     fwrite(buf,strlen(buf),1,fp);
    
     } /* End of var processing loop */
    
     }
    
     fclose(fp);
    
     adslwalk程序执行时的格式为:
    
     adslwalk 10.10.20.30 public
    
     1.3.6.1.4.1.2011.2.6.3.6.3.2.1.1.0.0
    
       其中10.10.20.30为指定MA5100设备的网管地址。程序执行完毕后,生成名为10.10.20.30.temp的文件,文件内容为该MA5100的用户端口状态信息。
    
     3.CGI程序
    
        在本系统中,为了便于前台和后台之间的交互,笔者采用了CGI技术,用它在WWW中生成MA5100设备的面板图。
    
        标准的CGI程序是用户和后台的直接交互,而我们所编写的CGI程序则将.temp库文件作为程序输入部分。
    
       以下为本系统中CGI程序的主要部分:
    
     strcpy(filename,homedir);
    
     strcat(filename,“10.10.20.30.temp”);
    
     draw(filename);
&nbs

上一页  [1] [2] [3] [4] [5] 下一页  

p;   
     /*下面是绘图函数*/
    
     draw(ptr)
    
     char *ptr;
    
     {
    
     FILE *fp;
    
     struct stat statbuf;
    
     char buf[200];
    
     int i=0,j,k;
    
     char inputs[200];
    
     if ((fp=fopen(ptr,“r”))==NULL)
    
     printf(“

can’t open file
    
    

\n”);
    
     fstat(fileno(fp),&statbuf);
    
     if (statbuf.st_size!=0)
    
     {
    
     i=0;
    
     while (!feof(fp))
    
     {
    
     fgets(buf,sizeof(buf)-1,fp);
    
     if (strstr(buf,“0”))
    
     inputs[i]=‘0’;
    
     else
    
     if (strstr(buf,“3”))
    
     inputs[i]=‘3’;
    
     else
    
     inputs[i]=‘5’;
    
     i++;
    
     }
    
     printf(“”); printf(“TH>0
    
     123456”);
    
     for (k=0;k<16;k++)
    
     {
    
     printf(“”);
    
     for (j=0;j<7;j++)
    

     {
    
     if (j==0)
    
     printf(“%d”,k);
    
     if (inputs[j*16+k]==‘0’)
    
     printf(“%c
    
     ”,inputs[j*16+k]);
    
     else{
    
     if (inputs[j*16+k]==‘3’)
    
     printf(“%c
    
     ”,inputs[j*16+k]);
    
   

上一页  [1] [2] [3] [4] [5] 下一页  

  else
    
     printf(“%c
    
     ”,inputs[j*16+k]);
    
     }
    
     }
    
     printf(“”);
    
     }
    
     printf(“”);
    
     }
    
     fclose(fp);
    
     return(0);
    
     }
    
     上述程序放置在/cgi-bin目录下,当管理员按下查看面板图的按钮时,系统调用该程序输出结果。在前台的HTML文件中我们用以下的语句来调用CGI程序:
    
    

Table


    
     4.各种图片的生成程序
    
     以Solaris操作系统为例,加载ZBLIB、GDLIB软件包,就可以在Solaris下用C语言编写程序,将采集来的数据生成JPG、PNG等压缩格式的图片。
    
     5.后台程序的调度
    
     以Solaris操作系统为例,在Solaris中利用Crontab来定期重复执行相关命令。Crontab命令的定期执行是由Cron daemon完成的。Cron daemon实时检查系统的/var/spool/cron/crontabs目录,根据指定的时间运行相应的程序。
    
     Cron daemon根据每个Crontab文件中的命令定期运行系统任务,Crontab文件的每行代表一条命令,每行开头是该条命令执行的日期和时间。
    
     时间域的顺序为:分、小时、日期、月、星期。例如:
    
     0 20 * * 0 ,4 /etc/cron.d/logchecker
    
     表示每周日、周四晚8点运行logchecker。
    
     Crontab存放在/var/spool/cron/crontabs目录中系统默认的Crontab文件中。
    
     建立Crontab的过程如下:
    
     设置全局变量ED99vOR:
    
     $setenv ED99vOR /usr/bin/vi
    
     建立Crontab文件:
    
     $crontab -e
    
     按语法要求,加入要求系统定时完成的任务。
    
     存盘退出。
    
     查看Crontab内容用以下命令:
    
     $crontab -l
    
       下面是一个应用实例:
    
     [root@search che]# crontab -l
    
     # This is a crontab file , please don\\'t edit it unless necessary .
    
     0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/httpd/html/gddemo.sh
    
     19,49 * * * * /home/httpd/html/private/adslgddemo
    
     #The end.
    
       其中第4行为对ADSL网络管理系统后台程序的调度,在每小时的19分和49分各执行一次,也就是每半小时执行一次。

上一页  [1] [2] [3] [4] [5] 下一页  

 

上一页  [1] [2] [3] [4] [5] 

教程录入:admin    责任编辑:admin 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
     
     
     

    布线:啥是PDS?

    光纤、光缆

    300元建无线网:四月300元级无线…

    公共无线热点办法 顶级VPN无线路…

    教你用家用电脑架设个人服务器
    免责声明!本站资料大部分来自于互联网,其版权归原作者或其他合法者所有.如内容涉及或侵犯了您的权益,请通知本人,我将尽快处理!.欢迎您的光临。
    辽ICP备07003958号
    无师自通,伴你一生-教程网