[Ace-users] Re: [tao-bugs] LOCATION_FORWARD and multiple network
interfaces bug
Johnny Willemsen
jwillemsen at remedy.nl
Tue Jun 19 13:32:27 CDT 2007
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
More information about the Ace-users
mailing list