BGP Conditional Advertisement.

This features allows for advertisement of routes to other neighbours only when a specific condition is met. Particularly by checking the existence of another prefix in the BGP RIB such that the advertisement of a specific prefix or set of prefixes depends on the existence or inexistence of another prefix in the bgp table.

Objective

AS64513 is the source of the prefix 172.31/16 which it announce to its two peers in AS64512 and AS64515 who in turn announce it to AS64516. AS64516 itself is a source of two prefixes 10.1.1/24 and 172.18.0/24. The objective is to have AS64516 announce the prefix 10.1.1/24 to AS64515 only when AS64515 announces the prefix 172.31/16 (from AS64513) to AS64516. When AS64515 is not advertising 172.31/16 to AS64516, AS64516 should stop advertising its prefix 10.1.1/24 to AS64515 while still advertising the other prefixes (except 10.1.1/24) to AS64515 as well as advertising 10.1.1/24 and other prefixes to AS64512.

BGP Conditional advertisement

Configuration

AS64516
interface FastEthernet0/0
 description CONNECTION TO AS64515
 ip address 10.0.0.10 255.255.255.252
!
interface FastEthernet0/1
 description CONNECTION TO AS64512
 ip address 10.0.0.13 255.255.255.252
!
router bgp 64516
 neighbor 10.0.0.9 remote-as 64515
 neighbor 10.0.0.14 remote-as 64512
 !
 address-family ipv4
  network 10.1.1.0 mask 255.255.255.0
  network 172.18.0.0 mask 255.255.255.0
  neighbor 10.0.0.9 activate
  neighbor 10.0.0.9 advertise-map MAP_AS64515_CONDITIONAL_OUT exist-map MAP_AS64513_FROM_AS64515
  neighbor 10.0.0.9 soft-reconfiguration inbound
  neighbor 10.0.0.14 activate
  neighbor 10.0.0.14 soft-reconfiguration inbound
 exit-address-family
!
ip as-path access-list 1 permit 64515 64513.*
!
ip route 10.1.1.0 255.255.255.0 Null0
ip route 172.18.0.0 255.255.255.0 Null0
!
ip prefix-list PL_AS64513 seq 5 permit 172.31.0.0/16
!
ip prefix-list PL_AS64516 seq 5 permit 10.1.1.0/24
!
route-map MAP_AS64513_FROM_AS64515 permit 10
 description MATCH AS64513 PREFIX RECEIVED FROM AS64515
 match ip address prefix-list PL_AS64513
 match as-path 1
!
route-map MAP_AS64515_CONDITIONAL_OUT permit 10
 match ip address prefix-list PL_AS64516
The route-maps applied tell the router to use MAP_AS64515_CONDITIONAL_OUT only when the conditions in MAP_AS64513_FROM_AS64515 are satisfied if the conditions are not satisfied it does the opposite of what is specified in MAP_AS64515_CONDITIONAL_OUT which in this case the opposite of MAP_AS64515_CONDITIONAL_OUT is to deny prefixes from prefix-list PL_AS64516 since the route map MAP_AS64515_CONDITIONAL_OUT does not have any other entries the implicit deny in the end of the route-map turns to allow all that is not matched with the prefix-list PL_AS64516 The configuration on the other routers is just standard BGP stuff.
AS64513
  
interface FastEthernet0/0
 description CONNECTION TO AS64515
 ip address 10.0.0.1 255.255.255.252
interface FastEthernet0/1
 description CONNECTION TO AS64512 
 ip address 10.0.0.5 255.255.255.252
router bgp 64513
 bgp log-neighbor-changes
 neighbor 10.0.0.2 remote-as 64512
 neighbor 10.0.0.6 remote-as 64515
 !
 address-family ipv4
  network 172.31.0.0
  neighbor 10.0.0.2 activate
  neighbor 10.0.0.6 activate
 exit-address-family
ip route 172.31.0.0 255.255.0.0 Null0
AS64515
 
interface FastEthernet0/0
 description CONNECTION TO AS64516
 ip address 10.0.0.9 255.255.255.252
interface FastEthernet0/1
 description CONNECTION TO AS64513
 ip address 10.0.0.6 255.255.255.252
router bgp 64515
 neighbor 10.0.0.5 remote-as 64513
 neighbor 10.0.0.10 remote-as 64516
 !
 address-family ipv4
  neighbor 10.0.0.5 activate
  neighbor 10.0.0.10 activate
  neighbor 10.0.0.10 soft-reconfiguration inbound
  neighbor 10.0.0.10 route-map MAP_AS64516_OUT out
 exit-address-family
