t2mune / mrtparse

MRT format data parser
Apache License 2.0
135 stars 39 forks source link

MRTPARSE to exabgp config hangs when using -G & -P flags #20

Closed mattoddy closed 4 years ago

mattoddy commented 4 years ago

Hi, I have been able to advertise the full internet table with exabgp using the old 'announce route' syntax however I believe there is a more efficient way to do this using a newer 'api' format. I can see in the article that there is an 'announce attributes' syntax. https://github.com/Exa-Networks/exabgp/wiki/Large-Configuration-File and that mrtparse allows you to generate this config using the flags -G and -P

I have used the command:

python /usr/local/lib/python2.7/dist-packages/mrtparse/examples/mrt2exabgp.py -G -P latest-bview.gz  > fullbgptable.py

When I run this command the process hangs and does that send any output to the file. If I omit the -G then the command works but I end up with the old syntax.

If anyone has any experience with getting this working then any help would be appreciated.

Thanks.

t2mune commented 4 years ago

Hi,

Sorry for my late reply.

Using " -G" option, All entries of MRT data are temporarily stored in python dictionary to group prefixes with the same path attributes. After all MRT entries are parsed, output  finally begins. Therefore, it takes a long time to output(not hang). If you want to accelerate output, I recommend using pypy instead of python2.

In my environment, the results were as follows (about x3 faster).

% time pypy mrt2exabgp.py -G -P latest-bview.gz > latest-bview.py
pypy mrt2exabgp.py -G -P latest-bview.gz > latest-bview.py  1628.49s user 1.71s system 99% cpu 27:16.05 total

% time python2 mrt2exabgp.py -G -P latest-bview.gz > latest-bview.py
python2 mrt2exabgp.py -G -P latest-bview.gz > latest-bview.py  4565.98s user 5.04s system 99% cpu 1:16:24.22 total