Mailing List Archive

(no subject)
hi :
i add a node type. the node need write some configure information in zebra.conf.
how do i make sure the information was write before "interface" section .




¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡lichaojun@zys.dq.cnpc..com.cn
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡2004-04-11
Re: (no subject) [ In reply to ]
On 10/5/06, shamita pisal <shamita1010@gmail.com> wrote:
> we a group of 4 people doin Bachelor of engineering final year are doing a
> project in Zebra-Quagga, where we want to support Quagga with Multicast
> PIM-SM protocol.We want a protocol flow to understand the actual working of
> Quagga.
>

There are some useful documents in the "Resources" section of the
Quagga website:
http://www.quagga.net/resources.php
Simon.
---
_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
"Chris Hall" <chris.hall@highwayman.com> writes:

> I've started on a "small" project to introduce pthreads to Quagga bgpd.
> (This is sponsored by Euro-IX.)
>
> 1. is there any problem assuming pthreads support ?
>
> That is, do I need to worry about retaining the ability to build a bgpd
> without pthreads ?

I would be very nervous about saying that no pthreads ==> no ability to
build/run bgpd.

> 2. CLOCK_MONOTONIC
>
> This is obviously useful. In this day and age, can one rely on that being
> available ?
>
> If not, can anyone advise on the general availability of nanosleep ? That
> is nominally optional, but I understand it to be well supported. At least
> as well supported as pthreads ?

The real questions are

What set of platforms does quagga run on today?

What set would it run on if you depend on this?

Are we willing to lose the difference?

And the answers are probably "a lot" , "not quite as many", and "not
really", but I don't know.
Re: (no subject) [ In reply to ]
>
>
> "Chris Hall" <chris.hall@highwayman.com> writes:
>
> > I've started on a "small" project to introduce pthreads to Quagga bgpd.
> > (This is sponsored by Euro-IX.)
> >
> > 1. is there any problem assuming pthreads support ?
> >
> > That is, do I need to worry about retaining the ability to build a bgpd
> > without pthreads ?
>
> I would be very nervous about saying that no pthreads ==> no ability to
> build/run bgpd.
>
> > 2. CLOCK_MONOTONIC
> >
> > This is obviously useful. In this day and age, can one rely on that being
> > available ?
> >
> > If not, can anyone advise on the general availability of nanosleep ? That
> > is nominally optional, but I understand it to be well supported. At least
> > as well supported as pthreads ?

if no CLOCK_MONOTONIC, use times(2) see my tree:
http://code.quagga.net/?p=people/jocke/quagga;a=shortlog;h=refs/heads/volatile/times2
for a fully working and in production impl.

linux 2.4 is still in use today because it is much smaller.

Jocke

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
On 30/11/2009 17:21, Joakim Tjernlund wrote:
> linux 2.4 is still in use today because it is much smaller.

Does the sort of glibc that you would use on a linux 2.4 support pthreads?

let me rephrase: does it support pthreads in a way which is bug-fix
compatible with current versions of glibc or other libcs which are in use
on more modern versions of linux?

As another important issue to add to Greg's questions: how inter-compatible
are the various pthread implementations used by the various operating
systems that quagga supports?

Nick
(note: I have an axe to grind in this particular issue)
_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
Nick Hilliard <nick@inex.ie> writes:

> On 30/11/2009 17:21, Joakim Tjernlund wrote:
>> linux 2.4 is still in use today because it is much smaller.
>
> Does the sort of glibc that you would use on a linux 2.4 support pthreads?
>
> let me rephrase: does it support pthreads in a way which is bug-fix
> compatible with current versions of glibc or other libcs which are in use
> on more modern versions of linux?
>
> As another important issue to add to Greg's questions: how inter-compatible
> are the various pthread implementations used by the various operating
> systems that quagga supports?
>
> Nick
> (note: I have an axe to grind in this particular issue)

If one writes to the POSIX pthread standard, all should be ok on systems
that support it. NetBSD used to abort a program when it invoked an
operation which had undefined behavior according to the spec (unlocking
an unlocked mutex, etc.), but that was changed because so many programs
tested only on Linux (which treats those operations as nops) were buggy.

But the notion that all environments of interest support pthreads is not
clearly ok to me.
Re: (no subject) [ In reply to ]
>
> On 30/11/2009 17:21, Joakim Tjernlund wrote:
> > linux 2.4 is still in use today because it is much smaller.
>
> Does the sort of glibc that you would use on a linux 2.4 support pthreads?

