Diagnosing TTL Packet Expiry in NE-ONE
If you have a routing loop inside the NE-ONE you'll see errors in the log saying TTL expired e.g:
[35mCODE [ippe_ppo_process_packet_with_classes_and_bandwidth.1460:8] 2022-10-18 08:50:24.058530: TTL Expired on Packet for ppo [<ppo/object_name>], id [<nnn>] using network [<network_name>]
NE-ONE Packets have their own adjustable time to live (unrelated to IPv4 TTL). This is provided to assist with internal loop prevention.
When the TTL: expires a message is printed to ippe.log
The initial ttl is set to very large value (billions), but you can set your own, choose a maximum number of messages per second and print the packet causing the loop using these ippecli commands
--setinternalttl <value in internal hops> - by default ~4.3 billion
--printpacketwhenttlexpires <0 | 1> - by default 0 (off)
--setttlexpired frequency <messages per second> - by default 1
Here's how to use it.
Use the itrinegy/itrinegy (or from v2022.08.936 onwards neone/neone) username/password combo (or use whatever password you changed it to). For example from Windows command prompt:
PS C:\Users\FRP> ssh itrinegy@192.168.202.138 ← change this IP address to your systems IP address
itrinegy@192.168.202.138's password: ← itrinegy (or whatever you changed it to)
You get:
Select option E <Enter key> from the menu to exit into the shell. You get to the system prompt
itrinegy@NE-ONE:~$
Now run the following command:
itrinegy@NE-ONE:~$ sudo docker exec -it ippe bash
This gets you into the NE-ONE's docker environment. You get to this prompt:
root@NE-ONE:/#
Now login using the command line enter
root@NE-ONE:/# sess=`/ippe/bin/ippecli --login "admin <admin's password>` ← change this password to your admin web password
[Note the backticks above: ` - they are not single quotes: ']
This stores the session login token in the bash shell variable sess and we can use this to execute one of the commands above. So, for example, to see more packet details (e.g. ip addresses) when the ttl expires use the command:
root@NE-ONE:/# /ippe/bin/ippecli $sess --setinternalttl 1