BGP and OSPF

It is known that redistribution of routes learnt by BGP into an IGP is
considered harmful, but I am still wondering how you can route
without redistribution of BGP routes in an OSPF cloud that
connects to several external networks. I have the following
scenario.

       RA (AS100) | RB (AS101)

< major snip >

(Method 1) One way to is to assume that R1 redistributes the route
1.1/16 into OSPF, which will then propagate it as a type 4 LSA.
Then R0 and R4 can build a forwarding table (using OSPF) and set a
forwarding entry to 1.1/16. This method is what is described in
Huitema's book "Routing in the Internet". Now I understand that
this is not done in practice (I am right ?) since it forces OSPF
to carry all the IP prefixes seen by BGP, which in that case might
be all prefixes in the world.

No. Don't.. Please. I've seen enough networks that break with IGP<->BGP redists.

(Method 2) An alternative is to have recursive table lookup in
forwarding entries at all border routers (R1 to R4). R4 writes
that the destination address 1.1/16 is to be sent to NEXT-HOP =
3.3.3.1. R4 learns this over I-BGP from R1. The data packet with
destination address in 1.1/16 uses loose source routing inside
AS559 and is sent to the link R1-RA. The job of OSPF is only to
propagate how to route to all addresses in AS559 (including
3.3.3.1) and there is no redistribution of BGP into OSPF. Border
routers need to update the forwarding tables using their RIB
learnt from BGP.

This is the way to do it. Recursive route lookup++

What you can even do is to reduce your IGP table entries:

  1) Have all of your 'edge'/'border' routers set next-hop-self on their IBGP peering to core routers.
     This will eliminate the need for 'DMZ' or '/30 pointopoint (whatever u wanna call it)' routes to exist in IGP tables. Smaller IGP = Faster convergence = more stability = more SLA guarantee = more revenue :slight_smile:

  2) Have your edge/border routers become route reflector clients and the R0 or the routers sitting at the core would act as route reflectors. This way you don't have to keep adding up IBGP peers all over your network as you add more routers at your edge.

Now source routing is obsolete in IPv4, does any one use it ?

Not that I know of... At least not me.

(Method 3) Same as method 2, but IP in IP encapsulation is used
instead of loose source routing. Seems heavy weight for a high
speed backbone.

Yikes.

(Method 4) Same as method 2, but Tag Switching (or MPLS) is used
instead of loose source routing.

Are we talking about IGP vs. EGP or are we talking about MPLS vs. other transport mechanisms?

Can any one help me understand what is done in practice among
Methods 1 to 4, or any other one that I missed ?

Method 2. Please for the love of god, don't even try Method 1, that's quite bad.

-hc

You can avoid the problem by making all your BGP speaking routers your
core routers (make sure they have direct adjacencies). Make non BGP
speaking routers leaf nodes and avoid providing BGP transit sessions
across them.

Mike.

It is known that redistribution of routes learnt by BGP into an IGP is
considered harmful, but I am still wondering how you can route
without redistribution of BGP routes in an OSPF cloud that
connects to several external networks. I have the following
scenario.

       RA (AS100) | RB (AS101)

   ------------------------

       R1 R2

           R0 (AS559)

       R3 R4

    ------------------------

       RC (AS201) | RD (AS202)

All routers except R0 run BGP. R0--R4 are in the same AS and run
OSPF. RA-RD are all in distinct ASs. RA is BGP peer to R1, RB to
R2, RC to R3 and RD to R4. The addresses and numbers are fake. The
ASs are peers, not customers.

Assume that R1 learns a route to a network in AS100, says 1.1/16,
with next hop = 3.3.3.1 (the IP address of the p2p link R1-RA).
Now assume a data packet with destination address in 1.1/16 is
received by any router in AS559, say for example R0 or R4. The
router has to know where to forward it. Since AS559 connects to
different peer ASs in different locations, it does not seem
feasible to use default routes.

(Method 1) One way to is to assume that R1 redistributes the route
1.1/16 into OSPF, which will then propagate it as a type 4 LSA.
Then R0 and R4 can build a forwarding table (using OSPF) and set a
forwarding entry to 1.1/16. This method is what is described in
Huitema's book "Routing in the Internet". Now I understand that
this is not done in practice (I am right ?) since it forces OSPF
to carry all the IP prefixes seen by BGP, which in that case might
be all prefixes in the world.

(Method 2) An alternative is to have recursive table lookup in
forwarding entries at all border routers (R1 to R4). R4 writes
that the destination address 1.1/16 is to be sent to NEXT-HOP =
3.3.3.1. R4 learns this over I-BGP from R1. The data packet with
destination address in 1.1/16 uses loose source routing inside
AS559 and is sent to the link R1-RA. The job of OSPF is only to
propagate how to route to all addresses in AS559 (including
3.3.3.1) and there is no redistribution of BGP into OSPF. Border
routers need to update the forwarding tables using their RIB
learnt from BGP.

Now source routing is obsolete in IPv4, does any one use it ?

(Method 3) Same as method 2, but IP in IP encapsulation is used
instead of loose source routing. Seems heavy weight for a high
speed backbone.

(Method 4) Same as method 2, but Tag Switching (or MPLS) is used
instead of loose source routing.

Can any one help me understand what is done in practice among
Methods 1 to 4, or any other one that I missed ?

Thanks in advance, JL

+----------------- H U R R I C A N E - E L E C T R I C -----------------+

By definition, R0 should run BGP, or, R1-4 should be meshed and exchange
BGP with each other. If R1-4 are meshed, then, it doesn't completely matter
which of R1-4 R0 defaults to, they will handle it from there. If they are
not properly meshed, then, it gets messy, but, the protocol spec. says as
much.

Owen

I have received many very helpful responses to that question. In summary, the majority common practice for the case I presented seems to be:

1. run BGP on all routers in the core, even those that do not have interfaces to the outside of the AS. Here, this means R0 should run BGP.

2. This causes a potential scaling problem since I-BGP requires a full mesh. The problem is solved by having some core routers (here: R0) be route reflectors.

3. Running MPLS over R0 is also an option but the majority recommends not to do it (more complex than running BGP everywhere).

Thanks to all contributions !

JY