Yes, but not NPTL

>
> let me rephrase: does it support pthreads in a way which is bug-fix
> compatible with current versions of glibc or other libcs which are in use
> on more modern versions of linux?
>
> As another important issue to add to Greg's questions: how inter-compatible
> are the various pthread implementations used by the various operating
> systems that quagga supports?

No idea, but as far as MONOTONIC_CLOCK goes, one should use times(2) when it
is missing.

Threads is different issue, I don't think anyone wants to use pthreads on older
linux so no need to try. Just make sure the current "threads" still works after
you have added NPTL support.

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
On Mon, 30 Nov 2009 19:22:09 +0100
Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:

> >
> > On 30/11/2009 17:21, Joakim Tjernlund wrote:
> > > linux 2.4 is still in use today because it is much smaller.
> >
> > Does the sort of glibc that you would use on a linux 2.4 support pthreads?
>
> Yes, but not NPTL
>
> >
> > let me rephrase: does it support pthreads in a way which is bug-fix
> > compatible with current versions of glibc or other libcs which are in use
> > on more modern versions of linux?
> >
> > As another important issue to add to Greg's questions: how inter-compatible
> > are the various pthread implementations used by the various operating
> > systems that quagga supports?
>
> No idea, but as far as MONOTONIC_CLOCK goes, one should use times(2) when it
> is missing.
>
> Threads is different issue, I don't think anyone wants to use pthreads on older
> linux so no need to try. Just make sure the current "threads" still works after
> you have added NPTL support.
>

Unfortunately, pthread mutex and locking primitives are slow. That is why almost
all the databases end up rolling their own. Part of the problem is the glibc clash
between being portable and being fast.

What is the proposed design for using threads? I am concerned that if it just changes
the bottleneck from being a single thread, to having a single lock there will be
little performance gain.
_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
Stephen Hemminger <shemminger@vyatta.com> wrote on 30/11/2009 20:43:51:
>
> On Mon, 30 Nov 2009 19:22:09 +0100
> Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:
>
> > >
> > > On 30/11/2009 17:21, Joakim Tjernlund wrote:
> > > > linux 2.4 is still in use today because it is much smaller.
> > >
> > > Does the sort of glibc that you would use on a linux 2.4 support pthreads?
> >
> > Yes, but not NPTL
> >
> > >
> > > let me rephrase: does it support pthreads in a way which is bug-fix
> > > compatible with current versions of glibc or other libcs which are in use
> > > on more modern versions of linux?
> > >
> > > As another important issue to add to Greg's questions: how inter-compatible
> > > are the various pthread implementations used by the various operating
> > > systems that quagga supports?
> >
> > No idea, but as far as MONOTONIC_CLOCK goes, one should use times(2) when it
> > is missing.
> >
> > Threads is different issue, I don't think anyone wants to use pthreads on older
> > linux so no need to try. Just make sure the current "threads" still works after
> > you have added NPTL support.
> >
>
> Unfortunately, pthread mutex and locking primitives are slow. That is why almost
> all the databases end up rolling their own. Part of the problem is the glibc clash
> between being portable and being fast.
>
> What is the proposed design for using threads? I am concerned that if it just changes
> the bottleneck from being a single thread, to having a single lock there will be
> little performance gain.

Yes, I am not convinced either. What might work though is to make each daemon
a thread(zebra, bgp, ospf etc.). However, I do think there is much to do to
better the performance within the current framework.

Jocke

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
On Mon, 30 Nov 2009 23:35:12 +0100
Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:

> Stephen Hemminger <shemminger@vyatta.com> wrote on 30/11/2009 20:43:51:
> >
> > On Mon, 30 Nov 2009 19:22:09 +0100
> > Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:
> >
> > > >
> > > > On 30/11/2009 17:21, Joakim Tjernlund wrote:
> > > > > linux 2.4 is still in use today because it is much smaller.
> > > >
> > > > Does the sort of glibc that you would use on a linux 2.4 support pthreads?
> > >
> > > Yes, but not NPTL
> > >
> > > >
> > > > let me rephrase: does it support pthreads in a way which is bug-fix
> > > > compatible with current versions of glibc or other libcs which are in use
> > > > on more modern versions of linux?
> > > >
> > > > As another important issue to add to Greg's questions: how inter-compatible
> > > > are the various pthread implementations used by the various operating
> > > > systems that quagga supports?
> > >
> > > No idea, but as far as MONOTONIC_CLOCK goes, one should use times(2) when it
> > > is missing.
> > >
> > > Threads is different issue, I don't think anyone wants to use pthreads on older
> > > linux so no need to try. Just make sure the current "threads" still works after
> > > you have added NPTL support.
> > >
> >
> > Unfortunately, pthread mutex and locking primitives are slow. That is why almost
> > all the databases end up rolling their own. Part of the problem is the glibc clash
> > between being portable and being fast.
> >
> > What is the proposed design for using threads? I am concerned that if it just changes
> > the bottleneck from being a single thread, to having a single lock there will be
> > little performance gain.
>
> Yes, I am not convinced either. What might work though is to make each daemon
> a thread(zebra, bgp, ospf etc.). However, I do think there is much to do to
> better the performance within the current framework.

Processes are actually faster than threads because they don't share state!
The only reason threads help is when the shared state is helpful. That is why fast web
servers use processes not threads. Now with Quagga, the RIB could be shared between routing
daemons, but the performance bottleneck in routing daemons is updates and these occur
from a single source (usually). Paul was doing some work to fork for some cases where
there was read-only thread (like vtysh dump).
_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
On 30 Nov 2009, at 17:44:32, Stephen Hemminger wrote:

>> Yes, I am not convinced either. What might work though is to make each daemon
>> a thread(zebra, bgp, ospf etc.). However, I do think there is much to do to
>> better the performance within the current framework.
>
> Processes are actually faster than threads because they don't share state!
> The only reason threads help is when the shared state is helpful. That is why fast web
> servers use processes not threads. Now with Quagga, the RIB could be shared between routing
> daemons, but the performance bottleneck in routing daemons is updates and these occur
> from a single source (usually). Paul was doing some work to fork for some cases where
> there was read-only thread (like vtysh dump).

What would your thoughts be on making each view in bgpd its own thread? Could this improve performance as a route server?

Michael

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
Stephen Hemminger wrote (on 30-Nov-2009 at 19:44)
...
> Unfortunately, pthread mutex and locking primitives are slow. That is
> why almost all the databases end up rolling their own. Part of the
> problem is the glibc clash between being portable and being fast.
>
> What is the proposed design for using threads? I am concerned that if
> it just changes the bottleneck from being a single thread, to having a
> single lock there will be little performance gain.

The objective is to separate out:

1. "Routeing Engine" -- managing the RIB(s) and calculating updates.

2. "BGP Engine" -- Finite State Machine and all BGP session I/O

3. CLI -- all I/O

in order to:

1. ensure that BGP sessions are kept alive, even when the
Routeing Engine gets very busy.

2. ensure that the CLI is responsive, even when the Routeing Engine
gets very busy. (Though when a command is actually executed, it
will need the attention of the Routeing Engine).

The problem is that, especially when running many hundreds of Route Server
peers, bgpd has so much work to do dealing with RIB(s) etc. that it drops
the ball on BGP sessions. That is, BGP sessions hit holdtime expired
time-outs either at the Quagga end or at the other end.

The longer term objective is to be able to cope with up to 1,000 Route
Server clients. So the problem isn't going to get any easier.

On a multi-processor there will also be a small advantage with some of the
work being done in the BGP Engine.

But the objective is not to try to get a performance gain, but to make sure
that no matter how busy the Routeing Engine gets, things don't break down.
Once the threading infrastructure is there, and in the much longer term, one
could look at multi-threading the Routeing Engine -- for use on
multi-processor machines.

The Routeing Engine and the BGP Engine share a common view of prefixes and
sets of attributes. But otherwise communicate via queues of messages.
Dividing these into separate processes would incur greater communication
costs.

I think there's enough common state between the proposed threads to make
threading the appropriate approach. I think there's enough separation
between the proposed sets to mean that they won't be forever banging mutexes
and getting in each other's way.

Do you have typical timings for locking/unlocking a mutex when there is no
contention ? I've just done a little experiment: locking and unlocking a
mutex in a loop, checking the return codes for both operations:

while (n)
{
--n ;
ret = pthread_mutex_lock(&my_mutex) ;
if (ret != 0)
break ;
ret = pthread_mutex_unlock(&my_mutex) ;
if (ret != 0)
break ;
} ;

on Phenom II 3GHz this took 19.4nS for each time round the loop. Replacing
the two functions by ret = 0, and the loop took 3.15nS. Those were with
-O0. With -O2, it was 17.6nS round the loop. (For n=1,000,000,000.)

