Project

General

Profile

Actions

Task #4483

closed

NLSR doesn't converge

Added by Pengyuan Zhou about 6 years ago. Updated almost 6 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
02/01/2018
Due date:
% Done:

0%

Estimated time:

Description

Hi all,

I followed the installation instruction on git repo of mini-NDN.

But it keeps showing not converged even with the test command "sudo minindn --experiment=pingall --nPings=50".

I used "sudo ./install.sh -a" to install mini-NDN, so every dependency should be in location.
Moreover, "sudo mn --test pingall" works fine.

Am I missing some crucial step here?
Do I need manually generate a nlsr.conf and store somewhere?

Thank you.
BR,
Pengyuan

Actions #1

Updated by Ashlesh Gawande about 6 years ago

Okay, just run Mini-NDN and check if NFD and NLSR are running and post the output.

sudo minindn
mini-ndn> a nfdc fib
mini-ndn> a nlsrc status

You don't need to generate anything manually.

Actions #2

Updated by Pengyuan Zhou about 6 years ago

Ashlesh Gawande wrote:

Okay, just run Mini-NDN and check if NFD and NLSR are running and post the output.

sudo minindn
mini-ndn> a nfdc fib
mini-ndn> a nlsrc status

You don't need to generate anything manually.

Hi Ashlesh,

Thank you for your reply.
Please check output below:

mini-ndn> a nfdc fib
FIB:
/localhost/nfd/rib nexthops={faceid=256 (cost=0)}
/ndn/c-site/%C1.Router/cs/c nexthops={faceid=260 (cost=10)}
/localhop/ndn/NLSR/LSA/a-site/%C1.Router/cs/a/ADJACENCY nexthops={faceid=261 (cost=0)}
/ndn/a-site/%C1.Router/cs/a/NLSR/KEY nexthops={faceid=261 (cost=0)}
/ndn/b-site/%C1.Router/cs/b nexthops={faceid=258 (cost=10)}
/localhop/ndn/NLSR/LSA nexthops={faceid=261 (cost=0), faceid=258 (cost=10), faceid=260 (cost=10)}
/localhost/nfd nexthops={faceid=1 (cost=0)}
/ndn/a-site/%C1.Operator nexthops={faceid=261 (cost=0)}
/localhop/ndn/NLSR/sync nexthops={faceid=261 (cost=0), faceid=258 (cost=10), faceid=260 (cost=10)}
/ndn/a-site/%C1.Router/cs/a/KEY nexthops={faceid=261 (cost=0)}
/localhost/nlsr nexthops={faceid=261 (cost=0)}
/ndn/a-site/%C1.Router/cs/a/NLSR/INFO nexthops={faceid=261 (cost=0)}
/localhop/ndn/NLSR/LSA/a-site/%C1.Router/cs/a/NAME nexthops={faceid=261 (cost=0)}
/ndn/a-site/KEY nexthops={faceid=261 (cost=0)}

mini-ndn> a nlsrc status
NLSR Status
LSDB:
OriginRouter: /ndn/a-site/%C1.Router/cs/a

