您好,登錄后才能下訂單哦!
1 QoS簡介
QoS(Quality of Service,服務(wù)質(zhì)量)指一個網(wǎng)絡(luò)能夠利用各種基礎(chǔ)技術(shù),為指定的網(wǎng)絡(luò)通信提供更好的服務(wù)能力,是網(wǎng)絡(luò)的一種安全機制,是用來解決網(wǎng)絡(luò)延遲和阻塞等問題的一種技術(shù)。在正常情況下,如果網(wǎng)絡(luò)只用于特定的無時間限制的應(yīng)用系統(tǒng),并不需要QoS,比如Web應(yīng)用,或E-mail設(shè)置等。但是對關(guān)鍵應(yīng)用和多媒體應(yīng)用就十分必要。當(dāng)網(wǎng)絡(luò)過載或擁塞時,QoS 能確保重要業(yè)務(wù)量不受延遲或丟棄,同時保證網(wǎng)絡(luò)的高效運行。如提高QQ的所有數(shù)據(jù)報文優(yōu)先級并設(shè)置dont_drop選項,保證QQ在網(wǎng)絡(luò)環(huán)境較差時不掉線。
2 QoS操作方法
QoS相關(guān)的操作命令有三個,添加(qosruleadd)、刪除(qosruledel)和查看(qoss)。
2.1 添加
如下是一條添加ip規(guī)則命令:
# qosruleadd en1 ip 192.168.31.1 192.168.31.5 SRC 5 no
其中“en1”表示網(wǎng)絡(luò)接口,“ip”表示規(guī)則針對的數(shù)據(jù)包類型,后面緊跟IP地址范圍。IP地址范圍之后為方法及表示這條規(guī)則針對源地址(SRC)、目的地址(DEST)還是所有地址(BOTH)都有效。方法后是優(yōu)先級,范圍為1到7。最后是是否打開dont_drop選項及不丟包選項,“yes”就表示此包不會被協(xié)議棧丟失。
若針對tcp或udp的數(shù)據(jù)包類型,則需要加上對應(yīng)的端口號范圍,如下:
# 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 刪除
刪除時需要使用到網(wǎng)卡名和對應(yīng)的序列號,即使用qoss查看得出的序列號,如下:
# qosruledel en1 0
3 QoS實現(xiàn)原理
3.1 QoS網(wǎng)絡(luò)層次
QoS層處于TCP/IP協(xié)議棧與netjob之間,解析每一個提交給協(xié)議棧和從協(xié)議棧發(fā)出的數(shù)據(jù)包。并針對不同類型的數(shù)據(jù)包按照指定的規(guī)則操作,基本結(jié)構(gòu)如圖 3.1所示。
圖 3.1 QoS網(wǎng)絡(luò)層次結(jié)構(gòu)
3.2 QoS數(shù)據(jù)結(jié)構(gòu)
QoS相關(guān)的數(shù)據(jù)主要有2類,規(guī)則結(jié)構(gòu)和QoS接口結(jié)構(gòu)。規(guī)則結(jié)構(gòu)又分TCP、UDP、IP三種,共4種結(jié)構(gòu),如程序清單 3.1所示。
程序清單 3.1 QoS數(shù)據(jù)結(jié)構(gòu)
typedef struct {
LW_LIST_LINE QOSRI_lineManage; /* IP 規(guī)則管理鏈表 */
INT QOSRI_iRule;
INT QOSRI_iCmpMethod; /* srouce, destination, both */
ip4_addr_t QOSRI_ipaddrHboS; /* IP 段起始 IP 地址 */
ip4_addr_t QOSRI_ipaddrHboE; /* IP 段結(jié)束 IP 地址 */
u8_t QOSRI_ucPrio; /* QoS 優(yōu)先級 */
u8_t QOSRI_ucDontDrop; /* QoS 可靠服務(wù) */
} __QOS_RULE_IP;
typedef __QOS_RULE_IP *__PQOS_RULE_IP;
typedef struct {
LW_LIST_LINE QOSRU_lineManage; /* UDP 規(guī)則管理鏈表 */
INT QOSRU_iRule;
INT QOSRU_iCmpMethod; /* srouce, destination, both */
ip4_addr_t QOSRU_ipaddrHboS; /* IP 段起始 IP 地址 */
ip4_addr_t QOSRU_ipaddrHboE; /* IP 段結(jié)束 IP 地址 */
u16_t QOSRU_usPortHboS; /* 端口起始 主機序 */
u16_t QOSRU_usPortHboE; /* 端口結(jié)束 */
u8_t QOSRU_ucPrio; /* QoS 優(yōu)先級 */
u8_t QOSRU_ucDontDrop; /* QoS 可靠服務(wù) */
} __QOS_RULE_UDP;
typedef __QOS_RULE_UDP *__PQOS_RULE_UDP;
typedef struct {
LW_LIST_LINE QOSRT_lineManage; /* TCP 規(guī)則管理鏈表 */
INT QOSRT_iRule;
INT QOSRT_iCmpMethod; /* srouce, destination, both */
ip4_addr_t QOSRT_ipaddrHboS; /* IP 段起始 IP 地址 */
ip4_addr_t QOSRT_ipaddrHboE; /* IP 段結(jié)束 IP 地址 */
u16_t QOSRT_usPortHboS; /* 端口起始 主機序 */
u16_t QOSRT_usPortHboE; /* 端口結(jié)束 */
u8_t QOSRT_ucPrio; /* QoS 優(yōu)先級 */
u8_t QOSRT_ucDontDrop; /* QoS 可靠服務(wù) */
} __QOS_RULE_TCP;
typedef __QOS_RULE_TCP *__PQOS_RULE_TCP;
/*********************************************************************************************************
QoS 網(wǎng)絡(luò)接口結(jié)構(gòu)
*********************************************************************************************************/
typedef struct {
LW_LIST_LINE QOSNI_lineHash; /* hash 表 */
LW_LIST_LINE_HEADER QOSNI_qosrnRule[__QOS_NETIF_RULE_MAX]; /* 規(guī)則表 */
CHAR QOSNI_cName[IF_NAMESIZE]; /* 網(wǎng)絡(luò)接口名 */
BOOL QOSNI_bAttached; /* 是否已經(jīng)連接 */
} __QOS_NETIF_CB;
typedef __QOS_NETIF_CB *__PQOS_NETIF_CB;
3.3 QoS插入規(guī)則流程
插入一個新規(guī)則時會根據(jù)網(wǎng)絡(luò)接口名創(chuàng)建對應(yīng)的QoS接口結(jié)構(gòu)并放入QoS哈希表中,同樣將此QoS接口保存到對應(yīng)的網(wǎng)絡(luò)接口結(jié)構(gòu)中,以便此網(wǎng)絡(luò)接口有數(shù)據(jù)交換時可以查找對應(yīng)的規(guī)則。如圖 3.2所示。
圖 3.2 QoS哈希表結(jié)構(gòu)框圖
然后將對應(yīng)的規(guī)則保存到QoS接口結(jié)構(gòu)的規(guī)則鏈表中,若之后需加入相同網(wǎng)絡(luò)接口名的規(guī)則則添加到此鏈表中,如圖 3.3所示。
圖 3.3 QoS規(guī)則鏈表
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。