So, AFAIK, packets "hop" between routers. Packets are forwarded via a router's default path until it gets to destination IP. So is it possible to specify a specific set of routers this packet "hops" to?
It's theoretically possible, but not really in a practical sense.
The IP protocol includes two options:
- Loose Source and Record Route (LSRR)
- Strict Source and Record Route (SSRS)
They're both described in RFC 791.
The difference between them is that LSRR can specify a partial route, while SSRS specifies the complete, exact route. With LSRR, each router along the path uses its local routing table to determine how to send to the next hop in the source route.
The reason it's not practical is because most routers are configured to ignore this option. RFC 1122 says that source-route forwarding must be disabled by default, and I would be surprised if any ISP enables it.
Routing is done on an end to end basis. This means, each router along the path needs to make its own individual routing decision based on which path that Router thinks is the best. Fortunately, without direct control over the networks a packet will traverse, there is no way to "specify a specific set of routers this packet hops to". E.g. If I send a packet destined for Google to my ISP then it is up to my ISP to forward this traffic along its best path.
Packets are forwarded via a router's default path
This is not necessarily correct. Routing works on a most specific match, this means that a Router will only take the default if it does NOT have a more specific Route for a prefix.
Yes you can, there's MPLS which allows for Explicit routing with strict hops. There's also the concept of link coloring within administrative groups for Constraint Shortest Path First.
Ditrapanij is right as well, but he's either forgotten or is unaware of MPLS. MPLS is local though only to your own network, you cannot specify a constraint path beyond your network egress.