linux 内核网络源码--流量管理“每日读书”

linux 流量控制子系统已有长足进步并且代表linux内核实力一方面相关内核选项Device drivers ->networking support networking options -?Qos and/or fair queueing, net_device 结构中相关字段包括

struct net_device *next_ched

软中断之一使用对此第十一给出了描述

struct Qdisc *qdisc

struct Qdisc *qdisc_sleeping

struct QDisc *qdisc_ingress

struct list_headqdisc_list

这些字段用于管理入口出口封包队列以及不同CPU对此设备访问

spinlock_queue_lock

spinlock_t ingress_lock

流量控制子系统每个网络设备定义一个私有出口队列quuee_lock用于避免队列并发访问ingress_lock则是针对入口流量做相同事情

unsigned long tx_queue_len

设备传送队列长度内核支持流量控制可能不用tx_queue_len 2-2所列最常见设备类型采用可以通过sysfs 文件系统予以调整

2-2 不同设备类型tx_queue_len

设备类型

Ethernet 1000

Token Ring 100

EtherChannel 100

FibreChannel 100

2-2 不同设备类型tx_queue_len

设备类型

FDDI 100

TEQL 100

ISDN 30

HIPPI 25

PLIP 10

SLIP 10

AX25 10

EQL 5

Generic PPP 3

Bonding 0

loopback 0

Bridge 0

VLAN 0

TEQL 队列规则之一可以流量控制Qos进行配置

根据所用队列规则决定输入输出封包队列策略可能会用到tx_queue_len 但是可能用不到队列类型FIFO First In, First Out先进先出或者相当简单队列通常就会使用

注意所有对了长度0设备都是虚拟设备虚拟设备依赖相关的真实设备所有队列工作

功能专用

说明sk_buff 所见只有当所属功能包含在内核那些参数才会出现net_device 定义

struct divert_blk *divert

分流器是一种功能允许改变输入封包目的地址因此有可能配置指定特定特征重新绕送流量不同接口或者不同主机字段所指数据结构存储分流器功能所需要参数相关联内核选项Device Drivers -<Networking support->Networking options,->Frame Diverter

struct net_bridge_port *br_port

设备配置桥接端口需要额外信息桥接代码STP 会在第四部分讨论相关联内核选项Device Drivers->networking support->Networking options->802.1d Ethernet Bridging

void (*vlan_rx)register)()

void (*vlan_rx_add_vid){}

void (*vlan_rx_kill)_vid){...}

三个函数指针VLAN代码所用分别是设备注册拥有VLAN标记功能VLAN添加设备以及设备删除VLAN相关联内核选项Device Drivers->Networking support->networking options

innetpoll_rx

void (*poll_contoller){...}

由选项Netpoll功能使用

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值