文档章节

SylixOS之QoS原理

s
 stone927
发布于 2018/11/29 14:49
字数 1095
阅读 2
收藏 0

1 QoS简介

       QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS,比如Web应用,或E-mail设置等。但是对关键应用和多媒体应用就十分必要。当网络过载或拥塞时,QoS 能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。如提高QQ的所有数据报文优先级并设置dont_drop选项,保证QQ在网络环境较差时不掉线。

2 QoS操作方法

      QoS相关的操作命令有三个,添加(qosruleadd)、删除(qosruledel)和查看(qoss)。

2.1 添加

      如下是一条添加ip规则命令:

      # qosruleadd  en1  ip  192.168.31.1  192.168.31.5  SRC  5  no

      其中“en1”表示网络接口,“ip”表示规则针对的数据包类型,后面紧跟IP地址范围。IP地址范围之后为方法及表示这条规则针对源地址(SRC)、目的地址(DEST)还是所有地址(BOTH)都有效。方法后是优先级,范围为1到7。最后是是否打开dont_drop选项及不丢包选项,“yes”就表示此包不会被协议栈丢失。

若针对tcp或udp的数据包类型,则需要加上对应的端口号范围,如下:

      # qosruleadd  en1  tcp  192.168.31.1  192.168.31.5  1000  10010  BOTH  4  yes

2.2 查看

      查看使用qoss命令,如图 2.1所示。

                                    图 2.1 qoss查看

2.3 删除

      删除时需要使用到网卡名和对应的序列号,即使用qoss查看得出的序列号,如下:

      # qosruledel  en1  0

3 QoS实现原理

3.1 QoS网络层次

      QoS层处于TCP/IP协议栈与netjob之间,解析每一个提交给协议栈和从协议栈发出的数据包。并针对不同类型的数据包按照指定的规则操作,基本结构如图 3.1所示。

      图 3.1 QoS网络层次结构

3.2 QoS数据结构

      QoS相关的数据主要有2类,规则结构和QoS接口结构。规则结构又分TCP、UDP、IP三种,共4种结构,如程序清单 3.1所示。

                                                               程序清单 3.1 QoS数据结构

typedef struct {

    LW_LIST_LINE            QOSRI_lineManage;                          /*  IP 规则管理链表                    */

    INT                      QOSRI_iRule;

    INT                      QOSRI_iCmpMethod;                              /*  srouce, destination, both    */

    ip4_addr_t                 QOSRI_ipaddrHboS;                          /*  IP 段起始 IP 地址                  */

    ip4_addr_t                 QOSRI_ipaddrHboE;                          /*  IP 段结束 IP 地址                  */

    u8_t                      QOSRI_ucPrio;                                        /*  QoS 优先级                          */

    u8_t                      QOSRI_ucDontDrop;                              /*  QoS 可靠服务                       */

} __QOS_RULE_IP;

typedef __QOS_RULE_IP      *__PQOS_RULE_IP;

 

typedef struct {

    LW_LIST_LINE            QOSRU_lineManage;                        /*  UDP 规则管理链表              */

    INT                      QOSRU_iRule;

    INT                      QOSRU_iCmpMethod;                            /*  srouce, destination, both   */

    ip4_addr_t                 QOSRU_ipaddrHboS;                        /*  IP 段起始 IP 地址                 */

    ip4_addr_t                 QOSRU_ipaddrHboE;                        /*  IP 段结束 IP 地址                 */

    u16_t                     QOSRU_usPortHboS;                            /*  端口起始 主机序                  */

    u16_t                     QOSRU_usPortHboE;                            /*  端口结束                             */

    u8_t                      QOSRU_ucPrio;                                      /*  QoS 优先级                         */

    u8_t                      QOSRU_ucDontDrop;                            /*  QoS 可靠服务                      */

} __QOS_RULE_UDP;

typedef __QOS_RULE_UDP     *__PQOS_RULE_UDP;

 

