This is a discussion on Multiple network adapters -- getting processes to use a specificinterface within the Slackware Linux Support forums, part of the Unix Operating Systems category; --> Hello all. I'm looking for some insights. I have a machine running Slackware 10.0 with which I intend on ...
| |||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| Hello all. I'm looking for some insights. I have a machine running Slackware 10.0 with which I intend on installing multiple NICs (3-5, depending if I can find two ISA Ethernet cards). Once I install the devices and configure them, I want to force specific processes to communicate through specific cards. For example, if I have 5 processes (foo0 - foo4), I want one of each to use a different interface (eth0 - eth4). As more processes are run, they would be distributed across the different NICs in whatever manner, it doesn't really matter. The key is being able to tell processes which connection to use. I haven't been able to find much information about this at all, be it from Google, IRC, any form of Slackware "manual" I can find, any other distro's manual, or even books (I've seemed to have discovered that most Linux books I've looked at are void of decent networking information in general, usually stopping at configuring a device). Most people I have spoken with have indicated that this is probably a per-program setting, meaning if a program can support using a specific interface, then good news, otherwise I'm SOL. I honestly believe this is nonsense, and what I am proposing is quite possible (or at least, I am hoping this is the case). As far as I can tell, the processes I want to do this with are not equipped for me to specify the device. Conceptually, I see this as piping processes to interfaces, though I'm not claiming to be correct on this. Any thoughts on this matter are appreciated. Also, if there is somewhere else (another group) this question would be more appropriately targeted, please let me know. --JW |
| |||
| -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 shufler wrote: > Hello all. I'm looking for some insights. > > I have a machine running Slackware 10.0 with which I intend on > installing multiple NICs (3-5, depending if I can find two ISA Ethernet > cards). Once I install the devices and configure them, I want to force > specific processes to communicate through specific cards. > > For example, if I have 5 processes (foo0 - foo4), I want one of each to > use a different interface (eth0 - eth4). As more processes are run, they > would be distributed across the different NICs in whatever manner, it > doesn't really matter. The key is being able to tell processes which > connection to use. I'm not aware of a way to round-robin force specific processes to use a specific interface. However, there are ways to do load distribution across multiple ethernet adapters, which (depending on why you want to do the above) may help. My understanding, though, is that load distribution works on a per-packet basis, not on a per-process. So you won't get one process locked to one adapter, you'll have all the packets from all the processes distributed more-or-less evenly across all adapters. I'm almost certain there is no way currently to lock a process to an adapter. There just isn't a slot in the kernel's per-context data for that sort of thing. It would require a change to the kernel that would link context-switching to networking - and that wouldn't be trivial. I will add, though, that while I'm pretty sure of the above, you might want to confirm it with someone more experienced in the kernel than I. I'd suggest the linux kernel mailing list. Kurt. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (MingW32) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iQEVAwUBQlZmIN366Kf2Ie2tAQgpgwgAj2iirqAcJgdDGUGA27 SwnozcTZ+2D1ZG i3qhoDun98de5Dlg+Qq5Su+KEqVpAUktSUBPEWEZAxyqsDbE0m OXHmGkc14tXrfp 3VS/fC+LDmRkccha3Bu2cz/2tXZnfry8dXoI1b9LcDzNDVCfaAQG7EZ6sI/rqZFY ZYArm9zsonVwo5xeuhlBs1pCsJg3stjG7X15K9GiNpn4qygrNn 5m+HH/reopoGFz u/t3OiiRyticsQzPGqDUcvrG9pKQDRExIEenm+a0R0V02km8yy9D 5JoFwTgrKQ1i pDhibDfPhymGUTq3K2Mn++fMJ0fB+MyprUzW3HYHOxhLbXrbu/m30g== =FNCG -----END PGP SIGNATURE----- |
| |||
| Hi, On Fri, 08 Apr 2005 10:40:23 GMT, shufler <usenet@shufler.net> wrote: >I haven't been able to find much information about this at all, be it >from Google, IRC, any form of Slackware "manual" I can find, any other >distro's manual, or even books (I've seemed to have discovered that most >Linux books I've looked at are void of decent networking information in >general, usually stopping at configuring a device). Because you go into routing space, away from majority users? What you trying to do? I'm thinking either low-routing or high-level load sharing like a server or compiler farm. I've had three NICs running, and that is scratching for interrupts on some machines. Disable serial ports & printer to get some. > >Most people I have spoken with have indicated that this is probably a >per-program setting, meaning if a program can support using a specific >interface, then good news, otherwise I'm SOL. I honestly believe this is >nonsense, and what I am proposing is quite possible (or at least, I am >hoping this is the case). As far as I can tell, the processes I want to >do this with are not equipped for me to specify the device. > >Conceptually, I see this as piping processes to interfaces, though I'm >not claiming to be correct on this. Well, my thought is normally a high-level program knows about an endpoint, routing is different matter. Source routing went out ages ago. > >Any thoughts on this matter are appreciated. Also, if there is somewhere >else (another group) this question would be more appropriately targeted, >please let me know. Very much depends what you are doing, clustering, routing or some other. clustering -> beowulf server farm -> apache compiler farm -> distcc what's yours? Cheers, Grant. > >--JW |
| |||
| On Fri, 08 Apr 2005 10:40:23 +0000, shufler wrote: > Hello all. I'm looking for some insights. > > I have a machine running Slackware 10.0 with which I intend on > installing multiple NICs (3-5, depending if I can find two ISA Ethernet > cards). Once I install the devices and configure them, I want to force > specific processes to communicate through specific cards. > > For example, if I have 5 processes (foo0 - foo4), I want one of each to > use a different interface (eth0 - eth4). As more processes are run, they > would be distributed across the different NICs in whatever manner, it > doesn't really matter. The key is being able to tell processes which > connection to use. > > I haven't been able to find much information about this at all, be it > from Google, IRC, any form of Slackware "manual" I can find, any other > distro's manual, or even books (I've seemed to have discovered that most > Linux books I've looked at are void of decent networking information in > general, usually stopping at configuring a device). > > Most people I have spoken with have indicated that this is probably a > per-program setting, meaning if a program can support using a specific > interface, then good news, otherwise I'm SOL. I honestly believe this is > nonsense, and what I am proposing is quite possible (or at least, I am > hoping this is the case). As far as I can tell, the processes I want to > do this with are not equipped for me to specify the device. > > Conceptually, I see this as piping processes to interfaces, though I'm > not claiming to be correct on this. Most server processes (such as apache etc) can be configured to listen on a specific IP address. So if your foo1, foo2,... are different programs, you just configure them accordingly. Of course you hoave to read the manual for each, to find out how. If they are all the same process, thin I suppose you are just trying to spread the networking load amongst several NICs. One possibility might be to set up a DNS server, and supply it with several IP addresses for a your machine's name. I'm not sure exactly how you do this, but reading the manual for bind9 would certainly tell you. Then, anyone wanting to connect to (say) www.your-server.com would get one of the IP addresses from DNS, in a round-robin fashion. The various "foo" processes could listen on all the network interfaces (this is usually the default behaviour), but each connection would be routed through one or other of the network cards more-or-less at random, thus spreading the load. But unless you've got a very fast processor and some very slow network cards, it's not obvious why you would want to do this. John |
| ||||
| shufler wrote in <rct5e.924302$Xk.702207@pd7tw3no>: > Hello all. I'm looking for some insights. > > I have a machine running Slackware 10.0 with which I intend on > installing multiple NICs (3-5, depending if I can find two ISA Ethernet > cards). Once I install the devices and configure them, I want to force > specific processes to communicate through specific cards. > > For example, if I have 5 processes (foo0 - foo4), I want one of each to > use a different interface (eth0 - eth4). As more processes are run, they > would be distributed across the different NICs in whatever manner, it > doesn't really matter. The key is being able to tell processes which > connection to use. > > I haven't been able to find much information about this at all, be it > from Google, IRC, any form of Slackware "manual" I can find, any other > distro's manual, or even books (I've seemed to have discovered that most > Linux books I've looked at are void of decent networking information in > general, usually stopping at configuring a device). > > Most people I have spoken with have indicated that this is probably a > per-program setting, meaning if a program can support using a specific > interface, then good news, otherwise I'm SOL. I honestly believe this is > nonsense, and what I am proposing is quite possible (or at least, I am > hoping this is the case). As far as I can tell, the processes I want to > do this with are not equipped for me to specify the device. > You should listen to those people. What's the process you're trying to run? You're looking for a setting for which IP to listen on, which most server processes have. |