Try binding locally to the IP of the port out of which you want
to send. If you don't specify the local binding (most programs/examples
do not), then you will be bound on any/all of them.
I haven't actually tried to open that many sockets, but the local
bind trick may solve your problem.
I'll be interested to hear what you find out!
Yan-Fa Li wrote:
I have a network testing app that would like to open 100K outgoing
sockets. I have modified my local range in /proc/sys to
allow 2048 - 65000 sockets to be used for out going connections.
I have a 2 systems with 2 network cards. Each network card is
on a separate LAN:
I have 2 servers running on each system at ports: 80 and 443.
Each server is bound to the 0.0.0.0 address.
Now I start one client and tell it to connect from System A,
and tell it to connect to 10.10.12.197 port 80. This client
opens 50K sockets.
I start another client on System A and tell it to connect
to 10.10.14.197 port 443. This client is also told to open 50K
sockets. At ~12K sockets it fails.
So here's my question, I'm a novice at this sort of thing so
I may have done something completely off the wall, but assuming
I'm going out a different network interface, why are all socket
allocations for outgoing connections appearing to come out of
the same pool ?
Logically speaking, shouldn't it be possible to use the same
socket number for an outgoing socket going out a totally
different network interface and thus get another completely
unused socket range ? Am I just missing a /proc/sys configuration
Any help you can help or advice would be appreciated. Even a,
you can't do that because it's not allowed answer would be
better than nothing, because then I'll just go find some more
clients and be done with this.
Do You Yahoo!?
Yahoo! Movies - coverage of the 74th Academy Awards®
Ben Greear <greearb@xxxxxxxxxxxxxxx> <Ben_Greear AT excite.com>
President of Candela Technologies Inc http://www.candelatech.com
ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear