netbox-community / netbox

The premier source of truth powering network automation. Open source under Apache 2. Try NetBox Cloud free: https://netboxlabs.com/free-netbox-cloud/
http://netboxlabs.com/oss/netbox/
Apache License 2.0
15.77k stars 2.54k forks source link

Add support for IP Routing #8071

Closed micko closed 2 years ago

micko commented 2 years ago

NetBox version

v3.1.1

Feature type

New functionality

Proposed functionality

Support for IP Routing, i.e. static routing.

Use case

Every device requires routing, servers/end devices require a default route (yes I have a custom field now but it's ugly so maybe make a permanent field).

Network devices (routers/firewalls/switches) have and require routing capabilities to set various static routes.

Database changes

routes table:

External dependencies

None.

jeremystretch commented 2 years ago

Support for IP Routing, i.e. static routing.

You're going to need to provide much more detail in your proposal than that I'm afraid.

micko commented 2 years ago

Support for IP Routing, i.e. static routing.

You're going to need to provide much more detail in your proposal than that I'm afraid.

The request is fairly straightforward - every system that is on the internet or any sort of network (even private) requires routing. The ask is to create a table where you can maintain any routing entries (system default route included). My specific use case (network device, i.e. juniper, cisco, arista, etc) also require various (non default) static route entries, i.e.:

cisco example: ip route 100.100.100.0 255.255.255.0 200.200.200.200 100 or example using next-hop as an interface: ip route 100.100.100.0 255.255.255.0 tunnel1 100

The model for this is:

constraints:

Regarding route types, sometimes there is a need to categorize routes based on their usage - aggregates being one of them but there is also "global", "regional", etc.

jeremystretch commented 2 years ago

I'm afraid that modeling an entire routing topology is out of scope for NetBox. What are you trying to accomplish here?

micko commented 2 years ago

I'm afraid that modeling an entire routing topology is out of scope for NetBox. What are you trying to accomplish here?

It falls inline with RIR, Route Targets, VRFs..

DanSheps commented 2 years ago

For something the scope of routing infrastructure (static routes, etc), you are better to look into custom plugins.

micko commented 2 years ago

The underlying requirement for VRFs, VLANs, Route Targets is routing in order to communicate anywhere outside of their boundary. The request is not to model a routing infrastructure (which in 99% of the cases requires and IGP and MPLS/BGP these days) but to enable simple & basic routing.

Even your headline says "application designed to empower network automation" but you are saying that the most elementary thing in "networking" is out of scope..

candlerb commented 2 years ago

I was thinking about this too.

From my point of view, routes are primarily prefixes. Therefore if you create a prefix, and you add some tags or custom fields to say how and where you want to announce it, that should do the job. I don't think Netbox should prescribe how you do this; things like nexthop IP and nexthop interface are only a custom field away.

The only problem I can see is that you will end up creating additional layers of prefix when announcing summary routes. This in itself isn't a problem, but if you mark them as "Container" it messes up the usage calculation (which isn't really documented, but see #8091)

It would work to mark them as "Active", although this then doesn't distinguish between a prefix which is actually active on some interfaces (i.e. this particular prefix and mask is a broadcast domain) versus this is a prefix which is an summary route announcement. Perhaps that distinction is not too important, although adding another Prefix status of "Summary" would be possible.

Note: what I propose just models routes in your network in general; it could control how routes are injected into your IBGP or announced to peers. However, if you want to say "add this as a static route on this particular device" then that's something else - it becomes be a device-level configuration instruction. Config contexts might be usable here, but otherwise I think you're looking at a plugin, because there's not currently a way to have multiple instances of a custom field on an object.

Alternatively, for some environments, a custom field on interface might do the job (#5401 - this was added in v2.11.0). That is, you would add a prefix in a custom field, and that would indicate that you wanted it static-routed down this interface. Again, you could only set a single prefix that way, although "route1", "route2", "route3" might cover your use cases. For now, you'd have to enter the prefix address/mask as a text string, but there's an open FR for being able to have a custom field which references another object (#7006)

jeremystretch commented 2 years ago

As previously stated, attempting to model a routing topology is out of scope for NetBox, however it may be a good use case for a plugin. I will caution that what you want to do is probably much more involved than you assume, but you're free to prove me wrong.