Hi Tico,

The problem is limited to quagga it seems. I have setup a juniper and
cisco session and they both come up fine. Only the quagga routers seem
to hang on the empty update.

I have the following in my bgpd.conf:

group "peers-rs-v6" {
        announce IPv6 unicast
        announce IPv4 none
        softreconfig in yes
        enforce neighbor-as yes
        local-address 2001:db8:1::a500:6777:1

[cut..]

        neighbor 2001:0DB8:1::A506:5502:1 {
                descr "laborantix ipv6"
                remote-as 65502
                announce all
                #passive /* with or without doesn't matter */
                max-prefix 2000
        }

[cut..]
}

and the following quagga bgpd.conf:

!
hostname Test2-bgpd
log file /var/log/quagga/bgpd.log
log syslog
log facility local7
service advanced-vty
!
debug bgp events
debug bgp updates
!
bgp multiple-instance
!
router bgp 65502
 bgp router-id 10.0.0.64
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 network 172.16.4.0/24
 network 172.16.5.0/24
 network 172.16.6.0/24
 neighbor AMS-IX-RS peer-group
 neighbor AMS-IX-RS remote-as 6777
 neighbor AMS-IX-RS activate
 neighbor AMS-IX-RS next-hop-self
 neighbor AMS-IX-RS soft-reconfiguration inbound
 neighbor AMS-IX-RS route-map TO-RS out
 neighbor 10.0.0.59 peer-group AMS-IX-RS
 neighbor 10.0.0.59 description RS1
 neighbor 2001:db8:1::a500:6777:1 remote-as 6777
!
 address-family ipv6
 network 2001:db8:97::/64
 neighbor 2001:db8:1::a500:6777:1 activate
 neighbor 2001:db8:1::a500:6777:1 soft-reconfiguration inbound
 neighbor 2001:db8:1::a500:6777:1 route-map TO-RS out
 exit-address-family
!
route-map TO-RS permit 10
 set community 6777:6777
!        
line vty
!
end

I can reproduce the problem multiple times, on laborantix (running quagga).

$ bgpctl s
s                                                                  
Neighbor             AS       MsgRcvd    MsgSent    OutQ  Up/Down 
State/PrfRcvd
foundry                 65505       2531       2673     0 22:15:06      0
juniper                 65504       2673       2672     0 22:14:46      9
cisco                   65503       2674       2671     0 22:14:32      3
laborantix              65502       2670       2669     0 22:13:18      3
experimentix            65501       2669       2669     0 22:13:18      3
junix ipv6              65504       2762       2761     0 00:19:04      4
cisco ipv6              65503       2677       2760     0 00:05:53      3
laborantix ipv6         65502        251        251     0 00:14:48 Idle
experimentix ipv6       65501       2669       2757     0 22:13:18     
1/2000

--

$ bgpctl show neigh 'laborantix ipv6'
BGP neighbor is 2001:db8:1::a506:5501:1, remote AS 65501
 Description: experimentix ipv6
  BGP version 4, remote router-id 10.0.0.61
  BGP state = Established, up for 22:14:28
  Last read 00:00:05, holdtime 90s, keepalive interval 30s
  Neighbor capabilities:
    Multiprotocol extensions: IPv6 Unicast
    Route Refresh

  Message statistics:
                  Sent       Received 
  Opens                    1          1
  Notifications            0          0
  Updates                 98          1
  Keepalives            2661       2670
  Route Refresh            0          0
  Total                 2760       2672

  Update statistics:
                  Sent       Received 
  Updates                104          1
  Withdraws                0          0

  Local host:  2001:db8:1::a500:6777:1, Local port:    179
  Remote host: 2001:db8:1::a506:5501:1, Remote port: 58624

--

