Hi all !
I have some questions about routing in NTLP. As we know there are two major functions in NTLP: (1) Routing. (2) Transport.
I have read the implementation code of nsis-0.4.0. And I know that the function of "Transport" is implementd by the GistMAEntry class, which uses the socket classes provided in ../library/socket.
however, I have been very confused on the "Routing" function. I don't know how it is being realized. And I realized there are many library files in ..\library\libxorp. Further more, I don't understand this words " Incoming messages are fetched from the socket by callbacks called by XORP(socket_events.cpp) ". What is the role of XORP as it here? how does XORP and GIST work together?
I am looking forward someone can reply to my questions. Thank u very much!
Bestwishes!
Sky Wang 2006-9-18
Hi,
I have some questions about routing in NTLP. As we know there are two major functions in NTLP: (1) Routing. (2) Transport.
I have read the implementation code of nsis-0.4.0. And I know that the function of "Transport" is implementd by the GistMAEntry class, which uses the socket classes provided in ../library/socket.
Correct.
however, I have been very confused on the "Routing" function. I don't know how it is being realized. And I realized there are many library files in ..\library\libxorp. Further more, I don't understand this words " Incoming messages are fetched from the socket by callbacks called by XORP(socket_events.cpp) ". What is the role of XORP as it here? how does XORP and GIST work together?
XORP provides a library for managing sockets. Whenever a socket receives new data, XORP will call a method you provided (the callback method). That we use XORP for that purpose is not really important. In fact, we have just moved from XORP to an own implementation in our development tree.
So your question regarding the "Routing" aspect does not relate to XORP. In fact, you won't find much code about the "Routing" aspect, as this functionality is implicitly given by the way GIST is specified. The existing Message Routing Methods (MRM), i.e. Path-coupled MRM and Loose-End MRM, define how Query-encapsulated (Q-Mode) messages (i.e. GIST-QUERYs and stateless GIST-DATA-Messages) are sent. GIST defines, that Q-Mode messages need to be sent with the Router-Alert-Option and with some other properties (like which destination address to use etc.). The actual routing is done by IP and GIST does not directly interfere with that.
Therefore, you are searching for the code that activates the Router-Alert-Option and code like the one that determines the destination address. The first is done in GistMAEntry/Socket, while the latter is done in the FSM. In both cases the FSM controlls how messages are sent, thus the FSM is what you are looking for.
I am looking forward someone can reply to my questions. Thank u very much!
I hope this helps. If you can provide me with any direct question or scenario you are working on, I might be able to give a more precise answer.
Regards, Christian Dickmann
nsis_imp@informatik.uni-goettingen.de