Hi!

I am observing strange BGP announcement problem.

BGP peering is between bird router (version 2.0.2) and cisco router.

BIRD 10.0.0.1 <---> 10.0.0.2 Cisco

I am announcing prefix 10.10.10.10/32 from bird to cisco.

My initial bird configuration is as follows:

##################
[root@localhost ~]# cat /etc/bird.conf
router id 10.0.0.1;

filter filter1 {
 accept;
}

protocol kernel {
        persist yes;
        learn yes;
        scan time 10;
        ipv4 {
        import none;
        export none;
        };
}
protocol device {
        scan time 10;
}

protocol direct {
        interface "lo";
        ipv4 {
        import filter filter1;
        export none;
        };
}

protocol bgp peer1 {
              local as 65001;
              neighbor 10.0.0.2 as 65002;
              hold time 45;
              ipv4 {
              import none;
              export filter filter1;
              };
}
#####################

IP address 10.10.10.10/32 is configured on loopback interface:
lo:1: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 10.10.10.10  netmask 255.255.255.255

It works just fine with this configuration. I can see announcement of 10.10.10.10/32 on cisco router:
R1#show ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
*> 10.10.10.10/32   10.0.0.1                               0 65001 i


Strange thing happens when I make a change to filter1, instead of:
filter filter1 {
 accept;
}

I change it to:
filter filter1 {
 if ( net = 10.10.10.10/32 ) then { reject; }
 accept;
}

Basically I am blocking import of prefix 10.10.10.10/32 into direct protocol and at the same time I am blocking export of prefix 10.10.10.10/32 to peer1 (it is the same filter filter1 both for direct import and for peer1 export). After the change of /etc/bird.conf I am making "birdc configure" and I am expecting to see the withdrawal message on cisco side, but there is none (I checked it with tcpdump).

Here is what I can still see on cisco side:
R1#show ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
*> 10.10.10.10/32   10.0.0.1                               0 65001 i

This is the output of birdc "show route":
bird> show route
bird>

This is the output of birdc "show route export peer1":
bird> show route export peer1
bird>

So there is no route according to bird, but it seems like bird does not send withdrawal message. Either I am doing something wrong, or it is a bird bug. Appreciate your help.

--
Regards,
Sergey

Reply via email to