免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Godbach
打印 上一主题 下一主题

TCP/IP实现刨根究底大讨论【活动结束】 [复制链接]

论坛徽章:
0
151 [报告]
发表于 2011-04-01 12:05 |只看该作者
求助,net\ipv4\tcp_bic.c中3个问题。具体是实现bic拥塞控制的。
1、
/* BIC TCP Parameters */
struct  ...
xiongweixie 发表于 2011-03-31 19:13



    delayed_ack:当一台计算机发起TCP连接请求时,系统会回应ACK应答数据包。 该设置决定是否延迟ACK应答数据包,把它和包
含数据的数据包一起发送, 在高速网络和低负载的情况下会略微提高性能,但在网络连接较差的时候, 对方计算机得不到应答会持续
发起连接请求,反而会降低性能。

论坛徽章:
0
152 [报告]
发表于 2011-04-01 12:12 |只看该作者
本帖最后由 aaaaa5aa 于 2011-04-01 12:29 编辑

tp->snd_ssthresh默认是一个很大的值,因此这里就知道了,当拥塞窗口增大到16的时候我们就会进去hystart_update来更新snd_ssthresh.因此hystart_updat换句话来说也就是主要用于是否退出slow start。
  1. static void hystart_update(struct sock *sk, u32 delay)
  2. {
  3.     struct tcp_sock *tp = tcp_sk(sk);
  4.     struct bictcp *ca = inet_csk_ca(sk);

  5.     if (!(ca->found & hystart_detect)) {
  6. .................................................................
  7.         /*
  8.          * Either one of two conditions are met,
  9.          * we exit from slow start immediately.
  10.          */
  11. //found是一个是否退出slow start的标记
  12.         if (ca->found & hystart_detect)
  13. //设置snd_ssthresh
  14.             tp->snd_ssthresh = tp->snd_cwnd;
  15.     }
  16. }
复制代码
如果不符合,那就得延迟ACK应答数据包,当然这时与delayed_ack与关

评分

参与人数 1可用积分 +2 收起 理由
Godbach + 2 欢迎提问

查看全部评分

论坛徽章:
0
153 [报告]
发表于 2011-04-01 12:19 |只看该作者
回复 151# aaaaa5aa


    你说的我明白。但是你能说说这里的delay_ack是怎么计算的呢?底下有个函数。
第二个问题中,算拥塞窗口的调整幅度时,为什么会跟delay_ack有关系呢?

论坛徽章:
0
154 [报告]
发表于 2011-04-01 12:33 |只看该作者
回复 146# aaaaa5aa


   
哇,突然发现这竟然 是个mm呀,哇哦。。。。。。。

那个啥,超时只是可靠传输机制里面,最后被迫无奈的选择,不是说不要超时机制,而是说要想办法避免等到超时才发现丢包。

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 感谢分享

查看全部评分

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
155 [报告]
发表于 2011-04-01 13:29 |只看该作者
回复 149# renxiao2003

renxiao2003  兄是什么需求啊

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
156 [报告]
发表于 2011-04-01 14:01 |只看该作者
tp->snd_ssthresh默认是一个很大的值,因此这里就知道了,当拥塞窗口增大到16的时候我们就会进去hystart_up ...
aaaaa5aa 发表于 2011-04-01 12:12



    你贴的代码是 cubic 实现里的吧。
   这里的 delayed_ack 不是对发送端数据的延时应答,是用来计算发包数和收到的确认之间的比率

评分

参与人数 1信誉积分 +2 收起 理由
Godbach + 2 感谢分享

查看全部评分

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
157 [报告]
发表于 2011-04-01 15:51 |只看该作者
回复  aaaaa5aa

    你说的我明白。但是你能说说这里的delay_ack是怎么计算的呢?底下有个函数。
第二个问题中,算拥塞窗口的调整幅度时,为什么会跟delay_ack有关系呢?xiongweixie 发表于 2011-04-01 12:19


    没有深入研究。
    1 delay_ack 计算
      根据注释里的公式:ratio = (15*ratio + sample) / 16 。(不知道公式哪来的)
      ratio 代码里用 ca->delayed_ack (左移了4位,所以用的时候会右移4位),sample 就是函数的参数 cnt (也就是当前 ACK 确认的包数)
  1. 215         cnt -= ca->delayed_ack >> ACK_RATIO_SHIFT; //cnt = cnt - ca->delayed_ack >> ACK_RATIO_SHIFT;
  2. 216         ca->delayed_ack += cnt;                                   //ca->delayed_ack = ca->delayed_ack + cnt
  3. =〉ACK_RATIO_SHIFT = 4
  4. ca->delayed_ack = ca->delayed_ack + (cnt - ca->delayed_ack >> ACK_RATIO_SHIFT)
  5. => ca->delayed_ack = ca->delayed_ack + (cnt - ca->delayed_ack/16)
  6. => ca->delayed_ack = (ca->delayed_ack * 16) /16 + (cnt * 16)/16 - ca->delayed_ack/16
  7. => ca->delayed_ack = (ca->delayed_ack * 15) /16 + (cnt * 16)/16
  8. => ca->delayed_ack = (ca->delayed_ack * 15 + cnt * 16) /16
复制代码


    2  根据发包数与ACK数量的比率来控制拥塞窗口,比率大小反应对端接收的情况

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 感谢分享

查看全部评分

论坛徽章:
0
158 [报告]
发表于 2011-04-01 15:56 |只看该作者
希望对中断的整个流程结合源码来详细说说

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
159 [报告]
发表于 2011-04-02 09:50 |只看该作者
回复 158# 龙客yang
LS 的是说网络方面的中断吧?

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
160 [报告]
发表于 2011-04-02 10:49 |只看该作者
来晚了,还是支持一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP