linux源码阅读。tic_bic.c文件中的几个疑问。

软件和网站开发以及相关技术探讨
回复
xiongweixie
帖子: 2
注册时间: 2009-08-24 10:11
送出感谢: 0
接收感谢: 0

linux源码阅读。tic_bic.c文件中的几个疑问。

#1

帖子 xiongweixie » 2011-04-01 10:34

求助,net\ipv4\tcp_bic.c中3个问题。具体是实现bic拥塞控制的。先谢谢了。
1、
/* BIC TCP Parameters */
struct bictcp {
u32 cnt; /* increase cwnd by 1 after ACKs */
u32 last_max_cwnd; /* last maximum snd_cwnd */
u32 loss_cwnd; /* congestion window at last loss */
u32 last_cwnd; /* the last snd_cwnd */
u32 last_time; /* time when updated last_cwnd */
u32 epoch_start; /* beginning of an epoch */
#define ACK_RATIO_SHIFT 4
u32 delayed_ack; /* estimate the ratio of Packets/ACKs << 4 */
};
delayed_ack 具体指的是什么意思?
2、
/*
* Compute congestion window to use.
*/
static inline void bictcp_update(struct bictcp *ca, u32 cwnd)
{
...
...
...

ca->cnt = (ca->cnt << ACK_RATIO_SHIFT) / ca->delayed_ack; ///求教这句的意思
if (ca->cnt == 0) /* cannot be zero */
ca->cnt = 1;
}
3、
/* Track delayed acknowledgment ratio using sliding window
* ratio = (15*ratio + sample) / 16
*/
static void bictcp_acked(struct sock *sk, u32 cnt, s32 rtt)
{
const struct inet_connection_sock *icsk = inet_csk(sk);

if (icsk->icsk_ca_state == TCP_CA_Open) {
struct bictcp *ca = inet_csk_ca(sk);
cnt -= ca->delayed_ack >> ACK_RATIO_SHIFT;
ca->delayed_ack += cnt;
}
}
还有这个函数具体是怎么理解的。他为什么要这个做?
回复

回到 “软件/网站开发”