Tuesday, October 12, 2004

Fedora Core 2, Ethernet Bridge and OSCAR 3

Ethernet Bridge

The FC2 server in our lab is a Dell PE 1750 with 6 Gb ethernet ports. I created an ethernet bridge with 4 ports of them. The reason doing that is to provide equal bandwidth for every ethernet switch and save some traffic with STP function. The overall result looks like this:
# ifconfig  br0
br0       Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
         inet addr:10.0.0.250  Bcast:10.0.0.255  Mask:255.255.255.0
         inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:164559 errors:0 dropped:0 overruns:0 frame:0
         TX packets:327895 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:5525559 (5.2 Mb)  TX bytes:120466860 (114.8 Mb)
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000423ab47ec       yes             eth2
                                                       eth3
                                                       eth4
                                                       eth5

Therefore you can do such command to install OSCAR:
./install_cluster br0
which br0 can be used as a bridge of some cheap 1000M switches.
In order to do that at FC2, you can do it by editing ifcfg-br0/eth2/eth3/eth4/eth5  in /etc/sysconfig/network-scripts/ like this:
[file ifcfg-br0]
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=10.0.0.250
NETMASK=255.255.255.0
ONBOOT=yes
DELAY=0
STP=on

[file ifcfg-eth2]
DEVICE=eth2
HWADDR=00:04:23:AB:47:EC
TYPE=Ethernet
BRIDGE=br0
ONBOOT=yes

[and so on...]
For a virtual device br0, you need to specify "TYPE=Bridge" to enable bridge and the system will search for the device with "BRIDGE=br0" and add the device into the member list of this ethernet bridge. Please do notice that I did borrow one more option from FC2's bug repository on /sbin/ifup script like this:
--- /sbin/ifup.orig     2004-06-08 13:36:53.000000000 -0700
+++ /sbin/ifup  2004-10-08 18:45:18.000000000 -0700
@@ -171,6 +171,7 @@
       fi
       [ -n "${DELAY}" ] && /usr/sbin/brctl setfd ${DEVICE} ${DELAY}
       [ -n "${GCINT}" ] && /usr/sbin/brctl setgcint ${DEVICE} ${GCINT}
+      [ -n "${STP}" ] && /usr/sbin/brctl stp ${DEVICE} ${STP}
 fi
 
 if [ -n "${BRIDGE}" -a -x /usr/sbin/brctl ]; then

How will this affect OSCAR installation?

First of all, in order to let FC2's /sbin/ifup to read this, you have to enable ONBOOT=yes for those bridge members eth[2-5]. Empty ip/netmask assignments will confuse mkdhcpconf. ...

The mkdhcpconf of systeminstaller came with OSCAR 3 doesn't work well with Bridge network on Fedora core 2. In Fedora core 2, you need to ip-up individual member of the bridge interface, that creates a wrong formated dhcpd.conf like this:

# This entry ignores requests on eth5...
subnet 0.0.0.0 netmask  {
       not authoritative;
}
If you encounter the same thing that dhcpd complaint about the format of dhcpd.conf and failed to run dhcpd, you can apply the following patch:
------ Cut here ------
--- /usr/bin/mkdhcpconf.orig    2004-10-11 14:32:49.635096038 -0700
+++ /usr/bin/mkdhcpconf 2004-10-10 00:10:43.000000000 -0700
@@ -115,6 +115,9 @@
               my ($ip,$bcast,$mask)=&find_internal_ip($int);
               my $block=new Net::Netmask ($ip,$mask);
               my $net=$block->base();
+               if ($mask eq "") {
+                       $mask = "255.255.255.0";
+               }
               print OUTFILE "\n# This entry ignores requests on $int...\n";
               print OUTFILE "subnet $net netmask $mask {\n\tnot
authoritative;\n}\n";
       }
------ Cut here ------
Then your dhcpd.conf would be like this:
# This entry ignores requests on eth5...
subnet 0.0.0.0 netmask 255.255.255.0 {
       not authoritative;
}

No comments: