Chinaunix首页 | 论坛 | 博客
  • 博客访问: 659193
  • 博文数量: 186
  • 博客积分: 1875
  • 博客等级: 上尉
  • 技术积分: 2117
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-23 23:21
个人简介

有时候,就是想窥视一下不知道的东东,因为好奇!

文章分类

全部博文(186)

文章存档

2024年(2)

2023年(3)

2020年(1)

2019年(1)

2018年(1)

2017年(2)

2016年(69)

2015年(53)

2014年(14)

2013年(1)

2012年(5)

2011年(25)

2010年(9)

分类: LINUX

2015-08-12 19:27:20

第十一章 流量控制
        linux使用TC作为流量控制工具. 排队规则Qdisc是流量控制的基础.
11.1 排队规则的初始化
        struct Qdisc {
            ...
        } noop_qdisc = { ... };

        struct Qdisc_ops {
            ...
        } pfifo_fast_ops __read_mostly = {
            ...
        };
        网络设备初始化
        cs89x0_probe()-->cs89x0_probe1()-->register_netdev()
        dm9000_probe()-->register_netdev()
        rtl8169_init_module()-->pci_register_driver()-->rtl_init_one()-->register_netdev()-->register_netdevice()-->dev_init_scheduler()
        ioctl()-->sock_ioctl()-->dev_ioctl()-->SIOCSIFFLAGS-->dev_ifsioc()-->dev_change_flags()-->IFF_UP-->dev_open()-->dev_activate()-->qdisc_create_dflt()-->qdisc_alloc()
                                                                                                                                                                                                                                                           -->pfifo_fast_init()
        
        dev_init_scheduler()为3种网卡设备设置排队规则noop_qdisc
        qdisc_alloc()创建排队规则结构
11.2 排队规则的入队和发送
        pfifo_fast_enqueue()-->prio2list()
                                         -->__qdisc_enqueue_tail()
                                         -->qdisc_drop()
        pfifo_fast_dequeue()-->__qdisc_dequeue_head()
        prio2list()根据数据包的优先级选择排队规则的队列头
        __qdisc_enqueue_tail()将数据包链入排队规则队列
        qdisc_drop()释放数据包
        __qdisc_dequeue_head()从队列中摘取数据包
        qdisc_run()-->__qdisc_run()-->qdisc_restart()-->dev_hard_start_xmit()
                                                                                -->dev_requeue_skb()
        qdisc_restart()发送数据包
        dev_hard_start_xmit()开始发送
        dev_requeue_skb()数据包重新入队

阅读(456) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~