exabgp icon indicating copy to clipboard operation
exabgp copied to clipboard

Duplicate peer definition may be non-fatal

Open vincentbernat opened this issue 8 years ago • 9 comments

ISSUE TYPE
  • Feature Idea
OS

Debian Linux

VERSION
ExaBGP : 4.0.2-1c737d99
Python : 3.6.4 (default, Dec 19 2017, 14:09:48)  [GCC 7.2.0]
Uname  : Linux zoro 4.14.0-1-amd64 #1 SMP Debian 4.14.2-1 (2017-11-30) x86_64
Root   :
CONFIGURATION
neighbor 80.81.195.174 {
 ...
}
neighbor 80.81.195.174 {
 ...
}
SUMMARY

Currently, when a neighbor is defined twice, we get a "duplicate peer definition" error. However, when ExaBGP is not using listen, there should be no problem in connecting to a peer twice. This could be done with a different local-address for each connection.

Here is a proposition to fix that:

  • accept a non-IP name for neighbor
  • peer-address defaults to name if this is an IP
  • ensure peer-address is present (either through name or directly)
  • modify unicity check to use name and not peer-address

Am I missing something?

vincentbernat avatar Dec 27 '17 15:12 vincentbernat

So far, my only difficulty is using the neighbor name as peer-address if not present.

vincentbernat avatar Dec 27 '17 15:12 vincentbernat

Good idea but if the same IP are setup for both side we should use multi-protocol RFC 4760 (which is already implemented).

thomas-mangin avatar Dec 27 '17 22:12 thomas-mangin

@vincentbernat and @thomas-mangin Is the feature added or is still in progress? We are using Exabgp extensively to test our system which might require the above scenario.

Is the following config possible:

neighbor 11.10.2.1{                        
    local-address 1.1.1.1;          
    local-as 800;                   
    peer-as 200;         
}
neighbor 11.10.2.1{                     
    local-address 2.2.2.2;          
    local-as 700;                   
    peer-as 200;            
}

or is there a way to specify neighbor-name instead of IP address in the first line?

SivaKesava1 avatar Mar 10 '18 06:03 SivaKesava1

I really would like this feature. I was able to use this in 3.4 but now this no longer works. My goal is to simulate many peers without having to run individual processes for each since that just does not scale. I would like this so that testing large IXP setups is possible without running 1000 of python processes.

Ideally using one API endpoint to fill all neighbors at once (using 'neighbor 11.10.2.1 local-as 700 announce ...' to select the right session).

cjeker avatar Jul 22 '19 12:07 cjeker

@cjeker please let me know if it does the trick :-)

thomas-mangin avatar Jul 22 '19 17:07 thomas-mangin

@thomas-mangin: yes, this seems to do indeed what I hoped for. I can now run a single exabgp doing roughly 80 connections to the same route server but each connection is using a different local-as and local-address. It seems to work nicely. Thanks a lot.

cjeker avatar Jul 22 '19 21:07 cjeker

@vincentbernat do you mean that when using the API controlling what peers get what command was causing issue .. if you can remember :-p

thomas-mangin avatar Jul 23 '19 06:07 thomas-mangin

I didn't even remember this issue was mine until you mentioned me! ;-)

vincentbernat avatar Jul 23 '19 06:07 vincentbernat

@vincentbernat thank you for the reply .. something for me to check then ! ;-)

thomas-mangin avatar Jul 23 '19 10:07 thomas-mangin