ip prefix-list PL_AS6513 seq 5 permit 172.31.0.0/16
route-map MAP_AS64516_OUT deny 10
 description DENY AS64513
 match ip address prefix-list PL_AS6513
route-map MAP_AS64516_OUT permit 20
 description PERMIT OTHERS
AS64512
interface FastEthernet0/0
 description CONNECTION TO AS64513
 ip address 10.0.0.2 255.255.255.252
interface FastEthernet0/1
 description CONNECTION TO AS64516 
 ip address 10.0.0.14 255.255.255.252
router bgp 64512
 bgp log-neighbor-changes
 neighbor 10.0.0.1 remote-as 64513
 neighbor 10.0.0.13 remote-as 64516
 !
 address-family ipv4
  network 192.168.0.0 mask 255.255.0.0
  neighbor 10.0.0.1 activate
  neighbor 10.0.0.13 activate
  neighbor 10.0.0.13 soft-reconfiguration inbound
 exit-address-family
ip route 192.168.0.0 255.255.0.0 Null0

BGP Flowspec.

BGP Flowspec is an alternative and a more granular method to RTBH described in RFC5575 that can be used to mitigate a distributed denial-of-service (DDoS) attack. Match criteria allow network operators to define a particular flow with source, destination, L4 parameters and packet specifics such as length. These are sent in a BGP UPDATE message to BGP border routers within FLOW_SPEC_NLRI along with the action criteria.

Actions are carried in the extended communities Path attribute. They can drop traffic matching the flow specification, redirect traffic to a particular VRF for further analysis or policy traffic at a defined rate. BGP Flowspec resembles access lists or firewall filters that provide matching criteria and traffic filtering actions. They are injected to BGP and propagated to BGP peers. This mechanism allows an upstream AS system to perform inbound filtering in their ingress routers of traffic that a downstream AS wishes to drop or policy.

FlowSpec Actions

RFC 5575 has defined 4 minimum Actions that routes matching FlowSpec NRLI types can take. These actions are carried as BGP extended communities added to the FlowSpec route. These actions are:
  • Traffic-Rate Community The Traffic-Rate community is non-transitive, that tells the receiving BGP peer, what to rate limit matching traffic to. If the traffic needs to be discarded or dropped, this will be limit of 0 should be used.
  • Traffic-Action Community The Traffic-Action community is used to sample defined traffic. This allows sampling and logging metrics to be collected from the FlowSpec route, that could be used to get a better understand of the attack traffic.
  • Redirect Community The Redirect community allows the FlowSpec traffic to be redirected into a Virtual Routing and Forward Instance VRF. As the same Route-Targets and Route-Distinguisher can be used, you are able to import routes into a dedicated blackhole VPN or any other VPNv4.
  • Traffic-Marking Community The Traffic-Marking community is used to modify the Differentiated Service Code Point DSCP bits of a transiting IP packet to the defined value. This could be used to set to FlowSpec routes to highest discard probability, allowing traffic not to dropped/discarded until co
Network infrastructure with the enabled BGP Flowspec consists of a Flowspec controller (server), one or more Flowspec clients. Rules that contain matching criteria and actions are created on the server and are redistributed to clients via MP-BGP. An additional optional route reflector component can be used to receive rules from the controller and distribute to its clients.

Flow spec demonstration

bgp flowspec
Configuration of FlowSpec in the provider network
Edge router
fisi@big# show protocols bgp group CUSTOM
local-as 64516;
neighbor 192.168.56.26 {
    family inet {
        unicast;
        flow;
    }
    peer-as 64512;
}
Border router
KH16#sh run | se router bgp
router bgp 64512
 bgp log-neighbor-changes
 neighbor CUSTOM peer-group
 neighbor CUSTOM remote-as 64516
 neighbor 192.168.56.36 peer-group CUSTOM
 !
 address-family ipv4
  neighbor 192.168.56.36 activate
 exit-address-family
 !
 address-family ipv4 flowspec
  neighbor 192.168.56.36 activate
 exit-address-family

flowspec
 local-install interface-all
 
Verification
Border router
KH16#sh bgp ipv4 unicast summary | b Neighbor
Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.56.36   4        64516      35      36        5    0    0 00:14:27        0

