This blog post arose when trying to document IP V6 routing. The behaviour did not work as expected.
- Displaying a dynamic route
- How to change a dynamic route
- How do I delete a dynamically created route?
- Creating a default router
Static routes
Linux
On Linux, you can use command like
sudo ip -6 route add 2001:0db8:1::9/64 dev tap1 sudo ip -6 route del 2001:0db8:1::9/64 dev tap1 sudo ip -6 route flush 2001:0db8:1::9/64 dev tap1 sudo ip -6 -statistics route flush 2001:0db8:1::9/64 dev tap1
Some information may be stored in the neighbour cache so you may need to use commands like:
sudo ip -6 neigh flush to 2001:db8:1::9 sudo ip -6 neigh flush dev tap1
z/OS
You define static routes between BEGINRoutes and ENDRoutes. If you want to change one entry, you have to replace all entries. You cannot add or remove individual entries.
You cannot have an empty BEGINRoute… ENDRoute. If used, it has to have at least one entry. You can create a dummy entry that will never be used.
You can change this file, and use the OBEY command to activate it
v tcpip,tcpip,obeyfile,USER.Z24C.TCPPARMS(routefc)
To delete an entry, remove it from the file, and activate the file.
Dynamic routes
Dynamic routes are created from facilities like radvd on Linux. This defines capability available on an interface.
For example
interface tap1 { AdvSendAdvert on; AdvDefaultLifetime 60; prefix 2001:db8:1::/64 { }; route 2001:db8::/64 {AdvRouteLifetime 1800}; route 2008::/64{ AdvRouteLifetime 600}; };
At the Linx(sender)
- it creates an internal address(fe80::…) for the tap1 interface
- it create a route saying to get to 2001:db8::1/64 route it over the tap1 interface.
At the remote end, it receives a Router Advertisement packet. This includes
- The IP address of tap1 at the Linux end (created above)
- Route statements which have
- The address range
- The route lifetime.
From this, the remote end creates a dynamic route for every route in the packet.
How to change a dynamic route
Change the radvd configuration file, then either
- cancel and restart ravd
- ps ax |grep radvd |grep -v grep |awk ‘{print $1 }’|sudo xargs kill -9
- sudo radvd -d 5 -l /var/log/radvd.log -m logfile -C radvd.conf
- send a SIGHUP (sudo kill -s HUP <pid> )
The route expires after AdvRouteLifetime seconds. For the route to remain current, there needs to be a regular Router Advertisement message.
Displaying a dynamic route
On Linux ip -6 route gave me (for one of the dynamic routes) for one entry
2008::/64 dev eno1 proto ra metric 100 pref medium 2008::/64 dev eno1 proto kernel metric 256 expires 86293sec pref medium
Where 86293sec is just under 1 day.
On z/OS you can display this dynamic routing information using the TSO NETSTAT ROUTE RADV DETAIL command.
Example output
DestIP: 2008::/64 Gw: fe80::8024:bff:fe45:840c Intf: IFPORTCP6 MTU: 0 Metric: 00000002 LifetimeExp: 12/20/2022 12:32 GwReachable: Yes IntfActive: Yes
This shows there is an entry for 2008::/64, and it is due to expire at 20th December 2022 at 12:32.
How do I delete a dynamically created route?
You have several ways
- Remove it from the radvd configuraton file. Restart radvd, and let the definition expire – possibly hours later.
- On Linux, remove the entry from the config file, restart radvd, use route delete….
- Cause it to expire earlier
- Edit the configuration file
- Set AdvRouteLifetime to a low value like 10 seconds,
- Restart the radvd agent. This sends the RA message to the remote system, and sets the expiry time of the one of interest,
- Delete the route from the config file,
- Restart the radvd agent again. This sends the RA which will not have the route.
The information may still be in the neighbourhood cache, and this may need to be flushed.
Creating a default router
For the interface statement, set a default life time > 0. A value of 0 says this is not a default router.
interface tap1 { AdvSendAdvert on; AdvDefaultLifetime 0; ...
To remove the default router, set AdvDefaultLifetime to 0; and redeploy.
If there is a static definition for the default route, this will be used in preference to the dynamically defined router.