Updated Date: 07/07/2026
Move ZebOS BGP and BFD routing configuration to iControl REST
Before moving your configuration to iControl REST, be sure to create the VLANs and Self-IP addresses you need to use.
You have to create a new deployment because migration compatibility is not yet available.
-
Enable the
sys db variableby adding a JSON object to the URI.For example, if you had two devices (
10.144.130.174and10.144.128.231) you would enter this command into a terminal that can reach both devices:curl -k -u admin:admin https://10.144.130.174/mgmt/tm/sys/db/tmrouted.tmos.ro uting/ -H "Content-Type: application/json" -X PUT -d '{"value": "enable"}'curl -k -u admin:admin https://10.144.128.231/mgmt/tm/sys/db/tmrouted.tmos.ro uting/ -H "Content-Type: application/json" -X PUT -d '{"value": "enable"}' -
Remove existing routing protocols.
For example:
curl -k -u admin:admin https://10.144.130.174/mgmt/tm/net/route-domain/0/ -H "Content-Type: application/json" -X PATCH -d '{"routingProtocol": []}' curl -k -u admin:admin https://10.144.128.231/mgmt/tm/net/route-domain/0/ -H "Content-Type: application/json" -X PATCH -d '{"routingProtocol": []}' -
Create the routing instance: name, specify the AS, redistribute connected, static, and kernel routes.
For example:
curl -k -u admin:admin https://10.144.130.174/mgmt/tm/net/routing/bgp -H "Content-Type: application/json" -X POST -d '{"name": "testBGP", "localAs": "111", "addressFamily": [ {"name": "ipv4", "redistribute": [ {"name": "connected"}, {"name": "static"}, {"name": "kernel"}]}, {"name": "ipv6", "redistribute": [ {"name": "connected"}, {"name": "static"}, {"name": "kernel"}]}]}' curl -k -u admin:admin https://10.144.128.231/mgmt/tm/net/routing/bgp -H "Content-Type: application/json" -X POST -d '{"name": "testBGP", "localAs": "112", "addressFamily": [ {"name": "ipv4", "redistribute": [ {"name": "connected"}, {"name": "static"}, {"name": "kernel"}]}, {"name": "ipv6", "redistribute": [ {"name": "connected"}, {"name": "static"}, {"name": "kernel"}]}]}' -
To verify the routing instance:
tmsh list net routing -
Set the routers up as neighbors.
For example:
curl -k -u admin:admin https://10.144.130.174/mgmt/tm/net/routing/bgp/testBGP /neighbor -H "Content-Type: application/json" -X POST -d '{"name":"1.1.1.2", "remoteAs" : "112"}' curl -k -u admin:admin https://10.144.130.174/mgmt/tm/net/routing/bgp/testBGP /neighbor -H "Content-Type: application/json" -X POST -d '{"name":"1::2", "remoteAs" : "112"}' curl -k -u admin:admin https://10.144.128.231/mgmt/tm/net/routing/bgp/testBGP /neighbor -H "Content-Type: application/json" -X POST -d '{"name":"1.1.1.1", "remoteAs" : "111"}' curl -k -u admin:admin https://10.144.128.231/mgmt/tm/net/routing/bgp/testBGP /neighbor -H "Content-Type: application/json" -X POST -d '{"name":"1::1", "remoteAs" : "111"}' -
Create the routes.
An example of static routes:
curl -k -u admin:admin https://10.144.130.174/mgmt/tm/net/route -H "Content- Type: application/json" -X POST -d '{"name":"4.4.4.1/32", "blackhole": true}' curl -k -u admin:admin https://10.144.130.174/mgmt/tm/net/route -H "Content- Type: application/json" -X POST -d '{"name": "4::1/128", "blackhole": true}' curl -k -u admin:admin https://10.144.128.231/mgmt/tm/net/route -H "Content- Type: application/json" -X POST -d '{"name":"3.3.3.1/32", "blackhole": true}' curl -k -u admin:admin https://10.144.128.231/mgmt/tm/net/route -H "Content- Type: application/json" -X POST -d '{"name": "3::1/128", "blackhole": true}'An example of connected routes (self IP addresses):
curl -k -u admin:admin https://10.144.130.174/mgmt/tm/net/self -H "Content- Type: application/json" -X POST -d '{"name":"4.4.4.2/32", "vlan": "testVlan", "allowService": "none"}' curl -k -u admin:admin https://10.144.130.174/mgmt/tm/net/self -H "Content- Type: application/json" -X POST -d '{"name":"4::2/128", "vlan": "testVlan", "allowService": "none"}' curl -k -u admin:admin https://10.144.128.231/mgmt/tm/net/self -H "Content- Type: application/json" -X POST -d '{"name":"3.3.3.2/32", "vlan": "testVlan", "allowService": "none"}' curl -k -u admin:admin https://10.144.128.231/mgmt/tm/net/self -H "Content- Type: application/json" -X POST -d '{"name":"3::2/128", "vlan": "testVlan", "allowService": "none"}'An example of kernel routes (virtual-addresses):
curl -k -u admin:admin https://10.144.130.174/mgmt/tm/ltm/virtual-address -H "Content-Type: application/json" -X POST -d '{"name": "4.4.4.3", "routeAdvertisement": "always"}' curl -k -u admin:admin https://10.144.130.174/mgmt/tm/ltm/virtual-address -H "Content-Type: application/json" -X POST -d '{"name": "4::3", "routeAdvertisement": "always"}' curl -k -u admin:admin https://10.144.128.231/mgmt/tm/ltm/virtual-address -H "Content-Type: application/json" -X POST -d '{"name": "3.3.3.3", "routeAdvertisement": "always"}' curl -k -u admin:admin https://10.144.128.231/mgmt/tm/ltm/virtual-address -H "Content-Type: application/json" -X POST -d '{"name": "3::3", "routeAdvertisement": "always"}' -
To verify the routes have been exchanged:
tmsh show net routing bgpIt can take about 10 seconds for the daemon to start up.
-
To modify the configuration:
curl -k -u admin:admin https://10.144.130.174/mgmt/tm/net/routing/bgp/testBGP /neighbor -H "Content-Type: application/json" -X POST -d '{"name":"5.5.5.5", "remoteAs" : "535"}'