Dear all,
I'm trying to implement an ipV4 traceroute application (using ns-3 v3.28).
This can be easily achieved by some modifications to the v4ping application.
In previous ns-3 versions changing the socket IpTttl did not have any effect but this bug have
been addressed and discussed here for the same traceroute application:
Now, sending a ICMPV4_ECHO with an ipTTl to 1 does send an ip header with TTL =1 but the receiving node does not reply with an ICMPV4_TIME_EXCEEDED
( or ICMPV4_DEST_UNREACH in some cases). I don't know if this is because the receiving node drops the packet without replying, or because the source node filters the
ICMPV4_TIME_EXCEEDED type packets when receiving a reply.
Is there any filter on that I am not aware of , or the ICMPV4_TIME_EXCEEDED packet reply are not handled correctly?
This can be easily tested by modifying /internet-apps/model/v4ping.cc
in the V4Ping::StartApplication (void) adding the line:
m_socket->SetIpTttl(1);
By setting this, the receive function (V4Ping::Receive (Ptr<Socket> socket))
should only receive packets with the header ICMPV4_TIME_EXCEEDED, but no packets are received (icmp->getType == ICMPV4_TIME_EXCEEDED).
I used model/aodv/examples/aodv.cc as the scenario file to test the modified ping application
Any guidance would be much appreciated.
Sincerely,
Alberto G.