精华内容
下载资源
问答
  • 嵌入式开发概述 由嵌入式本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别,嵌入式的开发分为系统总体开发,嵌入式硬件开发,嵌入式系统软件开发3大部分 在系统总体开发中,由于嵌入式系统与硬件...

    嵌入式开发概述

    由嵌入式本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别,嵌入式的开发分为系统总体开发,嵌入式硬件开发,嵌入式系统软件开发3大部分

    在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,新词需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择,往往通过硬件实现会增加产品的成品,但是能够大大提高产品的行了电脑和可靠性

     

    在系统总体开发,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能够通过特定的硬件才能实现,需要进行处理器选型,以满足产品的需求

    开发环境的选择对于嵌入式系统的开发也有很大的影响,这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择

    对开发成本和进度箱子比较大的产品可以选择嵌入式linux系统,对实时性要求比较高的产品可以选择Vxworks

    嵌入式开发分为  嵌入式硬件开发 和嵌入式软件开发,这里主要介绍软件开发流程

    嵌入式软件开发概述

    嵌入式软件开发概述:软件开发流程,它同计算机软件开发流程一样,分为需求分析,软件概要设计,软件详细设计,软件实现,软件测试,其中嵌入式软件需求分析和硬件的需求分析合二为一,故没有分开画出

    嵌入式开发工具简介:

    需求分析阶段:IBM的Rational Rose 

    程序开发阶段:Codewarrior

    调试阶段:Multi-ICE

     

    交叉编译:嵌入式软件开发采用的编译时交叉编译,所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码,编译的最主要的工作就是将程序转化成运行该程序的cpu能够是别的机器码,由于不同的体系结果给有不同的指令系统,因此,不同的cpu需要有相应的编译器

     

    交叉编译就像翻译一样,把相同的程序代码翻译成不同cpu的对应可执行的二进制文件,要注意的是,编译器本身也是程序,也要在与之相对应的某个cpu平台上运行

    这里进行交叉编译的足迹称为宿主机,也就是普通的通用pc机,而将程序实际的运行环境称为目标机,也就是嵌入式系统环境,由于一般通用计算机拥有非常丰富的系统资源,使用方便集成的开发环境和调试工具,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要借助宿主机来编译出目标机的可执行代码

    由于编译的过程包括编译链接几个阶段,因此,嵌入式的交叉编译也包括交叉编译和交叉链接等过程,通常ARM的交叉编译器为arm-elf-gcc ,arm-linux-gcc等,交叉链接器为arm-elf-ld,arm-linux-ld等

     

    交叉调试

    嵌入式软件经过编译和连接后即可进入调试阶段,调试是软件开发过程中一个必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发的调试有很大的区别,在常见的软件开发过程中,调试器和被调试的程序往往运行在同一台计算机上,调试器是一个单独运行的进程,他通过操作系统提供的调试接口来控制被调试的进程。

    而在嵌入式的软件开发中,调试时采用的事在宿主机和目标机上进行交叉调试,调试器仍然运行在宿主机的通用操作系统上,但被调试的进程确实运行在基于特定硬件平台的嵌入式系统中,调试器和被调试的进程通过串口或者是网络进行通信,调试器可以控制,范围被调试的进程,读取北条司的进程的当前状态,并能够改变被调试进程的运行状态

     

    嵌入式系统的交叉调试有很多种方法,可以分为软件方式 和 硬件方式

    特点;1:调试器和被调试的进程运行在不同的机器上,调试器运行在pc机(宿主机),被调试的进程则运行在各种专业的目标板上

       2:调试器通过某种通信方式(串口,并口你,网络,JTAG等)控制被调试的进程

       3:在目标机上一般会具备某些形式的调试代理,他负责与调试器共同配合完成对目标机上运行者的进程的调试,这种调试代理可能是某些支持调试功能的硬件设备,也可能是某些专门的调试软件(gdbserver)

       4:目标机可能是某种形式的系统仿真器,通过在宿主机上运行目标机的仿真软件,整个调试过程可以在一台计算机上运行,此时,物理上虽然只有一台计算机,但是逻辑上仍然存在着宿主机和目标机的区别

     

    软件调试的方式:
      软件调试主要通过插入调试桩的方式来进行的,调试桩方式进行调试是通过目标操作系统和调试器内分别加入某些功能模块,二者进行信息来进行调试,该方式典型的调试器有gdb调试器

    gdb的交叉调试器分为gdbserver,和gdbclient,其中gdbserver就作为调试桩安装在目标板上,gdbclient就是驻于本地的gdb调试器,他们的调试原理如同所示

    gdb 调试的工作流程

      1:建立调试器(本地gdb)与目标操作系统的通信连接,可通过串口,网卡,并口等多种方式

      2:然后,在目标机上开启gdbserver进程,并监听对应端口

      3:在宿主机上运行调试器gdb,这时gdb就会自动寻找远端的通信进程也就是gdbserver的所在进程。

      4:在宿主机上的gdb通过gdbserver请求对目标机上的程序发出控制命令,这时,gdbserver将请求转化俄日程序的地址空间,或目标平台的某些寄存器的访问,这对于没有虚拟存储器的简单的嵌入式操作系统而言是十分容易的

      5:gdbserver把目标操作系统的所有的异常处理转向为通信模块,并告知宿主机上gdb当前有异常

      6:宿主机上的gdb向用户显示被调试程序产生了哪一类异常

    小结:

      软件的调试实质上是用软件接管目标机的全部异常处理以及部分中断处理,并在其中插入调试端口通信模块,与主机的调试器进行交互,但是他只能在目标机系统初始化完毕,调试端口初始化完毕才能起作用,因此,一般只能用于调试运行于目标操作系统之上的应用程序,而不宜用来调试目标操作系统的内核代码以及启动代码,而且,他必须改变目标操作系统,因此,也就多了一个不用于正式发布的调试版

     

    硬件调试

      相对于软件调试而言,使用硬件调试器可以获得更强大的调试功能和更优调试性能,硬件调试器的基本原理是通过仿真硬件的执行过程,让开发者在调试时可以随时了解到系统的当前执行状态,目前,嵌入式系统开发中最常用到的硬件调试器是ROMmonitor,ROmEmulator ,In-CircuitEmulator,In-CircuitDebugger

    几种常见的硬件调试方式简介

    ROMMonitor:在宿主机上运行ROM监视器和被调试程序,在宿主机上运行ROM监视器和被调试程序,宿主机通过调试器与目标机上的ROM监视器遵循远程调试协议,建立通信连接,ROM监视器可以是一段运行在目标机上ROM上的可执行程序,也可以是一个专门的硬件调试设备,他负责监控目标机上被调试的程序的运行情况,能够与宿主机端的调试器一同完成对应用程序的调试

    使用这种调试方式,被调试的程序首先通过ROM监视器下载到目标机,然后在ROM监视器的监控下完成调试

    优点:ROM监视器功能强大,能够完成设置断点,单步执行,查看寄存器,修改内存空间等各项调试功能

    《调试这一块还没有用到,以后再来完善,毕竟硬件调试对于学生来说,设备没有,经验没有,要到专门的工厂才能完成》

    版权所有,转载请标明链接地址http://www.cnblogs.com/fengdashen

    展开全文
  • AOP概述

    2021-03-27 17:29:03
    AOP概述 AOP(Aspect Orient Programming),面向切面编程。面向切面编程时从动态角度考虑程序运行过程。 AOP底层,就是采用动态代理模式实现的,采用了两种代理:JDK的动态代理,与CGLIB的动态代理。 AOP为Aspect ...

    AOP概述

    AOP(Aspect Orient Programming),面向切面编程。面向切面编程时从动态角度考虑程序运行过程。
    AOP底层,就是采用动态代理模式实现的,采用了两种代理:JDK的动态代理,与CGLIB的动态代理。

    AOP为Aspect OrientProgramming的缩写,意为:面向切面编程,可通过运行期动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发效率。

    面向切面编程,就是将交叉业务逻辑封装成切面,利用AOP容器的共嗯那个将切面织入到主业务逻辑中。所谓交叉业务逻辑是指,通用的,与主页午逻辑无关的代码,如安全检查、事务、日志、缓存等。

    若不使用AOP,则会出现代码纠缠,即交叉业务逻辑与主业务逻辑混合在一起。这样,会使主业务逻辑编程混杂不清。

    例如,转账,在真正转账业务逻辑前后,需要权限控制、日志记录、加载事务、结束事务等交叉业务逻辑,而这些业务逻辑与主业务逻辑间并无直接关系。但,它们的代码量占比重能达到总代码量的一半甚至还多。它们的存在,不仅产生了大量的“冗余”代码,还大大干扰了主业务逻辑----转账

    AOP(Aspect Orient Programming)面向切面编程

    Aspect:切面,给你的目标类增加的功能,就是切面。像上面用的日志,事务都是切面。
    Orient:面向,对着
    Programming:编程

    OOP:面向对象编程

    怎么理解面向切面编程?

    (1)需要在分析项目功能时,找出切面。
    (2)合理的安排切面的执行时间(在目标方法前,还是目标方法后)
    (3)合理的安全切面执行的位置,在哪个类,哪个方法增加增强功能

    术语:

    (1)Aspect:切面泛指交叉业务逻辑。上例中的事务处理、日志处理就可以理解为切面。常用的切面是通知(Advice)。实际就是对主业务逻辑的一种增强。
    (2)JoinPoint:连接点。指可以被切面织入的具体方法。通常业务接口中的方法均为连接点。
    (3)Pointcut:切入点。指声明的一个或多个连接点的集合。通过切入点指定一组方法。被标记为final的方法是不能作为连接点与切入点的。因为最终的是不能被修改的,不能被增强的。
    (4)目标对象:给哪个类的方法增加功能,这个类就是目标对象
    (5)Advice:通知,通知表示切面功能执行的时间

    aop的实现

    aop是一个规范,时动态的一个规范化,一个标准 aop的技术实现框架

    1.spring

    1.spring在内部实现了aop规范,能做aop的工作
    2.spring主要在事务处理时使用aop
    3.我们项目开发中很少使用spring的aop实现。因为spring的aop比较笨重

    2.aspectj:一个开源的专门做aop的框架,spring框架中集成了aspectj框架,通过spring就能使用aspectj的功能

    aspectj框架实现aop有两种方式:
    1.使用xml的配置文件:配置全局事务
    2.使用注解,我们在项目中要做aop功能,一般都使用注解,aspectj有5个注解

    aspectj框架的使用

    1.切面的执行时间,也叫切面的通知(Advice)类型

    在aspectj框架中使用注解表示的,也可以使用xml配置文件中的标签
    1)@Before :切入点前执行的代码
    2)@AfterReturning:后置通知
    3)@Around:环绕通知
    4)@AfterThrowing:抛出异常后进行异常处理的代码
    5)@After:切入点后执行的代码
    以上5个表示切面的执行时间

    2.切面的执行位置,使用的是切入点表达式

    Aspectj定义了专门的表达式用于指定切入点。表达式的原型是:
    execution(modifier-pattern? ret-type-pattern
    declaring-type-pattern?name-pattern(param-pattern)
    throw-pattern?)
    解释:
    modifier-pattern: 访问权限类型
    ret-type-pattern:返回值类型
    declaring-type-pattern?name-pattern(param-pattern):类路径+方法名(参数类型和参数个数)
    throw-pattern:抛出异常类型
    ?:表示可选的部分
    以上表达式共4个部分
    execution(访问权限 方法返回值 方法声明(参数) 异常类型)
    红色字体为必须要有的对象
    切入点表达式要匹配的对象就是目标方法的方法名。所以,execution表达式中明显就是方法的签名。注意:表达式中黑色文字表示可省略部分,各部分间用空格分开。在其中可以使用以下符号:

    符号      意义
     *    0至多个任意字符
     ..   用在方法参数中,表示任意多个参数
    		 用在包名后,表示当前包及其子包路径
     +    用在类名后,表示当前类及其字类
    		 用在接口后,表示当前接口及其实现类
    	
    

    举例:
    exection(public * (…)) :指定切入点为:任意公共方法
    exection(
    set*(…)):指定切入点为:任意一个以“set”开始的方法
    exection(* com.itcast.service..(…)):指定切入点为:包名为service下任意类的任意方法

    3.使用aspectj实现aop的基本步骤:

    1.新建maven项目
    2.加入依赖
    (1)spring依赖
    (2)asceptj依赖
    (3)junit单元测试
    3.创建目标类:接口和它的实现类。要做的是给类中的方法增加功能
    4.创建切面类:普通类
    (1)在类的上面加入@Aspect
    (2)在类中定义方法,方法就是切面要执行的功能代码
    在方法的上面加入aapectj中的通知注解,例如@Before,需要指定切点表达式execution()
    5.创建spring的配置文件:声明对象,把对象交给容器统一管理
    声明对象你可以使用注解,或xml配置文件<bean>
    (1)声明目标对象
    (2)声明切面类对象
    (3)声明aspectj框架中的自动代理生成器标签
    自动代理生成器:用来完成代理对象的自动创建功能的。
    6.创建测试类,从spring容器中获取目标对象(实际就是代理对象)。
    通过代理执行方法,实现aop的功能的增强。

    4.关于切面类的介绍

    在类的上面加入@Aspect
    @Aspect:是aspectj框架中的注解
    作用:表示当前类是切面类
    切面类:是用来给业务方法增加功能的类,在这个类中有切面的功能代码
    位置:在类定义的上面

    5.关于方法上面使用注解的介绍

    (1)@Before:前置通知注解
    属性:value,是切入点表达式,表示切面的功能执行的位置。
    位置:在方法的上面
    特点:
    1.在目标方法之前先执行
    2.不会改变目标方法的执行结果
    3.不会影响目标方法的执行

    (2)@AfterReturning:后置通知
    属性:returning,用于指定接收方法返回值的变量名
    value,是切入点表达式,表示切面的功能执行的位置。
    位置:在方法的上面
    特点:
    1.由于是目标方法之后执行,所以可以获取到目标方法的返回值
    2.该注解的returning属性就是用于指定接收方法返回值的变量名的。所以,被注解为后置通知的方法,除了可以包含JoinPoint参数外,还可以包含用于接收返回值的变量。该变量最好为Object类型,因为目标方法的返回值可能是任何类型

    (3)@Around:环绕通知
    属性:value切入点表达式
    位置:在方法的定义什么
    特点:
    1.它是功能最强的通知
    2.在目标方法的前和后都能增强功能
    3.控制目标方法是否被调用执行
    4.修改原来的目标方法的执行结果。影响最后的调用结果
    环绕通知,等同于jdk动态代理的InvocationHandler接口
    参数:ProceedingJoinPoint就等同于Method
    作用:执行目标方法的
    返回值:就是目标方法的执行结果,可以被修改

    环绕通知方法的定义格式
    1.public
    2.必须有一个返回值,推荐使用Object
    3.方法名称自定义
    4.方法有参数,固定的参数ProceedingJoinPoint

    @Aspect
    public class Aspect6 {
        /**@Around
         * 1.它是功能最强的通知
         * 2.在目标方法的前和后都能增强功能
         * 3.控制目标方法是否被调用执行
         * 4.修改原来的目标方法的执行结果。影响最后的调用结果
         *
         * 环绕通知,等同于jdk动态代理的InvocationHandler接口
         * 参数:ProceedingJoinPoint:等同于Method
         *      作用:执行目标方法的
         * 返回值:就是目标方法的执行结果,可以被修改。
         *
         * 环绕通知:经常做事务,在目标方法之前开启事务,执行目标方法,在目标方法之后提交事务
         * @param point
         * @return
         * @throws Throwable
         */
        @Around(value = "execution(* com.itcast.aop6.HumanImpl.getUp(..))")
        public Object Aspect6(ProceedingJoinPoint point) throws Throwable {
            System.out.println("前置环绕执行。。。");
            Object[] args = point.getArgs();
            if (args!=null && args.length>1){
                if (args[0].equals("zhangsan")){
                    Object proceed = point.proceed();
                }
            }
            System.out.println("后置环绕执行。。。");
            return null;
        }
    }
    

    环绕通知:经常做事务,在目标方法之前开启事务,执行目标方法,在目标方法之后提交事务
    事务概念(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

    (4) @AfterThrowing:异常通知
    属性:1.value切入点表达式
    2.throwing自定义的变量,表示目标方法抛出的异常对象
    变量名必须和方法的参数名一样
    特点:
    1.在目标方法抛出异常时执行的
    2.可以做异常的监控程序,监控目标方法执行时是不是有异常。
    如果有异常,可以发送邮件,短信进行通知

    /**
     * 声明切面类
     */
    @Aspect
    public class Aspect7 {
    
        //出异常时,方法执行
        @AfterThrowing(value = "execution(* com.itcast.aop7.HumanImpl.byZeroException())",throwing = "e")
        public void testEx(Exception e){
            System.out.println("除数出错"+e.getMessage());
        }
    }
    
    

    (5)@After:最终通知
    属性:value切入点表达式
    位置:在方法的上面
    特点:
    1.总是会执行
    2.在目标方法之后执行的,一般做资源清除工作的。

    @Aspect
    public class Aspect8 {
    
        /**
         * 最终通知方法的定义格式
         * 1.public
         * 2.没有返回值
         * 3.方法名称自定义
         * 4.方法没有参数,如果有就是JoinPoint
         */
        
        /**
         * @After:最终通知。一般做资源清除工作的
         * 属性:value切入点表达式
         * 位置:在犯法的上面
         * 特点:
         * 1.总是会执行
         * 2.在目标方法之后执行的
         */
        @After(value = "execution(* com.itcast.aop8.HumanImpl.byAfter())")
        public void byAfter(){
            System.out.println("执行最终通知,最终都会执行的代码");
        }
    }
    

    (6)@Pointcut:定义和管理切入点
    如果你的项目中有多个切入点表达式是重复的,可以复用的。可以使用@Pointcut
    属性:value切入带你表达式
    位置:在自定义的方法上面
    特点:
    当使用@Pointcut定义在一个方法的上面,此时这个方法的名称就是切入带你表达式的别名。
    其他的通知中,value属性就可以使用这个方法名称,代替切入带你表达式了

    @Aspect
    public class Aspect9 {
        @Before(value = "mypt()")
        public void myBefore(){
            System.out.println("前置通知执行。。。。");
        }
    
        @After(value = "mypt()")
        public void myAfter(){
            System.out.println("后置通知执行。。。。");
        }
    
        @Pointcut(value = "execution(* com.itcast.aop9.HumanImpl.myTarget())")
        public void mypt(){
            System.out.println("前置通知执行。。。。");
        }
    }
    
    

    JoinPoint:指定通知方法中的参数
    位置:在切面方法中
    JoinPoint:业务方法,要加入切面功能的业务方法
    作用:可以通知方法中获取方法执行时的信息,例如方法名称,方法的实参
    如果你的切面功能中需要用到方法的信息,就加入JoinPoint
    这个JoinPoint参数的值是由框架赋予,必须是一个位置的参数

    6.关于spring配置文件的介绍

    <-- 声明目标对象 -->
    <bean id="humanImpl" class="com.itcast.aop3.HumanImpl"></bean>
    
    <-- 声明切面对象 -->
    <bean id="aspect3" class="com.itcast.aop3.Aspect3"></bean>
    
    <-- 声明自动代理生成器:使用aspect框架的内部的功能,创建目标对象的代理对象。创建代理对象是在内存中实现的,修改目标对象的内存中的结构。创建为代理对象,所以目标对象就是被修改后的代理对象
    aspectj-autoproxy:会把spring容器中的所有的目标对象,一次性都生成代理对象
     -->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
    

    7.关于测试切面类的介绍

    public class Test3 {
        @Test
        public void test01(){
        	//加载spring配置文件,获取spring容器
            ApplicationContext ac = new ClassPathXmlApplicationContext("aop3/ApplicationContext.xml");
            //从容器中获取目标对象
            Human humanImpl = (Human)ac.getBean("humanImpl");
            //通过代理对象执行方法,实现目标方法执行时,增强功能
            humanImpl.getUp();
            humanImpl.makeMoney(300);
            humanImpl.shopping(20);
            humanImpl.sleep();
        }
    }
    

    以上代码的执行:spring加载配置文件,通过spring配置文件读取到有两个<bean>标签的对象并放入到spring容器中,走到aspectj-autoproxy:会把spring容器中的所有的目标对象,一次性都生成代理对象。接下来通过<bean>标签中的class为目标类的id值来获取代理目标类对象,然后执行方法 . . . 实现增强。

    8.什么时候考虑使用aop技术

    (1)当要给一个系统中存在的类修改功能,但是原有类的功能不完善,但是还有源代码,使用aop就能增强功能
    (2)要给项目中的多个类,增加一个相同的功能,使用aop
    (3)给业务方法增加事务,日志输出

    9.关于JDK代理和CGLIB的动态代理

    jdk代理目标的类是继承接口的类 CGLIB的动态代理,可以继承接口和不继承几口两种
    1.不继承接口的类实现的AOP属于CGLIB的动态代理
    2.使用接口继承的类实现CGLIB的动态代理,需要在配置文件中添加以下配置proxy-target-class=“true”

    <--   如果你期望目标类有接口,使用cglib代理
    proxy-target-class=“true”:告诉框架,要使用cglib动态代理-->
    <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
    
    展开全文
  • QoS概述

    万次阅读 多人点赞 2018-05-27 08:10:30
    //创建基于Cellular出通道对报文进行分类的匹配规则。 if - match packet - length //创建基于IPv4报文长度进行分类的匹配规则。 if - match protocol { ip | ipv6 } //创建基于协议进行分类的匹配...

    QoS简介

    服务质量QoS(Quality of Service)用于评估服务方满足客户服务需求的能力。通过配置QoS,对企业的网络流量进行调控,避免并管理网络拥塞,减少报文的丢失率,同时也可以为企业用户提供专用带宽或者为不同的业务(语音、视频、数据等)提供差分服务。

    影响网络质量的因素:

    网络带宽:

    网络带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量。

    网络时延:

    ​ 时延是指一个报文从一个网络的一端传送到另一端所需要的时间。

    ​ 实时应用通信质量都比较关注时延大小,如语音、视频等。以语音传输为例,时延是指从说话者开始说话到对方听到所说内容的时间。若时延太大,会引起通话声音不清晰、不连贯或破碎。

    ​ 单个网络设备的时延包括传输时延、串行化时延、处理时延、以及队列时延。

    • 传输时延:一个数据位从发送方到达接收方所需要的时间。该时延取决于传输距离和传输介质,与带宽无关。
    • 串行化时延:指发送节点在传输链路上开始发送报文的第一个比特至发完该报文的最后一个比特所需的时间。该时延取决于链路带宽以及报文大小。
    • 处理时延:指路由器把报文从入接口放到出接口队列需要的时间。它的大小跟路由器的处理性能有关。
    • 队列时延:指报文在队列中等待的时间。它的大小跟队列中报文的大小和数量、带宽以及队列机制有关。

    抖动:

    ​ 由于每个报文的端到端时延不一样,就会导致这些报文不能等间隔到达目的端,这种现象叫做抖动。一般来说,时延越小则时延抖动的范围越小。

    ​ 某些业务类型(特别是语音和视频等实时业务)是极其不能容忍抖动的。报文到达时间的差异将在语音或视频中造成断续;另外,抖动也会影响一些网络协议的处理,有些协议是按固定的时间间隔发送交互性报文,抖动过大就会导致协议震荡,而实际上所有传输系统都有抖动,但只要抖动在规定容差之内就不会影响服务质量,另外,可利用缓存来克服过量的抖动,但这将会增加时延。

    ​ 抖动的大小跟时延的大小直接相关,时延小则抖动的范围也小,时延大则可能抖动的范围也大。

    丢包:

    丢包率是指在网络传输过程中丢失报文占传输报文的百分比。丢包可用于衡量网络的可靠性。

    丢包(packetloss)可能在所有环节中发生,例如:

    • 处理过程:路由器在收到报文的时候可能由于CPU繁忙,无法处理报文而导致丢包;
    • 排队过程:在把报文调度到队列的时候可能由于队列被装满而导致丢包;
    • 传输过程:报文在链路上传输的过程中,可能由于种种原因(如链路故障等)导致的丢包。

    少量的丢包对业务的影响并不大,例如,在语音传输中,丢失一个比特或一个报文的信息,通话双方往往注意不到;在视频广播期间,丢失一个比特或一个报文可能造成屏幕上瞬间的波形干扰,但视频很快就会恢复正常。即使使用传输控制协议(TCP)传送数据也能处理少量的丢包,但大量的丢包就会严重影响到传输效率。

    QoS的功能:

    1. 分组分类器和标记器

      网络边界上的路由器根据TCP/IP分组报头中的一个或多个字段,使用分类器功能来标记识别属于特定通信类的分组,然后用标记器功能标记已被分类的通信,这是通过设置IP优先字段或区分服务代码点(DSCP)字段来实现的。

    2. 通信速率管理

      服务提供商使用控制(policing)功能度量进入网络的客户通信,并将其与客户的通信配置文件(profile)进行比较。同时,接入服务提供商网络的企业可能需要使用通信整形功能 来度量其所有的通信,并以恒定的速率将它们发送出去,以符合服务提供商的控制功能。令牌桶一种常用的通信度量方案。

    3. 资源分配

      先进先出 (FIFO) 调度是一种被当前的 Internet 路由器和交换机所广泛采用的传统排队机制。虽然先进先出调度部署起来很简单,但是在提供 QoS 时有一些基本的问题。它没有提供优先级处理对延迟敏感的通信并将其移至队开头的手段,对所有的通信都完全同等地对待,不存在通信区分或服务区分的概念。

      对于提供QoS的调度算法,至少要能区分队列中的不同分组,并知道每个分组的服务等级。调度算法决定接下来处理队列中的哪一个分组,而流分组获得服务的频度决定了为这个流分配的带宽或资源。

    4. 拥塞避免和分组丢弃策略

      在传统的先进先出排队技术中,队列管理是这样实现的:当队列中的分组数量达到队列的最大长度后,将到达的分组全部丢弃。这种队列管理技术叫做尾部丢弃(tail drop), 它只在队列完全填满时发出拥塞信号。在这种情况下,没有使用积极的队列管理来避免拥塞,也没有减小队列尺寸来使排队延迟最小。积极的队列算法管理使得路由器在队列溢出前就可以检测到拥塞。

    5. QoS信令协议

      SVP 是在 Internet 上提供端到端 QoS 的 IETF Intserv 体系结构的一部分,它使得应用程序可以向网络提出每个流的服务质贯要求。服务参数用来量化这些要求,供管理控制使用。

    6. 交换

      路由器的主要功能是根据转发表中的信息快速、高效地将所有输入通信交换到正确的输 出端口和下一中继段地址。传统的基于缓存的转发机制虽然高效,但是由于 它是由通信驱动 的,所以存在扩展性和性能方面的问题,并且在网络不稳定时会增加缓存维护工作,并降低 交换性能。

      基于拓扑的转发方法通过建立一个与路由器路由表完全相同的转发表,解决了基于缓存的转发机制中存在的问题。

    7. 路由

      传统的路由仅仅基于目的地,并且在最短路径上是根据路由表来路由分组的。对于某些网络情况,这显得不够灵活。策略路由是一种 QoS 功能,它使得用户可以不根据目的地进行路由,而是根据各种用户自己可以配置的分组参数进行路由。
      当前的路由选择协议提供了最短路径路由,它基于量度值(如管理成本、权重或中继段数)来选择路由。分组是根据路由表被传输的,而对流的要求或路由上可用的资源一无所知。 QoS 路由则是一种考虑了流的 QoS 要求的路由选择机制,它在选择路由时,对网络上可用的资源有一定的了解。

    QoS服务模型

    尽力而为的服务模型(Best-Effort):

    • Best-Effort是一个单一的服务模型,也是最简单的服务模型。应用程序可以在任何时候,发出任意数量的报文,而且不需要事先获得批准,也不需要通知网络。
    • 应用Best-Effort服务模型的网络尽最大的可能性来发送报文,但对时延、可靠性等性能不提供任何保证,但它适用于绝大多数网络应用,如FTP、E-Mail等。
    • Best-Effort服务是现在Internet的缺省服务模型,它是通过先入先出(FIFO)队列来实现的。

    在尽力而为的服务模型下,可通过增大网络带宽和升级网络设备来提高端到端通信质量:

    • 增大网络带宽:可以增大单位时间内传输的数据量,使其按照传统先进先出的方式在单位时间内传输更多的数据,改善网络拥塞问题。
    • 升级网络设备:可以增大数据处理能力,使其按照传统先进先出的方式在单位时间内能够处理更多的数据,改善网络拥塞问题。

    综合服务模型(Integrated Services):

    RSVP协议工作过程:在应用程序发送报文前,需要向网络申请特定的带宽和所需的特定服务质量的请求,等收到确认信息后才发送报文。

    综合服务模型(IntegratedServicesModel):

    • IntServ是一种最为复杂的服务模型,它需要用到RSVP(ResourceReservation Protocol)协议。该服务模型在发送报文前,需要向网络申请特定的服务。这个请求是通过信令(signal)来完成的,应用程序首先通知网络它自己的流量参数和所需的特定服务质量的请求,包括带宽、时延等。应用程序一般在收到网络的确认信息后,即认为网络已经为这个应用程序的报文发送预留了资源,然后立即发送报文。
    • IntServ模型要求端到端网络的所有节点都支持RSVP协议,且每个节点都需要周期性地同相邻节点交换状态信息,这样就会加大协议报文导致的开销。更关键的是,所有网络节点都需要为每个数据流保存状态信息,而当前在Internet骨干网上有着成千上万条数据流,因此IntServ模型在Internet骨干网上无法得到广泛应用。

    区分服务模型(DiffServ):

    DiffServ区分服务工作过程:首先将网络中的流量分成多个类,然后为每个类定义相应的处理行为,使其拥有不同的优先转发、丢包率、时延等。

    Diffserv服务模型概述:

    • 业务流分类和标记由边缘路由器来完成。边界路由器可以通过多种条件(比如报文的源地址和目的地址、ToS域中的优先级、协议类型等)灵活地对报文进行分类,然后对不同类型的报文设置不同的标记字段,而其他路由器只需要简单地识别报文中的这些标记,然后对其进行相应的资源分配和流量控制即可。因此,DiffServ是一种基于报文流的QoS模型。
    • 它只包含有限数量的服务等级,少量的状态信息来提供有差别的流量控制和转发。
    • DS节点:实现DiffServ功能的网络节点称为DS节点。
    • DS边界节点:负责连接另一个DS域或者连接一个没有DS功能的域的节点。DS边界节点负责将进入此DS域的业务流进行分类和流量调整。
    • DS内部节点:用于在同一个DS域中连接DS边界节点和其他内部节点。DS内部节点仅需基于报文中的EXP、802.1p、IPP等字段值进行简单的流分类以及对相应的流进行流量控制。
    • DS域(DSDomain):一组采用相同的服务提供策略和实现了相同PHB(PerHop Behaviors)的相连DS节点组成。一个DS域由相同管理部门的一个或多个网络组成,如一个DS域可以是一个ISP,也可以是一个企业的内部网络。

    DiffServ模型充分考虑了IP网络本身所具有的灵活性、可扩展性强等特点,将复杂的服务质量保证通过报文自身携带的信息转换为单跳行为,从而大大减少了信令的工作。该模型是目前应用最广的服务模型。

    三种服务模型的对比:

    优点 缺点
    尽力而为服务模型 实现机制简单 对不同业务流不能进行区分对待
    综合服务模型 可提供端到端QoS服务,并保证带宽、延迟 需要跟踪和记录每个数据流的状态,实现较复杂,且扩展性较差,带宽利用率较低
    区分服务模型 不需跟踪每个数据流状态,资源占用少,扩展性较强; 且能实现对不同业务流提供不同的服务质量 需要在端到端每个节点都进行手工部署,对人员能力要求较高

    MQC简介

    模块化QoS命令行MQC(Modular QoS Command-Line Interface)是指通过将具有某类共同特征的报文划分为一类,并为同一类报文提供相同的服务,也可以对不同类的报文提供不同的服务。

    随着网络中QoS业务的不断丰富,在网络规划时若要实现对不同流量(如不同业务或不同用户)的差分服务,会使部署比较复杂。MQC的出现,使用户能对网络中的流量进行精细化处理,用户可以更加便捷的针对自己的需求对网络中的流量提供不同的服务,完善了网络的服务能力。

    MQC三要素:

    MQC包含三个要素:流分类(traffic classifier)、流行为(traffic behavior)和流策略(traffic policy)。

    • 流分类

      流分类用来定义一组流量匹配规则,以对报文进行分类。

      流分类中各规则之间的关系分为:and或or,缺省情况下的关系为or

    • 流行为

      流行为用来定义针对某类报文所做的动作。

    • 流策略

      流策略用来将指定的流分类和流行为绑定,对分类后的报文执行对应流行为中定义的动作。

      一个流策略可以绑定多个流分类和流行为。

    MQC配置流程:

    1. 配置流分类:按照一定规则对报文进行分类,是提供差分服务的基础。
    2. 配置流行为:为符合流分类规则的报文指定流量控制或资源分配动作。
    3. 配置流策略:将指定的流分类和指定的流行为绑定,形成完整的策略。
    4. 应用流策略:将流策略应用到接口或子接口。

    MQC配置命令行:

    classifier behavior
    //在流策略中为指定的流分类配置所需流行为,即绑定流分类和流行为。
    display traffic behavior
    //查看已配置的流行为信息。
    
    if-match 8021p 8021p-value &<1-8>
    //创建基于VLAN报文的802.1p优先级进行分类的匹配规则。
    if-match acl
    //创建基于ACL进行分类的匹配规则。
    if-match any
    //创建基于所有数据报文进行分类的匹配规则。
    if-match cvlan-8021p 8021p-value &<1-8>
    //创建基于QinQ报文内层802.1p优先级进行分类的匹配规则。
    if-match destination-mac
    //创建基于目的MAC地址进行分类的匹配规则。
    if-match [ ipv6 ] dscp dscp-value &<1-8>
    //创建基于报文DSCP值进行分类的匹配规则。
    if-match fr-de
    //创建基于FR报文中的DE标志位进行分类的匹配规则。
    if-match inbound-interface
    //创建基于入接口对报文进行分类的匹配规则。
    if-match ip-precedence ip-precedence-value &<1-8>
    //创建基于IP优先级进行分类的匹配规则。
    if-match l2-protocol { arp | ip | mpls | rarp | protocol-value }
    //创建基于二层封装的协议字段进行分类的匹配规则。
    if-match mpls-exp exp-value &<1-8>
    //配置基于MPLS报文中的EXP字段进行分类的匹配规则。
    if-match outbound-interface
    //创建基于Cellular出通道口对报文进行分类的匹配规则。
    if-match packet-length
    //创建基于IPv4报文长度进行分类的匹配规则。
    if-match protocol { ip | ipv6 }
    //创建基于协议进行分类的匹配规则。
    if-match qos-group
    //创建基于QoS group索引进行分类的匹配规则。
    if-match source-mac
    //创建基于源MAC地址进行分类的匹配规则。
    if-match tcp syn-flag { ack | fin | psh | rst | syn | urg }*
    //创建基于TCP报文头中的SYN Flag进行分类的匹配规则。
    if-match user-set
    //创建基于用户组进行分类的匹配规则。
    if-match vlan-id
    //创建基于VLAN ID进行分类的匹配规则。
    if-match dlci
    //if-match dlci
    if-match pvc
    //创建基于ATM报文中的PVC信息进行分类的匹配规则。
    ip netstream sampler
    //配置IPv4报文的采样统计功能。
    qos pre-nat
    //使能NAT预分类功能。
    
    remark 8021p 8021p-value
    //标记VLAN报文802.1p优先级的动作。
    remark dscp { dscp-name | dscp-value }
    //标记IP报文的DSCP优先级的动作。
    remark local-precedence
    //创建重标记内部优先级的动作。
    remark cvlan-8021p
    //标记QinQ报文内层802.1p优先级值的动作。
    remark fr-de
    //标记FR报文的DE标志位的动作。
    remark mpls-exp
    //标记MPLS报文中的EXP优先级的动作。
    remark qos-group
    //配置报文所属的QoS group。
    url-filter-profile
    //在流行为中绑定URL过滤模板。
    

    优先级映射概述

    优先级映射用来实现报文携带的QoS优先级与设备内部优先级(又称为本地优先级,是设备内部区分报文服务等级的优先级)之间的转换,从而设备根据内部优先级提供有差别的QoS服务质量。

    用户可以根据网络规划在不同网络中使用不同的QoS优先级字段,例如在VLAN网络中使用802.1p,IP网络中使用DSCP,MPLS网络中使用EXP。当报文经过不同网络时,为了保持报文的优先级,需要在连接不同网络的设备上配置这些优先级字段的映射关系。当设备连接不同网络时,所有进入设备的报文,其外部优先级字段(包括802.1p、DSCP和MPLS EXP)都被映射为内部优先级;设备发出报文时,将内部优先级映射为某种外部优先级字段。

    原理描述:

    不同的报文使用不同的QoS优先级,例如VLAN报文使用802.1p,IP报文使用DSCP,MPLS报文使用EXP。当报文经过不同网络时,为了保持报文的优先级,需要在连接不同网络的网关处配置这些优先级字段的映射关系。

    优先级映射实现从QoS优先级到内部优先级(或者本地优先级)或从内部优先级到QoS优先级的映射,并利用DiffServ域来管理和记录QoS优先级和服务等级之间的映射关系。对于进入设备的报文,设备将报文携带的优先级或者端口优先级映射为内部优先级,然后根据内部优先级与队列之间的映射关系确定报文进入的队列,从而针对队列进行流量整形、拥塞避免、队列调度等处理,并可以根据配置修改报文发送出去时所携带的优先级,以便其他设备根据报文的优先级提供相应的QoS服务。

    QoS优先级字段:

    为了在Internet上针对不同的业务提供有差别的QoS服务质量,人们根据报文头中的某些字段记录QoS信息,从而让网络中的各设备根据此信息提供有差别的服务质量。这些和QoS相关的报文字段包括:

    Precedence字段

    根据RFC791定义,IP报文头ToS(Type of Service)域由8个比特组成,其中3个比特的Precedence字段标识了IP报文的优先级,Precedence在报文中的位置如下图所示:

    在这里插入图片描述

    图:IP Precedenc/DSCP字段

    比特0~2表示Precedence字段,代表报文传输的8个优先级,按照优先级从高到低顺序取值为7、6、5、4、3、2、1和0。最高优先级是7或6,经常是为路由选择或更新网络控制通信保留的,用户级应用仅能使用0~5。

    除了Predecence字段外,ToS域中还包括D、T、R三个比特:

    • D比特表示延迟要求(Delay,0代表正常延迟,1代表低延迟)。
    • T比特表示吞吐量(Throughput,0代表正常吞吐量,1代表高吞吐量)。
    • R比特表示可靠性(Reliability,0代表正常可靠性,1代表高可靠性)。

    DSCP字段

    RFC1349重新定义了IP报文中的ToS域,增加了C比特,表示传输开销(Monetary Cost)。之后,IETF DiffServ工作组在RFC2474中将IPv4报文头ToS域中的比特0~5重新定义为DSCP,并将ToS域改名为DS(Differentiated Service)字节。

    DS字段的前6位(0位~5位)用作区分服务代码点DSCP(DS Code Point),后2位(6位、7位)是保留位。DS字段的前3位(0位~2位)是类选择代码点CSCP(Class Selector Code Point),相同的CSCP值代表一类DSCP。DS节点根据DSCP的值选择相应的PHB(Per-Hop Behavior)。

    lDSCP值有两种表达方式:(PHB)

    • 数字形式:DSCP取值范围为0~63;
    • 关键字表达方式:用关键字标识的DSCP值。

    这里写图片描述

    图:DSCP优先级

    AFxy中,x代表不同的类别,根据不同的分类后续可以定义进入相对应的队列,y代表当队列被装满的时候丢包的概率,例如AF1类中的报文,其中丢包概率由小到大排序为AF11<AF12<AF13。

    不同关键字常用于标识不同报文(可自行定义):

    • CS6和CS7默认用于协议报文,而且是大多数厂商设备的硬件队列里最高优先级的报文,因为如果这些报文无法接收的话会引起协议中断。
    • EF常用于承载语音的流量,因为语音要求低延迟,低抖动,低丢包率,是仅次于协议报文的最重要的报文。
    • AF4用来承载语音的信令流量.
    • AF3可以用来承载IPTV的直播流量,直播的实时性很强,需要连续性和大吞吐量的保证。
    • AF2可以用来承载VOD(Videoon Demand:视频点播)的流量,相对于直播流量来说,VOD对实时性要求没那么强烈,允许有时延或者缓冲。
    • AF1可以用来承载普通上网业务。

    VLAN帧头中的802.1p优先级:

    通常二层设备之间交互VLAN帧。根据IEEE 802.1Q定义,VLAN帧头中的PRI字段(即802.1p优先级),或称CoS(Class of Service)字段,标识了服务质量需求。

    VLAN帧中的PRI字段位置如下图所示:

    这里写图片描述

    图:VLAN帧中的802.1p优先级
    • 在802.1Q头部中包含3比特长的PRI字段。PRI字段定义了8种业务优先级CoS,按照优先级从高到低顺序取值为7、6、5、4、3、2、1和0。

    MPLS EXP字段:

    MPLS报文与普通的IP报文相比增加了标签信息。标签的长度为4个字节,封装结果如下图所示:

    这里写图片描述

    图:MPLS标签的封装格式

    标签共有4个域:

    • Label:20比特,标签值字段,用于转发的指针。
    • EXP:3比特,保留字段,用于扩展,现在通常用做CoS。
    • S:1比特,栈底标识。MPLS支持标签的分层结构,即多重标签,S值为1时表明为最底层标签。
    • TTL:8比特,和IP分组中的TTL(Time To Live)意义相同。

    对于MPLS报文,通常将标签信息中的EXP域作为MPLS报文的CoS域,与IP网络的ToS域等效,用来区分数据流量的服务等级,以支持MPLS网络的DiffServ。EXP字段表示8个传输优先级,按照优先级从高到低顺序取值为7、6、5、4、3、2、1和0。

    • 在IP网络,由IP报文的IP优先级或DSCP标识服务等级。但是对于MPLS网络,由于报文的IP头对LSR(Label Switching Router)设备是不可见的,所以需要在MPLS网络的边缘对MPLS报文的EXP域进行标记。
    • 缺省的情况下,在MPLS网络的边缘,将IP报文的IP优先级直接拷贝到MPLS报文的EXP域;但是在某些情况下,如ISP不信任用户网络、或者ISP定义的差别服务类别不同于用户网络,则可以根据一定的分类策略,依据内部的服务等级重新设置MPLS报文的EXP域,而在MPLS网络转发的过程中保持IP报文的ToS域不变。
    • 在MPLS网络的中间节点,根据MPLS报文的EXP域对报文进行分类,并实现拥塞管理,流量监管或者流量整形等PHB行为。

    DSCP/ IP-Precedence/ 802.1p/ EXP值表:

    这里写图片描述

    图:映射表

    配置优先级映射:

    • 信任报文的802.1p优先级

      • 对于带VLAN Tag的报文,设备根据报文携带的802.1p优先级查找优先级映射表,确定报文进入的队列,并可以修改报文的优先级值。
      • 对于不带VLAN Tag的报文,设备将使用端口优先级作为802.1p优先级,查找优先级映射表,确定报文进入的队列,并可以修改报文的优先级值。
    • 信任报文的DSCP优先级

      设备按照报文携带的DSCP优先级查找DSCP优先级映射表,确定报文进入的队列,并可以修改报文的优先级值。

    • 信任报文的MPLS EXP优先级

      设备按照报文携带的MPLS EXP优先级查找MPLS EXP优先级映射表,确定报文进入的队列,并可以修改报文的优先级值。

    input 0 to 15 output 0
    //配置各优先级之间的映射关系。
    port priority priority-value
    //配置端口优先级值。
    qos map-table
    //用来进入Dot1p、MPLS EXP或DSCP映射表视图。
    trust { 8021p [ override ] | dscp [ override ] | exp }
    //指定对报文按照某类优先级进行映射。
    

    简单流分类:

    • 简单流分类是指根据IP报文的IP优先级或DSCP值、MPLS报文的EXP域值、VLAN报文的802.1p值,将报文划分为多个优先级或多个服务等级。配置基于简单流分类的流量策略可以将一种网络流量中的优先级映射到另外一种网络流量中,使流量在另外一种网络中按照原来的优先级传送。
    • 简单流分类的应用场景:在IP,MPLS,VLAN报文跨域转换时,可以使用简单流分类实现DSCP/IP-PRE/EXP/802.1P之间的映射,并保证报文的服务等级不受变化。
    • 简单流分类通常配置在网络的核心位置。
    • 简单流分类不止应用在物理端口,还可以用于逻辑端口。在企业组网中逻辑端口有更加广阔的应用。

    复杂流分类:

    复杂流分类是指根据五元组(源地址、源端口号、协议号码、目的地址、目的端口号)等报文信息对报文进行分类(一般的分类依据都局限在封装报文的头部信息,使用报文内容作为分类的标准比较少见),缺省应用于网络的边缘位置。报文进入边缘节点时,网络管理者可以灵活配置分类规则。分类的结果是没有范围限制的,它可以是一个由五元组(源地址、源端口号、协议号码、目的地址、目的端口号)确定的狭小范围,也可以是匹配某网段的所有报文。

    复杂流分类通过提取报文信息,如报文优先级、源IP、目的IP、源MAC、目的MAC、802.1p、报文封装类型等等,组成关键字去匹配规则表,然后通过匹配规则得到一个索引,再根据索引查动作表,将报文映射为内部优先级,除了映射内部优先级外,复杂流分类还可以支持流量监管(CAR)、PBR( Policy-basedRouting )、重标记,报文过滤、采样、镜像等其它动作。

    链路效率机制

    VRP提供了两种链路效率机制:IP报文头压缩协议(IPHeader Compression,IPHC)和链路分片与交叉(LinkFragmentation and Interleaving,LFI)。 其中IP报文头压缩协议可以对RTP和TCP报文头进行压缩。

    对于同一个流的数据部,IP头部的大部分字段是相同的,因此可以对这些字段进行压缩,提高链路传输的效率。

    LFI技术主要在低速链路上使用,目的是减小实时数据报文的延时和抖动。

    IPHC:

    IP报文头压缩协议(IPHeader Compression,IPHC)是一个主机-主机协议,用于在IP网络上承载语音、视频等实时多媒体业务,是在PPP链路和FR链路应用的低速链路技术。IPHC支持对RTP和TCP报文头的压缩。

    RTP包括数据部分和头部分,RTP的数据部分相对较小,而RTP的头部分较大。12字节的RTP头,加上20字节的IP头和8字节的UDP头,就是40字节的IP/UDP/RTP头。而RTP典型的负载是20字节到160字节。为了避免不必要的带宽消耗,可以使用IPHC特性对报文头进行压缩。IPHC将IP/UDP/RTP头从40字节压缩到2~4字节,对于40字节的负载,头压缩到4字节,压缩比为(40+40)/(40+4),约为1.82,可见效果是相当可观的。

    对于TCP数据包,IP头加上TCP头一共40字节,使用TCP压缩,可以压缩到3~5字节。

    LFI:

    链路分片与交叉是在PPP链路和FR链路应用的低速链路技术。

    在低速串行链路上,实时交互式通信,如Telnet和VoIP,往往会由于大型分组的发送而导致阻塞延迟,例如,正好在大报文被调度而等待发送时,语音报文到达,它需要等该大报文被传输完毕后才能被调度。对于诸如交互式语音等实时应用而言,大报文导致的这种阻塞延迟太长了,对端将听到断断续续的话音。交互式语音要求端到端的延迟不大于100~150ms。

    一个1500bytes(即通常MTU的大小)的报文需要花费215ms穿过56Kbps的链路,这超过了人所能忍受的延迟限制。为了在相对低速的链路上限制实时报文的延迟时间,例如56KbpsFrame Relay或64KbpsISDN B通道,需要一种方法将大报文进行分片,将小报文和大报文的分片一起加入到队列。

    LFI将大型数据帧分割成小型帧,与其他小片的报文一起发送,从而减少在速度较慢的链路上的延迟和抖动。


    参考文档:华为HedEx文档


    展开全文
  • 嵌入式系统概述

    2020-06-29 22:19:23
    嵌入式系统概述

    嵌入式系统概述

    嵌入式系统

    从技术的角度定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

    从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。嵌入的系统中可以共存多个嵌入式系统。

    嵌入式处理器

    • 嵌入式微处理器

    嵌入式微处理器的基础是通用计算机中的CPU。在应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的母板功能,这样可以大幅度减小系统体积和功耗。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。

    和工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点,但是在电路板上必须包括ROM、RAM、总线接口、各种外设等器件,从而降低了系统的可靠性,技术保密性也较差。嵌入式微处理器及其存储器、总线、外设等安装在一块电路板上,称为单板计算机。如STD-BUS、PC104等。

    • 嵌入式微控制器

    嵌入式微控制器又称单片机,它是将整个计算机系统集成到一块芯片中。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等各种必要功能和外设。为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。这样可以使单片机最大限度地和应用需求相匹配,功能不多不少,从而减少功耗和成本。

    和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。微控制器的片上外设资源一般比较丰富,适合于控制,因此称微控制器。

    嵌入式微控制器目前的品种和数量最多,比较有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300、数目众多ARM芯片等。目前MCU占嵌入式系统约70%的市场份额。

    • 嵌入式DSP处理器

    DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP算法正在大量进入嵌入式领域,DSP应用正从在通用单片机中以普通指令实现DSP功能,过渡到采用嵌入式DSP处理器。

    嵌入式DSP处理器比较有代表性的产品是Texas Instruments的TMS320系列和Motorola的DSP56000 系列。TMS320系列处理器包括用于控制的C2000系列,移动通信的C5000系列,以及性能更高的C6000和C8000系列。DSP56000目前已经发展成为DSP56000,DSP56100,DSP56200和DSP56300等几个不同系列的处理器。另外PHILIPS公司近年也推出了基于可重置嵌入式DSP结构低成本、低功耗技术上制造的R. E. A. L DSP处理器,特点是具备双Harvard结构和双乘/累加单元,应用目标是大批量消费类产品。

    • 嵌入式片上系统(SOC)

    随着EDA的推广和VLSI设计的普及化及半导体工艺的迅速发展,在一个硅片上实现一个更为复杂的系统的时代已来临,这就是System On Chip(SOC)。各种通用处理器内核将作为SOC设计公司的标准库,和许多其它嵌入式系统外设一样,成为 VLSI设计中一种标准的器件,用标准的 VHDL等语言描述,存储在器件库中。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性非常有利。

    SoC可以分为通用和专用两类。通用系列包括Infineon的TriCore、Motorola的M-Core、某些ARM系列器件、Echelon和Motorola联合研制的Neuron芯片等。专用SoC一般专用于某个或某类系统中,不为一般用户所知。一个有代表性的产品是Philips的Smart XA,它将XA单片机内核和支持超过2048 位复杂RSA算法的CCU单元制作在一块硅片上,形成一个可加载JAVA或C语言的专用的SOC,可用于公众互联网如Internet安全方面。

    嵌入式操作系统

    • 多道批处理操作系统

    适用于计算中心等较大的计算机系统

    • 分时操作系统

    适用于多个用户共享系统资源

    • 实时操作系统(重点)

    适用于嵌入式设备和有实时性要求的系统中,实时操作系统是我们介绍的重点

    实时操作系统强调的是实时性,可靠性和灵活性

    实时操作系统分为:一般实时操作系统嵌入式实时操作系统

    IEEE 的实时UNIX分委会认为实时操作系统应具备以下的几点:

    • 异步的事件响应
    • 切换时间和中断延迟时间确定
    • 优先级中断和调度
    • 抢占式调度
    • 内存锁定
    • 连续文件
    • 同步

    一般实时操作系统应用于实时处理系统的上位机和实时查询系统等实时性较弱的实时系统,并且提供了开发、调试、运用一致的环境。

    嵌入式实时操作系统应用于实时性要求高的实时控制系统,而且应用程序的开发过程是通过交叉开发来完成的,即开发环境与运行环境是不一致。嵌入式实时操作系统具有规模小(一般在几K~几十K 内)、可固化使用实时性强(在毫秒或微秒数量级上)的特点 。

    常见的嵌入式操作系统

    • 嵌入式Linux
    • Win CE
    • VxWorks
    • μC/OS-II
    展开全文
  • 嵌入式Linux入门:概述

    万次阅读 多人点赞 2017-06-01 20:48:25
    另外对于USB转串线、网络这类的东西,就不一一详细说明了。   掌握程度:不同人使用的开发环境不尽相同。原则上只要是自己熟悉的环境就可以了,以提高开发效率为准则。 推荐软件:vmware、notepad++、...
  • 线缆概述

    2020-05-08 14:08:14
    反转线:用于主机(com)登录控制台,连接到设备端console 线序:1---------------8 2---------------7 3---------------6 4---------------5 5---------------4 6---------------3 7---------------2 8-------...
  • ADAS概述

    2018-02-24 13:48:20
    高精度地图是为面向自动驾驶而采集生成的地图数据,根据自动驾驶需求而建立道路环境模型,包含道路数据、如道路车道线位置、类型、宽度、坡度和曲率等信息,以及交通标志、交通信号灯等信息、车道限高、下水道、...
  • 嵌入式概述

    千次阅读 2007-03-25 17:27:00
    本文转自:http://www-128.ibm.com/developerworks/cn/linux/l-embed/part1/index.html 随着信息化技术的发展和数字化产品的普及,以计算机技术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的...
  • 推荐系统概述

    2018-10-31 11:02:38
    狼群眼都红了,兴奋地大吼着扑向食物,大的撕咬吞咽着,刚丢下去的东西一眨眼就被吃光了。老乡继续命令道:“再丢下去一些!”第二批大约50斤肉品又飞出了后车门,也就一袋烟的工夫,又被8只狼分食的干干净净。吃...
  • 电信领域概述

    千次阅读 2012-05-05 10:03:20
    本系列以实际内容为主,理论知识为辅,主要面向有志于电信系统计算机应用的计算机专业技术人士。...一、电信系统概述 二、电信系统各专业内容介绍 三、电信系统中网管和集中监控系统 四、电信系
  • lds链接脚本概述

    2020-08-15 14:53:16
    .text .global _start _start: LDR R0,=0x56000010 @GPBCON寄存器 MOV R1,# 0x00000400 STR R1,[R0] LDR R0,=0x56000014 MOV R1,#0x00000000 STR R1,[R0] MAIN_LOOP: B MAIN_LOOP 代码很简单,就是一个对io进行...
  • SMBIOS信息概述 – DMI

    千次阅读 2017-05-25 00:17:24
    SMBIOS信息概述 – DMI 先介绍 DMI 。 DMI 是英文单词 Desktop Management Interface 的缩写,也就是桌面管理界面,它含有关于系统硬件的配置信息。计算机每次启动时都对 DMI 数据进行校验,如果该数据...
  • - 具有直路、交叉、弯曲光路和平面输入输出光的传输模式。 - 光路由光纤和/或光波导组成。 - 如果需要,光路的长度可控。 - 可与印制电路板结合,其功能不在本标准范围内。 - 以实现光学元件之间的互连,并能安装...
  • Wwise音频解决方案概述

    千次阅读 2020-08-14 16:34:01
    Wwise SoundSpeed Air, Wwise SoundSpeed Impact Audiokinetic 一款专用声音生成器 SoundSpeed Air可生成无数种风声和呼啸声效果 SoundSpeed Impact可方便通过交叉合成创建现实中不存在的各种独特声音 Wwise ...
  • SDH原理--1.SDH概述

    2021-05-17 08:44:11
    SDH概述 1.1 SDH产生的技术背景——为什么会产生SDH传输体制 1.接口方面 2.复用方式 3.运行维护方面 4.没有统一的网管接口 想一想: 1.2 与PDH相比SDH有哪些优势 1.接口方面 技术细节: 2.复用方式 技术...
  • 100多个小系统,100多个子系统,就是覆盖的非常多吧,这个系统和系统之间,会有一些交叉,其实他们最终都是涉及到ERP, 往这里面去装数据,ERP它是不对外网公开的,它是内部去做的,大体上都是很乱,不说这事了,所以第一件事...
  • 渗透测试工具之——RSAS概述

    千次阅读 2020-03-31 16:34:33
    交叉线 连接rsas管理与PC 直连网线 直接网络 软件也有 配置步骤 开始 程序 附件 通讯 超级终端 配置Ip 注意 系统漏洞一般是交给运维人员进行修复的 ...
  • 《计算机组成第5章计算机系统概述》由会员分享,可在线阅读,更多相关《计算机组成第5章计算机系统概述(65页珍藏版)》请在人人文库网上搜索。1、1,计算机组成原理教学课件 王 诚 教授 清华大学计算机系 2009年10月,...
  • 高速光通信-调制概述

    2021-01-04 16:10:42
    DWDM系统采用的波长都是特定的,区别与SDH普通波长,有时又被称为彩色光接口(密集波分系统符合G.692标准),而称普通SDH等光系统的光接口为“白色光”或“黑白光”(符合G.957标准)。DWDM的关键技术为光分插...
  • 网络原理概述 一、关键词 二、应用层 1. DNS:Domain Name System(域名系统) 2. DHCP协议:Dynamic Host Configuration Protocol: 动态主机设置协议 3. HTTP 4. WebSocket 5. Web代理 6. CDN:Content Delivery ...
  • 覆盖网Overlay Network概述

    千次阅读 2015-03-24 16:18:11
    而最为致命的,是一旦吸上了最X路径优先这大麻,也就会像IP层路由一样,丧失对多样性的操控能力。有人可能会说,只要让应用层路由采用急速收敛,无论网络如何变化,都能马上找到最优路径,不行吗?答案是不行,...
  •  C linkkit SDK 顾名思义,是为使用C语言 开发业务逻辑的设备 ,设备需要有联网功能,这分为2种情况,一种是设备本身能够联网,比如设备有以太网,支持TCP/IP 协议。另一种需要外挂通信模组,比如GPRS模组、wifi...
  • 交叉口 该Web应用程序是MVP,它提供了一种通过生活经验来查看人口统计数据的新方法。 它的目的是清楚地了解包容性和排除性,并让个人将自己在数据中的代表视为对性别,BIPOC或残疾的二元选择。 工作概述 工作网路...
  • CKA概述、考试形式、考试地址、考纲占比等
  • Windows编程基础 - 概述

    2013-01-22 22:28:52
    例如,交叉路口的红灯“请求”驾驶员停车,驾驶员在接受到消息之后,他所执行的动作是踏下制动踏板,这有向汽车发送了一条消息,汽车在接受到此消息之后,又将该消息分解之后发送到相关的对象上:制动器作用于车轮上...
  • 电信领域概述[转]

    2007-06-06 10:21:00
    一、电信系统概述二、电信系统各专业内容介绍三、电信系统中网管和集中监控系统四、电信系统中经营部主管系统内容五、电信系统之间关系六、电信系统维护管理体系结构 一、电信系统概述电信系统是指各种协调工作的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,835
精华内容 734
关键字:

交叉口概述