Re: [mpls-linux-devel] Development LDP/MPLS
Status: Beta
Brought to you by:
jleu
From: James R. L. <jl...@mi...> - 2007-01-12 04:22:17
|
Hello Julien, My comments are inline ... On Wed, Jan 10, 2007 at 04:59:31PM +0100, Julien Bisconti wrote: > Hello James, >=20 > Please, see my answer below. >=20 > On 12/12/06, James R. Leu <jl...@mi...> wrote: > > > >Excellent to here from you. I'm glad you've made it this far. Now > >lets dig in and start to understand what already exists. > > > >First let me start by explaining that ldp-portable is just a library. > >It relies upon something called a "porting layer" to provide the low > >level primitive and infrastructure to build a working implementation > >of LDP (or CR-LDP in your case). Here is a diagram of the layers involv= ed > >and the types of things handled in that layer: > > > >--------------------------------- > > user interface > > - protocol configuration > > - maintain configuration state > > - status queries > > - error notification > >--------------------------------- > > ldp-portable > > - packet encode/decode > > - message processing > >--------------------------------- > > porting layer > > - socket activity: read/write, multicast > > - timers > > - memory allocation > > - routing interaction > > - interface interaction > >--------------------------------- > > > >The API that needs to be filled in by the porting layer is defined in > >ldp-portable/common/*_impl.h >=20 >=20 > I don't really understand what is needed to be filled in. The files impl_= *.c > seem to fill the API completely. Could you explain me what is needed to be > filled in, If someone were trying to port ldp-portable to another routing system (XORP for example) these files would need to be re-implemented. I've already done the "heavy lifting" of porting ldp-portable to quagga. I was pointing out these files merely to give you an overview of how ldp-portable relates to quagga. > ldp-portable provides an API to the user interface (and the porting > >layer for some OS driven actions), which is defined in > >ldp-portable/ldp/ldp_cfg.c. This is called the configuration API. >=20 >=20 > OK. >=20 > quagga-mpls is a just one porting layer that exists (by far the most > >mature). So that is our next step, lets look at how quagga-mpls interac= ts > >with the configuration API defined in ldp_cfg.c. >=20 >=20 > I read the Zebra Hacking Howto to understand how an implementation of a > protocol works. Now, I understand how to interact with a protocol by the > VTY. Great. Understanding the quagga vty is very important. > Most of the actual user interface for quagga's usage of ldp-portable > >is defined in quagga-mpls/ldpd/ldp_vty.c. It relies upon the utilities > >and structure implemented in ldp_interface.c, ldp.c and ldp_remote_peer.c > >to maintain the configuration state for ldpd. It makes calls to the > >configuration API to actually make ldp-portable do something. In > >addition, > >the code in ldp_zebra.c is responsible to feeding routing and interface > >changes into ldp-portable. > > > >So for your first task, you'll need to figure out how you want the > >user to configure CR-LDP. Most of the work is done. The user can alrea= dy > >configure LDP at the global and interface level, all that is needed is > >a way to tell ldp-portable that we want to create a "tunnel" and configu= re > >the details of the tunnel, like where it should terminate, and what > >path to take to get there. There already exists the configuration > >API for these components, but it is untested, and doesn't really > >do anything. So that is what the 2nd (3rd, 4th, 5th ..... :-) step will > >be. >=20 >=20 > I think my first task is done. I figured out how the user can configure > CR-LDP. I looked at the code, I saw that Nortel also wrote two files > (ldp_nortel.[ch]) with a lot of accurate information in it concerning the > CR-LDP protocol. I noticed that in the configuration API, the functions to > create a "tunnel" already exist : Good. As you can see all of the necessary encodes/decodes for CR related TLVs exist. At the simplest level all you need to do is figure out how to trigger these encodes and decodes :-) Take a look at ldp_buf.c (ldp_encode_one_mesg) to understand how ldp-portable utilizes ldp_nortel.c > extern mpls_return_enum ldp_cfg_tunnel_set(mpls_cfg_handle handle, > ldp_tunnel * r, uint32_t flag); > extern mpls_return_enum ldp_cfg_tunnel_test(mpls_cfg_handle handle, > ldp_tunnel * r, uint32_t flag); > extern mpls_return_enum ldp_cfg_tunnel_get(mpls_cfg_handle handle, > ldp_tunnel * r, uint32_t flag); >=20 > The files ldp_tunnel.[ch] contain few functions to deal with tunnels. So, > now what you want me to do? The API in ldp_cfg tries to mimic the LDP-MIB and the TE-MIB. I believe I've implemented trivial code for creating all of the structures laid forth in the TE-MIB. So your task is to create the quagga vty interface that creates the structures in the TE-MIB and then fiddles the correct bits in the ldp_mesg data that is being sent to ldp_encode_one_mesg. Of course there will be additional work involved in processing packets you receive with the CR TLVs, but we'll worry about that after you can send packets with CR TLVs :-) > I know this was a lot to digest, look at the code, ask questions and > >hopefully we'll get you writting code shortly. >=20 >=20 > I hope so! >=20 > Again, thanks for your interest, I'm really happy that you're willing > >to contribute and work on this aspect of mpls-linux. >=20 >=20 > My pleasure ! >=20 > I hope to hear from you soon. >=20 >=20 > I'm sorry not to reply sooner but with the holidays and complexity of the > project, sometimes I got lost into the code. >=20 > Thank you for your help >=20 > Julien >=20 >=20 >=20 > On Mon, Dec 11, 2006 at 04:10:54PM +0100, Julien Bisconti wrote: > >> Hello Sir, > >> > >> This email is to let you know that I can compile everything on the > >> repository. So I am available to help you. I keep digging into > >quagga-mpls > >> now that I finally managed to install it. > >> > >> I hope to hear from you. > >> > >> Regards, > >> > >> Julien > >> > >> On 12/4/06, Julien Bisconti <jul...@gm...> wrote: > >> > > >> > Hello Sir, > >> > > >> >James R. Leu wrote: > >> > > >> >Hello Julien, > >> > > >> >Would you mind if we moved this discussion to the mpls-linux-genernal > >> >mailing list? > >> > > >> > I just solved the problem of the gnu autotool (Murphy's law) so I > >don't > >> >think that moving this discussion will be necessary. But if you want = to > >> >move > >> >the _whole_ discussion concerning the development of dynamic LSPs then > >I > >> >fully agree with you. > >> > > >> >Thank you again for the help. > >> > > >> >Here are the versions of auto tools I use on my development machine: > >> > > >> > autorun-3.18-1.2 > >> > automake-1.9.6-2 > >> > autoconf-2.59-7 > >> > > >> >In addition I do not believe you should be using 'update-autotools' > >> >Instead you should just issue a: > >> > > >> > ./cleanup-jleu > >> > autoreconf > >> > ./configure > >> > > >> >from the quagga-mpls directory. > >> > > >> >On Mon, Dec 04, 2006 at 03:14:40PM +0100, Julien Bisconti wrote: > >> > > >> > Sir, > >> > > >> >As asked, I compiled every program on the repository except quagga-mp= ls > >> >(the > >> >one I think I really need) > >> >The problem is I can't even try to compile, I never managed to get to > >> >configure script with the gnu autotool. > >> > > >> >I googled the whole weekend to find out what is the error, apparently > >it > >> >seems to be a problem with the macro of aclocal. I re-pulled the code > >of > >> >quagga-mpls from perforce specifying that I want to keep the > >modification > >> >time of the original file, no way to get the configure script. > >> > > >> >Here is the error I get from autoreconf, from "aclocal -I m4" or from > >the > >> >update-autotools script) > >> > > >> >/usr/bin/m4:configure.ac:1416: ERROR: recursion limit of 1024 exceede= d, > >use > >> >-L<N> to change it > >> >autom4te-2.60: /usr/bin/m4 failed with exit status: 1 > >> >aclocal-1.9: autom4te failed with exit status: 1 > >> >autoreconf-2.60: aclocal failed with exit status: 1 > >> > > >> >I'm really stuck at this point. Everything else is allright. I tried = to > >> >compile the original version of quagga-0.99.5 (downloaded from the ma= in > >web > >> >site) and I have the *same error*. I'm currently using Gentoo 2006.1a= nd > >> >here is the version of gnu autotool I use : > >> > > >> >autoheader (GNU Autoconf) 2.60 > >> >autoconf (GNU Autoconf) 2.60 > >> >ltmain.sh (GNU libtool) 1.5.22 (1.1220.2.365 2005/12/18 22:14:06) > >> >libtoolize (GNU libtool) 1.5.22 > >> >aclocal (GNU automake) 1.9.6 > >> >automake (GNU automake) 1.9.6 > >> > > >> >I would really appreciate your help on this because no one else seems > >to > >> >have the same problem as I do. > >> > > >> >Thank you in advance. > >> > > >> >Julien > >> > > >> >On 12/1/06, James R. Leu <jl...@mi...> <jl...@mi...> > >wrote: > >> > > >> > Hello, > >> > > >> >I'm glad to here your interested in helping with mpls-linux. > >> >The best way to get involved is to pull the code from my > >> >development tree via P4. Once you have that, make sure you know > >> >how to build and install the software from the trees. Once you have > >that > >> >figured out, then we can start looking at the code and figuring out > >were > >> >you need to make changes. > >> > > >> >I use Fedora 5 as my development plateform. Other then that I use go= od > >> >ol' > >> >vi and gcc. For testing I use xen instances networked together via > >bridge > >> >interfaces. > >> > > >> >Let me know how you're progressing on pulling the code from P4 and > >> >building > >> >and installing the programs. > >> > > >> >On Tue, Nov 28, 2006 at 03:08:37PM +0100, Julien Bisconti wrote: > >> > > >> > Sir, > >> > > >> >My name is Julien Bisconti, I am currently a student in computer > >science > >> > > >> > and > >> > > >> > I aim to test the dynamic configuration of LSP on a testbed. > >> > > >> >It is said in ldp-portable FAQ that it not implemented yet but > >> > > >> > everything is > >> > > >> > ready for it.Maybe I can help you with that. > >> >Could you give a hint by telling me how (where in the code) can I > >> > > >> > implement > >> > > >> > CR-LDP? The development guide doesn't speak about LDP. > >> > > >> >By the way, I managed to install LDP (quagga/ldp-portable) and MPLS > >> > > >> > (kernel > >> > > >> > + iptables/iproute/ebtables) and I would like to know which software > >do > >> > > >> > you > >> > > >> > use to develop those, in case I would code something. Because they a= re > >a > >> > > >> > lot > >> > > >> > of files and I'm not used to it. > >> > > >> >I hope to ear from you soon. > >> > > >> >Regards, > >> > > >> >Julien Bisconti > >> > > >> >PS: I also sent a mail to the mailing list on SourceForge > >> > > >> > > >> >-- > >> >-------------------------------------------- > >> >Julien BISCONTI <julien.bisconti(at)student.fundp.ac.be> > >> >M.Sc. student in Computer Science, University of Namur > >> >FUNDP, Belgium > >> >Traineeship: UPC (Barcelona, Spain) > >> > > >> > -- > >> >James R. Leu > >> >jl...@mi... > >> > > >> > > >> > > >> > -- > >> >-------------------------------------------- > >> >Julien BISCONTI <julien.bisconti(at)student.fundp.ac.be> > >> >M.Sc. student in Computer Science, University of Namur > >> >FUNDP, Belgium > >> >Traineeship: UPC (Barcelona, Spain) > >> >GSM BELGIQUE: +32 474 598 418 > >> >GSM ESPA?A: +34 671 168 458 > >> > > >> > > >> >-- > >> >-------------------------------------------- > >> >Julien BISCONTI <jul...@st...> > >> ><jul...@st...>M.Sc. student in Computer Scienc= e, > >> >University of Namur > >> >FUNDP, Belgium > >> >GSM BELGIQUE: +32 474 598 418 > >> >GSM ESPA?A: +34 671 168 458 > >> > > >> > > >> > >> > >> -- > >> -------------------------------------------- > >> Julien BISCONTI <julien.bisconti(at)student.fundp.ac.be> > >> M.Sc. student in Computer Science, University of Namur > >> FUNDP, Belgium > >> Traineeship: UPC (Barcelona, Spain) > >> GSM BELGIQUE: +32 474 598 418 > >> GSM ESPA?A: +34 671 168 458 > > > >-- > >James R. Leu > >jl...@mi... > > > > > > >=20 >=20 > --=20 > -------------------------------------------- > Julien BISCONTI <julien.bisconti(at)student.fundp.ac.be> > M.Sc. student in Computer Science, University of Namur > FUNDP, Belgium > Traineeship: UPC (Barcelona, Spain) > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share y= our > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV > _______________________________________________ > mpls-linux-devel mailing list > mpl...@li... > https://lists.sourceforge.net/lists/listinfo/mpls-linux-devel --=20 James R. Leu jl...@mi... |