c-bgp-users Mailing List for C-BGP (Page 2)
Brought to you by:
bquoitin
You can subscribe to this list here.
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2011 |
Jan
(4) |
Feb
|
Mar
(8) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(5) |
Sep
(10) |
Oct
(20) |
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(2) |
Jun
|
Jul
(6) |
Aug
(4) |
Sep
|
Oct
(4) |
Nov
(11) |
Dec
(4) |
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(10) |
Jul
(2) |
Aug
|
Sep
(6) |
Oct
|
Nov
|
Dec
|
2015 |
Jan
(3) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
(2) |
Feb
(8) |
Mar
|
Apr
|
May
|
Jun
(9) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
(6) |
Apr
(3) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
From: Bruno Q. <bru...@um...> - 2016-02-27 10:56:46
|
Roderick, I will need the topology file you used to reproduce your issue. You can also send a reduced version of the topology if that is possible. BR, Bruno On 27/02/16 01:58, Roderick wrote: > Dear all, > > I am trying to load RIBs in CBGP routers (this is compulsory for > scaling down the AS topology.). > > So, I am using the script (1_load_topology_v5.pl). An example of MRT > file I want to load is "modified_RIB-4.txt" that contains the RIB of AS4. > > When I try to load the whole file, I can not: > > cbgp> init. > cbgp> bgp topology load 01_topology_to_load.txt > cbgp> bgp topology install > cbgp> bgp topology policies > cbgp> bgp topology run > cbgp> sim run > cbgp> bgp router AS4 load rib modified_ribs/modified_RIB-4.txt > *Error: command failed* > +-- reason: could not load "modified_ribs/modified_RIB-4.txt" (plop, > at line XX) > cbgp> bgp router AS4 load rib modified_ribs/modified_RIB-4.txt > *Error: command failed* > +-- reason: could not load "modified_ribs/modified_RIB-4.txt" (plop, > at line XX) > > > But when I try with small part of it (test.txt), It does load > (sometimes it does not and I get the same error): > > cbgp> bgp router AS4 load rib test.txt > cbgp> bgp router AS4 show rib * > cbgp> sim run > > > You’ll also remark that I after loading the file, nothing appears in > the rib (after launching bgp router AS4 show rib *). > > 1- Does the size of the MRT file matter ? > > 2- Why doesn’t the routes appear in the RIB after loading and running > sim run? > > 4- Do you have any advice on how I should proceed ? Isn’t the format > of the MRT file right (I am quite sure of it)? > > 3- The other option I have is to use virtual peers and feed the > routers with update messages. Have you ever used a virtual peer to > feed updates messages in a CBGP router ? If yes, what setup do you > advice me ? > > PS: If I choose that option, I would need about 600 virtual peers. > > Thank you for your help, > > Best regards, > > Roderick > > |
From: Roderick <rod...@im...> - 2016-02-27 01:18:49
|
Dear all, I am trying to load RIBs in CBGP routers (this is compulsory for scaling down the AS topology.). So, I am using the script (1_load_topology_v5.pl). An example of MRT file I want to load is "modified_RIB-4.txt" that contains the RIB of AS4. When I try to load the whole file, I can not: cbgp> init. cbgp> bgp topology load 01_topology_to_load.txt cbgp> bgp topology install cbgp> bgp topology policies cbgp> bgp topology run cbgp> sim run cbgp> bgp router AS4 load rib modified_ribs/modified_RIB-4.txt Error: command failed +-- reason: could not load "modified_ribs/modified_RIB-4.txt" (plop, at line XX) cbgp> bgp router AS4 load rib modified_ribs/modified_RIB-4.txt Error: command failed +-- reason: could not load "modified_ribs/modified_RIB-4.txt" (plop, at line XX) But when I try with small part of it (test.txt), It does load (sometimes it does not and I get the same error): cbgp> bgp router AS4 load rib test.txt cbgp> bgp router AS4 show rib * cbgp> sim run You’ll also remark that I after loading the file, nothing appears in the rib (after launching bgp router AS4 show rib *). 1- Does the size of the MRT file matter ? 2- Why doesn’t the routes appear in the RIB after loading and running sim run? 4- Do you have any advice on how I should proceed ? Isn’t the format of the MRT file right (I am quite sure of it)? 3- The other option I have is to use virtual peers and feed the routers with update messages. Have you ever used a virtual peer to feed updates messages in a CBGP router ? If yes, what setup do you advice me ? PS: If I choose that option, I would need about 600 virtual peers. Thank you for your help, Best regards, Roderick |
From: Bruno Q. <bru...@um...> - 2016-02-05 09:43:40
|
Depends on what you want to model. The default scheduler of c-bgp is based on a FIFO. This is not appropriate to model path exploration. You can change the scheduler so that a priority queue (calendar queue) is used. You can also assign a propagation delay to links. To change the scheduler, use sim options scheduler dynamic To assign a propagation delay to a link net add link --delay=XXX ... net add link-ptp --delay=XXX ... Best regards, Bruno On 04/02/16 01:22, Yuchen Jin wrote: > Hi Bruno, > > A quick question: Does CBGP model the path exploration process? > > Thanks, > Yuchen > > On Tue, Jan 26, 2016 at 2:34 PM, Yuchen Jin <yu...@cs... > <mailto:yu...@cs...>> wrote: > > Got it! It works now after resetting the BGP session. > > Thanks a lot! > > On Tue, Jan 26, 2016 at 12:24 PM, Bruno Quoitin > <bru...@um... <mailto:bru...@um...>> wrote: > > Hi Yuchen, > > Unfortunately, the way you want to proceed does not work : > changing a routing filter does not trigger a re-processing of > all previously received routes. Adding such feature would > require that we store in the Adj-RIB-in the routes before they > are filtered, which would obviously require more memory. > > Depending on where the filter you change is located relative > to the prefixes it is supposed to impact, you might use the > following approach : change the routing filter, then > re-propagate the route from the origin. It is also possible to > shutdown the session where the filter has changed and re-open > it later. > > Note that, AFAIK, on real routers, you also must somehow > restart a session after its inbound filters have been changed. > Under Cisco IOS, you use "clear ip bgp <neighbor>" to achieve > this goal. > > Best regards, > Bruno > > > On 26/01/16 21:11, Yuchen Jin wrote: >> Hi Bruno, >> >> Sorry for disturbing you again. I have another question when >> I using C-BGP: >> >> I want to see how a policy change propagates in the Internet >> so I set a local-pref of a next-hop of one AS to 500 using >> the add-rule command but I cannot see any updates in the >> msg-monitor. >> >> Below is what I do: >> 1. load a topology and run the simulator; >> 2. add a network/prefix to an AS and run the simulator; >> 3. add one filter-in rule to a router and run the simulator; >> 4. show the rib of the router but it did not change to a >> preferred path. >> >> PS: Code is attached. >> >> Thanks, >> Yuchen >> >> On Thu, Jan 21, 2016 at 1:10 PM, Yuchen Jin >> <yu...@cs... >> <mailto:yu...@cs...>> wrote: >> >> Cool! Thanks a lot. :) >> >> On Thu, Jan 21, 2016 at 12:23 PM, Bruno Quoitin >> <bru...@um... >> <mailto:bru...@um...>> wrote: >> >> >> >> On 21/01/16 20:32, Yuchen Jin wrote: >>> Hi Bruno, >>> >>> Thanks for your reply! It really helps a lot. >>> >>> I run the "bgp topology policies" command to >>> configure the the policies follow the Gao/Rexford >>> rules. Actually, I want to simulate the behavior of >>> the whole Internet with around 60000 ASes (Since >>> C-BGP supports for 16-bit ASN). Do you think it is >>> possible by using C-BGP? >> Well, I did this a few years ago when there were less >> ASes and prefixes. The memory and time requirements >> must just be higher for today's Internet... >> >>> And can I automatically generate a prefix for each >>> AS after loading and installing the topology? >> This feature does not exist at the moment, but you >> can easily generate the required commands with e.g. a >> python script. >> >> Bruno >> >> >> > > > |
From: Bruno Q. <bru...@um...> - 2016-01-07 09:24:32
|
Hi, The message means 'configure' was not able to find 'libgds'. Did you install it (i.e. run "make install") ? Was it installed in a standard directory (e.g. /usr/local) ? Moreover, the line above the last error message says the utility 'pkg-config' was not found. You need to install it beforehand (under ubuntu precise, use "apt-get install pkg-config") as it is used to check 'libgds' version and obtain linker options. Cheers, Bruno On 06/01/16 21:30, jees augustine wrote: > Hi, > I highly appreciate your effort to put together a wonder emulator for > BGP. Its highly recommended for any researcher in the networking field. > I have installed in it a Ubuntu 12 System, post which I am trying in > on an OS X machine. However I am tumbled at one installation error (on > OS X ) and is unable to proceeding from there. > > I am posting the error details below, > > I have installed libgds 2.0.0 already, however */.configure/* for cbgp > gives me this error. Could you please help me? > > > checking for dlfcn.h... yes > checking for objdir... .libs > checking if gcc supports -fno-rtti -fno-exceptions... yes > checking for gcc option to produce PIC... -fno-common -DPIC > checking if gcc PIC flag -fno-common -DPIC works... yes > checking if gcc static flag -static works... no > checking if gcc supports -c -o file.o... yes > checking if gcc supports -c -o file.o... (cached) yes > checking whether the gcc linker > (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) > supports shared libraries... yes > checking dynamic linker characteristics... darwin15.2.0 dyld > checking how to hardcode library paths into programs... immediate > checking whether stripping libraries is possible... yes > checking if libtool supports shared libraries... yes > checking whether to build shared libraries... yes > checking whether to build static libraries... yes > checking for pkg-config... no > checking for LIBGDS... configure: error: libgds >= 2.0.0 is needed to > compile cbgp > > Your help is highly appreciated. Thanks once again for a BGP Simulator. > > Thanks in Advance for considering my request. > > /PS: Please let me know if I have to provide any more information./ > > Regards, > Won Ninja > > > ------------------------------------------------------------------------------ > > > _______________________________________________ > C-bgp-users mailing list > C-b...@li... > https://lists.sourceforge.net/lists/listinfo/c-bgp-users |
From: jees a. <jee...@ya...> - 2016-01-06 20:34:01
|
Hi, I highly appreciate your effort to put together a wonder emulator for BGP. Its highly recommended for any researcher in the networking field. I have installed in it a Ubuntu 12 System, post which I am trying in on an OS X machine. However I am tumbled at one installation error (on OS X ) and is unable to proceeding from there. I am posting the error details below, I have installed libgds 2.0.0 already, however .configure for cbgp gives me this error. Could you please help me? checking for dlfcn.h... yeschecking for objdir... .libschecking if gcc supports -fno-rtti -fno-exceptions... yeschecking for gcc option to produce PIC... -fno-common -DPICchecking if gcc PIC flag -fno-common -DPIC works... yeschecking if gcc static flag -static works... nochecking if gcc supports -c -o file.o... yeschecking if gcc supports -c -o file.o... (cached) yeschecking whether the gcc linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) supports shared libraries... yeschecking dynamic linker characteristics... darwin15.2.0 dyldchecking how to hardcode library paths into programs... immediatechecking whether stripping libraries is possible... yeschecking if libtool supports shared libraries... yeschecking whether to build shared libraries... yeschecking whether to build static libraries... yeschecking for pkg-config... nochecking for LIBGDS... configure: error: libgds >= 2.0.0 is needed to compile cbgp Your help is highly appreciated. Thanks once again for a BGP Simulator. Thanks in Advance for considering my request. PS: Please let me know if I have to provide any more information. Regards,Won Ninja |
From: Bruno Q. <bru...@um...> - 2015-06-10 08:30:40
|
Hello, Yes, those versions should be able to work together. When you are in the directory of cbgp-validation.pl (./valid), can you report the version of c-bgp using the command below ? ../src/cbgp -e "show version" Here is an example of the output I see blake:valid bquoitin$ ../src/cbgp -e "show version" cbgp version: 2.3.2 [zlib] libgds version: 2.2.2 BR, Bruno On 10/06/15 07:05, zhe...@si... wrote: > hello c-bgp-users, > I install libgds-2.2.2 and cbgp-2.3.2 on my ubuntu server. When I validate the installation using ./cbgp-validation.pl --no-cache, the error infomation appears as shown in the title of this mail. > Can libgds-2.2.2 and cbgp-2.3.2 work together? Thanks. > Best Regards, > Zhenqiang Li > ------------------------------------------------------------------------------ > _______________________________________________ > C-bgp-users mailing list > C-b...@li... > https://lists.sourceforge.net/lists/listinfo/c-bgp-users |
From: <zhe...@si...> - 2015-06-10 05:21:09
|
hello c-bgp-users, I install libgds-2.2.2 and cbgp-2.3.2 on my ubuntu server. When I validate the installation using ./cbgp-validation.pl --no-cache, the error infomation appears as shown in the title of this mail. Can libgds-2.2.2 and cbgp-2.3.2 work together? Thanks. Best Regards, Zhenqiang Li |
From: <zhe...@si...> - 2015-06-09 08:59:48
|
hello c-bgp-users, I install libgds-2.2.2 and cbgp-2.3.2 on my ubuntu server. When I validate the installation using ./cbgp-validation.pl --no-cache, the error infomation appears as shown in the title of this mail. Can libgds-2.2.2 and cbgp-2.3.2 work together? Thanks. Best Regards, Zhenqiang Li |
From: Bruno Q. <bru...@um...> - 2015-01-19 14:07:03
|
Hi Xiaomei, Fix, validation and example have been committed. BR, Bruno On 19/01/15 13:43, 孙晓梅 wrote: > Hi Bruno, > > Yes, I agree. And looking forward to a new revision. Thank you! > > > ------------------ 原始邮 件 ------------------ > *发件人:* "Bruno Quoitin";<bru...@um...>; > *发送时间:* 2015年1月19日(星期一) 晚上7:03 > *收件人:* "c-bgp-users"<c-b...@li...>; > *抄送:* "孙晓梅"<sun...@fo...>; > *主题:* Re: [C-bgp-users] Check A Topology > > Hi Xiaomei, > > I'm having a look at your script right now. The script seems alright > but RR2 (5.5.5.4) does not take the right decision. > > This is due to a bug introduced in revision r1420. This bug has not > been caught by the validation tests. Will get back to you when this is > fixed and additional validation tests have been provided. > > Moreover, I would like to add your script (with due credits) to the > examples provided in the c-bgp archive. Do you agree ? > > BR, > Bruno > > > On 17/01/15 05:58, 孙晓梅 wrote: >> >> Hi, >> >> I’m trying to create a typical topology where oscillation >> happens. The topology is as following, >> >> <image removed> >> >> According to the graph, I wrote the following topology. >> >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> >> ##*med_oscillation.cli (The topology file name)* >> >> define MED_TYPE deterministic >> >> bgp options med $MED_TYPE >> >> print "\nSelected option: \"$MED_TYPE\"\n\n" >> >> #setup the topology >> >> #Domain 555 >> >> net add domain 555 igp >> >> net add node 5.5.5.0 >> >> net node 5.5.5.0 name RR1 >> >> net node 5.5.5.0 domain 555 >> >> net add node 5.5.5.1 >> >> net node 5.5.5.1 name R1 >> >> net node 5.5.5.1 domain 555 >> >> net add node 5.5.5.2 >> >> net node 5.5.5.2 name R2 >> >> net node 5.5.5.2 domain 555 >> >> net add node 5.5.5.3 >> >> net node 5.5.5.3 name R3 >> >> net node 5.5.5.3 domain 555 >> >> net add node 5.5.5.4 >> >> net node 5.5.5.4 name RR2 >> >> net node 5.5.5.4 domain 555 >> >> net add link 5.5.5.0 5.5.5.4 >> >> net link 5.5.5.0 5.5.5.4 igp-weight --bidir 1 >> >> net add link 5.5.5.0 5.5.5.1 >> >> net link 5.5.5.0 5.5.5.1 igp-weight --bidir 10 >> >> net add link 5.5.5.4 5.5.5.2 >> >> net link 5.5.5.4 5.5.5.2 igp-weight --bidir 4 >> >> net add link 5.5.5.4 5.5.5.3 >> >> net link 5.5.5.4 5.5.5.3 igp-weight --bidir 5 >> >> net domain 555 compute >> >> #Domain 1 >> >> net add domain 1 igp >> >> net add node 1.1.1.1 >> >> #net node 1.1.1.1 name AS1 >> >> net node 1.1.1.1 domain 1 >> >> net domain 1 compute >> >> #Domain 2 >> >> net add domain 2 igp >> >> net add node 2.2.2.2 >> >> #net node 2.2.2.2 name AS2 >> >> net node 2.2.2.2 domain 2 >> >> net domain 2 compute >> >> #Domain 3 >> >> net add domain 3 igp >> >> net add node 3.3.3.3 >> >> #net node 3.3.3.3 name AS3 >> >> net node 3.3.3.3 domain 3 >> >> net domain 3 compute >> >> # Interdomain links >> >> net add link 1.1.1.1 5.5.5.1 >> >> net node 1.1.1.1 route add 5.5.5.1/32 --oif=5.5.5.1/32 1 >> >> net node 5.5.5.1 route add 1.1.1.1/32 --oif=1.1.1.1/32 1 >> >> net add link 1.1.1.1 5.5.5.2 >> >> net node 1.1.1.1 route add 5.5.5.2/32 --oif=5.5.5.2/32 1 >> >> net node 5.5.5.2 route add 1.1.1.1/32 --oif=1.1.1.1/32 1 >> >> net add link 2.2.2.2 5.5.5.3 >> >> net node 2.2.2.2 route add 5.5.5.3/32 --oif=5.5.5.3/32 1 >> >> net node 5.5.5.3 route add 2.2.2.2/32 --oif=2.2.2.2/32 1 >> >> net add link 1.1.1.1 3.3.3.3 >> >> net node 1.1.1.1 route add 3.3.3.3/32 --oif=3.3.3.3/32 1 >> >> net node 3.3.3.3 route add 1.1.1.1/32 --oif=1.1.1.1/32 1 >> >> net add link 2.2.2.2 3.3.3.3 >> >> net node 2.2.2.2 route add 3.3.3.3/32 --oif=3.3.3.3/32 1 >> >> net node 3.3.3.3 route add 2.2.2.2/32 --oif=2.2.2.2/32 1 >> >> #Setup BGP >> >> # AS 3 >> >> bgp add router 3 3.3.3.3 >> >> bgp router 3.3.3.3 >> >> add network 10.0.0.0/32 >> >> add peer 1 1.1.1.1 >> >> peer 1.1.1.1 >> >> next-hop-self >> >> up >> >> exit >> >> add peer 2 2.2.2.2 >> >> peer 2.2.2.2 >> >> next-hop-self >> >> up >> >> # AS 1 >> >> bgp add router 1 1.1.1.1 >> >> bgp router 1.1.1.1 >> >> add peer 3 3.3.3.3 >> >> peer 3.3.3.3 up >> >> add peer 555 5.5.5.1 >> >> peer 5.5.5.1 >> >> filter out >> >> add-rule >> >> match any >> >> action "metric 1" >> >> exit >> >> exit >> >> next-hop-self >> >> up >> >> bgp router 1.1.1.1 >> >> add peer 555 5.5.5.2 >> >> peer 5.5.5.2 >> >> filter out >> >> add-rule >> >> match any >> >> action "metric 5" >> >> exit >> >> exit >> >> next-hop-self >> >> up >> >> # AS 2 >> >> bgp add router 2 2.2.2.2 >> >> bgp router 2.2.2.2 >> >> add peer 3 3.3.3.3 >> >> peer 3.3.3.3 up >> >> add peer 555 5.5.5.3 >> >> peer 5.5.5.3 >> >> filter out >> >> add-rule >> >> match any >> >> action "metric 1" >> >> exit >> >> exit >> >> next-hop-self >> >> up >> >> # AS 555 >> >> bgp add router 555 5.5.5.0 >> >> bgp add router 555 5.5.5.1 >> >> bgp add router 555 5.5.5.2 >> >> bgp add router 555 5.5.5.3 >> >> bgp add router 555 5.5.5.4 >> >> bgp router 5.5.5.0 >> >> add peer 555 5.5.5.4 >> >> peer 5.5.5.4 up >> >> add peer 555 5.5.5.1 >> >> peer 5.5.5.1 >> >> rr-client >> >> up >> >> exit >> >> exit >> >> bgp router 5.5.5.4 >> >> add peer 555 5.5.5.0 >> >> peer 5.5.5.0 up >> >> add peer 555 5.5.5.2 >> >> peer 5.5.5.2 >> >> rr-client >> >> up >> >> exit >> >> add peer 555 5.5.5.3 >> >> peer 5.5.5.3 >> >> rr-client >> >> up >> >> exit >> >> exit >> >> bgp router 5.5.5.1 >> >> add peer 555 5.5.5.0 >> >> peer 5.5.5.0 up >> >> add peer 1 1.1.1.1 >> >> peer 1.1.1.1 >> >> next-hop-self >> >> up >> >> exit >> >> exit >> >> bgp router 5.5.5.2 >> >> add peer 555 5.5.5.4 >> >> peer 5.5.5.4 up >> >> add peer 1 1.1.1.1 >> >> peer 1.1.1.1 >> >> next-hop-self >> >> up >> >> exit >> >> exit >> >> bgp router 5.5.5.3 >> >> add peer 555 5.5.5.4 >> >> peer 5.5.5.4 up >> >> add peer 2 2.2.2.2 >> >> peer 2.2.2.2 >> >> next-hop-self >> >> up >> >> exit >> >> exit >> >> #sim >> >> sim run >> >> print "Done.\n" >> >> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> >> This topology is referred in many papers as a typical oscillation >> topology. However, it turns out to be convergent when I use the >> following command in C-BGP: >> >> #cbgp –c med_oscillation.cli –l med_oscillation.log >> >> There may be some mistakes or missing in my topology file. I tried, >> but still couldn’t find out. You must be very familiar with this kind >> of topology. So could you please check it for me? *Does my file >> describe the topology in the above picture correctly?* If so, why it >> converged? If not, how should I modify the topology file? >> >> Thank you for your help! >> >> Best regards. >> >> Xiaomei Sun >> >> >> >> ------------------------------------------------------------------------------ >> New Year. New Location. New Benefits. New Data Center in Ashburn, VA. >> GigeNET is offering a free month of service with a new server in Ashburn. >> Choose from 2 high performing configs, both with 100TB of bandwidth. >> Higher redundancy.Lower latency.Increased capacity.Completely compliant. >> http://p.sf.net/sfu/gigenet >> >> >> _______________________________________________ >> C-bgp-users mailing list >> C-b...@li... >> https://lists.sourceforge.net/lists/listinfo/c-bgp-users > |
From: Bruno Q. <bru...@um...> - 2015-01-19 11:18:32
|
Hi Xiaomei, I'm having a look at your script right now. The script seems alright but RR2 (5.5.5.4) does not take the right decision. This is due to a bug introduced in revision r1420. This bug has not been caught by the validation tests. Will get back to you when this is fixed and additional validation tests have been provided. Moreover, I would like to add your script (with due credits) to the examples provided in the c-bgp archive. Do you agree ? BR, Bruno On 17/01/15 05:58, 孙晓梅 wrote: > > Hi, > > I’m trying to create a typical topology where oscillation > happens. The topology is as following, > > According to the graph, I wrote the following topology. > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > ##*med_oscillation.cli (The topology file name)* > > define MED_TYPE deterministic > > bgp options med $MED_TYPE > > print "\nSelected option: \"$MED_TYPE\"\n\n" > > #setup the topology > > #Domain 555 > > net add domain 555 igp > > net add node 5.5.5.0 > > net node 5.5.5.0 name RR1 > > net node 5.5.5.0 domain 555 > > net add node 5.5.5.1 > > net node 5.5.5.1 name R1 > > net node 5.5.5.1 domain 555 > > net add node 5.5.5.2 > > net node 5.5.5.2 name R2 > > net node 5.5.5.2 domain 555 > > net add node 5.5.5.3 > > net node 5.5.5.3 name R3 > > net node 5.5.5.3 domain 555 > > net add node 5.5.5.4 > > net node 5.5.5.4 name RR2 > > net node 5.5.5.4 domain 555 > > net add link 5.5.5.0 5.5.5.4 > > net link 5.5.5.0 5.5.5.4 igp-weight --bidir 1 > > net add link 5.5.5.0 5.5.5.1 > > net link 5.5.5.0 5.5.5.1 igp-weight --bidir 10 > > net add link 5.5.5.4 5.5.5.2 > > net link 5.5.5.4 5.5.5.2 igp-weight --bidir 4 > > net add link 5.5.5.4 5.5.5.3 > > net link 5.5.5.4 5.5.5.3 igp-weight --bidir 5 > > net domain 555 compute > > #Domain 1 > > net add domain 1 igp > > net add node 1.1.1.1 > > #net node 1.1.1.1 name AS1 > > net node 1.1.1.1 domain 1 > > net domain 1 compute > > #Domain 2 > > net add domain 2 igp > > net add node 2.2.2.2 > > #net node 2.2.2.2 name AS2 > > net node 2.2.2.2 domain 2 > > net domain 2 compute > > #Domain 3 > > net add domain 3 igp > > net add node 3.3.3.3 > > #net node 3.3.3.3 name AS3 > > net node 3.3.3.3 domain 3 > > net domain 3 compute > > # Interdomain links > > net add link 1.1.1.1 5.5.5.1 > > net node 1.1.1.1 route add 5.5.5.1/32 --oif=5.5.5.1/32 1 > > net node 5.5.5.1 route add 1.1.1.1/32 --oif=1.1.1.1/32 1 > > net add link 1.1.1.1 5.5.5.2 > > net node 1.1.1.1 route add 5.5.5.2/32 --oif=5.5.5.2/32 1 > > net node 5.5.5.2 route add 1.1.1.1/32 --oif=1.1.1.1/32 1 > > net add link 2.2.2.2 5.5.5.3 > > net node 2.2.2.2 route add 5.5.5.3/32 --oif=5.5.5.3/32 1 > > net node 5.5.5.3 route add 2.2.2.2/32 --oif=2.2.2.2/32 1 > > net add link 1.1.1.1 3.3.3.3 > > net node 1.1.1.1 route add 3.3.3.3/32 --oif=3.3.3.3/32 1 > > net node 3.3.3.3 route add 1.1.1.1/32 --oif=1.1.1.1/32 1 > > net add link 2.2.2.2 3.3.3.3 > > net node 2.2.2.2 route add 3.3.3.3/32 --oif=3.3.3.3/32 1 > > net node 3.3.3.3 route add 2.2.2.2/32 --oif=2.2.2.2/32 1 > > #Setup BGP > > # AS 3 > > bgp add router 3 3.3.3.3 > > bgp router 3.3.3.3 > > add network 10.0.0.0/32 > > add peer 1 1.1.1.1 > > peer 1.1.1.1 > > next-hop-self > > up > > exit > > add peer 2 2.2.2.2 > > peer 2.2.2.2 > > next-hop-self > > up > > # AS 1 > > bgp add router 1 1.1.1.1 > > bgp router 1.1.1.1 > > add peer 3 3.3.3.3 > > peer 3.3.3.3 up > > add peer 555 5.5.5.1 > > peer 5.5.5.1 > > filter out > > add-rule > > match any > > action "metric 1" > > exit > > exit > > next-hop-self > > up > > bgp router 1.1.1.1 > > add peer 555 5.5.5.2 > > peer 5.5.5.2 > > filter out > > add-rule > > match any > > action "metric 5" > > exit > > exit > > next-hop-self > > up > > # AS 2 > > bgp add router 2 2.2.2.2 > > bgp router 2.2.2.2 > > add peer 3 3.3.3.3 > > peer 3.3.3.3 up > > add peer 555 5.5.5.3 > > peer 5.5.5.3 > > filter out > > add-rule > > match any > > action "metric 1" > > exit > > exit > > next-hop-self > > up > > # AS 555 > > bgp add router 555 5.5.5.0 > > bgp add router 555 5.5.5.1 > > bgp add router 555 5.5.5.2 > > bgp add router 555 5.5.5.3 > > bgp add router 555 5.5.5.4 > > bgp router 5.5.5.0 > > add peer 555 5.5.5.4 > > peer 5.5.5.4 up > > add peer 555 5.5.5.1 > > peer 5.5.5.1 > > rr-client > > up > > exit > > exit > > bgp router 5.5.5.4 > > add peer 555 5.5.5.0 > > peer 5.5.5.0 up > > add peer 555 5.5.5.2 > > peer 5.5.5.2 > > rr-client > > up > > exit > > add peer 555 5.5.5.3 > > peer 5.5.5.3 > > rr-client > > up > > exit > > exit > > bgp router 5.5.5.1 > > add peer 555 5.5.5.0 > > peer 5.5.5.0 up > > add peer 1 1.1.1.1 > > peer 1.1.1.1 > > next-hop-self > > up > > exit > > exit > > bgp router 5.5.5.2 > > add peer 555 5.5.5.4 > > peer 5.5.5.4 up > > add peer 1 1.1.1.1 > > peer 1.1.1.1 > > next-hop-self > > up > > exit > > exit > > bgp router 5.5.5.3 > > add peer 555 5.5.5.4 > > peer 5.5.5.4 up > > add peer 2 2.2.2.2 > > peer 2.2.2.2 > > next-hop-self > > up > > exit > > exit > > #sim > > sim run > > print "Done.\n" > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > This topology is referred in many papers as a typical oscillation > topology. However, it turns out to be convergent when I use the > following command in C-BGP: > > #cbgp –c med_oscillation.cli –l med_oscillation.log > > There may be some mistakes or missing in my topology file. I tried, > but still couldn’t find out. You must be very familiar with this kind > of topology. So could you please check it for me? *Does my file > describe the topology in the above picture correctly?* If so, why it > converged? If not, how should I modify the topology file? > > Thank you for your help! > > Best regards. > > Xiaomei Sun > > > > ------------------------------------------------------------------------------ > New Year. New Location. New Benefits. New Data Center in Ashburn, VA. > GigeNET is offering a free month of service with a new server in Ashburn. > Choose from 2 high performing configs, both with 100TB of bandwidth. > Higher redundancy.Lower latency.Increased capacity.Completely compliant. > http://p.sf.net/sfu/gigenet > > > _______________________________________________ > C-bgp-users mailing list > C-b...@li... > https://lists.sourceforge.net/lists/listinfo/c-bgp-users |
From: 孙. <sun...@fo...> - 2015-01-17 05:14:37
|
Hi, I’m trying to create a typical topology where oscillation happens. The topology is as following, According to the graph, I wrote the following topology. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ##med_oscillation.cli (The topology file name) define MED_TYPE deterministic bgp options med $MED_TYPE print "\nSelected option: \"$MED_TYPE\"\n\n" #setup the topology #Domain 555 net add domain 555 igp net add node 5.5.5.0 net node 5.5.5.0 name RR1 net node 5.5.5.0 domain 555 net add node 5.5.5.1 net node 5.5.5.1 name R1 net node 5.5.5.1 domain 555 net add node 5.5.5.2 net node 5.5.5.2 name R2 net node 5.5.5.2 domain 555 net add node 5.5.5.3 net node 5.5.5.3 name R3 net node 5.5.5.3 domain 555 net add node 5.5.5.4 net node 5.5.5.4 name RR2 net node 5.5.5.4 domain 555 net add link 5.5.5.0 5.5.5.4 net link 5.5.5.0 5.5.5.4 igp-weight --bidir 1 net add link 5.5.5.0 5.5.5.1 net link 5.5.5.0 5.5.5.1 igp-weight --bidir 10 net add link 5.5.5.4 5.5.5.2 net link 5.5.5.4 5.5.5.2 igp-weight --bidir 4 net add link 5.5.5.4 5.5.5.3 net link 5.5.5.4 5.5.5.3 igp-weight --bidir 5 net domain 555 compute #Domain 1 net add domain 1 igp net add node 1.1.1.1 #net node 1.1.1.1 name AS1 net node 1.1.1.1 domain 1 net domain 1 compute #Domain 2 net add domain 2 igp net add node 2.2.2.2 #net node 2.2.2.2 name AS2 net node 2.2.2.2 domain 2 net domain 2 compute #Domain 3 net add domain 3 igp net add node 3.3.3.3 #net node 3.3.3.3 name AS3 net node 3.3.3.3 domain 3 net domain 3 compute # Interdomain links net add link 1.1.1.1 5.5.5.1 net node 1.1.1.1 route add 5.5.5.1/32 --oif=5.5.5.1/32 1 net node 5.5.5.1 route add 1.1.1.1/32 --oif=1.1.1.1/32 1 net add link 1.1.1.1 5.5.5.2 net node 1.1.1.1 route add 5.5.5.2/32 --oif=5.5.5.2/32 1 net node 5.5.5.2 route add 1.1.1.1/32 --oif=1.1.1.1/32 1 net add link 2.2.2.2 5.5.5.3 net node 2.2.2.2 route add 5.5.5.3/32 --oif=5.5.5.3/32 1 net node 5.5.5.3 route add 2.2.2.2/32 --oif=2.2.2.2/32 1 net add link 1.1.1.1 3.3.3.3 net node 1.1.1.1 route add 3.3.3.3/32 --oif=3.3.3.3/32 1 net node 3.3.3.3 route add 1.1.1.1/32 --oif=1.1.1.1/32 1 net add link 2.2.2.2 3.3.3.3 net node 2.2.2.2 route add 3.3.3.3/32 --oif=3.3.3.3/32 1 net node 3.3.3.3 route add 2.2.2.2/32 --oif=2.2.2.2/32 1 #Setup BGP # AS 3 bgp add router 3 3.3.3.3 bgp router 3.3.3.3 add network 10.0.0.0/32 add peer 1 1.1.1.1 peer 1.1.1.1 next-hop-self up exit add peer 2 2.2.2.2 peer 2.2.2.2 next-hop-self up # AS 1 bgp add router 1 1.1.1.1 bgp router 1.1.1.1 add peer 3 3.3.3.3 peer 3.3.3.3 up add peer 555 5.5.5.1 peer 5.5.5.1 filter out add-rule match any action "metric 1" exit exit next-hop-self up bgp router 1.1.1.1 add peer 555 5.5.5.2 peer 5.5.5.2 filter out add-rule match any action "metric 5" exit exit next-hop-self up # AS 2 bgp add router 2 2.2.2.2 bgp router 2.2.2.2 add peer 3 3.3.3.3 peer 3.3.3.3 up add peer 555 5.5.5.3 peer 5.5.5.3 filter out add-rule match any action "metric 1" exit exit next-hop-self up # AS 555 bgp add router 555 5.5.5.0 bgp add router 555 5.5.5.1 bgp add router 555 5.5.5.2 bgp add router 555 5.5.5.3 bgp add router 555 5.5.5.4 bgp router 5.5.5.0 add peer 555 5.5.5.4 peer 5.5.5.4 up add peer 555 5.5.5.1 peer 5.5.5.1 rr-client up exit exit bgp router 5.5.5.4 add peer 555 5.5.5.0 peer 5.5.5.0 up add peer 555 5.5.5.2 peer 5.5.5.2 rr-client up exit add peer 555 5.5.5.3 peer 5.5.5.3 rr-client up exit exit bgp router 5.5.5.1 add peer 555 5.5.5.0 peer 5.5.5.0 up add peer 1 1.1.1.1 peer 1.1.1.1 next-hop-self up exit exit bgp router 5.5.5.2 add peer 555 5.5.5.4 peer 5.5.5.4 up add peer 1 1.1.1.1 peer 1.1.1.1 next-hop-self up exit exit bgp router 5.5.5.3 add peer 555 5.5.5.4 peer 5.5.5.4 up add peer 2 2.2.2.2 peer 2.2.2.2 next-hop-self up exit exit #sim sim run print "Done.\n" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ This topology is referred in many papers as a typical oscillation topology. However, it turns out to be convergent when I use the following command in C-BGP: #cbgp –c med_oscillation.cli –l med_oscillation.log There may be some mistakes or missing in my topology file. I tried, but still couldn’t find out. You must be very familiar with this kind of topology. So could you please check it for me? Does my file describe the topology in the above picture correctly? If so, why it converged? If not, how should I modify the topology file? Thank you for your help! Best regards. Xiaomei Sun |
From: Ilias P. <pal...@ii...> - 2014-09-30 09:11:54
|
On 9/30/14 5:39 PM, Bruno Quoitin wrote: > Hi Ilias, > > Have a look at > http://c-bgp.sourceforge.net/doc/html/nodes/bgp_route-map.html I had a look on that although honestly I got a bit confused. instead I had a look in the example-gao-rexford.cli where I found an example of it's use > > There is no such thing as a peer group in c-bgp eventhough it would > certainly be useful. Do you think this would be possible for me to implement/contribute in C-BGP in a reasonable amount of time ? > You can rely on the above command to define filters that will be > shared among multiple bgp sessions. I might have misunderstood it's use but isn't the command I sent you previously the way to use routemaps ? bgp router <router> peer <peer> filter out add-rule action "jump <route-map>" repeated for all the peers of the router for a previously defined <route-map> ? > > However, this will not provide any benefit regarding memory > consumption as there will be no sharing of routes among the bgp > sessions using the same filter to the contrary of sessions belonging > to the same peer-group. This question is not related to the convergence performance(time,memory). What I want to achieve has two main points 1) add a community to a specific prefix (of a network advertised by the router) to ALL router sessions (both iBGP and eBGP) 2)Be able to manipulate both the prefix and the community added to it. The second point is feasible through route-maps I think. then I can assign it using the filter add-rule (as shown before) and filter remove-rule at will, using something like bgp router <router_id> peer <peer_id> filter remove-rule <index> wherever I want and only manipulate the route-map. Problem is I would like to avoid doing that for all the peering sessions internal and external and was looking for a way to do it more efficiently. Especially for ibgp because the sessions are created by the full-mesh command to save me the trouble of managing these sessions manually. Thank you for your help, ilias > > BR, > Bruno > > > > On 30/09/14 10:30, Ilias Pallikarakis wrote: >> Hi, >> I was wondering if C-BGP supports the use of peer groups. My goal is >> to create some route-map filters >> that will cover all the router's sessions (both ibgp and ebgp) >> instead of a single session. This would be possible >> if there was an option like bgp peer <peer-list> but I don't think >> there is. Is there any way to do this in C-BGP or should >> I do something like this : >> bgp router <router> peer <peer> filter out add-rule action "jump >> <route-map>" >> >> for all routers and for all the router's peers ? >> Isn't there a simpler way ? >> >> Thank you for your time, >> >> ilias > > |
From: Bruno Q. <bru...@um...> - 2014-09-30 08:39:20
|
Hi Ilias, Have a look at http://c-bgp.sourceforge.net/doc/html/nodes/bgp_route-map.html There is no such thing as a peer group in c-bgp eventhough it would certainly be useful. You can rely on the above command to define filters that will be shared among multiple bgp sessions. However, this will not provide any benefit regarding memory consumption as there will be no sharing of routes among the bgp sessions using the same filter to the contrary of sessions belonging to the same peer-group. BR, Bruno On 30/09/14 10:30, Ilias Pallikarakis wrote: > Hi, > I was wondering if C-BGP supports the use of peer groups. My goal is > to create some route-map filters > that will cover all the router's sessions (both ibgp and ebgp) instead > of a single session. This would be possible > if there was an option like bgp peer <peer-list> but I don't think > there is. Is there any way to do this in C-BGP or should > I do something like this : > bgp router <router> peer <peer> filter out add-rule action "jump > <route-map>" > > for all routers and for all the router's peers ? > Isn't there a simpler way ? > > Thank you for your time, > > ilias |
From: Bruno Q. <bru...@um...> - 2014-09-19 07:24:41
|
Hi Ilias, If I understand well your numbering, steps 9.i and 9.ii are done in a loop, one AS at a time. If that is the case, when you run "sim run" at step 9.ii, the simulator will try to establish the newly added BGP sessions. However, some of the eBGP sessions are half-configured at that time. Hence the error you received. It should be safe to remove step 9.ii Regarding iBGP filters, nothing should prevent it. I just tried a small one iBGP session setup and did prepending on the iBGP session. The filter was applied and caused the receiver's as-path loop detection to kick in. You can also prepend an arbitrary ASN using the filter action "as-path insert <asn> <count>" which will prepend <count> times the given <asn> to the as-path. Hope that helps. BR, Bruno On 19/09/14 08:06, Ilias Pallikarakis wrote: > Hi, > I created a C-BGP script with the following structure : > 1)create all nodes and intra-AS links. > 2)sim run > 3)Add inter-AS links (using static routes) > 4)sim run > 5)IGP > 6)sim run > 7)iBGP (full mesh) > 8)sim run > 9)for every AS > i)configure eBGP sessions > ii)sim run > 10)sim run > > When I run this script I receive the following error : > > ****************************************************************** > WARNING: BGP message received from unknown peer ! > WARNING: destination=AS40:0.40.0.18 > WARNING: source=0.39.0.18 > WARNING: BGP message received from unknown peer ! > WARNING: destination=AS40:0.40.0.83 > WARNING: source=0.39.0.83 > WARNING: BGP message received from unknown peer ! > WARNING: destination=AS40:0.40.0.95 > WARNING: source=0.39.0.95 > WARNING: BGP message received from unknown peer ! > WARNING: destination=AS40:0.40.0.96 > WARNING: source=0.39.0.96 > WARNING: BGP message received from unknown peer ! > WARNING: destination=AS48:0.48.0.26 > WARNING: source=0.44.0.26 > BGP session sequence number check failed > router = AS47:0.47.0.50 > peer = AS24:0.24.0.50 > rcvd seq-num = 1 > exp. seq-num = 0 > state = OPENWAIT > message = > |A|0.47.0.50|24|0.24.0.0/16|24|IGP|0.24.0.50|150|||| > > Note: This error can occur for several reasons. > The most common case for this error is when the underlying route of a > BGP session changes during the simulation convergence (sim run). > ************************************************************************************ > > > > If I run the same script without steps 9.ii C-BGP runs and converges > without an issue. > I should also mention that some networks are advertised by different > ASes. This is done > to simulate Stub ASes without actually implementing them as routers. > Instead their providers > are to advertise their prefixes. > Do you have any notion where the problem might be ? > > I was also experimenting with AS prepending in C-BGP. I came to the > conclusion that it is not possible to do prepending in iBGP sessions. > Is it possible to alter that ? > I would like to have prepending in iBGP sessions as well as prepending > of ASN other than the router’s own ASN. Could you give me any > directions on where to look in the code to make these changes ? > > Thank you in advance, > > Ilias Pallikarakis |
From: Ilias P. <pal...@ii...> - 2014-09-19 06:21:30
|
Hi, I created a C-BGP script with the following structure : 1)create all nodes and intra-AS links. 2)sim run 3)Add inter-AS links (using static routes) 4)sim run 5)IGP 6)sim run 7)iBGP (full mesh) 8)sim run 9)for every AS i)configure eBGP sessions ii)sim run 10)sim run When I run this script I receive the following error : ****************************************************************** WARNING: BGP message received from unknown peer ! WARNING: destination=AS40:0.40.0.18 WARNING: source=0.39.0.18 WARNING: BGP message received from unknown peer ! WARNING: destination=AS40:0.40.0.83 WARNING: source=0.39.0.83 WARNING: BGP message received from unknown peer ! WARNING: destination=AS40:0.40.0.95 WARNING: source=0.39.0.95 WARNING: BGP message received from unknown peer ! WARNING: destination=AS40:0.40.0.96 WARNING: source=0.39.0.96 WARNING: BGP message received from unknown peer ! WARNING: destination=AS48:0.48.0.26 WARNING: source=0.44.0.26 BGP session sequence number check failed router = AS47:0.47.0.50 peer = AS24:0.24.0.50 rcvd seq-num = 1 exp. seq-num = 0 state = OPENWAIT message = |A|0.47.0.50|24|0.24.0.0/16|24|IGP|0.24.0.50|150|||| Note: This error can occur for several reasons. The most common case for this error is when the underlying route of a BGP session changes during the simulation convergence (sim run). ************************************************************************************ If I run the same script without steps 9.ii C-BGP runs and converges without an issue. I should also mention that some networks are advertised by different ASes. This is done to simulate Stub ASes without actually implementing them as routers. Instead their providers are to advertise their prefixes. Do you have any notion where the problem might be ? I was also experimenting with AS prepending in C-BGP. I came to the conclusion that it is not possible to do prepending in iBGP sessions. Is it possible to alter that ? I would like to have prepending in iBGP sessions as well as prepending of ASN other than the router’s own ASN. Could you give me any directions on where to look in the code to make these changes ? Thank you in advance, Ilias Pallikarakis |
From: Bruno Q. <bru...@um...> - 2014-09-10 13:21:36
|
Hi Raja, There was an inconsistency in the JNI wrapper for record-routes. An older version of the API was used which caused a segfault. This error has not been caught during the latest regression tests as the JNI interface is seldom used (I didn't know people were still using it). I will try to perform the JNI regression tests for the future releases... This has been fixed in the sourceforge repository. Please let me know if that solves your issue. One of the junit tests fails but I don't have time to fix it immediately. Will come to that later (presumably in about 10 days). If you plan to use junit tests (through jni-test-wrapper.sh), note that I now use junit-4.9. You need to put the junit-4.9 jar in ./lib Cheers, Bruno On 4/09/14 23:56, Raja Sambasivan wrote: > Hi, > > I am trying to test C-BGP's JNI interface by running > c-bhp-2.3.1/src/jni/jni-test-wrapper.sh. This command immediately > fails with a segfault. I've compiled C-BGP with JNI support > (./configure ---with-jni). Does anyone have any pointers on what > could be the problem? I've attached relevant bits of the error log below. > > I am running Ubuntu 12.04 LTS in a VM using VMWare Fusion and Java > version 1.7. > > Any help would be appreciated. > > Thanks, > Raja > (postdoc, CMU) > > One other note: I had to add a return value to line 107 of > src/jini/exceptions.c to get C-BGP to compile with JNI support. > > # > # A fatal error has been detected by the Java Runtime Environment: > # > # SIGSEGV (0xb) at pc=0x00000001, pid=11849, tid=3064036160 > # > # JRE version: OpenJDK Runtime Environment (7.0_65-b32) (build > 1.7.0_65-b32) > # Java VM: OpenJDK Client VM (24.65-b04 mixed mode, sharing linux-x86 ) > # Problematic frame: > # C 0x00000001 > # > --------------- T H R E A D --------------- > > Current thread (0xb6807800): JavaThread "main" [_thread_in_native, > id=11856, stack(0xb69c7000,0xb6a18000)] > > siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), > si_addr=0x00000001 > > Registers: > EAX=0xb68b74b8, EBX=0xb3d76000, ECX=0xb6a166c0, EDX=0xb68ad210 > ESP=0xb6a1666c, EBP=0xb6a1668c, ESI=0xb6807928, EDI=0xb6835f60 > EIP=0x00000001, EFLAGS=0x00010286, CR2=0x00000001 > > Top of Stack: (sp=0xb6a1666c) > 0xb6a1666c: b3d4d82a b68ad210 01000002 000000ff > 0xb6a1667c: b68ad220 b6807e60 b6807e64 b6805b00 > 0xb6a1668c: b6807a40 b68b74b8 00000001 01000002 > 0xb6a1669c: b6e0bf3f 8e88b420 8e88b41c b6807800 > 0xb6a166ac: 8e88b420 8e88b41c b6807800 b6a166f8 > 0xb6a166bc: b480b25b b6807928 b6a1670c b6a16708 > 0xb6a166cc: b6a166d0 00000001 6f3d7a68 b6a166d0 > 0xb6a166dc: 8e88b41c b6a1670c 8e88c0c8 00000000 > > Instructions: (pc=0x00000001) > 0xffffffe1: > > Register to memory mapping: > > EAX=0xb68b74b8 is an unknown value > EBX=0xb3d76000: <offset 0x91000> in > /home/rajasambasivan/src/cbgp-2.3.1/src/.libs/libcsim-2.3.1.so at > 0xb3ce5000 > ECX=0xb6a166c0 is pointing into the stack for thread: 0xb6807800 > EDX=0xb68ad210 is an unknown value > ESP=0xb6a1666c is pointing into the stack for thread: 0xb6807800 > EBP=0xb6a1668c is pointing into the stack for thread: 0xb6807800 > ESI=0xb6807928 is an unknown value > EDI=0xb6835f60 is an unknown value > > > Stack: [0xb69c7000,0xb6a18000], sp=0xb6a1666c, free space=317k > Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, > C=native code) > C 0x00000001 > > Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) > j > be.ac.ucl.ingi.cbgp.net.Node.recordRoute(Ljava/lang/String;)Ljava/util/Vector;+0 > j be.ac.ucl.ingi.cbgp.testing.TestRecordRoute.testBasic()V+6 > v ~StubRoutines::call_stub > j > sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 > j > sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+87 > j > sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 > j > java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+57 > j org.junit.internal.runners.TestMethod.invoke(Ljava/lang/Object;)V+9 > j org.junit.internal.runners.MethodRoadie.runTestMethod()V+8 > j org.junit.internal.runners.MethodRoadie$2.run()V+4 > j > org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(Ljava/lang/Runnable;)V+5 > j org.junit.internal.runners.MethodRoadie.runTest()V+9 > j org.junit.internal.runners.MethodRoadie.run()V+56 > j > org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(Ljava/lang/reflect/Method;Lorg/junit/runner/notification/RunNotifier;)V+58 > j > org.junit.internal.runners.JUnit4ClassRunner.runMethods(Lorg/junit/runner/notification/RunNotifier;)V+32 > j org.junit.internal.runners.JUnit4ClassRunner$1.run()V+8 > j org.junit.internal.runners.ClassRoadie.runUnprotected()V+4 > j org.junit.internal.runners.ClassRoadie.runProtected()V+5 > j > org.junit.internal.runners.JUnit4ClassRunner.run(Lorg/junit/runner/notification/RunNotifier;)V+25 > j > org.junit.internal.runners.CompositeRunner.runChildren(Lorg/junit/runner/notification/RunNotifier;)V+31 > j > org.junit.runners.Suite.access$000(Lorg/junit/runners/Suite;Lorg/junit/runner/notification/RunNotifier;)V+2 > j org.junit.runners.Suite$1.run()V+8 > j org.junit.internal.runners.ClassRoadie.runUnprotected()V+4 > j org.junit.internal.runners.ClassRoadie.runProtected()V+5 > j > org.junit.runners.Suite.run(Lorg/junit/runner/notification/RunNotifier;)V+25 > j > org.junit.internal.runners.CompositeRunner.runChildren(Lorg/junit/runner/notification/RunNotifier;)V+31 > j > org.junit.internal.runners.CompositeRunner.run(Lorg/junit/runner/notification/RunNotifier;)V+2 > j > org.junit.runner.JUnitCore.run(Lorg/junit/runner/Runner;)Lorg/junit/runner/Result;+34 > j > org.junit.runner.JUnitCore.run(Lorg/junit/runner/Request;)Lorg/junit/runner/Result;+5 > j > org.junit.runner.JUnitCore.run([Ljava/lang/Class;)Lorg/junit/runner/Result;+7 > j > org.junit.runner.JUnitCore.runMain([Ljava/lang/String;)Lorg/junit/runner/Result;+179 > j org.junit.runner.JUnitCore.main([Ljava/lang/String;)V+8 > v ~StubRoutines::call_stub > > --------------- P R O C E S S --------------- > > Java Threads: ( => current thread ) > 0xb684b800 JavaThread "Service Thread" daemon [_thread_blocked, > id=11862, stack(0xb3e3b000,0xb3e8c000)] > 0xb6849c00 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, > id=11861, stack(0xb3e8c000,0xb3f0d000)] > 0xb6848000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, > id=11860, stack(0xb3f0d000,0xb3f5e000)] > 0xb6833400 JavaThread "Finalizer" daemon [_thread_blocked, id=11859, > stack(0xb415e000,0xb41af000)] > 0xb6831800 JavaThread "Reference Handler" daemon [_thread_blocked, > id=11858, stack(0xb41af000,0xb4200000)] > =>0xb6807800 JavaThread "main" [_thread_in_native, id=11856, > stack(0xb69c7000,0xb6a18000)] > > Other Threads: > 0xb6830000 VMThread [stack: 0xb4336000,0xb43b7000] [id=11857] > 0xb684e000 WatcherThread [stack: 0xb3dba000,0xb3e3b000] [id=11863] > > VM state:not at safepoint (normal execution) > > VM Mutex/Monitor currently owned by a thread: None > > Internal exceptions (10 events): > Event: 0.197 Thread 0xb6807800 Threw 0x6f36dcc8 at > /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/runtime/reflection.cpp:1030 > Event: 0.198 Thread 0xb6807800 Threw 0x6f383538 at > /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:721 > Event: 0.198 Thread 0xb6807800 Threw 0x6f383538 at > /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:721 > Event: 0.198 Thread 0xb6807800 Threw 0x6f383748 at > /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/runtime/reflection.cpp:1030 > Event: 0.202 Thread 0xb6807800 Threw 0x6f3b65f0 at > /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:747 > Event: 0.202 Thread 0xb6807800 Threw 0x6f3b65f0 at > /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:721 > Event: 0.202 Thread 0xb6807800 Threw 0x6f3b6708 at > /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/runtime/reflection.cpp:1030 > Event: 0.203 Thread 0xb6807800 Threw 0x6f3bfd90 at > /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:747 > Event: 0.203 Thread 0xb6807800 Threw 0x6f3bfd90 at > /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:721 > Event: 0.203 Thread 0xb6807800 Threw 0x6f3bfea8 at > /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/runtime/reflection.cpp:1030 > > > VM Arguments: > jvm_args: -Djava.library.path=../../src/.libs > java_command: org.junit.runner.JUnitCore > be.ac.ucl.ingi.cbgp.testing.AllTests > Launcher Type: SUN_STANDARD > > Environment Variables: > PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games > LD_LIBRARY_PATH=/usr/local/lib > SHELL=/bin/bash > DISPLAY=:0 > > --------------- S Y S T E M --------------- > > OS:Ubuntu 14.04 (trusty) > uname:Linux 3.13.0-35-generic #62-Ubuntu SMP Fri Aug 15 01:58:01 UTC > 2014 i686 > libc:glibc 2.19 NPTL 2.19 > rlimit: STACK 8192k, CORE 0k, NPROC 7861, NOFILE 4096, AS infinity > load average:0.31 0.32 0.19 > > > Memory: 4k page, physical 1025476k(92624k free), swap > 1046524k(1021812k free) > > vm_info: OpenJDK Client VM (24.65-b04) for linux-x86 JRE > (1.7.0_65-b32), built on Aug 23 2014 13:43:00 by "buildd" with gcc 4.8.2 > > > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > > > _______________________________________________ > C-bgp-users mailing list > C-b...@li... > https://lists.sourceforge.net/lists/listinfo/c-bgp-users |
From: Raja S. <tra...@ya...> - 2014-09-04 21:59:08
|
Hi, I am trying to test C-BGP’s JNI interface by running c-bhp-2.3.1/src/jni/jni-test-wrapper.sh. This command immediately fails with a segfault. I’ve compiled C-BGP with JNI support (./configure —with-jni). Does anyone have any pointers on what could be the problem? I’ve attached relevant bits of the error log below. I am running Ubuntu 12.04 LTS in a VM using VMWare Fusion and Java version 1.7. Any help would be appreciated. Thanks, Raja (postdoc, CMU) One other note: I had to add a return value to line 107 of src/jini/exceptions.c to get C-BGP to compile with JNI support. # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00000001, pid=11849, tid=3064036160 # # JRE version: OpenJDK Runtime Environment (7.0_65-b32) (build 1.7.0_65-b32) # Java VM: OpenJDK Client VM (24.65-b04 mixed mode, sharing linux-x86 ) # Problematic frame: # C 0x00000001 # --------------- T H R E A D --------------- Current thread (0xb6807800): JavaThread "main" [_thread_in_native, id=11856, stack(0xb69c7000,0xb6a18000)] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x00000001 Registers: EAX=0xb68b74b8, EBX=0xb3d76000, ECX=0xb6a166c0, EDX=0xb68ad210 ESP=0xb6a1666c, EBP=0xb6a1668c, ESI=0xb6807928, EDI=0xb6835f60 EIP=0x00000001, EFLAGS=0x00010286, CR2=0x00000001 Top of Stack: (sp=0xb6a1666c) 0xb6a1666c: b3d4d82a b68ad210 01000002 000000ff 0xb6a1667c: b68ad220 b6807e60 b6807e64 b6805b00 0xb6a1668c: b6807a40 b68b74b8 00000001 01000002 0xb6a1669c: b6e0bf3f 8e88b420 8e88b41c b6807800 0xb6a166ac: 8e88b420 8e88b41c b6807800 b6a166f8 0xb6a166bc: b480b25b b6807928 b6a1670c b6a16708 0xb6a166cc: b6a166d0 00000001 6f3d7a68 b6a166d0 0xb6a166dc: 8e88b41c b6a1670c 8e88c0c8 00000000 Instructions: (pc=0x00000001) 0xffffffe1: Register to memory mapping: EAX=0xb68b74b8 is an unknown value EBX=0xb3d76000: <offset 0x91000> in /home/rajasambasivan/src/cbgp-2.3.1/src/.libs/libcsim-2.3.1.so at 0xb3ce5000 ECX=0xb6a166c0 is pointing into the stack for thread: 0xb6807800 EDX=0xb68ad210 is an unknown value ESP=0xb6a1666c is pointing into the stack for thread: 0xb6807800 EBP=0xb6a1668c is pointing into the stack for thread: 0xb6807800 ESI=0xb6807928 is an unknown value EDI=0xb6835f60 is an unknown value Stack: [0xb69c7000,0xb6a18000], sp=0xb6a1666c, free space=317k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C 0x00000001 Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j be.ac.ucl.ingi.cbgp.net.Node.recordRoute(Ljava/lang/String;)Ljava/util/Vector;+0 j be.ac.ucl.ingi.cbgp.testing.TestRecordRoute.testBasic()V+6 v ~StubRoutines::call_stub j sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 j sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+87 j sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+57 j org.junit.internal.runners.TestMethod.invoke(Ljava/lang/Object;)V+9 j org.junit.internal.runners.MethodRoadie.runTestMethod()V+8 j org.junit.internal.runners.MethodRoadie$2.run()V+4 j org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(Ljava/lang/Runnable;)V+5 j org.junit.internal.runners.MethodRoadie.runTest()V+9 j org.junit.internal.runners.MethodRoadie.run()V+56 j org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(Ljava/lang/reflect/Method;Lorg/junit/runner/notification/RunNotifier;)V+58 j org.junit.internal.runners.JUnit4ClassRunner.runMethods(Lorg/junit/runner/notification/RunNotifier;)V+32 j org.junit.internal.runners.JUnit4ClassRunner$1.run()V+8 j org.junit.internal.runners.ClassRoadie.runUnprotected()V+4 j org.junit.internal.runners.ClassRoadie.runProtected()V+5 j org.junit.internal.runners.JUnit4ClassRunner.run(Lorg/junit/runner/notification/RunNotifier;)V+25 j org.junit.internal.runners.CompositeRunner.runChildren(Lorg/junit/runner/notification/RunNotifier;)V+31 j org.junit.runners.Suite.access$000(Lorg/junit/runners/Suite;Lorg/junit/runner/notification/RunNotifier;)V+2 j org.junit.runners.Suite$1.run()V+8 j org.junit.internal.runners.ClassRoadie.runUnprotected()V+4 j org.junit.internal.runners.ClassRoadie.runProtected()V+5 j org.junit.runners.Suite.run(Lorg/junit/runner/notification/RunNotifier;)V+25 j org.junit.internal.runners.CompositeRunner.runChildren(Lorg/junit/runner/notification/RunNotifier;)V+31 j org.junit.internal.runners.CompositeRunner.run(Lorg/junit/runner/notification/RunNotifier;)V+2 j org.junit.runner.JUnitCore.run(Lorg/junit/runner/Runner;)Lorg/junit/runner/Result;+34 j org.junit.runner.JUnitCore.run(Lorg/junit/runner/Request;)Lorg/junit/runner/Result;+5 j org.junit.runner.JUnitCore.run([Ljava/lang/Class;)Lorg/junit/runner/Result;+7 j org.junit.runner.JUnitCore.runMain([Ljava/lang/String;)Lorg/junit/runner/Result;+179 j org.junit.runner.JUnitCore.main([Ljava/lang/String;)V+8 v ~StubRoutines::call_stub --------------- P R O C E S S --------------- Java Threads: ( => current thread ) 0xb684b800 JavaThread "Service Thread" daemon [_thread_blocked, id=11862, stack(0xb3e3b000,0xb3e8c000)] 0xb6849c00 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=11861, stack(0xb3e8c000,0xb3f0d000)] 0xb6848000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=11860, stack(0xb3f0d000,0xb3f5e000)] 0xb6833400 JavaThread "Finalizer" daemon [_thread_blocked, id=11859, stack(0xb415e000,0xb41af000)] 0xb6831800 JavaThread "Reference Handler" daemon [_thread_blocked, id=11858, stack(0xb41af000,0xb4200000)] =>0xb6807800 JavaThread "main" [_thread_in_native, id=11856, stack(0xb69c7000,0xb6a18000)] Other Threads: 0xb6830000 VMThread [stack: 0xb4336000,0xb43b7000] [id=11857] 0xb684e000 WatcherThread [stack: 0xb3dba000,0xb3e3b000] [id=11863] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: None Internal exceptions (10 events): Event: 0.197 Thread 0xb6807800 Threw 0x6f36dcc8 at /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/runtime/reflection.cpp:1030 Event: 0.198 Thread 0xb6807800 Threw 0x6f383538 at /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:721 Event: 0.198 Thread 0xb6807800 Threw 0x6f383538 at /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:721 Event: 0.198 Thread 0xb6807800 Threw 0x6f383748 at /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/runtime/reflection.cpp:1030 Event: 0.202 Thread 0xb6807800 Threw 0x6f3b65f0 at /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:747 Event: 0.202 Thread 0xb6807800 Threw 0x6f3b65f0 at /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:721 Event: 0.202 Thread 0xb6807800 Threw 0x6f3b6708 at /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/runtime/reflection.cpp:1030 Event: 0.203 Thread 0xb6807800 Threw 0x6f3bfd90 at /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:747 Event: 0.203 Thread 0xb6807800 Threw 0x6f3bfd90 at /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/prims/jni.cpp:721 Event: 0.203 Thread 0xb6807800 Threw 0x6f3bfea8 at /build/buildd/openjdk-7-7u65-2.5.1/build/openjdk/hotspot/src/share/vm/runtime/reflection.cpp:1030 VM Arguments: jvm_args: -Djava.library.path=../../src/.libs java_command: org.junit.runner.JUnitCore be.ac.ucl.ingi.cbgp.testing.AllTests Launcher Type: SUN_STANDARD Environment Variables: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games LD_LIBRARY_PATH=/usr/local/lib SHELL=/bin/bash DISPLAY=:0 --------------- S Y S T E M --------------- OS:Ubuntu 14.04 (trusty) uname:Linux 3.13.0-35-generic #62-Ubuntu SMP Fri Aug 15 01:58:01 UTC 2014 i686 libc:glibc 2.19 NPTL 2.19 rlimit: STACK 8192k, CORE 0k, NPROC 7861, NOFILE 4096, AS infinity load average:0.31 0.32 0.19 Memory: 4k page, physical 1025476k(92624k free), swap 1046524k(1021812k free) vm_info: OpenJDK Client VM (24.65-b04) for linux-x86 JRE (1.7.0_65-b32), built on Aug 23 2014 13:43:00 by "buildd" with gcc 4.8.2 |
From: Bruno Q. <bru...@um...> - 2014-07-23 09:49:40
|
There was an error in src/libgds/stream.h This has been fixed on the repository and a new release has been provided in the "files" section on sourceforge. On 16/07/14 04:45, Ilias Pallikarakis wrote: > Hi, > I was trying to install c-BGP on Mac OS X but encountered some problems. > My machine is running OS X 10.9.4. > I have installed : > 1) readline-6.3.5 (with brew) > 2) pcre-8.35 (with brew) > 3) libgds-2.2.1 (using the site instructions) > > However, after "./configure -- prefix=<file_path>" (with no apparent > warnings or errors) I tried > "make" and got the following error : > > rexford.c:140:7: error: use of undeclared identifier 'logerr' > STREAM_ERR(STREAM_LEVEL_SEVERE, > ^ > /Users/<user>/local/include/libgds/stream.h:288:22: note: expanded from > macro > 'STREAM_ERR' > if (stream_enabled(logerr, LEVEL)) stream_printf(gdserr, __VA_ARGS__) > > I tried looking in stream.h and I indeed could not find a declaration of > logerr. Could you point what > is my mistake in this process ? > > Thank you in Advance, > > Ilias Pallikarakis > > ------------------------------------------------------------------------------ > Want fast and easy access to all the code in your enterprise? Index and > search up to 200,000 lines of code with a free copy of Black Duck > Code Sight - the same software that powers the world's largest code > search on Ohloh, the Black Duck Open Hub! Try it now. > http://p.sf.net/sfu/bds > _______________________________________________ > C-bgp-users mailing list > C-b...@li... > https://lists.sourceforge.net/lists/listinfo/c-bgp-users |
From: Ilias P. <pal...@ii...> - 2014-07-16 02:45:52
|
Hi, I was trying to install c-BGP on Mac OS X but encountered some problems. My machine is running OS X 10.9.4. I have installed : 1) readline-6.3.5 (with brew) 2) pcre-8.35 (with brew) 3) libgds-2.2.1 (using the site instructions) However, after "./configure -- prefix=<file_path>" (with no apparent warnings or errors) I tried "make" and got the following error : rexford.c:140:7: error: use of undeclared identifier 'logerr' STREAM_ERR(STREAM_LEVEL_SEVERE, ^ /Users/<user>/local/include/libgds/stream.h:288:22: note: expanded from macro 'STREAM_ERR' if (stream_enabled(logerr, LEVEL)) stream_printf(gdserr, __VA_ARGS__) I tried looking in stream.h and I indeed could not find a declaration of logerr. Could you point what is my mistake in this process ? Thank you in Advance, Ilias Pallikarakis |
From: Ilias P. <pal...@ii...> - 2014-06-30 08:19:52
|
On 6/30/14, 4:04 PM, Bruno Quoitin wrote: > Hi Ilias, > > The topology you describe has been named DISAGREE in the literature. > This BGP system has two solutions, as you described, BUT it is not > guaranteed to converge. With the default c-bgp scheduler (a FIFO > queue), this system will never converge, as you have observed. > > You can configure c-bgp to use another scheduler (priority queue) and > set different link delays on the provider-customer links (AS1-AS3 and > AS2-AS3). In this case, the system will converge to one solution : the > direct path through the provider-customer link with the lowest delay > will be selected. > > To change the scheduler, use the following statement: > > sim options scheduler dynamic > > Take a look at the ./examples directory of the c-bgp source archive. > You should find a file named ''example-dynamic-scheduler.cli" with the > same scenario you described but using the "dynamic" scheduler. > > Let me know if that answers your question. I just confirmed (manually) that if at least one of the two customer links go up after the peering link then C-bgp converges without a problem. I tested it by : 1) dropping the sessions for one provider link. 2) running <net domain compute> for all domains. 3) <sim run>. 4) set the sessions back up. 5) running <net domain compute> for all domains. 6) run <sim run> again and bgp converged just fine. I guess what you propose is a much more elegant way to do the same, schedule the peering links before the provider links. Thank you for your help ! > > For what concerns your proposal to delete messages with the same > (src_addr, dst_addr, dst_prefix) in the queue, it might work in some > systems if your objective is only to get the BGP outcome. But I doubt > this approach will always be correct. I am afraid this might be true. I haven't searched to much whether this will break some other aspect of BGP. I was, however, hoping that kind of approach is used in real routers so it might be used in C-BGP as well. I am no expert network operator so I might be wrong here. > Moreover, it might be expensive to run if the queue depth is large : > for each new message, you will need to search the entire queue for > messages to delete. I thought about it as well but wasn't certain if it would be an implementation problem. What if we narrowed the search to a smaller depth ? for example check the last X number of messages from targeted source AS. Wouldn't that be similar to the way MRAI works ? It probably wouldn't solve all cases but perhaps it would be closer to reality. Thank you for your help, Ilias > > Best regards, > Bruno > > > On 30/06/14 05:05, Ilias Pallikarakis wrote: >> Hi, >> I was considering the topology I described in my previous mail and I >> believe that in real routers BGP should converge. >> Let me explain the topology a bit : >> AS1-AS2 >> \ / >> AS3 >> AS3 is a customer of both AS1 and 2 while 1 and 2 peer with each >> other. For now we consider that each AS is a single router >> My problem appears when both AS1 and 2 have a policy to prefer peers >> over customers. In all the cases I consider >> (which I believe are all the possibilities !) BGP should converge >> with one of the peers selecting the direct path to the >> customer and the other selecting the path through the peer (e.g for >> AS1 : 1,3 and for AS 2: 1,2,3) depending on which >> peer advertises first his direct route to the customer. >> However, in C-BGP (given I understand its processing correctly) >> because processing the updates is sequential and messages >> are not deleted from the queue if a different update is sent for the >> same prefix an infinite loop is created. In the example given >> this happens because given that both peers 1 and 2 originally have >> the direct path to customer routes (1,3 and 2,3) the C-BGP >> queue will look like this* : >> (1) [1->2/P3,1 3] >> (2) [2->1/P3,2 3] >> but then when AS 2 receives message (1) he will update his route to 2 >> 1 3 and send a new update [2->1/P3,2 1 3] without >> removing from the queue the message(2) which will then make AS1 >> update his route first to 1 2 3 and send a new update >> which will force C-BGP into an infinite loop. >> >> Do you think my thought process is correct or is there a case (i.e, >> links coming up in specific order) that would create the >> same problem in real routers as well ? >> >> I was trying to think of a way to solve this issue and I was >> considering when a new message enters the queue we could >> check ahead in the queue and delete all other updates with same >> (source,destination, prefix). >> Do you think this solution is correct ? >> >> Thank you for your help, >> Ilias >> >> *[<source AS>-> <dest AS>/<prefix>, <path>] >> >> >> On 6/27/14, 4:57 PM, Bruno Quoitin wrote: >>> Hi Ilias, >>> >>> There is no solution (yet) to the problem you are trying to solve. >>> However, let me suggest a few possible approaches. >>> >>> 1). If your objective is to identify which prefixes do not converge, >>> you could start by injecting prefixes one at a time and let BGP >>> converge (sim run) after each individual prefix is injected. If the >>> simulation takes too long you can then look at the topology and >>> routing policies "near" the router where the current prefix has been >>> injected. >>> >>> 2). You can use the "bgp topology check" command : it will look for >>> P2C cycles in the topology. Such cycles could lead to >>> non-convergence. However, if such cycle exists, it does not mean it >>> will always cause non-convergence. >>> >>> 3). In the past I tried various brute force approaches to detecting >>> non convergence. One of them was to keep all the BGP states for the >>> currently propagating prefix and look for cycles within those >>> states. This worked very well will relatively small topologies but >>> cannot be used with large topologies. Keeping the BGP states >>> (content of the BGP RIB of all routers) required a lot of memory. >>> This can probably be somewhat optimized as it was more a proof of >>> concept and I didn't look at very efficient data structures to keep >>> the BGP state (the state I kept was highly redundant). >>> >>> 4). Another approach I used was to look at the depth of the >>> simulation queue. The basic idea was to define a time series where >>> each sample is the queue depth taken after the transmission of each >>> individual BGP message. If the time series becomes periodic at some >>> point, it is a hint that we face non-convergence. >>> >>> Best regards, >>> Bruno >>> >>> >>> On 27/06/14 07:37, Ilias Pallikarakis wrote: >>>> Hi, >>>> I was wondering if it is possible to check when BGP converges in a >>>> topology and if not which prefixes are responsible. >>>> >>>> I am trying to create a topology where there is a chance BGP does >>>> not converge (I attach a very simple script where my >>>> problem appears). So far I only managed to stop the script after a >>>> given number of steps with sim stop --at=<number of steps>. >>>> However sim stop returns a warning which is not read by the >>>> expect() function of the python interface written by Sebastien Tandel. >>>> >>>> I was wondering if : >>>> 1) There is a way to pinpoint the prefix causing the problem in >>>> order to make changes to avoid the loop. >>>> 2) If not if there is at least a way to have a sim stop output that >>>> could be read by expect() to at least know >>>> when convergence does not occur. >>>> >>>> >>>> Thank you for your help, >>>> >>>> Ilias >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Open source business process management suite built on Java and Eclipse >>>> Turn processes into business applications with Bonita BPM Community Edition >>>> Quickly connect people, data, and systems into organized workflows >>>> Winner of BOSSIE, CODIE, OW2 and Gartner awards >>>> http://p.sf.net/sfu/Bonitasoft >>>> >>>> >>>> _______________________________________________ >>>> C-bgp-users mailing list >>>> C-b...@li... >>>> https://lists.sourceforge.net/lists/listinfo/c-bgp-users >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Open source business process management suite built on Java and Eclipse >>> Turn processes into business applications with Bonita BPM Community Edition >>> Quickly connect people, data, and systems into organized workflows >>> Winner of BOSSIE, CODIE, OW2 and Gartner awards >>> http://p.sf.net/sfu/Bonitasoft >>> >>> >>> _______________________________________________ >>> C-bgp-users mailing list >>> C-b...@li... >>> https://lists.sourceforge.net/lists/listinfo/c-bgp-users >> > |
From: Bruno Q. <bru...@um...> - 2014-06-30 07:05:00
|
Hi Ilias, The topology you describe has been named DISAGREE in the literature. This BGP system has two solutions, as you described, BUT it is not guaranteed to converge. With the default c-bgp scheduler (a FIFO queue), this system will never converge, as you have observed. You can configure c-bgp to use another scheduler (priority queue) and set different link delays on the provider-customer links (AS1-AS3 and AS2-AS3). In this case, the system will converge to one solution : the direct path through the provider-customer link with the lowest delay will be selected. To change the scheduler, use the following statement: sim options scheduler dynamic Take a look at the ./examples directory of the c-bgp source archive. You should find a file named ''example-dynamic-scheduler.cli" with the same scenario you described but using the "dynamic" scheduler. Let me know if that answers your question. For what concerns your proposal to delete messages with the same (src_addr, dst_addr, dst_prefix) in the queue, it might work in some systems if your objective is only to get the BGP outcome. But I doubt this approach will always be correct. Moreover, it might be expensive to run if the queue depth is large : for each new message, you will need to search the entire queue for messages to delete. Best regards, Bruno On 30/06/14 05:05, Ilias Pallikarakis wrote: > Hi, > I was considering the topology I described in my previous mail and I > believe that in real routers BGP should converge. > Let me explain the topology a bit : > AS1-AS2 > \ / > AS3 > AS3 is a customer of both AS1 and 2 while 1 and 2 peer with each > other. For now we consider that each AS is a single router > My problem appears when both AS1 and 2 have a policy to prefer peers > over customers. In all the cases I consider > (which I believe are all the possibilities !) BGP should converge with > one of the peers selecting the direct path to the > customer and the other selecting the path through the peer (e.g for > AS1 : 1,3 and for AS 2: 1,2,3) depending on which > peer advertises first his direct route to the customer. > However, in C-BGP (given I understand its processing correctly) > because processing the updates is sequential and messages > are not deleted from the queue if a different update is sent for the > same prefix an infinite loop is created. In the example given > this happens because given that both peers 1 and 2 originally have the > direct path to customer routes (1,3 and 2,3) the C-BGP > queue will look like this* : > (1) [1->2/P3,1 3] > (2) [2->1/P3,2 3] > but then when AS 2 receives message (1) he will update his route to 2 > 1 3 and send a new update [2->1/P3,2 1 3] without > removing from the queue the message(2) which will then make AS1 update > his route first to 1 2 3 and send a new update > which will force C-BGP into an infinite loop. > > Do you think my thought process is correct or is there a case (i.e, > links coming up in specific order) that would create the > same problem in real routers as well ? > > I was trying to think of a way to solve this issue and I was > considering when a new message enters the queue we could > check ahead in the queue and delete all other updates with same > (source,destination, prefix). > Do you think this solution is correct ? > > Thank you for your help, > Ilias > > *[<source AS>-> <dest AS>/<prefix>, <path>] > > > On 6/27/14, 4:57 PM, Bruno Quoitin wrote: >> Hi Ilias, >> >> There is no solution (yet) to the problem you are trying to solve. >> However, let me suggest a few possible approaches. >> >> 1). If your objective is to identify which prefixes do not converge, >> you could start by injecting prefixes one at a time and let BGP >> converge (sim run) after each individual prefix is injected. If the >> simulation takes too long you can then look at the topology and >> routing policies "near" the router where the current prefix has been >> injected. >> >> 2). You can use the "bgp topology check" command : it will look for >> P2C cycles in the topology. Such cycles could lead to >> non-convergence. However, if such cycle exists, it does not mean it >> will always cause non-convergence. >> >> 3). In the past I tried various brute force approaches to detecting >> non convergence. One of them was to keep all the BGP states for the >> currently propagating prefix and look for cycles within those states. >> This worked very well will relatively small topologies but cannot be >> used with large topologies. Keeping the BGP states (content of the >> BGP RIB of all routers) required a lot of memory. This can probably >> be somewhat optimized as it was more a proof of concept and I didn't >> look at very efficient data structures to keep the BGP state (the >> state I kept was highly redundant). >> >> 4). Another approach I used was to look at the depth of the >> simulation queue. The basic idea was to define a time series where >> each sample is the queue depth taken after the transmission of each >> individual BGP message. If the time series becomes periodic at some >> point, it is a hint that we face non-convergence. >> >> Best regards, >> Bruno >> >> >> On 27/06/14 07:37, Ilias Pallikarakis wrote: >>> Hi, >>> I was wondering if it is possible to check when BGP converges in a >>> topology and if not which prefixes are responsible. >>> >>> I am trying to create a topology where there is a chance BGP does >>> not converge (I attach a very simple script where my >>> problem appears). So far I only managed to stop the script after a >>> given number of steps with sim stop --at=<number of steps>. >>> However sim stop returns a warning which is not read by the expect() >>> function of the python interface written by Sebastien Tandel. >>> >>> I was wondering if : >>> 1) There is a way to pinpoint the prefix causing the problem in >>> order to make changes to avoid the loop. >>> 2) If not if there is at least a way to have a sim stop output that >>> could be read by expect() to at least know >>> when convergence does not occur. >>> >>> >>> Thank you for your help, >>> >>> Ilias >>> >>> >>> ------------------------------------------------------------------------------ >>> Open source business process management suite built on Java and Eclipse >>> Turn processes into business applications with Bonita BPM Community Edition >>> Quickly connect people, data, and systems into organized workflows >>> Winner of BOSSIE, CODIE, OW2 and Gartner awards >>> http://p.sf.net/sfu/Bonitasoft >>> >>> >>> _______________________________________________ >>> C-bgp-users mailing list >>> C-b...@li... >>> https://lists.sourceforge.net/lists/listinfo/c-bgp-users >> >> >> >> ------------------------------------------------------------------------------ >> Open source business process management suite built on Java and Eclipse >> Turn processes into business applications with Bonita BPM Community Edition >> Quickly connect people, data, and systems into organized workflows >> Winner of BOSSIE, CODIE, OW2 and Gartner awards >> http://p.sf.net/sfu/Bonitasoft >> >> >> _______________________________________________ >> C-bgp-users mailing list >> C-b...@li... >> https://lists.sourceforge.net/lists/listinfo/c-bgp-users > |
From: Ilias P. <pal...@ii...> - 2014-06-30 03:06:11
|
Hi, I was considering the topology I described in my previous mail and I believe that in real routers BGP should converge. Let me explain the topology a bit : AS1-AS2 \ / AS3 AS3 is a customer of both AS1 and 2 while 1 and 2 peer with each other. For now we consider that each AS is a single router My problem appears when both AS1 and 2 have a policy to prefer peers over customers. In all the cases I consider (which I believe are all the possibilities !) BGP should converge with one of the peers selecting the direct path to the customer and the other selecting the path through the peer (e.g for AS1 : 1,3 and for AS 2: 1,2,3) depending on which peer advertises first his direct route to the customer. However, in C-BGP (given I understand its processing correctly) because processing the updates is sequential and messages are not deleted from the queue if a different update is sent for the same prefix an infinite loop is created. In the example given this happens because given that both peers 1 and 2 originally have the direct path to customer routes (1,3 and 2,3) the C-BGP queue will look like this* : (1) [1->2/P3,1 3] (2) [2->1/P3,2 3] but then when AS 2 receives message (1) he will update his route to 2 1 3 and send a new update [2->1/P3,2 1 3] without removing from the queue the message(2) which will then make AS1 update his route first to 1 2 3 and send a new update which will force C-BGP into an infinite loop. Do you think my thought process is correct or is there a case (i.e, links coming up in specific order) that would create the same problem in real routers as well ? I was trying to think of a way to solve this issue and I was considering when a new message enters the queue we could check ahead in the queue and delete all other updates with same (source,destination, prefix). Do you think this solution is correct ? Thank you for your help, Ilias *[<source AS>-> <dest AS>/<prefix>, <path>] On 6/27/14, 4:57 PM, Bruno Quoitin wrote: > Hi Ilias, > > There is no solution (yet) to the problem you are trying to solve. > However, let me suggest a few possible approaches. > > 1). If your objective is to identify which prefixes do not converge, > you could start by injecting prefixes one at a time and let BGP > converge (sim run) after each individual prefix is injected. If the > simulation takes too long you can then look at the topology and > routing policies "near" the router where the current prefix has been > injected. > > 2). You can use the "bgp topology check" command : it will look for > P2C cycles in the topology. Such cycles could lead to non-convergence. > However, if such cycle exists, it does not mean it will always cause > non-convergence. > > 3). In the past I tried various brute force approaches to detecting > non convergence. One of them was to keep all the BGP states for the > currently propagating prefix and look for cycles within those states. > This worked very well will relatively small topologies but cannot be > used with large topologies. Keeping the BGP states (content of the BGP > RIB of all routers) required a lot of memory. This can probably be > somewhat optimized as it was more a proof of concept and I didn't look > at very efficient data structures to keep the BGP state (the state I > kept was highly redundant). > > 4). Another approach I used was to look at the depth of the simulation > queue. The basic idea was to define a time series where each sample is > the queue depth taken after the transmission of each individual BGP > message. If the time series becomes periodic at some point, it is a > hint that we face non-convergence. > > Best regards, > Bruno > > > On 27/06/14 07:37, Ilias Pallikarakis wrote: >> Hi, >> I was wondering if it is possible to check when BGP converges in a >> topology and if not which prefixes are responsible. >> >> I am trying to create a topology where there is a chance BGP does not >> converge (I attach a very simple script where my >> problem appears). So far I only managed to stop the script after a >> given number of steps with sim stop --at=<number of steps>. >> However sim stop returns a warning which is not read by the expect() >> function of the python interface written by Sebastien Tandel. >> >> I was wondering if : >> 1) There is a way to pinpoint the prefix causing the problem in order >> to make changes to avoid the loop. >> 2) If not if there is at least a way to have a sim stop output that >> could be read by expect() to at least know >> when convergence does not occur. >> >> >> Thank you for your help, >> >> Ilias >> >> >> ------------------------------------------------------------------------------ >> Open source business process management suite built on Java and Eclipse >> Turn processes into business applications with Bonita BPM Community Edition >> Quickly connect people, data, and systems into organized workflows >> Winner of BOSSIE, CODIE, OW2 and Gartner awards >> http://p.sf.net/sfu/Bonitasoft >> >> >> _______________________________________________ >> C-bgp-users mailing list >> C-b...@li... >> https://lists.sourceforge.net/lists/listinfo/c-bgp-users > > > > ------------------------------------------------------------------------------ > Open source business process management suite built on Java and Eclipse > Turn processes into business applications with Bonita BPM Community Edition > Quickly connect people, data, and systems into organized workflows > Winner of BOSSIE, CODIE, OW2 and Gartner awards > http://p.sf.net/sfu/Bonitasoft > > > _______________________________________________ > C-bgp-users mailing list > C-b...@li... > https://lists.sourceforge.net/lists/listinfo/c-bgp-users |
From: Bruno Q. <bru...@um...> - 2014-06-27 07:57:32
|
Hi Ilias, There is no solution (yet) to the problem you are trying to solve. However, let me suggest a few possible approaches. 1). If your objective is to identify which prefixes do not converge, you could start by injecting prefixes one at a time and let BGP converge (sim run) after each individual prefix is injected. If the simulation takes too long you can then look at the topology and routing policies "near" the router where the current prefix has been injected. 2). You can use the "bgp topology check" command : it will look for P2C cycles in the topology. Such cycles could lead to non-convergence. However, if such cycle exists, it does not mean it will always cause non-convergence. 3). In the past I tried various brute force approaches to detecting non convergence. One of them was to keep all the BGP states for the currently propagating prefix and look for cycles within those states. This worked very well will relatively small topologies but cannot be used with large topologies. Keeping the BGP states (content of the BGP RIB of all routers) required a lot of memory. This can probably be somewhat optimized as it was more a proof of concept and I didn't look at very efficient data structures to keep the BGP state (the state I kept was highly redundant). 4). Another approach I used was to look at the depth of the simulation queue. The basic idea was to define a time series where each sample is the queue depth taken after the transmission of each individual BGP message. If the time series becomes periodic at some point, it is a hint that we face non-convergence. Best regards, Bruno On 27/06/14 07:37, Ilias Pallikarakis wrote: > Hi, > I was wondering if it is possible to check when BGP converges in a > topology and if not which prefixes are responsible. > > I am trying to create a topology where there is a chance BGP does not > converge (I attach a very simple script where my > problem appears). So far I only managed to stop the script after a > given number of steps with sim stop --at=<number of steps>. > However sim stop returns a warning which is not read by the expect() > function of the python interface written by Sebastien Tandel. > > I was wondering if : > 1) There is a way to pinpoint the prefix causing the problem in order > to make changes to avoid the loop. > 2) If not if there is at least a way to have a sim stop output that > could be read by expect() to at least know > when convergence does not occur. > > > Thank you for your help, > > Ilias > > > ------------------------------------------------------------------------------ > Open source business process management suite built on Java and Eclipse > Turn processes into business applications with Bonita BPM Community Edition > Quickly connect people, data, and systems into organized workflows > Winner of BOSSIE, CODIE, OW2 and Gartner awards > http://p.sf.net/sfu/Bonitasoft > > > _______________________________________________ > C-bgp-users mailing list > C-b...@li... > https://lists.sourceforge.net/lists/listinfo/c-bgp-users |
From: Ilias P. <pal...@ii...> - 2014-06-27 05:37:51
|
net add node 0.0.0.1 net add node 0.0.0.2 net add node 0.0.0.3 net add link 0.0.0.1 0.0.0.2 net add link 0.0.0.1 0.0.0.3 net add link 0.0.0.2 0.0.0.3 net node 0.0.0.1 route add --oif=0.0.0.2 0.0.0.2/32 1 net node 0.0.0.1 route add --oif=0.0.0.3 0.0.0.3/32 1 net node 0.0.0.2 route add --oif=0.0.0.1 0.0.0.1/32 1 net node 0.0.0.2 route add --oif=0.0.0.3 0.0.0.3/32 1 net node 0.0.0.3 route add --oif=0.0.0.1 0.0.0.1/32 1 net node 0.0.0.3 route add --oif=0.0.0.2 0.0.0.2/32 1 net add domain 1 igp net node 0.0.0.1 domain 1 net add domain 2 igp net node 0.0.0.2 domain 2 net add domain 3 igp net node 0.0.0.3 domain 3 net domain 1 compute net domain 2 compute net domain 3 compute bgp add router 1 0.0.0.1 bgp add router 2 0.0.0.2 bgp add router 3 0.0.0.3 bgp router 0.0.0.1 add peer 2 0.0.0.2 peer 0.0.0.2 filter in add-rule match any action "local-pref 100, community add 3" exit exit filter out add-rule match "community is 1" action deny exit add-rule match any action "community strip" exit exit next-hop-self up exit bgp router 0.0.0.1 add network 0.0.0.1/32 bgp router 0.0.0.1 add peer 3 0.0.0.3 peer 0.0.0.3 filter in add-rule match any action "local-pref 75, community add 2" exit exit filter out add-rule match any action "community strip" exit exit next-hop-self up exit bgp router 0.0.0.2 add peer 1 0.0.0.1 peer 0.0.0.1 filter in add-rule match any action "local-pref 100, community add 3" exit exit filter out add-rule match "community is 1" action deny exit add-rule match any action "community strip" exit exit next-hop-self up exit bgp router 0.0.0.2 add network 0.0.0.2/32 bgp router 0.0.0.2 add peer 3 0.0.0.3 peer 0.0.0.3 filter in add-rule match any action "local-pref 75, community add 2" exit exit filter out add-rule match any action "community strip" exit exit next-hop-self up exit bgp router 0.0.0.3 add peer 1 0.0.0.1 peer 0.0.0.1 filter in add-rule match any action "local-pref 50, community add 1" exit exit filter out add-rule match "community is 1 | community is 3" action deny exit add-rule match any action "community strip" exit exit next-hop-self up exit bgp router 0.0.0.3 add network 0.0.0.3/32 bgp router 0.0.0.3 add peer 2 0.0.0.2 peer 0.0.0.2 filter in add-rule match any action "local-pref 50, community add 1" exit exit filter out add-rule match "community is 1 | community is 3" action deny exit add-rule match any action "community strip" exit exit next-hop-self up exit net domain 1 compute net domain 2 compute net domain 3 compute sim run print 'Done\n' |
From: Ilias P. <pal...@ii...> - 2014-06-27 05:23:03
|
Hi Bruno, Yes that was exactly what I was looking for ! Thank you for your help, Ilias On 6/11/14, 5:37 AM, Bruno Quoitin wrote: > Hi Ilias, > > You can use > > cbgp= CBGP("path/to/cbgp") > cbgp.send("set exit-on-error off\n") > > at the beginning of your python script. > > Let me know if that solves your issue. > > Cheers, > Bruno > > > On 6/06/14 09:30, Ilias Pallikarakis wrote: >> Hi Bruno, >> Thank you for your reply. >> >> On 6/6/14, 4:07 PM, Bruno Quoitin wrote: >>> Hi Illias, >>> >>> What kind of topology are you using ? I this is a pure AS-level topology >>> that you load by using the "bgp topology" series of commands, then you >>> can use "bgp topology check" to test if the AS graph is connected. >> Unfortunately my topology is a PoP level topology (1 router per PoP) >>> Note that "bgp assert reachability-ok" does more than checking the >>> underlying graph connectivity. It tests that the advertised prefixes are >>> reachable by all the routers, that is it checks that using BGP each >>> router receives at least one feasible route towards every advertised >>> prefix. "reachability-ok" implies "connectivity" but might be too strong >>> depending on your objectives (it is also more expensive in terms of >>> CPU/memory). >> This is exactly what I am looking for. I am experimenting on policies >> and I assigned one network per node and after the sim run I want to >> see how many of them are reachable by the entire network. >> >>> For what concerns the python interface, I cannot help you immediately as >>> I am not the author of this tool and I haven't used it. Are you using >>> the interface from Sebastien Tandel that uses pipes to communicate with >>> c-bgp or are you using the python/C binding by Virginie Vandenschrieck ? >> I believe it is the one from Sebastian Tandel. In any case , it is >> the one >> (python_CBGP-0.1.tar.gz) in C-BGP's sourceforge page : >> http://c-bgp.sourceforge.net/downloads.php >>> If I can find some time, I will try to reproduce your problem and see if >>> I can come with a quick solution. >> I think you can reproduce it easily using the python script in my >> previous >> mail and a topology where there are connectivity/reachability issues. I >> can provide you the one that caused the problem for me if you would like >> that, although it might be a bit complex for simple testing. >> >> Although I have not delved into your code I think an easy solution might >> be to make reachability-ok to exit normally (without error) even when >> reachability is not ensured. I am not sure however, if that would cause >> other problems. >> >> Thank you for your help, >> >> Ilias >>> Cheers, >>> Bruno >>> >>> >>> >>> On 5/06/14 05:40, Ilias Pallikarakis wrote: >>>> Hi, >>>> I recently tried to learn C-BGP in order to measure the connectivity of >>>> a model. >>>> My intention is to automatically generate a topology using python to >>>> generate >>>> a C-BGP script that will be then be the input to C-BGP to measure the >>>> connectivity >>>> of the topology using the cbgp python interface. Note that it is highly >>>> probable that >>>> there won't be full connectivity. I created the C-BGP topology which >>>> compiles without an >>>> error but I have some issues using "bgp assert reachability-ok". Here is >>>> an example script : >>>> >>>> import CBGP >>>> >>>> cbgp = CBGP.CBGP("<path to cbgp>") >>>> cbgp.send("include <my cbgp script>\n") >>>> #last line in script is : print "Done/n" >>>> ret = cbgp.expect() >>>> print ret >>>> cbgp.finalize() >>>> >>>> This is working as it should printing "Done" and exiting. If now I add >>>> before finalize() this line : >>>> >>>> cbgp.send("bgp assert reachability-ok\n") >>>> >>>> Then after printing Done the python script hangs. I think this is >>>> because the cbgp script returns an >>>> error because the reachability is not ok. It is acceptable for me to not >>>> have 100% connectivity but >>>> the cbgp interface will not return control to the python script. >>>> >>>> 1) Is it possible to return control to the python script after the cbgp >>>> script fails ? >>>> 2) Is there something I could do to solve this (e.g modify bgp assert >>>> reachability-ok to not return an error if >>>> connectivity is not ensured) so that control is returned to my >>>> script ? >>>> 3)Or should I use traceroutes to check for connectivity ? I am reluctant >>>> because at the moment my topology has >>>> approximately 500 routers (and prefixes) but I intend to scale up >>>> close to 150000 routers which might be very >>>> time consuming. >>>> >>>> Thank you for your help, >>>> >>>> Ilias >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Learn Graph Databases - Download FREE O'Reilly Book >>>> "Graph Databases" is the definitive new guide to graph databases and their >>>> applications. Written by three acclaimed leaders in the field, >>>> this first edition is now available. Download your free book today! >>>> http://p.sf.net/sfu/NeoTech >>>> _______________________________________________ >>>> C-bgp-users mailing list >>>> C-b...@li... >>>> https://lists.sourceforge.net/lists/listinfo/c-bgp-users >>> ------------------------------------------------------------------------------ >>> Learn Graph Databases - Download FREE O'Reilly Book >>> "Graph Databases" is the definitive new guide to graph databases and their >>> applications. Written by three acclaimed leaders in the field, >>> this first edition is now available. Download your free book today! >>> http://p.sf.net/sfu/NeoTech >>> _______________________________________________ >>> C-bgp-users mailing list >>> C-b...@li... >>> https://lists.sourceforge.net/lists/listinfo/c-bgp-users >>> >> >> >> >> ------------------------------------------------------------------------------ >> Learn Graph Databases - Download FREE O'Reilly Book >> "Graph Databases" is the definitive new guide to graph databases and their >> applications. Written by three acclaimed leaders in the field, >> this first edition is now available. Download your free book today! >> http://p.sf.net/sfu/NeoTech >> >> >> _______________________________________________ >> C-bgp-users mailing list >> C-b...@li... >> https://lists.sourceforge.net/lists/listinfo/c-bgp-users > > > > ------------------------------------------------------------------------------ > HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions > Find What Matters Most in Your Big Data with HPCC Systems > Open Source. Fast. Scalable. Simple. Ideal for Dirty Data. > Leverages Graph Analysis for Fast Processing & Easy Data Exploration > http://p.sf.net/sfu/hpccsystems > > > _______________________________________________ > C-bgp-users mailing list > C-b...@li... > https://lists.sourceforge.net/lists/listinfo/c-bgp-users |