Example #1
0
 def test_fast_recovery_reno4( self ):
     packet_size = DEFAULT_MSS
     tcp = TcpProtocol( DEFAULT_SSHTRESH , DEFAULT_MSS , True )
     tcp.send( packet_size )
     pack = tcp.do_send( )
     base = pack[0]
     self.assertEqual( tcp.next_to_ack( ) , base+packet_size )
     count = 1
     self.assertEqual( tcp.next_to_ack( ) , base+packet_size )
     while ( tcp.get_cwnd() < DEFAULT_SSHTRESH ):
         tcp.ack( base+(count*packet_size) )
         self.assertEqual( tcp.get_cwnd( ) , (count+1)*DEFAULT_MSS )
         tcp.send( packet_size )
         pack = tcp.do_send(  )
         self.assertEqual( pack , (base+(count*packet_size) , packet_size ) )    
         count += 1
     tcp.ack( base+(count*packet_size) )
     cwnd = tcp.get_cwnd( )
     self.assertEqual( cwnd , count*DEFAULT_MSS+max( (DEFAULT_MSS*DEFAULT_MSS)/(count*DEFAULT_MSS) , 1 ) )
     tcp.send( packet_size )
     tcp.do_send(  )
     tcp.ack( base+(count*packet_size) )
     tcp.ack( base+(count*packet_size) )
     tcp.ack( base+(count*packet_size) )
     self.assertEqual( tcp.get_duplicated_ack_count( ) , 3 )
     self.assertEqual( tcp.get_ssthresh( ) , cwnd/2 )
     self.assertEqual( tcp.get_cwnd( ) , (cwnd/2)+3*DEFAULT_MSS  )        
     tcp.ack( base+((count+1)*packet_size) )
     self.assertEqual( tcp.get_ssthresh() , cwnd/2 )
     self.assertEqual( tcp.get_cwnd() , tcp.get_ssthresh( ) )    
Example #2
0
 def test_init_tahoe(self):
     tcp = TcpProtocol( DEFAULT_SSHTRESH , DEFAULT_MSS , False )
     self.assertEqual( tcp.get_ssthresh( ) , DEFAULT_SSHTRESH )
     self.assertEqual( tcp.get_cwnd( ) , DEFAULT_MSS )
     self.assertEqual( tcp.next_to_ack( ) , -1 )
     pack = tcp.next_to_send()
     self.assertEqual( pack[1] , -1 )
     self.assertEqual( tcp.get_duplicated_ack_count( ) , 0 )
Example #3
0
 def test_time_out_tahoe( self ):
     packet_size = DEFAULT_MSS
     tcp = TcpProtocol( DEFAULT_SSHTRESH , DEFAULT_MSS , False )
     tcp.send( packet_size )
     pack = tcp.do_send( )
     base = pack[0]
     self.assertEqual( tcp.next_to_ack( ) , base+packet_size )
     for count in range(1,25):
         tcp.ack( base+(count*packet_size) )
         self.assertEqual( tcp.get_cwnd( ) , (count+1)*DEFAULT_MSS )
         tcp.send( packet_size )
         pack = tcp.do_send(  )
         self.assertEqual( pack , (base+(count*packet_size) , packet_size ) )    
     tcp.ack( base+(count*packet_size) )
     cwnd = tcp.get_cwnd()
     tcp.time_out()
     self.assertEqual( tcp.get_ssthresh() , cwnd/2 )
     self.assertEqual( tcp.get_cwnd() , DEFAULT_MSS )