AdjacencyLsa:
  info=LsaInfo(OriginRouter: /ndn/a-site/%C1.Router/cs/a, SequenceNumber: 31, ExpirationPeriod: 3595101 milliseconds)
  adjacency=Adjacency(Name: /ndn/b-site/%C1.Router/cs/b, Uri: udp4://1.0.0.2:6363, Cost: 10)
  adjacency=Adjacency(Name: /ndn/c-site/%C1.Router/cs/c, Uri: udp4://1.0.0.6:6363, Cost: 10)

Name LSA:
  info=LsaInfo(OriginRouter: /ndn/a-site/%C1.Router/cs/a, SequenceNumber: 34, ExpirationPeriod: 3580072 milliseconds)
  name=/ndn/a-site/a

OriginRouter: /ndn/b-site/%C1.Router/cs/b

AdjacencyLsa:
  info=LsaInfo(OriginRouter: /ndn/b-site/%C1.Router/cs/b, SequenceNumber: 31, ExpirationPeriod: 3595112 milliseconds)
  adjacency=Adjacency(Name: /ndn/a-site/%C1.Router/cs/a, Uri: udp4://1.0.0.1:6363, Cost: 10)
  adjacency=Adjacency(Name: /ndn/d-site/%C1.Router/cs/d, Uri: udp4://1.0.0.10:6363, Cost: 10)

Name LSA:
  info=LsaInfo(OriginRouter: /ndn/b-site/%C1.Router/cs/b, SequenceNumber: 34, ExpirationPeriod: 3581206 milliseconds)
  name=/ndn/b-site/b

OriginRouter: /ndn/c-site/%C1.Router/cs/c

AdjacencyLsa:
  info=LsaInfo(OriginRouter: /ndn/c-site/%C1.Router/cs/c, SequenceNumber: 31, ExpirationPeriod: 3595112 milliseconds)
  adjacency=Adjacency(Name: /ndn/a-site/%C1.Router/cs/a, Uri: udp4://1.0.0.5:6363, Cost: 10)

Name LSA:
  info=LsaInfo(OriginRouter: /ndn/c-site/%C1.Router/cs/c, SequenceNumber: 34, ExpirationPeriod: 3582310 milliseconds)
  name=/ndn/c-site/c

OriginRouter: /ndn/d-site/%C1.Router/cs/d

AdjacencyLsa:
  info=LsaInfo(OriginRouter: /ndn/d-site/%C1.Router/cs/d, SequenceNumber: 31, ExpirationPeriod: 3596249 milliseconds)
  adjacency=Adjacency(Name: /ndn/b-site/%C1.Router/cs/b, Uri: udp4://1.0.0.9:6363, Cost: 10)

Name LSA:
  info=LsaInfo(OriginRouter: /ndn/d-site/%C1.Router/cs/d, SequenceNumber: 34, ExpirationPeriod: 3583352 milliseconds)
  name=/ndn/d-site/d

Routing Table Status:

Actions #3

Updated by Pengyuan Zhou about 6 years ago

Wierd, suddenly, it converged when I try again "sudo minindn --experiment=pingall --nPings=50"

Actions #4

Updated by Ashlesh Gawande about 6 years ago

Okay I wanted to check that everything was running - seems like it is.
It could be a timing issue. On slower machines you might have to specify --ctime 90
(Default is 60 (seconds) which might not be enough).

Actions #5

Updated by Pengyuan Zhou about 6 years ago

Ashlesh Gawande wrote:

Okay I wanted to check that everything was running - seems like it is.
It could be a timing issue. On slower machines you might have to specify --ctime 90
(Default is 60 (seconds) which might not be enough).

Hi, sorry, the problem seems still exist.
It did show "NLSR has successfully converged".
However, the ping only works in one-direction of links, for instance in the default topology, I get this:

mini-ndn> pingall
*
* Ping: testing ping reachability
a -> b c X
b -> a X d
c -> X X X
d -> X X X
*** Results: 66% dropped (4/12 received)
mini-ndn> a ping c
PING 1.0.0.6 (1.0.0.6) 56(84) bytes of data.
64 bytes from 1.0.0.6: icmp_seq=1 ttl=64 time=20.2 ms
64 bytes from 1.0.0.6: icmp_seq=2 ttl=64 time=20.1 ms
C
--- 1.0.0.6 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 20.173/20.197/20.222/0.144 ms
mini-ndn> c ping a
connect: Network is unreachable*

As seen, a and c should be able to ping each other, but only one direction would.
I couldn't figure out why.

Thanks.

Actions #6

Updated by Ashlesh Gawande about 6 years ago

The nodes are connected directly using virtual ethernet pairs. Try pinging using IP of a-eth1 to which c-eth0 is connected to:
c ping 1.0.0.5
(Also see a ifconfig and c ifconfig).
Also you cannot ping non-neighbors because there is no routing or switches.

Actions #7

Updated by Pengyuan Zhou about 6 years ago

Hi Ashlesh,

"c ping 1.0.0.5" does work.

Does that mean, if I only write a:c bw=100 in topo.conf ,
then to let a and c could retrieve content with PREFIX from each other, I have to add route with nfdc route add prefix PREFIX nexthop IPADDRESS_OF_PORT ?

Is there a more convenient way to write topo file that, I can use only faceID to add route?

Actions #8

Updated by Ashlesh Gawande about 6 years ago

Yes you will have to add the route using IP.
You can create the face first using nfdc face create and the IP and then use the FaceID.

You also have nlsrc to advertise the route to the entire network:

mini-ndn> a nlsrc advertise /test
mini-ndn> c nfdc fib | grep test
Actions #9

Updated by Ashlesh Gawande about 6 years ago

  • Status changed from New to Closed
Actions #10

Updated by Heemany Shekhar almost 6 years ago

Hi All,

I followed the installation instruction on git repo of mini-NDN. But the test command "sudo minindn --experiment=pingall --nPings=50" gives the error NLSR has not converged.

I first did : "sudo ./install.sh -a" to install mini-NDN
Then I manually installed each dependency,but still the same issue.

Also, below are few responses I get:
sudo minindn

mini-ndn> a nfdc fib
Response:
FIB:
/localhost/nfd/rib nexthops={faceid=258 (cost=0)}
/localhost/nfd nexthops={faceid=1 (cost=0)}

mini-ndn> a nlsrc status
Response : Command Not Found

Can someone please let me know if I am missing a step. Also, as the nlsrc status returns "command not found", I re-build ChronoSync and NLSR.

Regards,
Heemany

Actions

Also available in: Atom PDF