[Ace-users] Re: [tao-bugs] LOCATION_FORWARD and multiple network
interfaces bug
Douglas C. Schmidt
schmidt at dre.vanderbilt.edu
Wed Jun 20 13:22:26 CDT 2007
Hi Phil,
Would you be able to shed some light on the UseParallelConnects
option described by Benjamin below?
Thanks,
Doug
> thanks a lot, "-ORBUseParallelConnects 1" is a very good hint. Unfortunately I have
> not read the new options after changing from 1.4 tao version to 1.5.
>
> But it does not solve the problem (other bug?).
>
> After spend some time in debugging, I see following situation:
>
> * In the "Invocation_Adapter::invoke_twoway" method
> (on "... synch.remote_twoway (max_wait_time)")
> the server replay with "Locatin Forward" and multiple NICs
>
> * In "CORBA::Boolean operator>> (TAO_InputCDR& cdr, CORBA::Object*& x)"
> (called from Synch_Twoway_Invocation::location_forward (TAO_InputCDR &inp_stream))
> all NICs from server replay are correctly decoded and create a TAO_Profile object for each
>
> * In the "TAO_Default_Endpoint_Selector::select_endpoint (....)" method
> on "if (r->profile ()->endpoint_count () > 1 && r->use_parallel_connect())"
> r->profile ()->endpoint_count () does always return 1
>
> -->result is that the option "-ORBUseParallelConnects 1" has no effect.
>
> I've attached a project to reconstruct the bug, server have to run on host with multiple NICs.
>
> Mit freundlichen Grüssen / best regards
>
> Benjamin Schüle
> Senior Systems Engineer
> ORICS - Operating Room Information and Communication System
>
> BERCHTOLD Consulting GmbH
> Rheinweg 5
> CH-8200 Schaffhausen
>
> Tel ++41 (0) 52 633 09 12
> Fax ++41 (0) 52 633 09 09
> benjamin.schuele at berchtold-consulting.ch
> http://www.berchtold.de
>
>
>
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: Johnny Willemsen [mailto:jwillemsen at remedy.nl]
> Gesendet: Dienstag, 19. Juni 2007 20:32
> An: Benjamin Schüle; tao-bugs at cs.wustl.edu
> Betreff: RE: [tao-bugs] LOCATION_FORWARD and multiple network interfaces
> bug
>
>
> Hi,
>
> This is not really a bug, more a feature. The endpoints are added to the IOR
> in the order the OS returns them. If you have multiple NICs, you should
> specify the ones explicitly. An option option is to use
> -ORBUseParallelConnects 1 on the linux node, then it will try to connect to
> all 3 nics at the same moment.
>
> Another option is to look at the TAO_Optimized_Connection_Endpoint_Selector
> in the TAO/tao/Strategies library, with the location forward it then doesn't
> make a new connection.
>
> Regards,
>
> Johnny Willemsen
> Remedy IT
> Postbus 101
> 2650 AC Berkel en Rodenrijs
> The Netherlands
> www.theaceorb.nl / www.remedy.nl
>
> *** Integrated compile and test statistics see http://remedy.nl ***
> *** Commercial service and support for ACE/TAO/CIAO ***
> *** See http://www.theaceorb.nl/en/support.html ***
>
>
> ________________________________
>
> From: tao-bugs-bounces at cse.wustl.edu
> [mailto:tao-bugs-bounces at cse.wustl.edu] On Behalf Of Benjamin Schüle
> Sent: Monday, June 18, 2007 3:16 PM
> To: tao-bugs at cs.wustl.edu
> Subject: [tao-bugs] LOCATION_FORWARD and multiple network interfaces
> bug
>
>
>
> TAO VERSION: 1.5.8
> ACE VERSION: 5.5.8
>
> HOST MACHINE and OPERATING SYSTEM:
> mixed Linux (debian-sarge-2.6) and Windows XP
>
>
> THE $ACE_ROOT/ace/config.h FILE
> ----------begin windows --------
> #define ACE_HAS_STANDARD_CPP_LIBRARY 1
> #define ACE_HAS_MFC 1
>
> #include "ace/config-win32.h"
> ----------end windows --------
>
> ----------begin linux --------
> #include "ace/config-linux.h"
> ----------end linux --------
>
>
> THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE
> ----------begin linux --------
> include $ACE_ROOT/include/makeinclude/platform_linux.GNU
> ----------end linux --------
>
>
> DOES THE PROBLEM AFFECT:
> COMPILATION?
> NO
>
> LINKING?
> NO
>
> EXECUTION?
> YES
>
> SYNOPSIS:
> the ACE/TAO Library has a bug in a mixed Linux and Windows
> environment if the Windows machine
> has multiple network interfaces.
>
> DESCRIPTION:
> If i have a setup like:
>
> [windows if1 192.168.1.19/24] <-----------> [linux machine
> 192.168.1.101]
> [windows if2 192.168.84.1/24]
> [windows if3 192.168.17.1/24]
>
>
> no I try to connect from the linux machine to the windows machine:
>
> std::string s =
> "corbaloc::192.168.1.19:60002/ConnectionController";
>
> CORBA::Object_var obj =
> m_varORB->string_to_object(s.c_str());
>
> ORICS::IConnectionController_var iConnectionController =
>
> ORICS::IConnectionController::_narrow(obj);
>
> and capture following on network:
>
> 490 14:46:00.214537 192.168.1.101 192.168.1.19
> TCP 1803 > 60002 [SYN]
> 491 14:46:00.214628 192.168.1.19 192.168.1.101
> TCP 60002 > 1803 [SYN, ACK]
> 492 14:46:00.214758 192.168.1.101 192.168.1.19
> TCP 1803 > 60002 [ACK]
> 493 14:46:00.215003 192.168.1.19 192.168.1.101
> TCP [TCP Dup ACK 491#1]
> 495 14:46:00.216847 192.168.1.101 192.168.1.19
> GIOP GIOP 1.0 Request 1 (two-way): _is_a
> 496 14:46:00.218972 192.168.1.19 192.168.1.101
> GIOP GIOP 1.0 Reply 1: Location Forward
> 497 14:46:00.219159 192.168.1.101 192.168.1.19
> TCP 1803 > 60002 [ACK]
> 500 14:46:00.239772 192.168.1.101 192.168.84.1
> TCP 2001 > 60002 [SYN]
>
> the ace-tao corba library tries to connect the windows machine on
> the wrong ip address.
>
>
> the log file of the linux machine is:
>
> <<070718 log.txt>>
>
>
> SAMPLE FIX/WORKAROUND:
> My workaround is to start the windows program with
> "-ORBListenEndpoints iiop://192.168.1.19:60002".
>
>
>
>
> Mit freundlichen Grüssen / best regards
>
> Benjamin Schüle
> Senior Systems Engineer
> ORICS - Operating Room Information and Communication System
>
> BERCHTOLD Consulting GmbH
> Rheinweg 5
> CH-8200 Schaffhausen
>
> Tel ++41 (0) 52 633 09 12
> Fax ++41 (0) 52 633 09 09
> benjamin.schuele at berchtold-consulting.ch
> http://www.berchtold.de
> _______________________________________________
> tao-bugs mailing list
> tao-bugs at mail.cse.wustl.edu
> http://mail.cse.wustl.edu/mailman/listinfo/tao-bugs
More information about the Ace-users
mailing list