[Ns-bugs] [Bug 579] New: TCP congestion window is not updated whent segment size chages

code@nsnam.ece.gatech.edu code at nsnam.ece.gatech.edu
Mon Jun 1 03:36:28 PDT 2009


http://www.nsnam.org/bugzilla/show_bug.cgi?id=579

           Summary: TCP congestion window is not updated whent segment size
                    chages
           Product: ns-3
           Version: ns-3-dev
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P5
         Component: internet-stack
        AssignedTo: ns-bugs at isi.edu
        ReportedBy: boyko at iitp.ru
   Estimated Hours: 0.0


Behavior. when using non-standard TCP segment size > 536 bytes first data
packet is 3 seconds delayed.

Explanation. In the code below:

socket = socketFactory->CreateSocket();
socket->SetAttribute ("SegmentSize", UintegerValue (1400));

TCP congestion window size is set to default value of 536 bytes in the first
line (CreateSocket()). SetAttribute() call changes segment size but NOT CW
size. 

As a result one has socket with segment size = 1400 and CW size = 536. Trying
to send, say, 1000 bytes one will finish in 

if (w < m_segmentSize && m_pendingData->Size () > w)
  {
    break; // No more
  }

of TcpSocketImpl::SendPendingData (tcp-socket-impl.cc:1038), which in turn will
cause retry in 3 seconds. 

Ugly solution. Now I just set TCP segment size globally, e.g. from command line
as --ns3::TcpSocket::SegmentSize=1400. This works, because segment size is set
BEFORE CreateSocket ().

Better solution. I guess, that CW size must be set to max (CW size, new segment
size) when segment size is changed. Don't have a patch & test for this
solution, sorry.


-- 
Configure bugmail: http://www.nsnam.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the Ns-bugs mailing list