有我有你,测试变得更完美.......

发布新日志

  • 外包HW研发测试题

    2010-03-03 09:33:39

    1.判断题略
    2.开发填空题略
    3.问答题
    1)队列与栈的区别?
    2)调试的方法有那些,对于多进程用哪种调试方法最好?
    3)既可用递归又可用循环的方法,请问采用哪种方法,递归方法的优缺点?
    4)ISO七层分别是哪七层?
    5)tcp协议是怎么样区别其上层应用的
    6)静态变量与全局变量的区别
    7)时间复杂性与空间复杂性的含义
    还有些貌似不记得了,一个貌似是检查能运行的程序代码是否正确?
    4.逻辑题
    1)本人住家属楼3楼,办公室也在办公楼的3楼,同事住家属楼6楼,办公室也在办公楼的6楼,问每天上班,本

    人爬楼是同事的几分之几
    2)有一种细菌,经过1分钟,分裂成2个,再过1分钟,又发生分裂,变成4个。这样,把一个细菌放在瓶子里到

    充满为止,用了1个小时。如果一开始时,将2个这种细菌放入瓶子里,那么,到充满瓶子需要多长时间?
    5.翻译题,大致是关于一个发送与接受消息的内容

  • 菜鸟日记之录制脚本规范

    2009-08-17 18:00:34


    最近很有幸被外派到HW做项目,接触了一个月性能测试,是HP性能专家带对,顺便学了一点规范,与大家一起分享,有不妥或遗漏的地方,请大家帮忙更正或补充下,3Q
    脚本录制看似简单,貌似有很有些讲究.....
    1.一个脚本应该有登陆、流程操作、登出的过程....
    2.脚本录制时:vuser_init用于放登陆,action用于放操作,vuser_end用于放登出.....
    3.在录制时,点击每个按钮,均最好注释,最好不要在录制后进行注释,以免注释代码对应的操作出差错,确保在脚本录制完成后,开发人员或其他测试人员能明确地区分各个操作执行时代码的模块....
    4.可以设置多个action,如录制查询时,单条件查询:用名字查询设置为一个action,组合条件查询:组合查询设置为另一个action,但action的名字最好有意义....
    5.录制时,操作应该简洁明了,鼠标最好不要在页面到处移动,因虽在页面未进行任何操作,但在移动时,可能与后台进行了 交互(客户端与服务端发生交互,产生请求)
    6.录制时,尽量不点击页面的上下左右滚动条....
    7.录制与回放的场景应一致,(如:录制时分辨率为1024X762,则回放时也为1024X762)
    8.录制脚本时,最好先手工执行一次完整的流程,确保在录制中无多余或无效操作,以免关注点不在业务上或加重压力...
    9.录制脚本应该有始有终,即录制开始的界面与录制结束的界面最好一致,例业务流程:创建A->提交A->操作成功提示,录制的流程应为创建A->提交A->操作成功提示->返回创建A的页面,如:当录制的流程为创建A->提交A->操作成功提示,当结束后,回放,脚本回放时,可能找不到创建A的链接Link,出现报错
    10.录制后,如要重新录制,只需点击暂停,再点击开始录制即可,不需要更改录制时的配置,因为lr将录制设置参数保存在action中
    11.录制完成后,应马上保存,注:保存时,应该在录制完,且运行完成,否则保存时提示失败
    12.脚本最好将用户名与密码参数化,
  • 菜鸟日记之定位脚本是否有问题的方法

    2009-08-17 17:59:34


    1.脚本无语法错误,
    2.脚本回放或运行后,系统产生真正的进行了操作,例:回放添加A的脚本,则在真实系统中产生A,
    3.当一个曾录制并调优成功的脚本,回放脚本突然报错,则手工验证系统,以排除当前环境是否正常,或更改页面等,
    4.脚本登陆出错,主要关注界面是否变化,用户名参数化,验证码是否为动态,(注:验证码产生压力较小,故测试时设置为静态)
    5.脚本回放或场景运行时,提示检查点找不到,要关注页面是否已更改,切忌因检查点找不到而注释该检查点,(因不检查该检查点,虽不会报错,但系统并没有真正操作,故没有产生压力)
    6.脚本回放或场景运行时出错,或系统并未真正操作,要关注:该关联的地方是否已关联,关联是否正确(如:用查出的合同作为输入条件,生成B,一个合同对应一个id,则该合同进行关联),或参数化是否正确,该参数化的地方是否已参数化(如:添加A的名字不能同名,故不能用同一参数)
    7.用5个用户并发,关注pass的数量,看是否通过,当不通过时,且手工检查,重现该问题,则为系统问题,暂排除脚本问题
    8.运行时出现错误,查看log日志,日志保存在结果文件下,查看日志快捷方法:ctrl+F,输入error,
    9.场景运行时报错,要关注是一个用户报错还是多个用户报错,如:运行时,连续报错,故可以先停止报错用户,看是否还会继续报错,如果会则找其他原因,如果不会,则重现运行该用户(注:当一个用户登陆出现失败后,则后面的操作会连续报错,
  • 菜鸟日记:性能测试之插入事物

    2009-08-17 17:58:24

    事务:在脚本中定义的某段操作,是一段脚本语句,可以将其整个脚本定义事务
    插入事务时应注意:
    1.找准插入是事务的开始位置与结束位置,系统从起点计时,结束点结束计时,
    2.事务的作用:系统自动记录事务的运行时间等性能数据,在脚本运行完毕后,系统会在结果信息中单独反映每个事务运行结果,
    3.插入事务可在录制时进行,也可录制完成后进行,建议在完成后进行
    4.插入事务千万要插入正确,(在HW做Po打通时,被HP专家叼了一下,不过叼得值,呼呼)
    事务的一般标志为web_sumbit_data,但有特殊情况,如有的事务可能会与服务器发生多次交互:提交按钮+返回主页面:URl+sumbit
    注:比较方便且不容易出错的方法:
    在录制时,每操作一个步骤前,先插入一个注释,
    优点:1.方便本人或其他人维护脚本时,很容易看出那个步骤从哪里开始到哪里结束
     2.方便插入事务,即插入事务的开始标志为:第一个注释后,结束为:第二个注释前
    3.插入事务时,最好将思考时间移到事务外面,以免测试不准确,
  • 菜鸟测试之实际项目问题发现

    2009-08-17 17:55:11

    实际案例一:
    1.添加无销售合同B时,发现点击提交的事物响应时间十分慢,单用户单循环大于10秒
    业务流程:填写基本信息,点击提交按钮
    问题发现:并非是提交产生的事物慢,而是提交成功后到刷新到主页面的时间较慢,因数据关联太多引起
    解决方案:优化系统,并发测试响应时间小于1秒
    实际案例二:
    1.添加有销售合同B时,发现查询、选择合同的事物响应时间十分慢,但提交时单用户单循环大于10秒,
    业务流程:查询合同->选择合同->点击提交
    问题发现:查询合同的关联数据太多引起,因为选择合同时,也需要先查询一次合同,
    解决方案:优化系统,并发测试响应时间小于1秒
    实际案例三:
    1.手工点击有销售合同B的task按钮(用于添加C)>10秒,手工点击无销售合同B的按钮(用于添加C)<0.5秒
    业务流程:选择有销售合同的B,点击task
    问题发现:有销售合同的关联数据太多引起,
    解决方案:优化系统,并发测试响应时间小于1秒
    实际案例三:
    查询B时,组合条件查询快,响应时间<1秒,单条件查询较慢,响应时间>30秒
    业务流程:组合查询:输入用编码+名字,点击search
                   单条件查询:输入名字,点击search
    问题发现:查询B时,组合条件查询快,响应时间<1秒,因为,查询时,通过组合条件添加将不必要的条件                进行过滤,而单条件查询较慢,响应时间>30秒,且含数字的名字比含字母的名字查询快一些                  ,因为用名字查询时,还要区分大小写
    解决方案:该问题解决比较麻烦,1. 第一次进行性能优化,平均响应时间10<响应时间<15秒,
                                                  2.开发认为优化空间不大,因为关联的表太多(注:B层属于A层,查询                                                 出B层还要先将A层查询出来),建议业务将响应时间改为15秒
                                                 3.考虑是权限问题,造成数据量太大,因测试时用管理员帐号,查询出的B是在全球所有B中找出的,建议改为只有某国家区域的权限(如:某国的接口人)测试,
                                                 4.第二次性能优化解决,响应时间<3秒
    实际案例四:
    单用户手工用管理员帐号进入申请单的页面响应时间>30分钟,最后提示超时,用tes3进入申请单的页面响应时间>1分钟
    业务流程:点击项目工程->点击我的申请单,
    问题发现:1.权限问题,造成数据量太大,因测试时用管理员帐号,可以查出所有的项目申请单,而接口人                  只能查出该权限的申请单
                    2.对申请单未进行添加索引
    解决方案:添加索引,响应时间<1秒
    实际案例五:
    查询合同,响应时间>20秒
    业务流程:进入查询合同页面,输入精确合同号,点击search
    问题发现:合同关联数据太多,合同是在全球合同中查出的
    解决方案:在查询时,将国家地区作为必选项,再进行查询,响应时间<2秒
    实际案例六:
    单用户导出D的时间大于10秒
    业务流程:查询出A后,点击导出(因为D属于A)
    问题发现:系统导出D的时间与后台处理导出D的消息队列时间间隙太长
    解决方案:缩短系统导出D的时间与后台处理导出D的消息队列时间间隙,
    新问题:导出一定数量D后,提示unkown system error
    实际案例七:
    导出一定数量D后,提示unkown system error
    业务流程:查询出A后,点击导出(因为D属于A)
    问题发现:当导出D的次数过多,引起导出D的队列消未处理完,出现报错,如:队列消息最大为5000,且导出D的次数已达到5000,但此时的队列空间已满,且队列消息还未及时处理,还有500条未时,则队列消息剩余空间只有5000-500=4500,故出现前台系统报错
    解决方案:1.将队列消息的空间值加大
    实际案例八:
    查询发票的场景登陆后,出现自动登出,手工可以重现
    业务流程:进入查询发票页面,输入精确合同号,点击search
    问题发现:数据库被锁
    解决方案:数据库解锁
    实际案例九:
    查询合同的场景运行30分钟左右,连续出现失败事物,(排除脚本问题),(注:验证10次,重现10次)
    业务流程:进入查询合同页面,输入精确合同号,点击search
    问题发现: loadrunner日志:1.找不到进入查询合同页面的检查点,但手工不能重现
                                           2.发现系统运行一段时间后,请求的链接在服务端返回后,重定向到另一个链                                          接
                     开发认为:可能为登陆30分钟运行后,出现自动退出,
    解决方案:1.开发建议将进入查询合同页面的检查点置后,再进行测试
                   2.建议将进行查询询合同页面的链接放在登陆,以便更能发现问题规律
                   3.最终因该问题比较难以定位,项目进度紧张,故作为历史遗留问题,
              注:最终解决办法:是LoadRunner的一个设置问题,是将浏览器设置为:每运行一次后,清除一次缓存,即解决该问题 

    本次测试中,测试某模块的查询场景,结果:在场景运行后30分钟出现

  • 菜鸟日记之检查点的设置

    2009-08-17 17:53:43

    检查点的目的:主要用于验证某个界面上是否存在指定的text或image等对象,LoadRunner主要检查在压力较大的情况时,web服务器能否返回正常页面
    例:正常业务流程:
       录入A->提交A->提示操作成功的窗口->返回录入A的页面
    如将“提示操作成功的窗口”作为检查点,当A的名字已存在时,LoadRunner运行该业务流程,则系统提示:A的名字存在,LoadRunner就会出错,提示找不到“提示操作成功的窗口”的检查点,即该业务流操作失败
    LoadRunner中使用检查点的方法:
    定位要检查的页面:
    1.脚本切换到Tree View方式->点击页面左侧对应URL->查看到页面与页面需要检查图形或文本信息
    2.插入文字检查点:
    在相应ULR->单击右键->弹出菜单选择Insert After或insert before->URL脚本前或后插入函数,函数名为web_find,->插入图像或文字检查点:则选择image Check或text check->输入查询文字或图像,如:operation success,在tree view视图中树形表插入类似step,如:Sumbit From=query cgi,Service:find_find title
    3.设置于检查点有关选择项:
    系统执行时启用检查点->Vuser->Run-Time->Setting->Preferencrd->Enable imageand text check前打钩
    4.检查点是否通过的查看方法
    a.脚本运行结束->Tree View下->右键点击检查点步骤->选择go to Step inexecution Log->系统自动定位到执行日子中获取检查点结果的一行
    b.最简单,直接在scrpit View下查看Log即可
    检查点插入注意技巧:
    检查点的位置应设置在页面的较下方
    案例分析:
    现象:打开百度网,页面较上方为标题“百度”,较下方有“把百度设为主页”,检查点设置为“百度”,在较大压力下,打开该网页,脚本出现报错,该检查点找不到,但查看系统该检查点存在
    注:正常情况打开百度网页,响应时间小于0.1秒,此次压力情况下,响应时间为10秒
    原因分析:
    在压力较大情况下运行场景,页面显示速度较慢,当脚本运行至“百度”检查点时,因为响应时间较长,该检查点还未在页面上显示,故提示该检查点找不到(注:该检查点最终显示在页面)
    解决办法:
    检查点的位置应设置在页面的较下方

     

  • 菜鸟日记之业务流程设计

    2009-08-17 17:51:50

    在性能测试中,业务流程越简单越好,不需要与功能需求一样复杂....
      性能测试与功能的区别:
      性能测试:LoadRunner强调的是客户端与服务端的交互
      功能测试:QTP强调的是业务流传的实现,如视图对象
    例:在A的B下创建C,
    流程:查询A或添加A->选择列表中已存在的B或添加B->添加C
    功能测试QTP关注以下是否实现:
             添加A->添加B->添加C
             查询A->添加B->添加C
             查询A->选择列表中已存在的B->添加C
             ..........
        注:依场景法考虑所有覆盖的业务场景
    性能测试LoadRunner:考虑业务流程,查询固定的A下->选择固定的B->添加C
    如:A:5510762,B:3353862,C:任意
    Loadrunner:不管在什么场景下添加,只要能成功添加C即可,可以避免参数化的,尽量不做参数化,以减少不必要的性能压力,
    注:性能测试业务流程设计应满足:单用户单循环,单用户多循环,多用户单循环,多用户多循环等
  • 关于通信网络资源培训的心得

    2009-04-04 01:06:23

    概述:

    公网:普通电路交换网,如:网通,电信,铁通等架设的骨干及分支网络。

    专网:专用通信线路,如:政法网、军队网、公安网、电力网、有线电视网等

    通信运营商:又被称为本地交换通信运营商(LEC),指的是向居民和企业提供电话服务的本

    地电话公司。

    通信企业:一种网络资源出租的运营企业,主要的运营管理单元包括规划、建设、维护和市

    场部门,常见的合作单位类型: 施工单位、监理单位、设备厂商、软件厂商代维单位等

    BOSS系统:计费及结算系统、营业与账务系统、客户服务系统和决策支持系统

    通信网可分为业务网(电话网、数据网)、传输网(由、光缆、微波、卫星等,传输体制有SDH 同步数字传输体制,传输链路,传输设备构成,传输媒介有电缆PDH准同步数字传输体制)和支撑网(信令网、数字同步网、网管网)。

    网络资源分类

       (抽象对象)业务资源:话路、信令、彩信、短信、数据等

                       路:通路(一个管道多种业务)、电路(一个管道一个业务)

       (实体对象)设    备:传输()、数据(如:路由器)、动力设备(发电机、变电器等)、交换(如:固定电话交换)、同步(用于时间同步,即:发送时间与接收时间一致)

                        线:光缆网、电缆网、微波网、卫星网

                      杆:管道网、杆路、空间资源

    通信核心网:传输网、业务网

    通信核心网:用于保证业务正常运行的辅助网,如:同步网、信令网

    传输网元:PDH(准同步数字网)、SDH(光同步传输设备)、WDM

    网元:网络的元素,即网络传输的设备

    中继群:由多个网元构成,交换网元A+交换网元B+……

    电路群:传输网元A+交换网元B+传输网元C+交换网元D+….

    传输段:如:传输网元A+传输网元E+交换网元B+传输网元C+传输网元F+交换网元G,则传输网元为(传输网元A+传输网元E之间的距离)或(传输网元C+传输网元F之间的距离)

      路:传输网元A+WDMC+传输网元B+WDMD

      路:WDMB+ ODFA+WDMD+ ODFC

    从属关系:中继器<电路群<传输段<波路

    波路是通过光路实现的,即光路为特定的波路

    资源管理现状:

    1.       网络运营成本

    2.       资源调度效率+数据准确性

    3.       闲置网络资产难以查清

    4.       网络资源资料无序

    5.       对业务差异化服务滞后

    6.       规划建设缺乏依据

    7.       主动的分等级服务保障

    8.       缺乏重要资源预警机制

    9.       缺乏统一重要业务资源视图

    本公司的管理对象:通信网路资源,解决的问题:

    1.   建立健全的网络资源综合管理,

    2.   实现资源的有效利用与调配,

    3.   支持领导分析与决策,

    4.   面向重要服务的资源管理

    传输设备:主要用于传输信号,不考虑信号对应的业务

     

    网络资源:

    支撑网=管道网+杆路网+空间资源

    空间资源:区域、站点、 机房、机位、机架等

    机房内资源设施:机房、ODFDDFMDF、机架、机框、机盘、接入网设备、核心传送网设备、交换设备;

    空间资源的结构:      

        主干光缆或中继光缆——(局站机房的地下室)—→(成端光缆)—→与ODFMDF相连—→连接某一机位,机架上的(机框、 机盘)—→连接传输网设备、数据网设备、交换设备网等

    成端光缆:传输介质的接头,以便光缆相连

    MDF:主配线架,连接电缆,传输设备与传输设备的连接

    ODF:光配线架,连接光缆,传输设备与传输设备的连接

    DDF:数字配线架,连接电缆,用于野外设备与传输设备的连接

    管道网资源:管道段(管孔段、子孔段)、管道闸、井、引上管

    管杆网的结构:

        局站的MDF—→管道闸—→管道段—→井(人井、手井)—→N个管道段—→电杆—→杆路与吊线—→N个电杆—→引上管—→地槽引出点—→地槽—→局站机房的地下室—→局站(机楼)

     注:管道截面图主要看见的是管道孔与子孔,

         井的四面展开图:主要看见的是线的走向

    杆路资源:吊线段(用于悬挂缆线)、杆塔、标杆、撑点、引上管

    撑路:电缆线或光缆线经过管道段管孔(管孔段)或吊线的路由(如:从A点有2条路径可以到到B点即:ACBADB,这就叫路由)

    撑路支配:针对电缆线或光缆线段,将其经过的管道段管孔(管孔段)或吊线按顺序一一挑选出来的过程(如:从A点有2条路径可以到到B点即:ACBADB,从AB,选择ACB,)

    管道调度:为出租管孔或杆路或布放电缆与

  • Acl的培训心得

    2009-02-25 12:36:24

                   

     ACL:access contrl list,主要用于控制ip访问的安全性

         其原理:以太网接cmts,gige口端,即千兆口用于收发数据,RF端用于与cable modem交互,如果要控制外界用户对不同协议的访问,则在gige口配置报文过滤规则,即acl规则

    Acl规则配置:

    实例操作:

     例:禁止192.168.0.120~192.168.0.138,端口为1234~2344telnet协议

      配置如下;

      

     (config)#ip access-list xiao    (建立ACL规则的名字)

     (conf-acl-xiao)#10 deny telnet type 0 192.168.0.120 255.255.25.255.0 192.168.0.138 255.255.255.255 1234 2345    type 0:表示的是报文字段类型吧,如:0表示:回应什           

    么的,具体不是很清楚 10 deny10表示建立规则的序号,一般有优先原则,据说该产品的10为最高优先级,越靠近,优先级就当然越高了 1234 2345为端口号)

    (config)#interface eth 0

     (config-if-eth 0)#ip access-group xiao  (将配置的acl规则添加到以太网中)

     (config)#show ip access-list          (查看acl规则是否配置好)

     (config)#show interface eth 0          (查看acl规则是否添加到以太网中)

    注意:1.10 deny telnet type 0 any any 0    禁用所有网络iptelnet协议

         2.禁用的协议可以用协议名字,如telnet,也可以用端口号23,如:10 deny 23 type 0 any any 10 deny telnet type 0 any any是一样的

          3.禁用端口号时,应注意,如:2123等都是特殊端口号,千万慎重,以防造成不必要的麻烦

    附转网络中经常提到的acl规则是Cisco IOS所提供的一种访问控制技术。

      初期仅在路由器上支持,近些年来已经扩展到三层交换机,部分最新的二层交换机如2950之类也开始提供ACL的支持。只不过支持的特性不是那么完善而已。在其它厂商的路由器或多层交换机上也提供类似的技术,不过名称和配置方式都可能有细微的差别。本文所有的配置实例均基于Cisco IOSACL进行编写。

      基本原理:ACL使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。

      功能:网络中的节点有资源节点和用户节点两大类,其中资源节点提供服务或数据,用户节点访问资源节点所提供的服务与数据。ACL的主要功能就是一方面保护资源节点,阻止非法用户对资源节点的访问,另一方面限制特定的用户节点所能具备的访问权限。

      在实施ACL的过程中,应当遵循如下两个基本原则:

      1.最小特权原则:只给受控对象完成任务所必须的最小的权限。

      2.最靠近受控对象原则:所有的网络层访问权限控制。

      3.默认丢弃原则:在CISCO路由交换设备中默认最后一句为ACL中加入了DENY ANY ANY,也就是丢弃所有不符合条件的数据包。这一点要特别注意,虽然我们可以修改这个默认,但未改前一定要引起重视。

      局限性:由于ACL是使用包过滤技术来实现的,过滤的依据又仅仅只是第三层和第四层包头中的部分信息,这种技术具有一些固有的局限性,如无法识别到具体的人,无法识别到应用内部的权限级别等。因此,要达到end to end的权限控制目的,需要和系统级及应用级的访问权限控制结合使用。

      1、设置acl

      acl number 3000

      rule 0 permit ip source 服务器端的子网 掩码的反码 //允许哪些子网访问服务器

      rule 5 deny ip destination 服务器端的子网 掩码的反码 //不允许哪些子网访问服务器

      2、绑定到端口:

      interface gig 0/1 //进入服务器所在的交换机端口

    [GigabitEthernet0/1] firewall packet-filter 3000 inbound //acl绑定到端口

     

  • (转)IPTV

    2009-02-25 12:31:53

    IPTV即交互式网络电视,是一种利用宽带有线电视网,集互联网、多媒体、通讯等多种技术于一体,向家庭用户提供包括数字电视在内的多种交互式服务的崭新技术。用户在家中可以有两种方式享受IPTV服务:(1)计算机,(2)网络机顶盒+普通电视机)。它能够很好地适应当今网络飞速发展的趋势,充分有效地利用网络资源。IPTV既不同于传统的模拟式有线电视,也不同于经典的数字电视。因为,传统的和经典的数字电视都具有频分制、定时、单向广播等特点;尽管经典的数字电视相对于模拟电视有许多技术革新,但只是信号形式的改变,而没有触及媒体内容的传播方式。

      IPTV关键技术

      IPTV是利用计算机或机顶盒+电视完成接收视频点播节目、视频广播及网上冲浪等功能。它采用高效的视频压缩技术,使视频流传输带宽在800Kb/s时可以有接近DVD的收视效果(通常DVD的视频流传输带宽需要3Mb/s),对今后开展视频类业务如因特网上视频直播、远距离真视频点播、节目源制作等来讲,有很强的优势,是一个全新的技术概念。

      传统电视播放存在的问题传统的电视是单向广播方式,它极大地限制了电视观众与电视服务提供商之间的互动,也限制了节目的个性化和即时化。如果一位电视观众对正在播送的所有频道内容都没有兴趣,他()将别无选择。这不仅对该电视观众来说是一个时间上的损失,对有线电视服务提供商来说也是一个资源的浪费。另外,目前实行的特定内容的节目在特定的时间段内播放对于许多观众来说是不方便的。一位上夜班的观众可能希望在凌晨某个时候收看新闻,而一位准备搭乘某次列车的乘客则希望离家以前看一场原定晚上播出的足球比赛录像。现在看来是不可能的。

      IPTV的特点及应用

      IPTV是利用宽带有线电视网的基础设施,以家用电视机作为主要终端电器,通过互联网络协议来提供包括电视节目在内的多种数字媒体服务。特点表现在:

      1)用户可以得到高质量(接近DVD水平的)数字媒体服务。

      2)用户可有极为广泛的自由度选择宽带IP网上各网站提供的视频节目。

      3)实现媒体提供者和媒体消费者的实质性互动。IPTV采用的播放平台将是新一代家庭数字媒体终端的典型代表,它能根据用户的选择配置多种多媒体服务功能,包括数字电视节目,可视IP电话,DVD/VCD播放,互联网游览,电子邮件,以及多种在线信息咨询、娱乐、教育及商务功能。

      4)为网络发展商和节目提供商提供了广阔的新兴市场。目前我国通信事业正在迅猛地发展,用户对信息服务的要求越来越高,特别是宽带视频信息。可以说中国已基本具备了大力发展IPTV的技术条件和市场条件。

      一般所说的IPTV与数字电视,既有相似点,又有区别。技术专家从以下方面阐述了二者的异同。

      1.技术体系

      IPTV系统又叫交互电视,它的系统结构主要包括流媒体服务、节目采编、存储及认证计费等子系统,主要存储及传送的内容是以MP-4为编码核心的流媒体文件,基于IP网络传输,通常要在边缘设置内容分配服务节点,配置流媒体服务及存储设备,用户终端可以是IP机顶盒+电视机,也可以是PC

      有线数字电视的广播网采取的是HFC网络体系,与传统的模拟有线电视网络体系架构相同,而开展新型的交互式业务情况下(如VOD),网络体系会有所不同。有线数字电视VOD系统主要包括VOD服务、节目采编、存储及认证计费系统,主要存储及传送的内容是MP-2TS流,采用IPOVERDWDM技术,基于DVDIP光纤网传输,与IPTV的分布式架构不同,有线数字电视VOD系统采用的是集中式的服务架构,在HFC分前端并不需要配置用于内容存储及分发的视频服务器,只需要放置DWDM接收机及GAM调制等设备即可,大大降低了系统的运营成本及管理复杂度,用户终端是数字机顶盒+电视机。目前国内已经基本形成数字电视产业链,出现了众多的数字电视机顶盒制造商、前端设备制造商、系统集成商。

      2.业务内容

      IPTV有很灵活的交互特性,因为具有IP网的对称交互先天优势,其节目在网内,可采用广播,组播,单播多种发布方式。可以非常灵活地实现电子菜单、节目预约、实时快进、快退、终端帐号及计费管理、节目编排等多种功能。另外基于Inter网的其它内容业务也可以展开,如网络游戏、电子邮件、电子理财等。

      有线数字电视采用广播方式,如果要实现视频点播必须将原来的HFC广播网络进行双向改造。一般情况下,只开通有关生活资讯的交互频道。如果数字电视要支持视频点播时,也是通过CALBEMODEM进入的IP网络来支持,实际上就是IPTV,杭州的数字IPTV系统正是这个模式。从提供的内容服务上看,有线数字电视不如IPTV

      3.主要优势

      IPTV的主要卖点是交互,及Inter网内业务的扩充。IPTV还可以非常容易地将电视服务和互联网浏览、电子邮件,以及多种在线信息咨询、娱乐、教育及商务功能结合在一起,在未来的竞争中处于优势地位。

      数字电视的卖点主要为高清的图像质量。

      4.用户群

      两者的市场用户群都是家庭用户,只是一个依托有线,一个依托宽带,给用户带来的利益类似。

      5.发展前景

      在很长一段时间内会出现两者并存的状况。发展数字电视是国家早就计划的政策,IPTV是在众多的电视节目中增加一个节目频道,并不代替有线数字电视。因为IPTV的实时性广播有一定的使用成本,所以完全用IPTV代替掉有线或卫星电视意义并不大。但是,因为IPTV的众多吸引人们的功能,它作为一个独立的节目频道还是十分有生命力。从信息产业发展角度看,IPTV还是三网合一的最大切入点。

      用户在家中可以有三种方式享受IPTV服务:

      1.计算机2.网络机顶盒+普通电视机;3.移动电话

    主要技术

      MPEG-4是由运动图像专家组(Moving Picture Experts Group, MPEG)定义的与MPEG-1MPEG-2相比,MPEG-4更适于交互AV服务以及远程监控。

      目前我们国家在大连已经建成了以中国自主的AVS解码技术为核心的iptv商用网

    数字电视数字电视就是指从演播室到发射、传输接收的所有环节都是使用数字电视信号或对该系统所有的信号传播都是通过由01数字串所构成的数字流来传播的电视类型。数字信号的传播速率是每秒19.39兆字节,如此大的数据流的传递保证了数字电视的高清晰度,克服了模拟电视的先天不足。同时还由于数字电视可以允许几种制式信号的同时存在,每个数字频道下又可分为几个子频道,从而既可以用一个大数据流--每秒19.39兆字节,也可将其分为几个分流,例如4个,每个的速度就是每秒4.85兆字节,这样虽然图像的清晰度要大打折扣,却可大大增加信息的种类,满足不同的需求。例如在转播一场体育比赛时,观众需要高清晰度的图像,电视台就应采用每秒19.39兆字节的传播;而在进行新闻广播时,观众注意的是新闻内容而不是播音员的形象,所以没必要采用那么高的清晰度,这时只需每秒3兆字节的速度就可以了,剩下16.39兆字节可用来传输别的内容。其实,数字电视的含义并不是指我们一般人家中的电视机,而是指电视信号的处理、传输、发射和接收过程中使用数字信号的电视系统或电视设备。其具体传输过程是:由电视台送出的图像及声音信号,经数字压缩和数字调制后,形成数字电视信号,经过卫星、地面无线广播或有线电缆等方式传送,由数字电视接收后,通过数字解调和数字视音频解码处理还原出原来的图像及伴音。因为全过程均采用数字技术处理,因此,信号损失小,接收效果好。其原理:将电视的视音频信号数字化后,其数据量是很大的,非常不利于传输,因此数据压缩技术成为关键。实现数据压缩技术方法有两种:一是在信源编码过程中进行压缩,IEEEMPEG专家组已发展制订了ISO/IEC13818(MPEG-2)国际标准,MPEG-2采用不同的层和级组合即可满足从家庭质量到广播级质量以及将要播出的高清晰度电视质量不同的要求,其应用面很广,它支持标准分辨率16:9宽屏及高清晰度电视等多种格式,从进入家庭的DVD到卫星电视、广播电视微波传输都采用了这一标准。二是改进信道编码,发展新的数字调制技术,提高单位频宽数据传送速率。如,在欧洲DVB数字电视系统中,数字卫星电视系统(DVB-S)采用正交相移键控调制(OPSK);数字有线电视系统(DVB-C)采用正交调幅调制(QAM);数字地面开路电视系统就(DVB-T)采用更为复杂的编码正交频分复用调制(COFDM)

    特点

      IPTV是一整套的应用服务解决方案,是一个服务体系,不是一个具象的产品。它也是NGN时代的骄子,应该站在NGN的角度理解IPTV,而目前只是IPTV的初级阶段,此时的IPTV表现形式是具有中国特色的IPTV

  • 关 于 muicast的培训心得

    2009-02-24 17:40:36

    单播、组播、广播的区别
    单播:主机之间一对一的通讯模式,网络中的交换机和路由器对数据只进行转发不

          进行复制。
         
    优点: 1. 服务器及时响应客户机的请求,2. 服务器针对每个客户不同请求发送不

              同数据,容易实现个性化服务。
       缺点: 1. 在客户数量大、每个客户机流量大的流媒体应用中服务器不堪重负。2.

               现有的网络带宽是金字塔结构,如果全部使用单播协议,将造成网络主

              干不堪重负。

    广播:主机之间一对所有的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转   发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。

    优点: 1. 网络设备简单,维护简单,布网成本低廉,2. 服务器不用向每个客

          户机单独发送数据,所以服务器流量负载极低。
         缺点: 1.无法针对每个客户的要求和时间及时提供个性化服务。2. 网络允许服

           务器提供数据的带宽有限,客户端的最大带宽=服务总带宽。也就是

           说无法向众多客户提供更多样化、更加

    个性化的服务。 3. 广播禁止在Internet宽带网上传输。
    组播(mulicast): 主机之间一对一组的通讯模式,也就是加入了同一个组的主

    机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需

    求者复制并转发其所需数据。

    优点:1. 需要相同数据流的客户端加入相同的组共享一条数据流,节省了服

          务器的负载。具备广播所具备的优点。2. 由于组播协议是根据接受者

          的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接

          入端带宽的限制。所以其提供的服务可以非常丰富。3. 此协议和单播

          协议一样允许在Internet宽带网上传输。

     缺点: 1.与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可

           以通过一定的容错机制QOS加以弥补。2.现行网络虽然都支持组

           播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论

           上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。

    Cmts应用Mulicast的原理

    1.       多播源通过cmts,转发给cable,然后到cpe

    2.       cpe发送igmp消息,通过cable modem到达cmts,,cmts建立会话,并应答,然后将cable modem加入多播组,多播源通过多播组到gige口(千兆口)到cmts,cmts通过下行转发给cable modem,cable modem监听到后转给cpe

    cmts的最基本实现mulicast的配置:

    如:(config)#interface gige 0

     (config-if-gige 0)#ip igmp

     (config-if-gige 0)#end

     (config)#igmp client version 2

     (config)#interface docsis-mac 1

     (conf-if-mac 1)#no mgmd ipv4 shutdown

    如有特殊配置,可跟据具体情况而定

    实例操作

          1.cmts下配置mulicast load-balance,(配置load-balance,其目的是为了节省带宽)

     发送端:

    CMTS12.0的懒猫

    一个cpe:作为发送端:网线接千兆卡(如:192.168.3.,网络:255.255.255.0,手工设置)

    打开VLC,选择播放文件文件(镜像),在该菜单-设置:UDP:设置输入224.0.100.1

    如要设置3个节目:则再打开两个VLC,分别设置:224.0.100.2224.0.100.3,有效时间(LLT)为:64,

      接收端

    一个cpe作为接收端:

    1)连接CM,动态获取IP,ping 10.150.1.1,看是否可以ping

           2) VLL中,UDP一栏,输入与发送端对应的:224.0.100.1,其他不进行设置,可以看到视频电视

  • 关于load-balance的培训心得<一>

    2009-02-17 23:07:04

    load-balance原理:load-balance,顾名思义为负载均衡,在CMTS中,当有多个channel同时使用时,如果存在有的channel负荷超重(流量大),有的channel负荷轻(流量小),则会将channel负荷超重的cable modem移到较轻负荷的channel工作,最终达到各个工作channel的负荷均衡。

    调整load-balance的几种手段

    Ucc:    upstream channe change , Docsis1.0中唯一的channel切换手段,因为在1.0协议中CMTS1个下行对应4个上行,故不能在下行做load-balance, 只应用于上下行channel

    Dcc:    Dynamic Channel Change,适用于所有Docsis1.0以上的modem,应用于上下行channel

    Dbc:    针对3.0协议所进行的,应用于上下行channel

    初始化技术

    All-ranging: 使用所有不等的机遇和成果,最长的中断服务(所有注册)   

    broadcast-ranging: CM使用广播初步不等,在新的渠道之前,传输(广播注册)

    unicast-ranging: CMTS批单初步不等的机会,向CM在新的渠道,并CM不等,必须完成前,传输(单播注册)

    period-ranging:CMTS资助期不等的机会,向CM在新的渠道     (周期注册)

    direct: 调制解调器迁移到新的渠道,直接将CM移到新的渠道,优点:在切换中不停顿,使用户感觉不到有网络中断的情况,缺点:很容易失败

    load-balance的基本配置:

    1.        必备的配置:

    配置service group 1,如果不配置service group,即使配置了load-balance也不可以使用,因为对于2.0或以下的cable modem只使用一个上下行channel

    2. load-balance的配置

     1 Enable load balacne global

                (config)#load-balance enable

               2 Config load balance policy

                 load-balance policy 1

                 rule execution 1

                 rule basic 1

    3  Config basic rule

                 load-balance basic-rule 1

                 enable

    4  config execution-rule

                load-balance execution-rule 1

                method utilization

                interval 30

               cable modem rebalance-interval 60

    5  Config general load balance group

               load-balance general-group default-settings 

               policy-id 1

              initial-tech direct

              enable

     

    注:当未进行特殊配置,则一般为默认配置

    注:相关参数的含义

    suspend-load-balance from 10:00:00 to 13:00:00:00配置oad-balance的开启时间从10001300

    rule execution 1cmts的要求配置规则

    rule basic 协议所规定的规则

    load-balance threshold load <load-value> enforce <enforce-value> minimum <mini-value>

    load <load-value>:只所承受的最大负荷值,该值貌似为channel 利用率的值

    enforce <enforce-value>:为可选,如果设置为enable,则为动态,不设置默认为静态

    注:只有做动态负载均衡时,当该值才有效,静态貌似无作用

    注:静态:static load-balance:是指cable modemoffline状态到online状态的过程中,当channel 利用率超过所设置的利用率时,则会做load-balance

    动态:dynamic load-balance:是指在cable modem online之后,channel 利用率超过所设置的利用率时,通过dccucc进行的load-balance

      minimum <mini-value>:最小负荷值,

     interval <value>:表示每隔30秒刷新一次,查看一下load-balance重新检查一下各个channel的利用率

    exculusion-list:里面所写的为不进行做load-balancecable modem

    cable modem rebalance-interval< value >:例如:只有2cm工作,原来用户在cm1上网,则会切换到cm2,通过cm2上网,当通过cm2上网时,cm2的带宽又会明显增高,超过阈值时,又会切换到cm1,进行上网,为了避免频繁的切换,则设置该值,

      例如:cable modem rebalance-interval 60,cm1的流量大,切换到cm2后,如果因为(上传,下载等外界原因)出现cm2也会与cm1一样增高,则会60秒后才切换到cm1

    Cable modem retry-interval fist 120 second:表示第一次做load-balance失败,过120秒后,第一次做load-balance,如果第二次做load-balance失败,再过3600秒后再进行第三次load-balance,如果第三次再失败,则再永久性的不做load-balance

     

  • 关于load-balance的培训心得<二>

    2009-02-17 22:51:54

    判断是否做load-balance的标准:

    1.       观察每个channel上的modem数量

    2.       观察channel utilization

    判断是否进行load-balance的方法:

    当最忙的channel利用率与最闲的channel利用率之差大于或等于enforce设置的值时,则会做load-balance当最忙的channel利用率与最闲的channel利用率之差小于enforce设置的值时,则不会做load-balance注意:一般是将负荷最大channel上的cable modem切换到负荷最小的channel上进行上线

    即: load <load-value>minimum <mini-value>>= enforce <enforce-value>,则做load-balance

         load <load-value>minimum <mini-value>< enforce <enforce-value>,则不做load-balance

    例如:有2cable modem同时在线,2channel均可以做load-balancechannel 1的利用率大于channel 2的利用率,判断是否进行load-balance的方法:

    channel 1的利用率—channel2的利用率>= enforce <enforce-value>的值,则会做load-balance

    channel 1的利用率—channel2的利用率<enforce <enforce-value>的值,则不会做load-balance

    注意:1.上下行可以设置不同的load-balance,例如:上行是每个channelcable modem个数来衡量是否做负载均衡,则下行可以不使用下行方式,而换成通过设置每个channel的利用率大小来判断是否做负载均衡,

    load-balance的诊断:

      如果cable modem拒绝做load-balance,则有以下原因:

    1.        在网络情况(上传、下载等)下,强制切换,如:配置了cable modem rebalance-interval 60,但没

    经过60秒时,进行强制切换,则会拒绝

    2.        mac-domain中配置了可以切换的channel,但在service group中未配置可以切换的channel

    3.        Cabl e modem的版本问题

    4.        查看load-balancelog记录

     关于手工切换load-balance的命令:

     

    查看load-balance的相关命令:

     # show dynamic load-balance 

    # show static load-balance

    #show load-balance general-group

    #show load-balance restricted-group 1

    #show load-balance restrict-cm     

    附:

    (config)#load-balance enable

      (config)#load-balance policy 1

      (load-bal-policy 1)#rule basic  1

      (load-bal-policy 1)#rule execution 1

      (config)#load-balance basic-rule 1

      (load-bal-basic-rule 1)#enable

      (load-bal-basic-rule 1)#suspend-load-balance from 10:00:00 to 13:00:00:00

     CASA-C2200(config)#load-balance execution-rule 1

    (load-bal-exe-rule 1)#method utilization

      (load-bal-exe-rule 1)#method utilization dynamic

    (load-bal-exe-rule 1)# load-balance threshold load 20 enforce 20 minimum 10

    (config)#load-balance general-group default-settings

     (load-bal-general-default)#policy-id 1

    (load-bal-general-default)#initial-tech direct

     (load-bal-general-default)#enable

    待补充具体未配完的配置

  • (转)吞吐量的测试工具-iperf

    2009-02-15 11:22:27

     

     

     

     

    Iperf 是一个 TCP/IP UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动、丢包率、最大段和最大传输单元大小等统计信息;从而能够帮助我们测试网络性能,定位网络瓶颈。
    参数说明
    -s
    server模式启动,egiperf -s
    -c host
    client模式启动,hostserver端地址,egiperf -c 222.35.11.23
    通用参数
    -f [k|m|K|M]
    分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K
    -i sec
    以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 -i 2
    -l
    缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16
    -m
    显示tcp最大mtu
    -o
    将报告和错误信息输出到文件eg:iperf -c 222.35.11.23 -o c:\iperflog.txt
    -p
    指定服务器端使用的端口或客户端所连接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999
    -u
    使用udp协议
    -w
    指定TCP窗口大小,默认是8KB
    -B
    绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
    -C
    兼容旧版本(当server端和client端版本不一样时使用)
    -M
    设定TCP数据包的最大mtu
    -N
    设定TCP不延时
    -V
    传输ipv6数据包

    server专用参数
    -D
    以服务方式运行ipserfeg:iperf -s -D
    -R
    停止iperf服务,针对-Deg:iperf -s -R

    client端专用参数
    -d
    同时进行双向传输测试
    -n
    指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000
    -r
    单独进行双向传输测试
    -t
    测试时间,默认10,eg:iperf -c 222.35.11.23 -t 5
    -F
    指定需要传输的文件
    -T
    指定ttl

    应用实例

    使用 iperf -s 命令将 Iperf 启动为 server 模式,在客户机上使用 iperf -c启动client模式。

    iperf –s

    ------------------------------------------------------------

    Server listening on TCP port 5001

    TCP window size: 8.00 KByte (default)

    ------------------------------------------------------------

     

    iperf -c 59.128.103.56

    上面使用服务端和客户端的默认设置进行测试

     

    iperf -s -w 300K

    ------------------------------------------------------------

    Server listening on TCP port 5001

    TCP window size:  300 KByte

    ------------------------------------------------------------

     

    iperf -c 59.128.103.56 -f K -i 2 -w 300K

           设定报告间隔为2秒,服务器端和客户端的TCP窗口都开到300KB

     

    iperf -c 59.128.103.56 -f K -i 2 -w 300K –n 1000000

    测试传输约1MB数据

     

    iperf -c 59.128.103.56 -f K -i 2 -w 300K –t 36

    测试持续36

     

    iperf -c 59.128.103.56 -f K -i 2 -w 300K -n 10400000 –d

    测试双向的传输

     

    iperf -c 59.128.103.56 -f K -i 2 -w 300K –u

    UDP测试

     

    其中 -i 参数的含义是周期性报告的时间间隔(interval),单位为秒;在上面的例子中,表示每隔2秒报告一次带宽等信息。

     

     

     

    Iperf  是一个网络性能测试工具。Iperf可以测试TCPUDP带宽质量。Iperf可以测量最大TCP带宽,具有多种参数和UDP特性。Iperf可以报告带宽,延迟抖动和数据包丢失。

    功能介绍
    TCP
    测量网络带宽
      
    报告MSS/MTU值的大小和观测值
    支持TCP窗口值通过套接字缓冲
    P线程或Win32线程可用时,支持多线程。客户端与服务端支持同时多重连接
    UDP
    客户端可以创建指定带宽的UDP
    测量丢包
    测量延迟
    支持多播
    P线程可用时,支持多线程。客户端与服务端支持同时多重连接(不支持Windows
    在适当的地方,选项中可以使用Kkilo-)和Mmega-)。例如131072字节可以用128K代替。
    可以指定运行的总时间,甚至可以设置传输的数据总量。
    在报告中,为数据选用最合适的单位。
    服务器支持多重连接,而不是等待一个单线程测试。
    在指定时间间隔重复显示网络带宽,波动和丢包情况。
    服务器端可作为后台程序运行。
    服务器端可作为Windows 服务运行。
    使用典型数据流来测试链接层压缩对于可用带宽的影响。
    参数与说明
    命令行选项
    环境变量选项
    描述
    客户端与服务器端选项
    -f, --format [bkmaBKMA]
    $IPERF_FORMAT
    格式化带宽数输出。支持的格式有:
        'b' = bits/sec            'B' = Bytes/sec
        'k' = Kbits/sec           'K' = KBytes/sec
        'm' = Mbits/sec           'M' = MBytes/sec
        'g' = Gbits/sec           'G' = GBytes/sec
        'a' = adaptive bits/sec   'A' = adaptive Bytes/sec
    自适应格式是kilo-mega-二者之一。除了带宽之外的字段都输出为字节,除非指定输出的格式,默认的参数是a
    注意:在计算字节byte时,Kilo = 1024 Mega = 1024^2Giga = 1024^3。通常,在网络中,Kilo = 1000 Mega = 1000^2 and Giga = 1000^3,所以,Iperf也按此来计算比特(位)。如果这些困扰了你,那么请使用-f b参数,然后亲自计算一下。
    -i, --interval #
    $IPERF_INTERVAL
    设置每次报告之间的时间间隔,单位为秒。如果设置为非零值,就会按照此时间间隔输出测试报告。默认值为零。
    -l, --len #[KM]
    $IPERF_LEN
    设置读写缓冲区的长度。TCP方式默认为8KBUDP方式默认为1470字节。

    -m, --print_mss
    $IPERF_PRINT_MSS
    输出TCP MSS值(通过TCP_MAXSEG支持)。MSS值一般比MTU值小40字节。通常情况

    -p, --port #
    $IPERF_PORT
    设置端口,与服务器端的监听端口一致。默认是5001端口,与ttcp的一样。
    -u, --udp
    $IPERF_UDP
    使用UDP方式而不是TCP方式。参看-b选项。
    -w, --window #[KM]
    $TCP_WINDOW_SIZE
    设置套接字缓冲区为指定大小。对于TCP方式,此设置为TCP窗口大小。对于UDP方式,此设置为接受UDP数据包的缓冲区大小,限制可以接受数据包的最大值。
    -B, --bind host
    $IPERF_BIND
    绑定到主机的多个地址中的一个。对于客户端来说,这个参数设置了出栈接口。对于服务器端来说,这个参数设置入栈接口。这个参数只用于具有多网络接口的主机。在IperfUDP模式下,此参数用于绑定和加入一个多播组。使用范围在224.0.0.0239.255.255.255的多播地址。参考-T 参数。
    -C, --compatibility
    $IPERF_COMPAT
    与低版本的Iperf使用时,可以使用兼容模式。不需要两端同时使用兼容模式,但是强烈推荐两端同时使用兼容模式。某些情况下,使用某些数据流可以引起1.7版本的服务器端崩溃或引起非预期的连接尝试。
    -M, --mss #[KM}
    $IPERF_MSS
    通过TCP_MAXSEG选项尝试设置TCP最大信息段的值。MSS值的大小通常是TCP/IP头减去40字节。在以太网中,MSS值 为1460字节(MTU1500字节)。许多操作系统不支持此选项。
    -N, --nodelay
    $IPERF_NODELAY
    设置TCP无延迟选项,禁用Nagle's运算法则。通常情况此选项对于交互程序,例如telnet,是禁用的。
    -V (from v1.6 or higher)

    绑定一个IPv6地址。
    服务端:$ iperf -s –V
    客户端:
    $ iperf -c  -V
    注意:在1.6.3或更高版本中,指定IPv6地址不需要使用-B参数绑定,在1.6之前的版本则需要。在大多数操作系统中,将响应IPv4客户端映射的IPv4地址。

    服务器端专用选项
    -s, --server
    $IPERF_SERVER
    Iperf
    服务器模式
    -D (v1.2
    或更高版本)

    Unix
    平台下Iperf作为后台守护进程运行。在Win32平台下,Iperf将作为服务运行。

    -R(v1.2
    或更高版本,仅用于Windows)

    卸载Iperf服务(如果它在运行)。

    -o(v1.2
    或更高版本,仅用于Windows)

    重定向输出到指定文件

    -c, --client host
    $IPERF_CLIENT
    如果Iperf运行在服务器模式,并且用-c参数指定一个主机,那么Iperf将只接受指定主机的连接。此参数不能工作于UDP模式。
    -P, --parallel #
    $IPERF_PARALLEL
    服务器关闭之前保持的连接数。默认是0,这意味着永远接受连接。
    客户端专用选项
    -b, --bandwidth #[KM]
    $IPERF_BANDWIDTH
    UDP
    模式使用的带宽,单位bits/sec。此选项与-u选项相关。默认值是1 Mbit/sec
    -c, --client host
    $IPERF_CLIENT
    运行Iperf的客户端模式,连接到指定的Iperf服务器端。
    -d, --dualtest
    $IPERF_DUALTEST
    运行双测试模式。这将使服务器端反向连接到客户端,使用-L 参数中指定的端口(或默认使用客户端连接到服务器端的端口)。这些在操作的同时就立即完成了。如果你想要一个交互的测试,请尝试-r参数。
    -n, --num #[KM]
    $IPERF_NUM
    传送的缓冲器数量。通常情况,Iperf按照10秒钟发送数据。-n参数跨越此限制,按照指定次数发送指定长度的数据,而不论该操作耗费多少时间。参考-l-t选项。
    -r, --tradeoff
    $IPERF_TRADEOFF
    往复测试模式。当客户端到服务器端的测试结束时,服务器端通过-l选项指定的端口(或默认为客户端连接到服务器端的端口),反向连接至客户端。当客户端连接终止时,反向连接随即开始。如果需要同时进行双向测试,请尝试-d参数。
    -t, --time #
    $IPERF_TIME
    设置传输的总时间。Iperf在指定的时间内,重复的发送指定长度的数据包。默认是10秒钟。参考-l-n选项。
    -L, --listenport #
    $IPERF_LISTENPORT
    指定服务端反向连接到客户端时使用的端口。默认使用客户端连接至服务端的端口。
    -P, --parallel #
    $IPERF_PARALLEL
    线程数。指定客户端与服务端之间使用的线程数。默认是1线程。需要客户端与服务器端同时使用此参数。
    -S, --tos #
    $IPERF_TOS
    出栈数据包的服务类型。许多路由器忽略TOS字段。你可以指定这个值,使用以“0x”开始的16进制数,或以0”开始的8进制数或10进制数。
    例如,16进制'0x10' = 8进制'020' = 十进制'16'TOS1349就是:
        IPTOS_LOWDELAY     minimize delay        0x10    IPTOS_THROUGHPUT   maximize throughput   0x08    IPTOS_RELIABILITY  maximize reliability  0x04    IPTOS_LOWCOST      minimize cost         0x02
    -T, --ttl #
    $IPERF_TTL
    出栈多播数据包的TTL值。这本质上就是数据通过路由器的跳数。默认是1,链接本地。
    -F (from v1.2 or higher)

    使用特定的数据流测量带宽,例如指定的文件。
    $ iperf -c  -F
    -I (from v1.2 or higher)

    -F一样,由标准输入输出文件输入数据。
    杂项
    -h, --help

    显示命令行参考并退出 。
    -v, --version

    显示版本信息和编译信息并退出。
    举例:
    1
    TCP测试
    服务器执行:./iperf -s -i 1 -w 1M
    客户端执行:
    ./iperf -c host -i 1 -w 1M
    其中-w表示TCP window sizehost需替换成服务器地址。

    2
    UDP测试
    服务器执行:./iperf -u -s
    客户端执行:
    ./iperf -u -c 10.255.255.251 -b 900M  -i 1  -w 1M  -t 60
    其中-b表示使用多少带宽,1G的线路你可以使用900M进行测试。

     

     

    例:如 192.168.3.131 做服务端,cm:10.190.1.13做客户端,

    则在cm端:进入到该目录,然后 输入iperf .exe –c –u 192.168.3.131 –t 30 –i 10

      131端:进入到该目录,然后输入iperf .exe –s –u

    注意:发包端为客户端,接收端为服务端 
  • 关于吞吐量的测试方法

    2009-02-15 11:12:13

    测试CMTS在不同环境下,吞吐量的大小;在测试吞吐量的过程中,观察CPU的使用情况

    测试环境:

    硬件:PC机器、CMTS cable modem (1.02.03.0各一个)

    软件:linux系统、windowsXPCMTS自带系统、CutFTP 8(服务器)

      测试环境搭建:

            物理连接:

    1.        CMTS上连接测试所用的CM,如:1.02.03.0,并上线;

    注意:3.0cable modem测试时,做四个上行与四个下行绑定;

    2.        PC机的千兆网卡连接cable modem,并自动获取ip,即:PC机的ipcable modemip处于同一网段;

    配置文件的使用:

    ,    默认:

                    Cxh1_0.bin (1.0cm)

                   throughout.bin   (2.03.0cm)

    注:具体配置文件根据测试需求

    CMTS环境配置:

         默认:

                 interleave 8

    upstream map size 2

    map-advance static 200

    channel-width 6400000

    minslot  4

    annex   b;

    注:3.0cable modem下载:使用annex  A

    测试方法与步骤

    测试吞吐量:

          法一:

    1. CutFTP工具上传:在客户端将文件通过CutFTP上传到服务端

    例:客户端:192.168.0.63;服务端:192.168.3.131

                 1.pc(192.168.0.63)上打开cuteFTP 8,并双击192.168.3.131

    2.在左侧的C\down….\myth1.mpg下将要上传的文件拖入右侧的pub下,即可,(注:先在右侧的上框输入pub);

           3. 1.0cable modem测试使用 profile 2,2.0cable modem测试使用profile 3,3.0cable modem上传测试使用profile 30,annex b,下载使用profile 3,annex A,

    4.在测试过程中观察吞吐量的变化,

    5.观察cpu利用率的变化,

    观察方法:

    1.   nroot登陆,在nroot下,访问上行板块,如:telnet 1.0.2 (上行板块的位置),然后用croot登陆,并输入TOP,观察即可

                         6.在异常情况,可观察channel利用率:show docsis channel utilization

    2.CutFTP工具上传下载:在服务端将文件通过CutFTP上传到客户端,具体方法与上传类似

    法二:

                使用吞吐量测试工具iperf测试,具体方法(略)

    预期参考值:

      3.0最佳:下载 120

                上传 90

          注:可修改配置文件的max burstup,使值越大越好

     

  • 关于cable modem channel的绑定

    2009-02-11 12:33:15

    在CMTS中绑定如何进行channel绑定?
    例如:3.0的cable modem要绑定四个上下行上线
    解:
    1.在mac domain中创建四个上下行channle并打开,(参考cable modem上线的配置)
    interface docsis-mac  1
      downstream 1 interface qam 0/0/0
      downstream 2 interface qam 0/0/1
      downstream 3 interface qam 0/0/2
      downstream 4 interface qam 0/0/3
      upstream 1 interface upstream 3/0/0
      upstream 2 interface upstream 3/1/0
      upstream 3 interface upstream 3/2/0
      upstream 4 interface upstream 3/3/0
    2.创建一个service group ,把上下行的channel均放入其中
    service group 1
    upstream 3/0
    upstream 3/1
    upstream 3/2
    upstream 3/3
    qam 0/0/0
    qam 0/0/1
    qam 0/0/2
    qam 0/0/3
    3.如何查看CM绑定了哪些channel
    可以 show cable modem bonding看出
    CASA-C2200(config)#show cable modem bonding
    MAC Address    US    DS    US   DS    DS CHAN
                       Intf   Intf   SET   SET   EXCLUDED
    0014.6cb9.ffbb    1/0/0  0/0/0   1    308 
    如果us set 或者ds set的值大于255表示该CM 绑定了多个channel, 数字表示channel set ID,例如上面的308代表channel set ID=308,而具体308代表哪些channel可以使用 show channelset 命令。小于255数字代表单个channel ID , 例如上例的1代表channel id=1.
    注意:保证所有的channel 在物理上与CM 相连,才能绑定,绑定好处,多个channel可以同时使用
  • 《转》关于进程间通信的学习心得

    2009-02-11 12:18:41

    进程:进程是指独立地址空间的指令序列

    进程的五种状态:新建,就绪,运行,睡眠,僵死

    进程间通信:是不同进程之间进行一些"接触",这种接触有简单,有复杂。机制不同,复杂度也不同。通信是一个广义上的意义,不仅指大批量数据传送,还包括控制信息的传送,但使用方法是基本相同的。

    基本的进程通信机制

    1.传统UNIX-IPC机制:信号和管道

    2.SystemVIPC机制:共享内存、信号量和消息队列

    3.起源于Unix BSD版本的套结字(Socket

    4.远程过程调用(RPC

     信号:Unix系统中使用的最古老的进程间通讯的方法之一,用于向一个或多个进程发送异步事件的信号。信号可以类比于DOS下的INT或者是Windows下的事件。在有一个信号发生的时候,相应的信号就会发送给相应的进程。

    信号机制的实现

    1.信号包括待处理信号和被阻塞信号

    2.如果产生了一个被阻塞的信号,它一直保留待处理,直到被解除阻塞。

    3.系统保存每一个进程如何处理每一种可能的信号的信息。

    4.系统判断进程是希望忽略这个信号还是让内核处理。进程通过执行系统调用改变缺省的信号处理 

    对信号的处理

    1.初始化信号集,只有在信号集里面的信号才会被考虑

    2.安装信号处理器。所谓信号处理器,就是指定了一些对信号的处理方法。在安装的时候,一定要对特定的信号赋予正确的信号处理函数。

    信号相关函数

    int sigaction(int signo, const struct sigaction *act, struct sigaction *oact);为进程安装信号处理器,struct sigaction数据结构是用来保存信号处理器的相关信息。

    int sigemptyset(sigset_t *set);将信号集合清空。

    int sigfillset(sigset_t *set);将信号集合设置成包含所有的信号,在对信号进行操作以前一定要对信号集进行初始化。

    int sigaddset(sigset_t *set, int signo);向信号集中加入signo对应的新信号。

    int sigdelset(sigset_t *set, int signo);从信号集中删除signo对应的一个信号。

    int sigismember(const sigset_t *set, int signo);判断某个信号是否在信号集中。

    int sigprocmask(int how,const sigset_t *set, sigset_t *oset);设置进程的信号屏蔽码。信号屏蔽码可以用来在某段时间内阻塞一些信号集中的信号。

    管道通信:是最古老的Unix IPC工具,一个进程从管道一头写数据,另一个进程从管道另一头读数据,以实现它们之间通信的共享方式,又称pipe文件。由于发送和接收都是利用管道进行通信的,故称为管道通信。通信方式是单向的。管道类型分为:无名管道、命名管道

    管道通信的思想

    1.发送进程可以源源不断的从pipe一端写入数据流,在规定的pipe文件的最大长度(如4096字节)范围内,每次写入的信息长度是可变的。

    2.接收进程在需要时可以从pipe的另一端读出数据,读出单位长度也是可变的。

    基本管道调用函数

    int do_pipe(int *fd);创建管道

    static int pipe_release(struct inode *inode, int decr, int decw);管道释放

    无名管道II

    显示了每一个file数据结构包含了不同的文件操作例程的向量表的指针:一个用于写,另一个从管道中读。这掩盖了和通用的读写普通文件的系统调用的不同。当写进程向管道中写的时候,字节拷贝到了共享的数据页,当从管道中读的时候,字节从共享页中拷贝出来。

    命名管道:又名FIFO,它不是临时的对象,而是文件系统中的实体,可以用mkfifo命令创建。系统必须处理在写进程打开FIFO之前打开FIFO读的进程,以及在写进程写数据之前读的进程。它使用和无名管道一样的数据结构和操作。

            (写入端)[Fd1]pipe(fd)[Fd0] (读出端)

     信号量:信号量(Semaphore)和信号是不同的东西,信号是实现约定的固定的值,而信号量是一个变量记录着某些特定信息,它的使用主要是用来保护共享资源,使得该资源在一个时刻只让一个进程拥有。

    信号量的数据结构:使用semid_ds数据结构表达信号量。系统中所有的semid_ds数据结构都由semary指针向量表指向。每一个信号灯数组中都有sem_nsems,通过sem_base指向的一个sem数据结构来描述

    信号量机制的实现

    1.对信号量的操作只有两个:PV

    2.为了在逻辑上便于组织信号量,信号量机制中有一个概念是信号量组。我们在一个信号量组中创建相关的信号量,这样逻辑上清晰也便于管理。

    3.在使用之前同样需要对他们进行初始化:生成或打开信号量组,向其中生成或删除指定的信号量。

    4.一个信号量必须属于一个信号量组,否则不能被系统所使用。

    5.信号量和信号量组是不会被系统所自动清理的,所以在进程退出前,需要及时清理生成的那些信号量。

    信号量的相关函数

     int semget(key_t key, int nsems, int semflg) 创建一个新的信号量组或获取一个已经存在的信号量组。

    int semop(int semid, struct sembuf *sop, int nsops);一次对一个或多个信号量进行操作,用于PV操作。

    Int semctl(int sem_id, int semnum, int cmd, union semun arg);用来获取一些信号量的使用信息或者是来对信号量进行控制。

    共享内存

         共享内存是进程通信的一个重要方法,为进程提供了直接通信的手段。操作系统中一个或多个进程通过同时出现在它们的虚拟地址空间的内存通讯,该虚拟内存被每个共享进程的页表所引用,它们的地址无需相同。进程对共享内存的访问是受控的,信号量等机制实现了共享内存访问的同步

    共享内存的简单原理

    每一个新创建的内存区域都用一个shmid_ds数据结构来表达。这些数据结构保存在shm_segs向量表中。Shmid_ds数据结构描述了这个共享内存取有多大、多少个进程在使用它以及共享内存如何映射到它们的地址空间。由共享内存的创建者来控制对于这块内存的访问权限和它的key是公开或私有。如果有足够的权限它也可以把共享内存锁定在物理内存中。每一个希望共享这块内存的进程必须通过系统调用粘附(attach)到虚拟内存。这为该进程创建了一个新的描述这块共享内存的vm_area_struct数据结构。进程可以选择共享内存在它的虚拟地址空间的位置或者由Linux选择一块足够的的空闲区域。这个新的vm_area_struct结构放在由shmid_ds指向的vm_area_struct列表中。通过vm_next_sharedvm_prev_shared把它们连在一起。

    共享内存的基本函数

     int shmget(key_t key,int size,int shmflg);建立新的共享内存或一个已存在的共享内存描述字

    void *shmat(int shmid,const void *shmaddr,int shmflg);将物理共享内存粘附到进程虚拟地址空间

    int shmdt(const void *shmaddr);进程从其虚拟地址空间分离共享内存

    int shmctl(int shmid,int cmd,struct shmid_ds *buf);查询及设置一个共享内存

    共享内存机制的实现

    在使用一个共享内存之前我们调用shmat得到共享内存的开始地址,使用结束以后我们使用

    shmdt断开这个内存。

    进程通过系统调用粘附到虚拟内存,即创建了一个新的描述这块共享内存的vm_area_struct数据结构,这个新的vm_area_struct结构放在由shmid_ds指向的vm_area_struct列表中。通过vm_next_sharedvm_prev_shared把它们连在一起。

    虚拟内存在粘附的时候其实并没有创建,而发生在第一个进程试图访问它的时候。

    第一个访问共享内存页的进程使得这一页被创建,而随后访问的其他进程使得此页被加到它们的虚拟地址空间。

    当进程不再需要共享虚拟内存的时候,它们从中分离出来。只要仍旧有其他进程在使用这块内存,这种分离只是影响当前的进程。

    当共享这块内存的最后一个进程从中分离出的时候,共享内存当前在物理内存中的页被释放

    消息队列 消息队列是比较高级的一种进程间通信方法,实现一个或多个进程间message传送,一个消息队列可以被多个进程所共享(IPC就是在这个基础上进行的);如果一个进程的消息太多一个消息队列放不下,也可以用多于一个的消息队列(不过可能管理会比较复杂)。

    消息队列的基本函数

    int msgget(key_t key, int msgflg);获取一个存在的消息队列的ID,或者是根据跟定的权限创建一个消息队列。

    int msgctl(int msqid, int cmd, struct msqid_ds *buf);用来从msqid_ds中获取很多消息队列本身的信息。

    int msgsnd(int msqid, void *msgp, size_t msgsz, int msgflg);用于向队列发送消息。

    int msgrcv(int msqid, void *msgp, size_t msgsz, long int msgtyp, intmsgflg) 从队列中接收消息。

    消息队列的实现机制

    消息队列,是一个队列的结构,队列里面的内容由用户进程自己定义。实际上,队列里面记录的是指向用户自定义结构的指针和结构的大小。要使用message queue,首先要通过系统调用(msgget)产生一个队列,然后,进程可以用msgsnd发送消息到这个队列,消息就是如上所说的结构。别的进程用msgrcv读取。消息队列一旦产生,除非明确的删除(某个有权限的进程或者用ipcrm命令)或者系统重启。否则,产生的队列会一直保留在系统中。而且,只要有权限,就可以对队列进行操作。消息队列和管道很相似,实际上,管道就是用户消息为1个字节的队列。

    消息队列的写进程

    每一次一个进程试图向写队列写消息,它的有效用户和组的标识符就要和队列的ipc_perm数据结构的模式比较。如果进程可以想这个队列写,则消息会从进程的地址空间写到msg数据结构,放到消息队列的最后。每一个消息都带有进程间约定的,应用程序指定类型的标记。

    消息队列的读进程

     从队列中读是一个相似的过程。进程的访问权限一样被检查。一个读进程可以选择是不管消息的类型从队列中读取第一条消息还是选择特殊类型的消息。如果没有符合条件的消息,读进程会被加到消息队列的读等待进程,然后运行调度程序。当一个新的消息写到队列的时候,这个进程会被唤醒,继续运行。

    消息队列的简单流程

    发送进程                              接收流程

    Send(m)                               Receive(m )

        Begin                                  begin

        向系统申请一个消息缓冲区               P(SM)  等待接的消息的个数

        P(mutex)  使用公用缓冲区                P(mutex)  使用公用缓冲区

        将发送区消息m送入新申请的消息缓冲区   摘下消息队列中的消息m

        把消息缓冲区挂入接收进程的消息队列      将消息队列m从缓冲区复制到接收区

        V(mutex) 释放缓冲区                     释放缓冲区

        V(SM) 向接收进程发送消息               V(mutex)  释放公用缓冲区

        End                                      end

    Socket

     独立于具体协议的网络编程接口;

    ISO模型中,主要位于会话层和传输层。

    网络编程接口:UNIX BSD的套接字(socket)、UNIX System VTLI

    BSD Socket(伯克立套接字)是通过标准的UNIX文件描述符和其它程序通讯的一个方法,目前已经被广泛移植到各个平台。

    Socket的类型

     流式套接字:提供了一个面向连接,可靠的数据传输服务,数据无差错,无重复地发送且按发送顺序接收.内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制,FTP即用此

    数据报套接字:提供了一个无连接服务.数据包以独立包形式被发送,不提供无差错保证,数据可能丢失或重复,并且接受顺序无序,网络文件系统NFS

    原始套接字(SOCK_RAW):该接口允许对较低层次协议,如IP,ICMP直接访问

    基本套接字调用

    创建套接字                socket()

    绑定本机端口            bind()

    建立连接                    connect()

    接受连接                    accept()

    监听端口                    listen()

    数据传输                    send(), recv()

    关闭套接字                close();

    Socket相关数据结构

    struct sockaddr_in

               {

                       short int          sin_family;     /*通信类型*/

                       unsigned short int  sin_port;        /*端口号,网络直接顺序*/

                       struct in_addr   查看(759) 评论(1) 收藏 分享 管理

  • 关于cable modem不能上线的几种状态及调试方法

    2009-02-11 12:16:39

     

          1. cable modem上电后没有任何反映,不能显示所处状态init(rc)

    show cable modem 上没有看到该CM,说明CM还没成功向CMTS发过ranging 消息,此时可能存在2中情况:

             1CM没有锁定下行(CM下行的指示灯不停闪烁),其可能原因:

             a.功率不对,

              解决办法:尝试调整下行功率,如CASA-2200(config-if-qam 0/0)#power 550

             b.支持的标准不对,例如有些CM只能支持Annex B(casa3.01.0cm)而下行信道配置的为Annex A

     解决办法:试将annex A 改为annex B,注:最好在一个MAC domain里面包含2种标准的下行信道。

            c.如果有条件可以接上串口或者网线查看CM的状态以帮助诊断

    解决办法:在cable modem 上接上串口连pc,然后重启cable modem进行观察(没有实践过)

            d.线路问题,

             解决办法:检查物理连接,线是否没有拧紧,最好是能有检测信号的工具。

           e:是否在mac domain没有配置下行,且下行channel没有打开

             解决办法:在mac domain中添加下行channel,并且将channel 打开,no shutdown

    F: 频点是否冲突+每个频点间跨度太大或太小

    解决办法:每个channel的频点不应该相同,且每个频点的差距应在一个范围内…..

     

     2CM已经锁定下行,但上行没有锁定

    a.上行功率不对,

    解决办法:CM的发送功率一般在20db-50db之间,调整CMCMTS之间的衰减,使得CMTS能接收到信号。

    b.UCD消息不正确,

    解决办法:这一般是由上行信道的profile没争取设置,可尝试使用CMTS中默认已写入的profileprofile 1-5),最佳貌似profile 2

      注:3.0cable modem如果做了绑定,则每个上行channelprofile均要一致,并且channel-witdh也要一致

    c: 线路问题+是否在mac domain中没有配置上行,且上行channel没有打开+频点是否冲突+每个频点间跨度太大或太小

    解决办法:参考下行没有锁定的解决办法

     

    2. CM initr2-offline

    Initr2)状态说明CM正在做ranging,正常情况下,CM完成ranging后会转为rc状态,如果CMr2-offline,说明ranging不成功,ranging不成功可能有如下的原因:

    A.功率调整不对:CM不能调整到CMTS期待的功率范围。

    注:CMTS能接受的功率范围为: -powerAdjustmentpowerlevel-rxpwrpowerAdjustment

    powerAdjustment:指上行信道的power-adjustment continue 参数;

    powerlevel     :指上行信道的power-level 参数;

    rxpwr         :指 show cable modem”的RxPwrdb)参数。

    解决办法:如果CM不能调整到这个范围可以尝试增加或减少CMTSCM之间的衰减值,也可以尝试将信道的power-level调整。诊断方法:不停执行show cable modem命令,观察RxPwr值的变化。

    B.       时间调整不对:这种情况发生的概率比较少,可以观察 show cable modem Timing Offset 参数,如果出现很异常的值,例如5592405,则可能CMTSCM行为不正常,

    解决办法:出现过一次,找老大解决的,

    C.       频率调整不对:这种情况发生的概率也很少,如果有可能可以观察CM稍描过的频点,以帮助诊断问题。注:Annex A的频点是跳跃性的,不能随便设置,(但是具体怎么跳跃?),目前可以确定553M可用。

    解决办法:此现象暂没有遇到过

    3. CM停在initrc)状态

    Cm停在rc状态表明CM已经完成ranging,接下来开始IP initialization,如果CM停在这个状态表明CM没有成功获得IP地址,可以做如下的检查:

    1.   检查CMTS MAC Domain是否正确配置cable-helper ip address

    解决办法:在MAC Domain下正确配置dhcpip, 并能从CMTS ping 得通该cable-helper地址 ,如果不可以拼通,考虑:路由问题,或抓下包

    2.   检查DHCP服务是否已经开启,是否正确配置了地址池。

    解决办法:打开dhcp服务器,并添加一条路由:如 route add –net  10.160.1.0/24 gw 192.168.3.160

    3.   检查DHCP服务器是否正确配置了路由,

    解决办法:在DHCP服务器上能够pingCMTS Mac-Domain 的地址,表明路由无误。

    4.   如果上面都确认无误,在DHCP 服务器上可以尝试dump dhcp消息:命令为:

    解决办法:抓包:tcpdump -i any net CM_subnet 来查看DHCP服务器是否收到请求及分配了地址

    5.          网线是否接好,这是最容易忽略的

    解决办法:检查网线

    4.CM 停在initi

    Initi)表示CM已经拿到了IP 地址,接下来开始通过tftp获得CM的配置文件,如果CM停在这个状态可以考虑:

    1.   DHCP reply中是否已经包含了正确的TFTP服务器的地址CM配置文件名。

    解决办法:检查该cable modem TFTP服务器的地址是否正确(还没有遇到过),所用的配置文件名是否正确,

    2.   CM配置文件中是否存在某些参数CM并不支持或缺少某些必需的参数,例如1.0CM必须包含COS TLV不能使用1.1的配置文件。

    解决办法:对照配置文件书写规范进行检查

    3.   可以在TFTP 服务器上抓报确认TFTP服务器是否收到请求以及是否正确应答了。

    5.CM 停在inito

    Inito)和initi)的差别在于inito)表示CMTS 充当了TFTP ProxyCM通过将向CMTS请求配置文件,由CMTS再向TFTP server请求文件。CM停在这个状态可以抓包。如果还不能诊断出问题,可以先关闭TFTP Proxy功能,相关命令为:

    CASA-C2100(conf-if-mac 1)#no tftp-proxy

    6.CM 停在initr

    Initr)表示CM开始注册,CM能到这个状态而最终没有上线可能是CMTS拒绝CM的注册,拒绝的原因如果有条件可以从CM端查看或者能抓下CMTS的注册响应消息。CMTS拒绝的大部分原因是CM给的配置文件存在必须给出的TLV没有出现或者不正确。

    对于3.0CM的注册,目前TI CM停在此状态很可能是分配给CM的所有channel中,存在一个或多个channel不能ranging或者不能锁定。对于TI 3.0 CM,还应该保证分配的所有上行channelprofile一致。

    7.CM 停在init(e)

      该状态的具体含义不是很清楚,貌似是eae,

    解决办法:1.先操作:CASA-C2200(conf-if-mac 1)#no early-authentication-encryption,使cable modem通过常规步骤上线,予以进行诊断

  • 关于L2VPN培训的学习心得

    2009-02-11 12:15:16

    名称术语

    L2:即位于tcp/ip协议的第二层(数据链接层),包含mac 地址,交换机(switch),主要改变的是以太网头的内容

    L3:即位于tcp/ip协议的第三层(网路层),包含ip地址,路由器

    VLAN: 通过公用网络将异地的网点互联,为用户提供私有网络服务,如:两公司之间的私有链接

          作用:安全

    实现方式:是在公网上建立某种形式的链路作为隧道,进行异地网点互联

    主要功能:隧道技术:在发送报文时,在两端加mac头,收到报文后,去掉mac头进行传输

    数据保密:如cable modem进行bpi加密

             MPIS:多协议标签,即在报文中加上标签

    L2VPN协议:

            不同VPN有隔离,不能看到相关报文

            例如:1.实验室中有3CMTS,每个CMTS连接普通CMvpn1vpn2vpn3

                  2.vpn2vpn1在同一用户组,vpn2vpn3不在同一用户组

            则:vpn1vpn2的资源可以共享,与vpn3的资源不可以共享

    CMTS识别不同的vlan

    1.L2VPN Capability:如果该参数为1,则表示支持L2VPN,如果为0或其他,则表示不支持L2VPN

     VPN Identifier:VPN的名字

     802.1q:表示L2VPN的协议

    CM Interface Mask (CMIM) Subtypecable modem带有N个接口,该参数可以确定L2VPN从哪些接口发出

    P2P forward:表示一个cable modem从哪一个gige转发

    multipoint forward :(本公司用此模式)

    L2VPN SAID Subtype:加密信息的索引

    (注:以上为配置文件中:cable modem通过L2VPN的必要配置)

    不同参数放置地方的不同含义:

         参数有VPN IdentifierP2P forwardmultipoint forwardL2VPN SAID Subtype

    1.      top:放在最顶层,即配置基本参数

    2.      upstream classifier符合该上行的数据,则通过L2VPN传输

    3.      downsteam classifier:符合该下行的数据,则通过L2VPN传输

    4.      Upstream Service Flow:符合该上行流的数据,则通过L2VPN传输

    Cable modem通过CMTS注册:

         1.配置文件必须含有VPN IdentifierP2P forwardmultipoint forwardL2VPN SAID Subtype等(本公司用)

    2.cable modem必须做BPI加密技术

    报文发送的原理:

         Cpe将报文发送给CMCM将报文转发给CMTSCMTS收到报文后根据配置文件L2VPN参数中提供的信息区分报文是否属于vpn及相应的VPNID,最后CMTS将报文发送到相应的目的地址(如果发向gige口需要打上802.1q tag

    报文接收的原理:

    gige收到报文后,根据VLAN ID 及目的mac地址找到CM,去除802.1q tag后,将报文发送给CMCM再将报文转发给CPE

     

     

     

    报文格式:

    Mac 头部:以太网

    目标MAC地址(6字节)+MAC地址6字节)+类型(2字节)+数据(46-1500字节)+FCS(4字节)

    802.1q

    目标MAC地址(6字节)+MAC地址(6字节)+TPID(2字节)+TCI(2字节)+类型(2字节)+数据(46-1500字节)+FCS(4字节)

    注:

    TPID:值为8100hex)。当帧中的 EtherType 也为8100时,该帧传送标签 IEEE 802.1Q/802.1P

    TCI:标签控制信息字段,包括用户优先级(User Priority)、规范格式指示器(Canonical Format Indicator)和 VLAN ID,

    User Priority:定义用户优先级 3bit

    CFI:以太网交换机中,规范格式指示器总被设置为0

    VIDVLAN ID 是对 VLAN 的识别字段。该字段为12位。

    CMTS的配置方法:

      (config)#interface vlan 300

     (conf-if-vlan 300)#gige 0   (表示从gige 0转发)

     (config)#show interface vlan

                  interface vlan 300

                  gige 0

                  no ip igmp

    CMTS调试命令:

    (config)#show qos ds cm qam 2 ip address 114可观察一些信息

    bcm_diag: g v vlanid

    /tftpboot# bcm_diag

        bcmDiag> g v 1000

         vlan 1000, pmap 0x101, umap 0x0

       如果pmap0x101,则表示L2VPN可以使用,如果为0x10+其他数字,则L2VPN不能使用

    MIBdocsL2vpnMIB 新版本支持MIB可以查看vlanidvpn ID的对应关系查看在VLAN中的CPE

    L2VPN与普通cable modem配置文件不同的是,必须含有类似如下内容:

       DOCSISExtField

            {

               VendorIdentifier 0xffffff;

               L2VPNEncoding

               {

                 VPNIdentifier 0x0234560001;

                 NSIEncap

                 {

                   IEEE8021Q 0x012c;

                 }

                }

            }

    注意一个配置文件中可以含有多个DOCSISExtField配置的内容(如上述),,如果cable modem即可走L2VPN或不走L2VPN,则可以通过配置多个server flower来配(具体不知)

    实验室应用:

    1.CMTS上配置配置一个vlan interface方法见上

    2.CM配置文件使用带有L2VPN的配置文件

    3.Switch上的配置(拓扑结构)

    1.CMTS的接入用作vlan端口 1(用于cable modem注册等)和在同一个lan的普通端口2(主要用于dhcp解析)配置成为一个vlan,为端口2vlanvlanidCMTS的配置保持一致端口 1gige 0连接,用于转发

    2.交换机上CMTS相接的端口1出口规则是加tag如果规则是不修改其他不支持tag的出口为普通端口2出口规则是去tag入口规则是加tag加的tag vlanidCMTS上配置的一致。

        4.每个cpe后接1PC

       注意:打了tag的才可以通过L2VPN接收数据

    应用举例:

    在同一个modemVpn的数据和普通的数据都可以传输,则 modem后面接了2cpe,一种是机顶盒(vpn工作2层),另外一只是PC(工作在3层)。

    解决方法:通过SF来区分:即用L2VPN用一个serverflow,不用L2VPN的使用另一个serverflow

  • 转:嵌入式系统测试方法研究

    2009-01-16 14:45:46

      前言

      软硬件结合的嵌入式系统正越来越多的应用到我们的日常生活中,参予嵌入式系统的研究和开发的开发商也越来越多,从而第三方测试人员会经常接触到嵌入式系统测试。因此需要第三方测试人员了解嵌入式系统的特性,把握其测试方法。虽然现在有不少与嵌入式系统测试相关的资料,但这些资料都是以第二方测试的角度去讨论的,如何从第二方的测试经验中提取有用经验,结合第三方测试特点,研究出适合第三方测试使用的嵌入式系统测试方法,正是这一课题的意义所在。

      一、嵌入式系统介绍

      嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。

      嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。

      嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般就具备以下4个特点:

      ◆ 对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。

      ◆ 具有功能很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。

      ◆ 可扩展的处理器结构,以能最迅速地开展出满足应的最高性能的嵌入式微处理器。

      ◆ 嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,如需要功耗只有mW甚至μW级。

      嵌入式计算机系统同通用型计算机系统相比具有以下特点:

      ◆ 高可靠性——可靠性主要有两个方面含义:a)硬件本身要连续稳定运行;b)系统检查出故障后要有保持安全状态的能力。虽然硬件抗干扰技术可在一定程度上提高嵌入式系统的可靠性,但是系统的可靠性仍然决定着嵌入式系统的安全运行。

      ◆ 实时性——实时性指系统对响应时间的严格要求,指能在确定的时间内执行其功能,能对外部的异步事件做出快速正确的响应。它分为硬实时和软实时两种,前者意味着存在必须满足的时间限定,在不满足响应时限、响应不及时或响应过早得情况下都会导致灾难性的后果;后者则表示时限并非那么严格,偶尔超过时限限制是可以容忍的,只是导致系统性能退化,不会造成灾难性后果。

      ◆ 嵌入式系统通常是面向特定应用的,嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。

      ◆ 嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。

      ◆ 嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力

      ◆ 嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。

      ◆ 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。

      ◆ 嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。

      二、嵌入式系统测试

      嵌入式系统测试/嵌入式测试或叫交叉测试(cross-test)的目的与非嵌入式软件是相同的,都是为了查找软件潜在的缺陷。但在嵌入式系统设计中,软件正越来越多地取代硬件,以降低系统的成本,获得更大的灵活性,这就需要使用更好的测试方法和工具进行嵌入式和实时软件的测试。

      针对嵌入式系统的测试种类有:模块测试、集成测试、系统测试、硬件/软件集成测试,验收和确认测试。

      作为第三方测试,我们重点关注系统验收测试和确认测试。

      ……………………

    查看全文请点击下载:http://www.51testing.com/html/200901/n101614.html

471/3123>