Test2-bgpd# show bgp neighbors 2001:db8:1::a500:6777:1
BGP neighbor is 2001:db8:1::a500:6777:1, remote AS 6777, local AS 65502,
external link
  BGP version 4, remote router ID 0.0.0.0
  BGP state = Active
  Last read 00:00:48, hold time is 180, keepalive interval is 60 seconds
  Message statistics:
    Inq depth is 0
    Outq depth is 0
                         Sent       Rcvd
    Opens:               4490       3653
    Notifications:         59       3651
    Updates:             3708       3766
    Keepalives:          7444         23
    Route Refresh:          0          0
    Capability:             0          0
    Total:              15701      11093
  Minimum time between advertisement runs is 30 seconds

 For address family: IPv6 Unicast
  Inbound soft reconfiguration allowed
  Community attribute sent to this neighbor(both)
  Outbound path policy configured
  Route map for outgoing advertisements is *TO-RS
  0 accepted prefixes

  Connections established 3710; dropped 3710
  Last reset 00:00:48, due to BGP Notification send
Local host: 2001:db8:1::a506:5502:1, Local port: 59390
Foreign host: 2001:db8:1::a500:6777:1, Foreign port: 179
Nexthop: 10.0.0.64
Nexthop global: 2001:db8:1::a506:5502:1
Nexthop local: ::
BGP connection: shared network
Next connect timer due in 72 seconds
Read thread: off  Write thread: off

--

# bgpctl neigh 'laborantix ipv6' clear
request processed
# bgpctl  s s                          
Neighbor             AS       MsgRcvd    MsgSent    OutQ  Up/Down 
State/PrfRcvd
foundry                 65505       2555       2703     0 22:27:41      0
juniper                 65504       2698       2702     0 22:27:21      9
cisco                   65503       2699       2699     0 22:27:07      3
laborantix              65502       2695       2697     0 22:25:53      3
experimentix            65501       2695       2697     0 22:25:53      3
junix ipv6              65504       2791       2793     0 00:31:39      4
cisco ipv6              65503       2706       2794     0 00:18:28      3
laborantix ipv6         65502        261        261     0 00:01:19 Idle
experimentix ipv6       65501       2713       2815     0 00:05:37     
1/2000

--

Test2-bgpd# clear bgp 2001:db8:1::a500:6777:1        
Test2-bgpd# show bgp neighbors 2001:db8:1::a500:6777:1
BGP neighbor is 2001:db8:1::a500:6777:1, remote AS 6777, local AS 65502,
external link
  BGP version 4, remote router ID 0.0.0.0
  BGP state = Active
  Last read 00:00:03, hold time is 180, keepalive interval is 60 seconds
  Message statistics:
    Inq depth is 0
    Outq depth is 0
                         Sent       Rcvd
    Opens:               4492       3654
    Notifications:         60       3651
    Updates:             3708       3768
    Keepalives:          7446         23
    Route Refresh:          0          0
    Capability:             0          0
    Total:              15706      11096
  Minimum time between advertisement runs is 30 seconds

 For address family: IPv6 Unicast
  Inbound soft reconfiguration allowed
  Community attribute sent to this neighbor(both)
  Outbound path policy configured
  Route map for outgoing advertisements is *TO-RS
  0 accepted prefixes

  Connections established 3711; dropped 3711
  Last reset 00:00:02, due to User reset
Local host: 2001:db8:1::a506:5502:1, Local port: 59392
Foreign host: 2001:db8:1::a500:6777:1, Foreign port: 179
Nexthop: 10.0.0.64
Nexthop global: 2001:db8:1::a506:5502:1
Nexthop local: ::
BGP connection: shared network
Next connect timer due in 118 seconds
Read thread: off  Write thread: off

The quagga log shows the following:

2009/01/30 15:05:53 BGP: 2001:db8:1::a500:6777:1 [Event] Connect start
to 2001:db8:1::a500:6777:1 fd 13
2009/01/30 15:05:53 BGP: %ADJCHANGE: neighbor 2001:db8:1::a500:6777:1 Up
2009/01/30 15:05:53 BGP: 2001:db8:1::a500:6777:1 rcvd UPDATE w/ attr: ,
origin i, mp_nexthop 2001:db8:1::a506:5503:1, community 6777:6777, path
65503
2009/01/30 15:05:53 BGP: 2001:db8:1::a500:6777:1 rcvd 2001:db8:10::/64
2009/01/30 15:05:53 BGP: 2001:db8:1::a500:6777:1 rcvd 2001:db8:11::/64
2009/01/30 15:05:53 BGP: 2001:db8:1::a500:6777:1 rcvd 2001:db8:12::/64
2009/01/30 15:05:53 BGP: 2001:db8:1::a500:6777:1 rcvd UPDATE w/ attr: ,
origin i, mp_nexthop 2001:db8:1::a506:5503:1, community 6777:6777, path
65504 65503 65502
2009/01/30 15:05:53 BGP: 2001:db8:1::a500:6777:1 rcvd UPDATE about
2001:db8:97::/64 -- DENIED due to: as-path contains our own AS;
2009/01/30 15:05:54 BGP: %NOTIFICATION: sent to neighbor
2001:db8:1::a500:6777:1 6/4 (Cease/Administratively Reset) 0 bytes
2009/01/30 15:05:54 BGP: %ADJCHANGE: neighbor 2001:db8:1::a500:6777:1
Down User reset
2009/01/30 15:05:54 BGP: 2001:db8:1::a500:6777:1 [Event] Connect start
to 2001:db8:1::a500:6777:1 fd 13
2009/01/30 15:05:54 BGP: 2001:db8:1::a500:6777:1 [Event] BGP connection
closed fd 13

And the daemon log:

Jan 30 15:06:33 routeertnix bgpd[11747]: neighbor
2001:db8:1::a506:5502:1 (laborantix ipv6): state change Idle -> Active,
reason: Start
Jan 30 15:07:07 routeertnix bgpd[11747]: neighbor
2001:db8:1::a506:5502:1 (laborantix ipv6): state change Active ->
OpenSent, reason: Connection opened
Jan 30 15:07:07 routeertnix bgpd[11747]: neighbor
2001:db8:1::a506:5502:1 (laborantix ipv6): state change OpenSent ->
OpenConfirm, reason: OPEN message received
Jan 30 15:07:07 routeertnix bgpd[11747]: neighbor
2001:db8:1::a506:5502:1 (laborantix ipv6): state change OpenConfirm ->
Established, reason: KEEPALIVE message received
Jan 30 15:07:07 routeertnix bgpd[11747]: neighbor
2001:db8:1::a506:5502:1 (laborantix ipv6): received notification: Cease,
administrative reset
Jan 30 15:07:07 routeertnix bgpd[11747]: neighbor
2001:db8:1::a506:5502:1 (laborantix ipv6): state change Established ->
Idle, reason: NOTIFICATION received
Jan 30 15:07:07 routeertnix bgpd[11747]: Connection attempt from
neighbor 2001:db8:1::a506:5502:1 (laborantix ipv6) while session is in
state Idle

I hope this abundunce of information helps.

Kind regards,

Arnoud