For comparison I tried calloc(1, 128) and free(). That ran 60nS per cycle
(for n=100,000,000).

Chris

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
Michael Lambert wrote (on 30-Nov-2009 at 22:52):
> What would your thoughts be on making each view in bgpd its own thread?
> Could this improve performance as a route server?

A thread for each Route Server client would certainly allow it to use all
the processors at its disposal when updates arrive. Since bgpd is
completely CPU bound when running as Route Server for 200-300 clients, I
think that would be a Good Thing.

However, to start with I shall be happy to get enough threads running to
eliminate the current problems with BGP sessions dropping, and with the CLI
stopping responding, when the thing gets busy.

Chris

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
2009/12/1 Chris Hall <chris.hall.list@highwayman.com>:
> Michael Lambert wrote (on 30-Nov-2009 at 22:52):
>> What would your thoughts be on making each view in bgpd its own thread?
>> Could this improve performance as a route server?
>
> A thread for each Route Server client would certainly allow it to use all
> the processors at its disposal when updates arrive.  Since bgpd is
> completely CPU bound when running as Route Server for 200-300 clients, I
> think that would be a Good Thing.
>
> However, to start with I shall be happy to get enough threads running to
> eliminate the current problems with BGP sessions dropping, and with the CLI
> stopping responding, when the thing gets busy.

I'd suggest looking at mapping out the various tasks inside bgpd and
see what relies on what. Blindly creating threads without knowing how
they interact is going to lead down a path of fail. :)

My proposal for this (which is why it was so expensive and time
consuming) was to spend a lot more time teasing apart the internals
into some semblence of a documented mess; then massage module
boundaries into something useful for parallelism. I couldn't say off
hand whether parallelism was best at one thread per peer; or one
"general" thread and then one (or more) "RIB" threads per view as a
starting point, etc, etc. Too much of the code relies on changes
happening atomically to make any changes easy -and- stable. :)

IMHO, 2c,


Adrian
_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
On 11/30/2009 08:02 PM, Adrian Chadd wrote:
> 2009/12/1 Chris Hall<chris.hall.list@highwayman.com>:
>
>> Michael Lambert wrote (on 30-Nov-2009 at 22:52):
>>
>>> What would your thoughts be on making each view in bgpd its own thread?
>>> Could this improve performance as a route server?
>>>
>> A thread for each Route Server client would certainly allow it to use all
>> the processors at its disposal when updates arrive. Since bgpd is
>> completely CPU bound when running as Route Server for 200-300 clients, I
>> think that would be a Good Thing.
>>
>> However, to start with I shall be happy to get enough threads running to
>> eliminate the current problems with BGP sessions dropping, and with the CLI
>> stopping responding, when the thing gets busy.
>>
> I'd suggest looking at mapping out the various tasks inside bgpd and
> see what relies on what. Blindly creating threads without knowing how
> they interact is going to lead down a path of fail. :)
>
> My proposal for this (which is why it was so expensive and time
> consuming) was to spend a lot more time teasing apart the internals
> into some semblence of a documented mess; then massage module
> boundaries into something useful for parallelism. I couldn't say off
> hand whether parallelism was best at one thread per peer; or one
> "general" thread and then one (or more) "RIB" threads per view as a
> starting point, etc, etc. Too much of the code relies on changes
> happening atomically to make any changes easy -and- stable. :)
>
> IMHO, 2c,
>
>
> Adrian
> _______________________________________________
> Quagga-dev mailing list
> Quagga-dev@lists.quagga.net
> http://lists.quagga.net/mailman/listinfo/quagga-dev
>

This topic came up a bit in the route servers discussion at the latest
NANOG meeting.
Presentation is here:

http://www.nanog.org/meetings/nanog48/presentations/Monday/Jasinska_RouteServer_N48.pdf

The primary points of optimizations for the BGP implementations seemed
to be 1) making each peer session i.e. state/holdtime/keepalive operate
in a thread or process and 2) having the
multiplexing operate in a more predictable manner. (Not arguing
for/against any of this, just
reporting...)

--
John Kemp (kemp@network-services.uoregon.edu)
RouteViews Engineer
help@routeviews.org

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
On Mon, Apr 22, 2013 at 11:44:43PM +0530, Tapesh Mandal wrote:
> Respected Sir,
> i am a student of National Institute of
> Technology Mizoram,India currently in 6th semester of Electrical &
> Electronics Engineering. i have almost 10 years experience in
> programming. i have been programming in C since 2005. I am also
> learning socket programming in C.
> I want to build a large scale file sharing
> service using socket programming in C as my GSoC 2013 project.