KH16#sh bgp ipv4 flowspec summary | b Neighbor
Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.56.36   4        64516      35      36        1    0    0 00:14:30        0
Edge router
fisi@big# run show bgp summary | find 192.168.56.26
192.168.56.26         64512         49         52       0       2       20:37 Establ
  inet.0: 0/0/0/0
  inetflow.0: 0/0/0/0

Configuration of Flowspec server to signal flowspec

Once the provider detects a DDoS attack targeting the servers 172.16.0.0/29. Service provider decides to drop all traffic to the prefix 172.16.0.0/29. To achieve this service provider will configure the flowspec server to tell other routers to drop traffic for the prefix 172.16.0.0/29
Edge router
fisi@big# show routing-options flow
route EXAMPLE {
    match destination 172.16.0.0/29;
    then discard;
}
term-order standard;

Verification

fisi@big# run show firewall filter __flowspec_default_inet__

Filter: __flowspec_default_inet__
Counters:
Name                                                Bytes              Packets
172.16.0.0/29,*                                         0                    0
Flowspec routes are installed into their own routing table inetflow.0 and if dedicated VRF is used, FlowSpec routes will be under routing-instance-name.inetflow.0.
fisi@big# run show route table inetflow.0
inetflow.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
172.16.0.0/29,*/term:1
                   *[Flow/5] 00:06:41
                      Fictitious

fisi@big# run show route advertising-protocol bgp 192.168.56.26

inetflow.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
  172.16.0.0/29,*/term:1
*                         Self                                    I
The BGP update with Flowspec SAFI 133 is advertised to the provider border router .The UPDATE message contains flow specification, matching the 172.16.0.0/29 prefix, The action criterion that drops traffic matching flow specification, are carried as BGP extended communities. The border router programs the rules into TCAM. Traffic received from the internet that corresponds to the match criteria is dropped.
KH16#sh bgp ipv4 flowspec summary | b Neighbor
Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.56.36   4        64516      35      36        1    0    0 00:14:30        1
KH16#sh bgp ipv4 flowspec
BGP table version is 1, local router ID is 10.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
              t secondary path, L long-lived-stale,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *    Dest:172.16.0.0/29
                      0.0.0.0                                0 64516 i
KH16#sh bgp ipv4 flowspec detail
BGP routing table entry for Dest:172.16.0.0/29, version 0
  Paths: (1 available, no best path)
  Not advertised to any peer
  Refresh Epoch 1
  64516, (FS invalid: originator)
    0.0.0.0 from 192.168.56.36 (1.1.1.1)
      Origin IGP, localpref 100, valid, external
      Extended Community: FLOWSPEC Traffic-rate:0,0
      rx pathid: 0, tx pathid: 0

KH16#show flowspec ipv4
AFI: IPv4
  Flow           :Dest:172.16.0.0/29
    Actions      :Traffic-rate: 0 bps  (bgp.1)

When the attacker tries to access the servers again all traffic is dropped. We can test by simple ping
attacker#do ping 172.16.0.1 re 10000
Type escape sequence to abort.
Sending 10000, 100-byte ICMP Echos to 172.16.0.1, timeout is 2 seconds:
................
Success rate is 0 percent (0/37)
We can see all the 37 packets sent from the hacker to the server have been dropped by the border router in the provider network
KH16#sh flowspec afi-all detail
AFI: IPv4
  Flow           :Dest:172.16.0.0/29
    Actions      :Traffic-rate: 0 bps  (bgp.1)
    Statistics                        (packets/bytes)
      Matched             :                  37/4218
      Dropped             :                  37/4218
Note: In my testing I have observed traffic sourced from the border router or the edge router itself for example ping with source of loopback from the border router to the servers was working. Therefore the flowspec rule seem to be affecting only the transit traffic, will need more testing and reading the docs to verify this.

Configuration of Flowspec Signalized from Customer to Provider

Once Customer detects a DDoS attack targeting a destination UDP port 53 (DNS) on the servers 172.16.0.0/29, the BGP update is advertised to the provider edge router. The UPDATE message contains flow specification, matching the 172.16.0.0/29 prefix, UDP protocol (17) and destination port 53. Subsequently, the edge router sends the BGP update to the border router. Traffic received from the internet that corresponds to the match criteria is dropped. This time fow spec from the customer is more specific containing port and protocol to match this avoids blackholing all traffic. This could also be done in the option where the service provider flow spec server was signalling.
Flowspec Server (Controller) Configuration on CE running IOSXR
Create class-map attack-fs matching the IP address of the servers, protocol (17) – UDP and destination port 53 (DNS).
class-map type traffic match-all attack-fs
 match destination-address ipv4 172.16.0.0 255.255.255.248
 match protocol 17 
 match destination-port 53 
 end-class-map