tico schreef:
> Arnoud Vermeer wrote:
>> Hi,
>>
>> I found a bug while working on a route server implementation based on
>> OpenBGPD. I have a IPv6 session from OpenBGPD 4.4 (on OpenBSD 4.4,
>> routeertnix) to Quagga 0.99.5 (laborantix).
>>
>>   
> Hello Arnoud,
>
> I'm running a native IPv6 session from OpenBGPD 4.4 to a Foundry of
> some sort operated by my transit, so my experience below is not a
> duplicate of your test, but I've included it for whatever it's worth.
>> I have multiple IPv4 peers, and multiple IPv6 peers in the setup. When I
>> start the BGP daemon, everything starts up nicely. All sessions come up.
>>
>>   
> Same here.
>> When I clear a IPv6 peering session, the connection shifts to the
>> Idle state. When I look in the log, I can see it connect and
>> establish a connection, but break as soon as a mistery update gets
>> send out.
>>
>>   
> <<snip>>
>
> Here is where I don't match your experience:
> $ bgpctl sho nei 2001:470:1:53::1
> BGP neighbor is 2001:470:1:53::1, remote AS 6939
> Description: Hurricane_rtr0_v6
>  BGP version 4, remote router-id 216.218.252.162
>  BGP state = Established, up for 04w3d02h
>  Last read 00:00:10, holdtime 90s, keepalive interval 30s
>  Neighbor capabilities:
>    Multiprotocol extensions: IPv6 Unicast
>    Route Refresh
>
>  Message statistics:
>                  Sent       Received  Opens                   
> 1          1
>  Notifications            0          0
>  Updates                  1     109606
>  Keepalives           86391      72742
>  Route Refresh            1          0
>  Total                86394     182349
>
>  Update statistics:
>                  Sent       Received  Updates                  1     
> 99044
>  Withdraws                0      22196
>
>  Local host:      2001:470:1:53::2, Local port:    179
>  Remote host:     2001:470:1:53::1, Remote port:  8028
>
> $ bgpctl nei 2001:470:1:53::1 clear  request processed
> $ bgpctl sho nei 2001:470:1:53::1  BGP neighbor is 2001:470:1:53::1,
> remote AS 6939
> Description: Hurricane_rtr0_v6
>  BGP version 4, remote router-id 216.218.252.162
>  BGP state = Idle, down for 00:00:03
>  Last read 00:00:04, holdtime 240s, keepalive interval 80s
>
>  Message statistics:
>                  Sent       Received  Opens                   
> 1          1
>  Notifications            1          0
>  Updates                  1     109632
>  Keepalives           86391      72742
>  Route Refresh            1          0
>  Total                86395     182375
>
>  Update statistics:
>                  Sent       Received  Updates                 
> 0          0
>  Withdraws                0          0
>
>  Last error: Cease
>
> $ bgpctl sho nei 2001:470:1:53::1
> BGP neighbor is 2001:470:1:53::1, remote AS 6939
> Description: Hurricane_rtr0_v6
>  BGP version 4, remote router-id 216.218.252.162
>  BGP state = Active, down for 00:00:09
>  Last read 00:00:10, holdtime 240s, keepalive interval 80s
>
>  Message statistics:
>                  Sent       Received  Opens                   
> 1          1
>  Notifications            1          0
>  Updates                  1     109632
>  Keepalives           86391      72742
>  Route Refresh            1          0
>  Total                86395     182375
>
>  Update statistics:
>                  Sent       Received  Updates                 
> 0          0
>  Withdraws                0          0
>
>  Local host:      2001:470:1:53::2, Local port:    179
>  Remote host:     2001:470:1:53::1, Remote port:  8028
>
> $ bgpctl sho nei 2001:470:1:53::1
> BGP neighbor is 2001:470:1:53::1, remote AS 6939
> Description: Hurricane_rtr0_v6
>  BGP version 4, remote router-id 216.218.252.162
>  BGP state = Established, up for 00:00:08
>  Last read 00:00:08, holdtime 90s, keepalive interval 30s
>  Neighbor capabilities:
>    Multiprotocol extensions: IPv6 Unicast
>    Route Refresh
>
>  Message statistics:
>                  Sent       Received  Opens                   
> 2          2
>  Notifications            1          0
>  Updates                  2     110178
>  Keepalives           86392      72743
>  Route Refresh            1          0
>  Total                86398     182923
>
>  Update statistics:
>                  Sent       Received  Updates                 
> 1        731
>  Withdraws                0          0
>
>  Local host:      2001:470:1:53::2, Local port:    179
>  Remote host:     2001:470:1:53::1, Remote port:  8119
>
> $ uname -a
> OpenBSD earth.raapid.net 4.4 GENERIC#1021 i386
> $ bgpctl sho rib mem
> RDE memory statistics
>    272868 IPv4 network entries using 8.3M of memory
>      1566 IPv6 network entries using 67.3K of memory
>    275328 prefix entries using 8.4M of memory
>     47567 BGP path attribute entries using 3.6M of memory
>     43683 BGP AS-PATH attribute entries using 1.6M of memory,
>           and holding 47567 references
>      4696 BGP attributes entries using 110K of memory
>           and holding 9090 references
>      4695 BGP attributes using 36.7K of memory
> RIB using 22.2M of memory
>
>
>> When the NOTIFICATION is received, the peer is set back to the state
>> Idle, where the process starts again. The only way to break the cicle is
>> to restart the entire OpenBGPD daemon.
>>   
> The only time I've had a session get "hung down" is once or twice when
> running 4.3 and having made several bgpd.conf changes and issuing
> "bgpctl reload" several times -- I believe it was regarding changing
> an MD5 secret but I can't remember for sure. Either way, I eventually
> restarted bgpd at that time and the sessions came right up, and I
> haven't seen that behavior occur again after I upgraded to 4.4, but YMMV.
>
> Cheers,
> Tico

Reply via email to