typedef struct {

    LW_LIST_LINE            QOSRT_lineManage;                        /*  TCP 规则管理链表              */

    INT                      QOSRT_iRule;

    INT                      QOSRT_iCmpMethod;                            /*  srouce, destination, both  */

    ip4_addr_t                 QOSRT_ipaddrHboS;                        /*  IP 段起始 IP 地址                */

    ip4_addr_t                 QOSRT_ipaddrHboE;                        /*  IP 段结束 IP 地址                */

    u16_t                     QOSRT_usPortHboS;                            /*  端口起始 主机序                  */

    u16_t                     QOSRT_usPortHboE;                            /*  端口结束                            */

    u8_t                      QOSRT_ucPrio;                                      /*  QoS 优先级                        */

    u8_t                      QOSRT_ucDontDrop;                            /*  QoS 可靠服务                     */

} __QOS_RULE_TCP;

typedef __QOS_RULE_TCP     *__PQOS_RULE_TCP;

 

/*********************************************************************************************************

  QoS 网络接口结构

*********************************************************************************************************/

typedef struct {

    LW_LIST_LINE            QOSNI_lineHash;                             /*  hash 表                               */

    LW_LIST_LINE_HEADER   QOSNI_qosrnRule[__QOS_NETIF_RULE_MAX];  /*  规则表         */

    CHAR                    QOSNI_cName[IF_NAMESIZE];             /*  网络接口名                          */

    BOOL                    QOSNI_bAttached;                               /*  是否已经连接                       */

} __QOS_NETIF_CB;

typedef __QOS_NETIF_CB     *__PQOS_NETIF_CB;

3.3 QoS插入规则流程

      插入一个新规则时会根据网络接口名创建对应的QoS接口结构并放入QoS哈希表中,同样将此QoS接口保存到对应的网络接口结构中,以便此网络接口有数据交换时可以查找对应的规则。如图 3.2所示。

                                             图 3.2 QoS哈希表结构框图

      然后将对应的规则保存到QoS接口结构的规则链表中,若之后需加入相同网络接口名的规则则添加到此链表中,如图 3.3所示。

                                             图 3.3 QoS规则链表

© 著作权归作者所有

s

stone927

粉丝 0
博文 8
码字总数 9405
作品 0
南京
私信 提问
SylixOS上EtherCAT实现

1 EtherCAT开源协议栈介绍 目前常见开源的主站代码为RT-LAB开发的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS对两者都支持。其中IgH作为常用的...

Jackstraw瑞
2017/11/01
273
0
SylixOS-IgH系统平台搭建

1.参考手册 下面7个文件存放在本地服务器“\10.9.1.113.研发部9.ExchangeFolder郑磊”路径下 《RealEvo-IDE使用手册》 《SylixOS应用开发手册》 《SylixOSshell用户手册》 《SylixOS-IgH使用...

zhengleich
2018/05/15
0
0
VxWorks驱动移植至SylixOS总结

本文档描述了将VxWorks中的驱动源码快速移植至SylixOS中的方法,使用时需要结合SylixOS中的VxWorks兼容层实现。 1. 驱动注册与初始化 1.1 VxWorks中驱动注册与初始化 1.1.1 初始化函数 VxWo...

zhywxyy
2018/08/21
46
0
SylixOS线程堆栈大小浅析

目录 1. SylixOS线程、线程栈介绍 1 1.1 线程的介绍 1 1.2 线程栈的介绍 1 2. SylixOS线程栈大小的分配 1 2.1 线程、线程栈相关属性的设置 2 2.2 线程栈大小 2 2.3 线程堆栈警戒区 3 3. 总结...

Esc120
2018/06/26
0
0
SylixOS调试方法详解——性能分析

1. SylixOS调试方法介绍 SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。目前RealEvo-IDE既支持自动推送调试、也支持传...

Esc120
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
18分钟前
1
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
19分钟前
4
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
22分钟前
3
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
28分钟前
4
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
51分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部