Configure policy-map attack_pbr and associate class-map attack-fs. Use the class-map to define an action.
policy-map type pbr attack_pbr
 class type traffic attack-fs 
  drop
 class type traffic class-default 
 end-policy-map
We need to define a route policy that allows exporting and importing routes to/from eBGP peers.
route-policy PASS
  pass
end-policy 

router bgp 64501
 bgp router-id 10.4.4.4
 address-family ipv4 unicast
  network 172.16.0.0/24
 
 address-family ipv4 flowspec
  neighbor 10.0.0.2
  remote-as 64516
  address-family ipv4 unicast
   route-policy PASS in
   route-policy PASS out

address-family ipv4 flowspec
   route-policy PASS in
   route-policy PASS out
Configure flowspec and assign service-policy type PBR policy-map attack_pbr.
flowspec
 address-family ipv4
  service-policy type pbr attack_pbr

Verification on the CE router

RP/0/0/CPU0:CE# show flowspec ipv4 detail
Sun Jul 28 12:07:41.925 UTC

AFI: IPv4
  Flow           :Dest:172.16.0.0/29,Proto:=17,DPort:=53
    Actions      :Traffic-rate: 0 bps (policy.1.attack_pbr.attack-fs)
RP/0/0/CPU0:CE#

BGP Table Map .

This feature allows for selective download of prefixes from the BGP RIB to the routing table. It is primary used to suppress the unnecessary downloading of certain BGP routes to the RIB or Forwarding Information Base (FIB) on a dedicated route reflector, which propagates BGP updates without carrying transit traffic. Essesntially filtering the routes in RIB/FIB on the dedicated route-reflectors provides essential saving on the memory and CPU resources on the router. This feature is applicable not only to route reflectors but also any router that require control of prefixes that are put in the routing table due to resources constraints

Configurations

In below example the ASBR1 router receives 50 prefixes from its upstream however we are only interested in specific prefixes which we'll use the table map to install in the routing table
ASBR1#sh ver | i Software
Cisco IOS Software, 7200 Software (C7200-ADVIPSERVICESK9-M), Version 15.2(4)S5, RELEASE SOFTWARE (fc1)
BOOTLDR: 7200 Software (C7200-ADVIPSERVICESK9-M), Version 15.2(4)S5, RELEASE SOFTWARE (fc1)


ASBR1#sh bgp summary | b Neighbor
Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
172.29.0.2      4        64515       7       6      151    0    0 00:01:53       50

ASBR1#sh bgp nei 172.29.0.2 received-routes | count ^ \*
Number of lines which match regexp = 50

ASBR1#sh ip route bgp | count ^B
Number of lines which match regexp = 50
Creating a prefix-list and route-map to match our intersting destinations
ASBR1(config)#ip prefix-list PREFIXLIST_INTERSTING_DESTINATIONS seq 5 permit 10.1.0.0/16
ASBR1(config)#ip prefix-list PREFIXLIST_INTERSTING_DESTINATIONS seq 10 permit 192.168.21.0/24

ASBR1(config)#route-map MAP_BGPIB_TO_RIB permit 10
ASBR1(config-route-map)# match ip address prefix-list PREFIXLIST_INTERSTING_DESTINATIONS
ASBR1(config-route-map)#exit
Applying the table-map
ASBR1(config)#router bgp 64512
ASBR1(config-router)#address-family ipv4
ASBR1(config-router-af)#table-map MAP_BGPIB_TO_RIB filter
ASBR1(config-router-af)#exit
ASBR1(config-router)#exit
ASBR1(config)#do clear ip bgp 172.29.0.2 all
*Aug 11 22:54:12.887: %BGP-5-ADJCHANGE: neighbor 172.29.0.2 Down User reset
*Aug 11 22:54:12.887: %BGP_SESSION-5-ADJCHANGE: neighbor 172.29.0.2 IPv4 Unicast topology base removed from session  User reset
*Aug 11 22:54:13.823: %BGP-5-ADJCHANGE: neighbor 172.29.0.2 Up 

Verification

We are still receiving and accepting the 50 prefixes from the upstream but only 2 of those are allowed to the routing table
ASBR1(config)#do sh bgp summary | b Neighbor
Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
172.29.0.2      4        64515       5       4      251    0    0 00:00:17       50
                                                     
