Hi,
By default eBGP [type external] has a ttl of 1, so the local-address [192.168.1.1] has to be present on a physical interface and if not present its stuck in idle state.
Same applies when local-address is not configured at all on the device for iBGP, gets stuck in idle, but when lo0 is configured with 192.168.1.1, state changes to active - initiating TCP connection to peer.
Tests reproduced below:
ashvino@R1> show configuration protocols bgp
local-address 192.168.1.1;
group eBGP {
type external;
neighbor 1.2.3.4 {
peer-as 2345;
}
}
group iBGP {
type internal;
neighbor 2.2.2.2;
neighbor 3.3.3.3;
}
ashvino@R1> show bgp summary
Groups: 2 Peers: 3 Down peers: 3
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
0 0 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
1.2.3.4 2345 0 0 0 0 5 Idle
2.2.2.2 1234 0 0 0 0 5 Idle
3.3.3.3 1234 0 0 0 0 5 Idle
Configure lo0.0 with 192.168.1.1, iBGP states move to active:
ashvino@R1# set interfaces lo0 unit 0 family inet address 192.168.1.1/32
[edit]
ashvino@R1# commit and-quit
commit complete
Exiting configuration mode
ashvino@R1> show bgp summary
Groups: 2 Peers: 3 Down peers: 3
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
0 0 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
1.2.3.4 2345 0 0 0 0 2:20 Idle
2.2.2.2 1234 0 0 0 0 2:20 Active
3.3.3.3 1234 0 0 0 0 2:20 Active
ashvino@R1> show bgp neighbor 1.2.3.4
Peer: 1.2.3.4 AS 2345 Local: 192.168.1.1 AS 1234
Type: External State: Idle Flags: <PeerInterfaceError>
Last State: NoState Last Event: NoEvent
Last Error: None
Options: <Preference LocalAddress PeerAS Refresh>
Local Address: 192.168.1.1 Holdtime: 90 Preference: 170
Number of flaps: 0
2 ways eBGP can move to active state:
1. Multihop [Remove ttl restriction]
ashvino@R1# set protocols bgp group eBGP multihop
[edit]
ashvino@R1# commit and-quit
commit complete
Exiting configuration mode
ashvino@R1> show bgp summary
Groups: 2 Peers: 3 Down peers: 3
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
0 0 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
1.2.3.4 2345 0 0 0 0 2 Active
2.2.2.2 1234 0 0 0 0 4:51 Active
3.3.3.3 1234 0 0 0 0 4:51 Active
2. Having a physical interface with eBGP peer address in same subnet [note "Local" changes for eBGP neighbor]:
ashvino@R1# delete protocols bgp group eBGP multihop
[edit]
ashvino@R1# set interfaces ge-0/0/1 unit 0 family inet address 1.2.3.5/30
[edit]
ashvino@R1# commit and-quit
commit complete
Exiting configuration mode
ashvino@R1> show bgp summary
Groups: 2 Peers: 3 Down peers: 3
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
0 0 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
1.2.3.4 2345 0 0 0 0 2 Active
2.2.2.2 1234 0 0 0 0 7:20 Active
3.3.3.3 1234 0 0 0 0 7:20 Active
ashvino@R1> show bgp neighbor 1.2.3.4
Peer: 1.2.3.4 AS 2345 Local: 1.2.3.5 AS 1234
Type: External State: Active Flags: <>
Last State: Idle Last Event: Start
Last Error: None
Options: <Preference LocalAddress PeerAS Refresh>
Local Address: 192.168.1.1 Holdtime: 90 Preference: 170
Number of flaps: 0
Removing address on lo0.0 -> iBGP: idle, eBGP: Active [due to physical interface 1.2.3.5]:
ashvino@R1# delete interfaces lo0 unit 0
[edit]
ashvino@R1# commit and-quit
commit complete
Exiting configuration mode
ashvino@R1> show bgp summary
Groups: 2 Peers: 3 Down peers: 3
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
0 0 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
1.2.3.4 2345 0 0 0 0 2:22 Active
2.2.2.2 1234 0 0 0 0 19:17 Idle
3.3.3.3 1234 0 0 0 0 19:17 Idle
ashvino@R1> show bgp neighbor 1.2.3.4
Peer: 1.2.3.4 AS 2345 Local: 1.2.3.5 AS 1234
Type: External State: Active Flags: <>
Last State: Idle Last Event: Start
Last Error: None
Options: <Preference LocalAddress PeerAS Refresh>
Local Address: 192.168.1.1 Holdtime: 90 Preference: 170
Number of flaps: 0
Add multihop to eBGP again brings eBGP to idle:
ashvino@R1# set protocols bgp group eBGP multihop
[edit]
ashvino@R1# commit and-quit
commit complete
Exiting configuration mode
ashvino@R1> show bgp summary
Groups: 2 Peers: 3 Down peers: 3
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
0 0 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
1.2.3.4 2345 0 0 0 0 3 Idle
2.2.2.2 1234 0 0 0 0 21:04 Idle
3.3.3.3 1234 0 0 0 0 21:04 Idle
ashvino@R1> show bgp neighbor 1.2.3.4
Peer: 1.2.3.4 AS 2345 Local: 192.168.1.1 AS 1234
Type: External State: Idle Flags: <PeerInterfaceError>
Last State: NoState Last Event: NoEvent
Last Error: None
Options: <Multihop Preference LocalAddress PeerAS Refresh>
Local Address: 192.168.1.1 Holdtime: 90 Preference: 170
Number of flaps: 0
So, it seems that as long as a usable local-address is available, BGP will transition to connect, then active.
As per Juniper documentation, state may go back to idle in case of other events, such as stop event. This seems to imply that unless a stop event, it will stay in Active state.
Cheers,
Ashvin