[PolyORB-users] Fwd: IORs and Default IP addresses

Michael Houston schmeeky at gmail.com
Wed Sep 3 12:02:54 CEST 2008


Hello,

Apologies for the previous empty message, it would appear smime
signatures don't work too well with list servers...

I've been reading the previous thread here from a few years back
regarding the IP addresses in IORs:
http://lists.adacore.com/pipermail/polyorb-users/2005-January/000084.html

I've noticed the following things:
1) There doesn't seem to be a way to specify a 'published' IP address
for creating servers behind a NAT firewall
2) The default configuration (without a polyorb.conf file) isn't very
helpful when used with a default (Ubuntu) linux installation
3) Without a .conf file, PolyORB listens on all interfaces, but IORs
only contain one IP address.

Below is my current understanding of these issues, and more details:

1)
Other ORBs I've used have had a parameter which allows the 'published'
IP address to be set, distinct from the interface the ORB binds to.
This is important to be able to work from behind NAT firewalls for
example. However, you can't do this (AFAICT) because the ORB binds to
each address you specify, and fails when you specify the address of
the firewall.

2)
I understand why it's necessary to have the correct configuration, but
there are some circumstances where the configuration file needs to be
changed frequently (DHCP for example). If the default IP address were
a better-educated guess, this would solve some of the problems and
make the library more user-friendly.

For example: a default IP address shouldn't be a loopback address
(127.x.x.x). On a default Ubuntu installation, the hostname is mapped
to a loopback adapter in the hosts file, and this is the address that
gets picked up by PolyORB. PolyORB shouldn't assume that the address
the host uses for itself is also the address the rest of the network
uses.

3)
Without specifying the default, PolyORB binds to all available
interfaces. If you construct a corbaloc manually, clients are able to
connect with no problem. The difficulty comes when a reference to
another object on the server is passed to the client - the same
problem from the above post. IORs only include the 'default'
(loopback) ip address, which can be seen when the Ref to corbaloc
functions are used in polyorb, or in a wireshark trace.

It would be nice if IORs passed to a client for local objects used the
same endpoint as the client used to connect to the current servant,
but I imagine this is not trivial, or even correct according to the
spec.

A more likely solution is to make sure that the IOR really contains
all the addresses that the ORB has bound to, not just the default.

Also, conversely, specifying the addresses manually adds new
alternatives to the IOR, but doesn't remove the 'defualt' derived from
the host. For example, using the IIOP properties, a default IP of
192.168.1.20, and an 'alternate_listener' of 172.168.0.1, the IOR
contains THREE IPs, those two and the host-derived 127.0.1.1.

If the user wished to reduce the number of interfaces listened on,
they wouldn't assume the extra interface was enabled regardless.



Thanks for reading, I'm interested to hear people's thoughts.

Mike.


More information about the PolyORB-users mailing list