Hi Tapesh,

I'm afraid file sharing is not within Quagga's project scope. We do
IP routing (Layer 3), and at that only the control plane / routing
calculations.

If you're interested in that, please try again; I should note though
that at least rudimentary networking skills are essential.

Cheers,


David

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
Hi Lokesh,

Thanks for the information. I have again changed some settings in the configuration file. Now I am able to display the details of LSA so I am cleared with the previous doubts.. But now I am confused with the type defined in the LSA. I will contact with Jyotsna about these queries. Does your notes also contains information on LSA(in detail). If you have any information regarding this, please let me know. Thanks in advance.

Thanks and regards,
Kanchan Gupta
Emp ID-664345
Assistant System Engineer
Tata Consultancy Services
GG4, Udyog Vihar
Phase - 4, Gurgaon
India
Contact Details : +91-9810400469
Mailto: kanchan.gupta1@tcs.com

-----Lokesh Pareta/DEL/TCS wrote: -----To: Kanchan Gupta1/MUM/TCS@TCS
From: Lokesh Pareta/DEL/TCS
Date: 03/05/2014 12:47PM
Subject: Re: [quagga-dev 11072] (no subject)

Hi Knhchan, I have done all these type of configuration which display all type of packets like hello, database descriptor, lsa packets etcs. That configuration are with Jyotsna, so you can contact to her regarding configuration issue. As I remember lsa packets only transmits when there are database descriptor packets transmitted and the database descriptor packets will only transmits when there is state of connection changes like bouncing of interface from shutdown to no shutdown. For more details you can contact to Jyotsna, she have my notebook which have all details.
Thanks & Regards,
Lokesh Pareta



-----Kanchan Gupta1 wrote: -----
To: quagga-dev@lists.quagga.net
From: Kanchan Gupta1 <kanchan.gupta1@tcs.com>
Date: 03/05/2014 10:20AM
Subject: [quagga-dev 11072] (no subject)

Hi All,

Can anyone please tell me how we can display the lsa details over the ospfv3 terminal. I am working with the rfc-6860 and I have changed the configurations but I am not am to find the LSA information on the terminal . I dont know how to proceed now.

these are my configuration file settings:

debug ospf6 message all
debug ospf6 lsa unknown
debug ospf6 lsa router
debug ospf6 lsa network
debug ospf6 lsa inter-router
debug ospf6 lsa link
debug ospf6 interface
debug ospf6 neighbor
!
interface eth0
!
router ospf6
interface eth0 area 10.10.10.0
!
line vty
access-class access4
ipv6 access-class access6
exec-timeout 0 0



Thanks and regards,
Kanchan Gupta
Mailto: kanchan.gupta1@tcs.com
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain
confidential or privileged information. If you are
not the intended recipient, any dissemination, use,
review, distribution, printing or copying of the
information contained in this e-mail message
and/or attachments to it are strictly prohibited. If
you have received this communication in error,
please notify us by reply e-mail or telephone and
immediately and permanently delete the message
and any attachments. Thank you




_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
https://lists.quagga.net/mailman/listinfo/quagga-dev"]https://lists.quagga.net/mailman/listinfo/quagga-dev
Re: (no subject) [ In reply to ]
Hello,

W dniu 2017-03-24 17:46, Levin Dmitriy napisa?(a):
> In vtysh I do
>
>
>> user# show daemons
>> zebra ripd ripngd ospfd ospf6d bgpd
>>
> user# configure terminal
>
> user(config)# router rip
>> user(config-router)# distribute-list 100 in
>> % [RIPNG] Unknown command: distribute-list 100 in
>> user(config-router)#
>
>
> Why RIPNG responding instead of RIP ?

Cause for ripngd configure > router rip > 'distribute-list 100 in' is
unknown command.

And main reason is that when I introduce the patch to include
distribute-list command
I didn't thought that someone will connect to both ripd and ripngd.
Either use only ripd/ripngd, or use vtysh -d ripd, vtysh -d ripngd,

still in your case this command is executed by both daemons, so
distribute-list is applied, please verify with sh running-config

for ripng it's worse, after typing: configure > router ripng >
'distribute-list 100 in'
only ripd executes this commands, it fails, and vtysh don't send the
command to ripng.

// It seems I sent previous reply off-list. sorry.

Jakub.

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
https://lists.quagga.net/mailman/listinfo/quagga-dev