Strange TCP Cubic behavior (maybe)

View: New views
1 Messages — Rating Filter:   Alert me  

Strange TCP Cubic behavior (maybe)

by dgenin () :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I am currently working on mathematical analysis of TCP Cubic and have been digging through ns2-2.33 code in tcp/linux/src to try to understand exactly how the congestion control of Cubic works. To trace the internal variables I added the following line

printf("%lu %lu %lu %llu %lu %lu\n",tcp_time_stamp,t,ca->bic_K,offs,delta,bic_target);

to bictcp_update function just after this bit of code

/* cubic function - calc bictcp_cnt*/
        if (bic_target > cwnd) {
                ca->cnt = cwnd / (bic_target - cwnd);
        } else {
                ca->cnt = 100 * cwnd;              /* very small increment*/
        }

Tracing the value of bic_target I noticed that under some circumstances it becomes extremely large, on the order of 10^19. Here is a little snippet of the resulting output to illustrate this point

3772 248 0 248 0 3
3822 300 0 300 0 3
3881 360 0 360 0 3
4133 59 0 59 0 4
4334 59 0 59 0 4
4813 59 2641850 2641791 13224665 18446744073696326953              
4863 110 2641850 2641740 12826499 18446744073696725119            
4872 119 2641850 2641731 12756236 18446744073696795382              
4922 171 2641850 2641679 12350281 18446744073697201337            
4939 188 2641850 2641662 12217569 18446744073697334049            
5401 59 0 59 0 5
5434 93 0 93 0 5
5888 59 2641850 2641791 13224665 18446744073696326953              
5938 110 2641850 2641740 12826499 18446744073696725119            
5947 119 2641850 2641731 12756236 18446744073696795382            
5997 171 2641850 2641679 12350281 18446744073697201337            
6014 188 2641850 2641662 12217569 18446744073697334049            
6173 59 1388 1329 0 6
6207 94 1388 1294 0 6

My question is: Is this normal behavior for Cubic or am I missing something?

Grateful for your help!
Dan