Hello Sebastian,

So, I am on amd64, 6.4 :

OpenBSD 6.4 (GENERIC.MP) #364: Thu Oct 11 13:30:23 MDT 2018
    [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP


The purpose of my setup, is to play around with redistribution between
OSPF and BGP and vice versa.

I found an aging article describing ways to achieve this, and got it
working just fine.

http://openbsd-archive.7691.n7.nabble.com/redistributing-routes-td102714.html


Router B does all the redistribution work.

I.e, it takes the routes received from "C" (ibgp) and adds the rtlabel
so that OSPF can pick it up, and redistribute to its peer.


B# bgpctl show rib
flags: * = Valid, > = Selected, I = via IBGP, A = Announced,
       S = Stale, E = Error
origin validation state: N = not-found, V = valid, ! = invalid
origin: i = IGP, e = EGP, ? = Incomplete

flags ovs destination          gateway          lpref   med aspath origin
AI*>    N 192.168.1.0/30       0.0.0.0            100     0 i
AI*>    N 192.168.2.0/30       0.0.0.0            100     0 i
AI*>    N 192.168.5.1/32       0.0.0.0            100     0 i
AI*>    N 192.168.5.2/32       0.0.0.0            100     0 i
I*>     N 192.168.5.3/32       192.168.2.2        100     0 i


The last host route is for the loopback on router C (known via 192.168.2.2)

B# bgpctl show fib
flags: * = valid, B = BGP, C = Connected, S = Static, D = Dynamic
       N = BGP Nexthop reachable via this route R = redistributed
       r = reject route, b = blackhole route

flags prio destination          gateway
*C       0 127.0.0.0/8          link#0
*S  r    8 127.0.0.0/8          127.0.0.1
*        1 127.0.0.1/32         127.0.0.1
*C R     4 192.168.1.0/30       link#2
*CN      4 192.168.2.0/30       link#1
*  R    32 192.168.5.1/32       192.168.1.1
*        1 192.168.5.2/32       192.168.5.2
*B      48 192.168.5.3/32       192.168.2.2


It gets installed in the FIB too.

The bgpd.conf has a line :

match from 192.168.2.2 set rtlabel zyx

When I look at the global routing table on B :

B# route -v show -inet
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu
Prio Iface Label
224/4              localhost          URS        0    19402 32768     8 lo0
127/8              localhost          UGRS       0        0 32768     8 lo0
localhost          localhost          UHhl       1       47 32768
1 lo0  192.168.1.0/30     192.168.1.2        UCn        1        0
-     4 em1
192.168.1.1        link#2             UHLch      1       47     -     3 em1
192.168.1.2        00:e0:67:05:24:25  UHLl       0       48     -     1 em1
192.168.1.3        192.168.1.2        UHb        0        0     -
1 em1  192.168.2.0/30     192.168.2.1        UCn        1        0
-     4 em0
192.168.2.1        00:e0:67:05:24:24  UHLl       0      211     -     1 em0
192.168.2.2        00:ec:ac:cd:e5:a7  UHLch      2      183     -     3 em0
192.168.2.3        192.168.2.1        UHb        0        0     -
1 em0  192.168.5.1/32     192.168.1.1        UG         0      169
-    32 em1
192.168.5.2        192.168.5.2        UHl        0       53 32768
1 lo100192.168.5.3/32     192.168.2.2        UG         0     9702
-    48 em0   "zyx"


Only the loopback host address from C is labeled.

In ospfd.conf on B, I have configured :

redistribute rtlabel zyx


Moving to router A (the OSPF peer with B), I can see that the route is
being redistributed (one labelled zyx)

A#route -v show -inet
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu
Prio Iface Label
224/4              localhost          URS        0    19425 32768     8 lo0
127/8              localhost          UGRS       0        0 32768     8 lo0
localhost          localhost          UHhl       1       81 32768
1 lo0  192.168.1.0/30     192.168.1.1        UCn        1        0
-     4 em0
192.168.1.1        00:e0:67:09:71:3c  UHLl       0       51     -     1 em0
192.168.1.2        link#1             UHLch      2       47     -     3 em0
192.168.1.3        192.168.1.1        UHb        0        0     -     1 em0
192.168.5.1        192.168.5.1        UHl        0      371 32768
1 lo100192.168.5.2/32     192.168.1.2        UG         0        0
-    32 em0  192.168.5.3/32     192.168.1.2        UG         0
13     -    32 em0


But, I cannot see the link network between B and C (192.168.2.0/30).


B#cat /etc/bgpd.conf (Comments removed for brevity)

# cat /etc/bgpd.conf | grep -v "^#"

ASN="65001"

AS $ASN
router-id 192.168.5.2

prefix-set mynetworks {         \
        192.168.5.2/32          \
        192.168.2.0/30          \
}

prefix-set bogons {
        0.0.0.0/8               # 'this' network [RFC1122]
        10.0.0.0/8              # private space [RFC1918]
        100.64.0.0/10           # CGN Shared [RFC6598]
        127.0.0.0/8             # localhost [RFC1122]
        169.254.0.0/16          # link local [RFC3927]
        172.16.0.0/12           # private space [RFC1918]
        192.0.2.0/24            # TEST-NET-1 [RFC5737]
        192.88.99.0/24          # 6to4 anycast relay [RFC7526]
        #192.168.0.0/16         # private space [RFC1918]
        198.18.0.0/15           # benchmarking [RFC2544]
        198.51.100.0/24         # TEST-NET-2 [RFC5737]
        203.0.113.0/24          # TEST-NET-3 [RFC5737]
        224.0.0.0/4             # multicast
        240.0.0.0/4             # reserved for future use
        ::/8                    # RFC 4291 IPv4-compatible, loopback, et al
        0100::/64               # Discard-Only [RFC6666]
        2001:2::/48             # BMWG [RFC5180]
        2001:10::/28            # ORCHID [RFC4843]
        2001:db8::/32           # docu range [RFC3849]
        2002::/16               # 6to4 anycast relay [RFC7526]
        3ffe::/16               # old 6bone
        fc00::/7                # unique local unicast
        fe80::/10               # link local unicast
        fec0::/10               # old site local unicast
        ff00::/8                # multicast
}

network prefix-set mynetworks set large-community $ASN:1:1
network inet priority 32

group "ibgp mesh v4" {
        remote-as $ASN
        # use loopback for IBGP sessions, assume its distributed in OSPF
        local-address 192.168.2.1
        neighbor 192.168.2.2            # 4nic2
}

allow to ebgp prefix-set mynetworks large-community $ASN:1:1

deny quick from ebgp prefix-set mynetworks or-longer

allow from ibgp
allow to ibgp

match from 192.168.2.2 set rtlabel zyx

match from ebgp set { community delete $ASN:* }
match from ebgp set { large-community delete $ASN:*:* }

allow from any inet prefixlen 8 - 24
allow from any inet6 prefixlen 16 - 48

match from any community GRACEFUL_SHUTDOWN set { localpref 0 }

deny quick from any prefix-set bogons or-longer

deny quick from any AS 23456
deny quick from any AS 64496 - 131071
deny quick from any AS 4200000000 - 4294967295

deny from any max-as-len 100


network inet priority 32 is used to redistribute ospf into bgp.


Hope it makes more sense now.

Simply, how can I get router B to advertise (or label) the directly
connected network (192.168.2.0/30) so that I can re-advertise into
OSPF.

Is there a way to add a label to a directly connected network? Can I
get router C to advertise this, and then use router B to label? etc


Cheers,

Simon.




On Mon, 14 Jan 2019 at 22:06, Sebastian Benoit <[email protected]> wrote:

> Hi,
>
> Simen Stavdal([email protected]) on 2019.01.14 21:29:43 +0100:
> > Hello,
> >
> > I have three routers connected in a  chain.
> > A<->B<->C
> >
> > All routers have a host address as loopback 100 (192.168.5.x/32, A=1,
> B=2,
> > C=3).
> > The segments between the routers are 192.168.1.0/30 (AB) and
> 192.168.2.0/30
> > (BC).
> >
> > A to B runs OSPF
> > B to C runs IBGP
> >
> > I redistribute the BGP routes into OSPF using the label I append on
> router
> > B.
> > router B : match from <peer> set rtlabel zyx
> > And this works just fine. I see the tag being applied (but only on the
> > advertised lo100 host address).
> > Reverse redistribution is based on route priority (32) for OSPF into bgp.
> > All good.
> >
> > The link network however between B and C is not being advertised, as it
> is
> > locally connected for both router B and C. They are added in the network
> > statement on both sides.
> > So, on B, I can see the route label on the C loopback interface marked
> zyx.
> > 192.168.2.0/30 however does not have any route label, and hence will
> not be
> > redistributed into OSPF.
> >
> > So, I can ping router C from router B.
> > When I ping loopback on router C from router A using the loopback
> interface
> > as source, all is good.
> > When I ping with no source interface, the source address is the link
> > network not being advertised, and hence the far router does not know
> where
> > to send the traffic.
> >
> > I will continue to play around with this, just wondering if anybody has a
> > "good practice" way of dynamically advertising the network.
>
> Your mail is missing
>
> - what version of openbsd you are running, i.e. dmesg
>
> - your bgpd.conf and ospfd.conf files would be helpful.
>
> - you describe what you have currently configured, but not what your actual
> intent is. It may be better if you say what you want your network devices
> to
> do.
>
> That said, if i understand what you are doing right, maybe
> "network inet connected" on router B bgpd.conf will help.
> (you may also need filters to allow the prefix to be sent to C).
>
> /Benno
>

Reply via email to