Bug 236 - Checksum calculation crashes tcp-large-transfer
Checksum calculation crashes tcp-large-transfer
Status: RESOLVED FIXED
Product: ns-3
Classification: Unclassified
Component: internet
pre-release
All All
: P3 normal
Assigned To: ns-bugs
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2008-06-25 15:54 UTC by Sebastien Vincent
Modified: 2008-07-01 22:06 UTC (History)
0 users

See Also:


Attachments
Checksum patch (20.62 KB, patch)
2008-06-25 15:54 UTC, Sebastien Vincent
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Sebastien Vincent 2008-06-25 15:54:19 UTC
Hello, 

You find in the patch a new way for calculate checksum in IPv4, UDP and TCP layer.

A CalculateIpChecksum method is declared in Buffer::Iterator. It is used by Ipv4Header, UdpHeader and TcpHeader to calculate the checksum. So no need to keep ipv4-checksum.cc,h code.
Comment 1 Sebastien Vincent 2008-06-25 15:54:44 UTC
Created attachment 182 [details]
Checksum patch
Comment 2 Mathieu Lacage 2008-07-01 13:56:06 UTC
changeset 33d1ca2e4ba4
Comment 3 Rajib Bhattacharjea 2008-07-01 18:43:26 UTC
./waf --run="tcp-large-transfer --ns3::TcpL4Protocol::CalcChecksum=true"

GDB gives:
Program received signal SIGTRAP, Trace/breakpoint trap.
ns3::Buffer::Iterator::ReadU8 (this=0xbfa57200) at debug/ns3/buffer.h:582
582       if (m_current < m_zeroStart)
(gdb) bt
#0  ns3::Buffer::Iterator::ReadU8 (this=0xbfd78b00) at debug/ns3/buffer.h:582
#1  0xb7c1e2f3 in ns3::Buffer::Iterator::ReadU16 (this=0xbfd78b00) at ../src/common/buffer.cc:872
#2  0xb7c1e34b in ns3::Buffer::Iterator::CalculateIpChecksum (this=0xbfd78b00, size=47121, initialChecksum=0)
    at ../src/common/buffer.cc:1121
#3  0xb7cbfb5d in ns3::TcpHeader::Deserialize (this=0xbfd78dbc, start=
      {m_zeroStart = 42, m_zeroEnd = 42, m_dataStart = 22, m_dataEnd = 42, m_current = 22, m_data = 0x8298750 ""})
    at ../src/internet-stack/tcp-header.cc:259
#4  0xb7c4da11 in ns3::Packet::PeekHeader (this=0x82987c8, header=@0xbfd78dbc) at ../src/common/packet.cc:206
#5  0xb7ce3a28 in ns3::TcpL4Protocol::Receive (this=0x8067020, packet=@0xbfd78f18, source=@0xbfd78f14, destination=@0xbfd78f10, 
    incomingInterface=@0xbfd78f0c) at ../src/internet-stack/tcp-l4-protocol.cc:453
#6  0xb7cc654d in ns3::Ipv4L3Protocol::ForwardUp (this=0x8066ea0, p=@0xbfd7906c, ip=@0xbfd79020, incomingInterface=@0xbfd79068)
    at ../src/internet-stack/ipv4-l3-protocol.cc:701
#7  0xb7ccb227 in ns3::Ipv4L3Protocol::Receive (this=0x8066ea0, device=@0xbfd790ec, packet=@0xbfd790e8, protocol=2048, from=@0xbfd7933c)
    at ../src/internet-stack/ipv4-l3-protocol.cc:490
#8  0xb7cd5c35 in ns3::MemPtrCallbackImpl<ns3::Ipv4L3Protocol*, void (ns3::Ipv4L3Protocol::*)(ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&), void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty>::operator() (this=0x8068698, a1=@0xbfd79138, a2=@0xbfd79134, a3=2048, a4=@0xbfd7933c) at debug/ns3/callback.h:211
#9  0xb7c80bad in ns3::Callback<void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty>::operator() (this=0x80686d8, a1=@0xbfd79198, a2=@0xbfd79194, a3=2048, a4=@0xbfd7933c) at debug/ns3/callback.h:376
#10 0xb7c7c5ef in ns3::Node::ReceiveFromDevice (this=0x8065a98, device=@0xbfd791ec, packet=@0xbfd791e8, protocol=2048, from=@0xbfd7933c)
    at ../src/node/node.cc:203
#11 0xb7c80cb5 in ns3::MemPtrCallbackImpl<ns3::Node*, bool (ns3::Node::*)(ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&), bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty>::---Type <return> to co
Comment 4 Rajib Bhattacharjea 2008-07-01 22:06:47 UTC
Closed per ML comments: http://mailman.isi.edu/pipermail/ns-developers/2008-July/004357.html
And reopened as bug 247.