Hi All,

   I  notice that if BGP is directly connected, when BGP started, the bgp_start_locked() is called and using neigh_find2() to lookup the neighbor. In neigh_find2(), bird will loop iface_list and comparing the remote IP address with the IP prefix of interface, checking whether is the subnet.

Now, I have a question that why not using route table to find the neighbor ?  Since I have one case that make me have some confusion.

 

Test Case:

DUT1                                          DUT2                                                                                                                               DUT3

                                                           lo interface 2000::1111/128 , interface3 3000:1::8/112 <-----------------------> interface4 3000:1::9/112, lo interface: 2000::2222/128

      interface1 2000::1/112 <------>interface2: 2000::1/112

 

   Igor the route table configuration, suppose the route is correct.

   1.  Anyone known the topology connection is normal or correct ?

  2. if yes,  create  BGP peer with loopback interface 2000::1111, remote IP 2000::2222, directly connection.

   3. BGP peer will  use 2000::2222 to compare with interface prefix on DUT1, find the neighbor interface2 with prefix 2000::1/112 [interface2 on DUT2]

 

BUT, actually, BGP peer TCP connection is not directly connected,  and TCP connection don’t using interface2 on DUT2,  but using interface3 on DUT2 to connect interface4 of DUT3.

 

Best Regards,

Arvin Gan