EL 4.0 and how it does Networking now.

Rick Stevens rstevens at vitalstream.com
Tue May 31 21:06:14 UTC 2005


Waldher, Travis R wrote:
> 
>>-----Original Message-----
>>From: Rick Stevens [mailto:rstevens at vitalstream.com]
>>
>>>2) modules.conf is now modprobe.conf.
>>>	The "below" nomenclature no longer works:
>>>		"below bonding e1000 bcm5700"
>>>	The "options" feature appears to work the same, but I won't know
>>>for 	ure until I get past #3.
>>
>>Yes, for 2.6 kernels, the file is now modprobe.conf.
> 
> 
> Except now that below is no longer a feature that can be used.  I need
> to know that the problems I had 2 years ago(?) with interfaces
> arbitrarily being loaded with the wrong drivers is fixed.
> 
> (Back then you gave me the "below" information.)

"below" simply tells modprobe that bonding uses e1000 and bcm5700.
I don't know that the e1000 entry was necessary, but kudzu likes to
bind the tg3 driver to Broadcom chips when the system is configured.
Essentially anything you could do with "above" or "below" can be
accomplished using modprobe.conf's "install" command.  See my comments
further on (I almost said "below" :-)) for details.

>>>3) The bonding driver.  Apparently, someone decided that no one
> 
> would
> 
>>>ever want to use more than 1 interface.  So they changed it to only
>>>support one.  When you attempt to bring up the second bonding
> 
> interface,
> 
>>>you get this:
>>>
>>>	"bonding1 device bond1 does not seem to be present, delaying
>>>initialization."
>>>
>>>There is an entry in
>>>/usr/src/kernels/2.6.9-5.EL-smp-i686/include/linux/if_bonding.h that
>>>controls this.
>>
>>Yeah, I see that.  Odd.
> 
> 
> 
> Better yet, I looked at an EL 3.0 system, the if_bonding.h file includes
> the same entries.  It appears I may have focused on the wrong problem
> (the header file) or something else has been modified and that setting
> now has relevance.

Hmmmm.  I dunno.  Actually, some time this week I'll be configuring up
some systems that will require two bonding interfaces.  These will be
done on both ES3 (2.4 kernel) and CentOS 4 (2.6 kernel--essentially a
whitebox ES4 distribution) systems and I'll get some hands-on with
those.

> So far Redhat's answer is... either a mis-configuration on my end, which
> is possible, but IMO doubtfull.  Unless features changed and weren't
> documented otherwise it's a bug in the module.  "recompiling it should
> not be an option".

Well, humph!  You should have stuff such as this:

/etc/sysconfig/network-scripts/ifcfg-bond0:
	DEVICE=bond0
	BOOTPROTO=static
	IPADDR=www.xxx.yyy.zzz
	NETMASK=255.255.255.0
	ONBOOT=yes

/etc/sysconfig/network-scripts/ifcfg-bond1:
	DEVICE=bond01
	BOOTPROTO=static
	IPADDR=aaa.bbb.ccc.ddd
	NETMASK=255.255.255.0
	ONBOOT=yes

/etc/sysconfig/network-scripts/ifcfg-eth0:
	DEVICE=eth0
	MASTER=bond0
	SLAVE=yes
	BOOTPROTO=none
	ONBOOT=yes
	TYPE=Ethernet

/etc/sysconfig/network-scripts/ifcfg-eth1:
	DEVICE=eth1
	MASTER=bond0
	SLAVE=yes
	BOOTPROTO=none
	ONBOOT=yes
	TYPE=Ethernet

/etc/sysconfig/network-scripts/ifcfg-eth2:
	DEVICE=eth2
	MASTER=bond1
	SLAVE=yes
	BOOTPROTO=none
	ONBOOT=yes
	TYPE=Ethernet

/etc/sysconfig/network-scripts/ifcfg-eth3:
	DEVICE=eth3
	MASTER=bond1
	SLAVE=yes
	BOOTPROTO=none
	ONBOOT=yes
	TYPE=Ethernet

Then, in /etc/modprobe.conf:

     alias eth0	bcm5700
     alias eth1	bcm5700
     alias eth2	e1000
     alias eth3	e1000
     install bond0 /sbin/modprobe -a eth0 eth1 && /sbin/modprobe bonding
     alias bond0	bonding
     options bond0	mode=x,miimon=100,primary=eth0,etc.
     install bond1 /sbin/modprobe -a eth2 eth3 && /sbin/modprobe bonding
     alias bond1	bonding
     options bond1	mode=x,miimon=100,primary=eth2,etc.

You get the idea.  The "install" lines above the "alias bondX" lines
force the ethernet modules to load before the bonding driver does, and
this is how you accomplish what "below" used to do.  If you look at the
logic, it makes up a shell pipeline where the "modprobe eth0 eth1" has
to be done BEFORE the "modprobe bonding" is run.  Ah, the logical "&&"
operator rears its ugly-but-useful head!  Note also that the bonding
driver won't load unless drivers for BOTH cards that make up the bond
are loaded.  If either fails, bondX won't be created.

BTW, the reason you may have to use the install command is that the
"ifup" commands are run based on the ASCII sort order of the
"ifcfg-xxxx" filenames in /etc/sysconfig/network-scripts, and "bondX"
comes before "ethX", right?  (NOTE TO Red Hat and/or kernel guys:
Someone really oughta fix that ruddy /etc/rc.d/init.d/network script so
bonding devices are brought up last--or at least after all of their
respective slaves are alive!)

FWIW, the current "readme" for bonding should be in

     /usr/src/linux-whatever/Documentation/networking/bonding.txt

and should have all the gory details--yet another good reason to have
the kernel source installed if you have the space to do it.
----------------------------------------------------------------------
- Rick Stevens, Senior Systems Engineer     rstevens at vitalstream.com -
- VitalStream, Inc.                       http://www.vitalstream.com -
-                                                                    -
-  You know you've landed gear-up when it takes full power to taxi.  -
-                                                -- Chuck Yeager     -
----------------------------------------------------------------------




More information about the Redhat-install-list mailing list