ASBR1(config)#do sh bgp nei 172.29.0.2 received-routes | count ^ \*
Number of lines which match regexp = 50

ASBR1(config)#do sh ip route bgp | count ^B
Number of lines which match regexp = 2

ASBR1(config)#do sh ip route bgp | begin ^B
B        10.1.0.0 [20/0] via 172.29.0.2, 00:00:54
B     192.168.21.0/24 [20/0] via 172.29.0.2, 00:00:54

ASBR1(config)#do sh route-map
route-map MAP_BGPIB_TO_RIB, permit, sequence 10
  Match clauses:
    ip address prefix-lists: PREFIXLIST_INTERSTING_DESTINATIONS 
  Set clauses:
  Policy routing matches: 0 packets, 0 bytes
ASBR1(config)#
ASBR1(config)#do sh ip prefix-list
ip prefix-list PREFIXLIST_INTERSTING_DESTINATIONS: 2 entries
   seq 5 permit 10.1.0.0/16
   seq 10 permit 192.168.21.0/24
ASBR1(config)#

BIRD.

The BIRD Internet Routing Daemon project aims to develop a fully functional dynamic IP routing daemon primarily targeted on (but not limited to) Linux, FreeBSD and other UNIX-like systems BIRD supports Internet Protocol version 4 and version 6 by running separate daemons. It establishes multiple routing tables, and uses BGP, RIP, and OSPF routing protocols, as well as statically defined routes. Learn more about the project here
Installation and configuration on debian distributions

Here we install bird on linux box running ubuntu 18 and configure local BGP using BIRD between the box and a junos router.

Install bird
basondole@box $ sudo apt install bird
Check the if ip forwarding is enable in the file /etc/sysctl.conf if the lines are starting with “#” that means they are commented and hence ip forwarding is disabled
basondole@box $ cat /etc/sysctl.conf | egrep "ip.*forward" 
#net.ipv4.ip_forward=1
#net.ipv6.conf.all.forwarding=1
Use nano editor or any editor of your choice to edit the file /etc/sysctl.conf and remove the “#” preceeding the lines save and verify the lines have been uncommented
basondole@box $ cat /etc/sysctl.conf | egrep "ip.*forward"
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Make a backup of the default bird configuration you may need it in the future
basondole@box $ cp /etc/bird/bird.conf /etc/bird/bird.conf.old
Edit the /etc/bird/bird.conf to specify your bgp and neighbor parameters and prefixes to announce. Sample configuration below
Note: I have used awk to only print the lines I have modified in the file
basondole@box $ sudo awk 'NR>=22' /etc/bird/bird.conf
# Below is additional non default configuration added by Paul S.I.Basondole
router id 192.168.56.2;

# The Device protocol is not a real routing protocol. It doesn't generate any
# routes and it only serves as a module for getting information about network
# interfaces from the kernel.
protocol device {
        scan time 10;           # Scan interfaces every 10 seconds
}

# Static routes (again, there can be multiple instances, so that you
# can disable/enable various groups of static routes on the fly).
protocol static static_bgp {
        route 192.168.56.2:255.255.255.255 via 192.168.56.2;
        route 192.168.56.0:255.255.255.0 via 192.168.56.2;
}

#BGP Configuration
protocol bgp {
        import all;
        export where proto = "static_bgp";

        local as 64512;
        neighbor 192.168.56.36 as 64512;
}
Start the bird service on the machine. If there is something wrong in the /etc/bird/bird.conf the service will not start. In such case the terminal will suggest some methods to follow so as to view the logs
$ sudo invoke-rc.d bird start
Verify the service is started
$ systemctl status bird
● bird.service - BIRD Internet Routing Daemon (IPv4)
   Loaded: loaded (/lib/systemd/system/bird.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-01-18 00:47:58 EAT; 5min ago
  Process: 612 ExecStartPre=/usr/sbin/bird -p (code=exited, status=0/SUCCESS)
  Process: 587 ExecStartPre=/usr/lib/bird/prepare-environment (code=exited, status=0/SUCCESS)
 Main PID: 646 (bird)
    Tasks: 1 (limit: 4657)
   CGroup: /system.slice/bird.service
           └─646 /usr/sbin/bird -f -u bird -g bird

Jan 18 00:51:55 plasma bird[646]: KRT: Received route 192.168.56.2/32 with strange next-hop 192.168.56.2
Jan 18 00:51:55 plasma bird[646]: Netlink: File exists
Jan 18 00:51:55 plasma bird[646]: Netlink: File exists
Jan 18 00:51:55 plasma bird[646]: Netlink: File exists
Jan 18 00:52:55 plasma bird[646]: KRT: Received route 0.0.0.0/0 with strange next-hop 192.168.56.2
Jan 18 00:52:55 plasma bird[646]: KRT: Received route 192.168.56.0/24 with strange next-hop 192.168.56.2
Jan 18 00:52:55 plasma bird[646]: KRT: Received route 192.168.56.2/32 with strange next-hop 192.168.56.2
Jan 18 00:52:55 plasma bird[646]: Netlink: File exists
Jan 18 00:52:55 plasma bird[646]: Netlink: File exists
Jan 18 00:52:55 plasma bird[646]: Netlink: File exists
Verify BGP by getting into the bird client issue command birdc as super user Use the command show protocols all bgp1 to check the bgp summary. We see the configured neighbour 192.168.56.36 is up and we are receiving 1 prefix. To view the prefix issue the command show route protocol bgp1 This shows we are receiving a default route
$ sudo birdc
BIRD 1.6.3 ready.
bird> show protocol all bgp1
name     proto    table    state  since       info
bgp1     BGP      master   up     00:51:07    Established
  Preference:     100
  Input filter:   ACCEPT
  Output filter:  (unnamed)
  Routes:         1 imported, 2 exported, 1 preferred
  Route change stats:     received   rejected   filtered    ignored   accepted
    Import updates:              1          0          0          0          1
    Import withdraws:            0          0        ---          0          0
    Export updates:              3          1          0        ---          2
    Export withdraws:            0        ---        ---        ---          0
  BGP state:          Established
    Neighbor address: 192.168.56.36
    Neighbor AS:      64512
    Neighbor ID:      10.1.1.1
    Neighbor caps:    refresh restart-aware AS4
    Session:          internal multihop AS4
    Source address:   192.168.56.2
    Hold timer:       61/90
    Keepalive timer:  23/30

bird> show route protocol bgp1
0.0.0.0/0          via 192.168.56.2 on enp0s8 [bgp1 00:51:07 from 192.168.56.36] ! (100/?) [i]
bird> exit
Verify the host machine routing table. We see the default route we receive from the bgp neighbour 192.168.56.36 is installed in the local machine routing table with the next-hop 192.168.56.2
$ route -n | egrep -i "^(dest|0)"
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.56.2    0.0.0.0         UG    64     0        0 enp0s8
0.0.0.0         10.0.2.2        0.0.0.0         UG    100    0        0 enp0s3
Login to the router 192.168.56.36 we see the bgp session is up. The router is advertising the default route to the machine running bird and receiving the two prefixes as we announce them on the bird configuration
ssh fisi@192.168.56.36
--- JUNOS 12.1R1.9 built 2012-03-24 12:52:33 UTC

fisi@big> show bgp summary | find 192.168.56.2
192.168.56.2          64512         22         24       0       0        9:11 Establ
  inet.0: 0/2/2/0

fisi@big> show route advertising-protocol bgp 192.168.56.2

inet.0: 14 destinations, 15 routes (13 active, 0 holddown, 1 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 0.0.0.0/0               192.168.56.1                 100        I

However the received prefixes are not active routes due to presence of more preferable options on the router
fisi@big> show route receive-protocol bgp 192.168.56.2 all table inet.0

inet.0: 14 destinations, 15 routes (13 active, 0 holddown, 1 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
  192.168.56.0/24         192.168.56.2                 100        I
  192.168.56.2/32         192.168.56.2                 100        I

fisi@big> show route 192.168.56.0/24 table inet.0

inet.0: 14 destinations, 15 routes (13 active, 0 holddown, 1 hidden)
+ = Active Route, - = Last Active, * = Both

192.168.56.0/24    *[Direct/0] 00:10:35
                    > via em0.0
                    [BGP/170] 00:10:27, localpref 100
                      AS path: I
                    > to 192.168.56.2 via em0.0
192.168.56.36/32   *[Local/0] 00:10:36
                      Local via em0.0

fisi@big>
IT & Network Expert / Lead
Network & Automation designer;
2x JNCIP (RS/SP) 1x CCNP (RS)
BSc Telecommunications Eng.

Sliding Sidebar