January 23, 2008: Errands and Wine

I got up nice and early this morning and was into the office in the wee hours of the morning.  It worked out well because it gave me a chance to get caught up after yesterday was so busy.  I really prefer to get to work early but it is hard to pull yourself out of bed most days especially when it is only for three days a week because I work from home on Thursdays and don’t get up until it is actually work time and Fridays are shifted late.

I had to run an errand this morning.  So I took a very early lunch and ran out to take care of that.  I am learning to get around Manhattan pretty efficiently now.  It is starting to feel more and more like a place that I live rather than a place that I visit. I grabbed two falafel pitas upon returning to the office and ate at my desk.  The timing worked out perfectly for lunch and everything since I was up so early and, for some reason, everything was exceptionally silent at work today so the early lunch wasn’t a problem at all.  (People expect you to lunch at a certain time and expect emails not to be returned promptly but an early lunch and they might still expect you to get right back to them.  The fact that it is early isn’t actually a problem.)

The whole day ended up being quite slow and I was thankful for the break.  I headed for home around five thirty.  I was in early but my lunch was on the long side so I felt that I should put in some extra time since I don’t plan to log in and work from home this evening.  Tomorrow is a work from home day with Oreo.

I got home and Ryan and Linnea came up to the apartment and we all ordered Nino’s for dinner.  Ryan did the ordering and totally forgot all of my food so we ended up having to place a second order once the first one arrived.

Ryan’s eyes were bothering him so he took off early as he is a little allergic to Oreo.  Oreo just wants to be loved.  He doesn’t want people to be allergic to him!  Linnea hung out for a while and enjoyed some Cabernet Franc with us and talked about D&D.  She is interested in checking out one of our gaming sessions and might want to jump in and try playing.

We were up a little late but not too bad.  Since I am home tomorrow it is fine for me.  Josh is coming to visit tomorrow evening so I have all day to clean and get ready.

January 22, 2008: Back to Work

Back to work today.  It was great having a three day weekend without being on call at all.  I really got a chance to just kick back and relax.  But now going back to work is tough.

I am on Wall Street today and the day turned out to be incredibly busy.  But really, this is to be expected since I had yesterday off but the people that I primarily support are in the United Kingdom where it wasn’t a holiday so I have quite backlog of stuff to take care of.

So my day was crazy and I didn’t get a chance to eat lunch until around three.  I ran over and grabbed a falafel pita sandwich from one of the “Halal” trucks near the office.  (Halal is Arabic for “allowed”.  In Arab countries it is a more general term but in the United States it generally means that the food meets Islamic dietary restrictions.  Roughly analogous to Kosher for Jewish food.  Kosher is not limited to being dietary in meaning in Israel either.)  The food was excellent and quite healthy.  I will be eating that a lot more often.

I headed for home a bit later than usual because there was just so much to do and I didn’t come in extra early this morning like I often try to do.  So I started my chilly walk home around six thirty.

Ryan txt’d me as I was coming into Newark on the train so I txt’d him and Min to call each other and to make plans for dinner.  But Min’s cell phone was dead and the house phone was unplugged from my mid term exam yesterday.  So we didn’t manage to make any plans until I was physically home.  Ryan really wanted to go to Sculley’s so we just walked over there for some food.  Normally Kevin is free tonight but his schedule is all messed up because of the holiday yesterday.  Otherwise we might have attempted squeezing in a D&D game tonight since everyone else was free.

Sculley’s was much better tonight than it has been in the past.  Service was actually very snappy.  We were pleasantly surprised.

It was off to bed on the early side for Dominica and I.  I am going into the office nice and early tomorrow and I don’t want to be exhausted.

How-To Simple Linux Bonding

Bonding or channel aggregation is a means by which multiple Ethernet connections can be used as a single connection with a single IP Address. This is very handy both for performance but also for failure protection. Bonding is accomplished using the Linux Bonding Driver.

This How To will address basic bonding on the Red Hat and SUSE platforms. This is actually very easy. Be aware, however, that if you are connected to a machine remotely over the network that making changes to your networking configuration could cause you to lose your connection. You have been warned.

The first step is to add the Linux Bonding Driver to the modules list. Depending on the version of Linux that you are using this will either be /etc/modules.conf (Red Hat 3 or older) or /etc/modprobe.conf (Red Hat 4 or newer.) You will need to add an alias to the bonding driver. It is traditional to call the first bonded driver instance bond0 which is what we will do here. Add the following line to your /etc/modprobe.conf file:

alias bond0 bonding

To make configurations to this driver you will need to add another line. In our example we are going to use the very simple “Mode 6” bonding method. (Learn about Linux Bonding Modes.) This type of bonding requires no support from your switch which makes it very easy to use. I prefer mode 6 because it accomplishes bidirectional load balancing without any switch configuration. This is a more general purpose type of bonding than most of the other forms. All configuration is taken care of at the server. Add the following line also to /etc/modprobe.conf:

options bond0 miimon=100 mode=6 downdelay=200 updelay=200

This is a good, general purpose set of options for bonding. It is a good place to start. Once you are comfortable with bonding you can tweak it as is appropriate for your needs. Now we need to set up the configuration for the bond0 interface. The file that we will be creating/editing is /etc/sysconfig/network-scripts/ifcfg-bond0:

DEVICE=bond0
IPADDR=192.168.0.2
NETWORK=192.168.0.0
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

We will break this down for you. IPADDR is your IP address. This is a generic example. You have to put in your own IP address for this particular Linux host here. NETWORK is the network address of your network. This is not always needed but good to have. If you don’t know your network address it is most likely your IP address but ending with the final octet in zero (in cases when your subnet mask is 255.255.255.0 or /24.) Your NETMASK is your subnet mask. Commonly as shown here. BROADCAST is, again, network dependent but likely your IP address but with the final octet ending in 255 (again in /24 subnets.) ONBOOT should be “yes” unless you do not want the interface to start when the machine starts. BOOTPROTO is “none” unless you are using DHCP or BOOTP for this address which I expect that you are not as that is very uncommon for bonded interfaces. USERCTL is for “user control” and you can do what you like here. For security reasons I leave this as “no”.

Finally some basic configurations of your regular Ethernet interfaces and you will be all set. Here is a sample of /etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
SLAVE=yes
MASTER=bond0

This is even simpler than the bond0 configuration file. Here we specify the DEVICE name (eth1, eth2, etc. to suit your needs), BOOTPROTO is “none”, ONBOOT should be the same as for bond0. Type as appropriate but almost always “Ethernet”. The most important bits of the file are SLAVE which must be “yes” and MASTER which must be the DEVICE name that you are enslaving to.

At this point your bonded interface is configured. You can now restart your networking to test it out.

/etc/init.d/network restart

For more general installation instructions and for more details check out the great Linux Bonding Mini How To from Kernel.org.

Linux Bonding Modes

When bonding Ethernet channels in Linux there are several modes that can be chosen that affect the way in which the bonding will occur. These modes are enumerated from zero to six. Let’s look briefly at each and see how they differ. Remember that when looking at these modes that bonding can include two or more Ethernet channels. It is not limited to just two.

The mode is set view the modprobe command or, more commonly, is simply inserted into the /etc/modprobe.conf (or /etc/modules.conf) configuration file so that it is configured every time that the Linux Bonding Driver is initialized.

Mode 0: Round Robin.  Transmissions are load balanced by sending from available interfaces sequentially packet by packet.  Transmissions only are load balanced.  Provides load balancing and fault tolerance.

Mode 1: Active-Backup. This is the simplest mode of operation for bonding. Only one Ethernet slave is active at any one time. When the active connection fails another slave is chosen to take over as the active slave and the MAC address is transferred to that connection. The switch will effectively view this the same as if the host was disconnected from one port and then connected to another port. This mode provides fault tolerance but does not provide any increase in performance.

Mode 2: Balanced XOR. This is a simple form of load balancing using the XOR of the MAC addresses of the host and the destination. It works in general fairly well but always sends the packets through the same channel when sending to the same destination. This means that it is relatively effective when communicating with a large number of different remote hosts but loses effectiveness as the number decreases becoming worthless as the value becomes one. This mode provides fault tolerance and some load balancing.

Mode 3: Broadcast. This mode simply uses all channels to mirror all transmissions. It does not provide any load balancing but is for fault tolerance only.

Mode 4: IEEE 803.ad Dynamic Link Aggregation. This mode provides fault tolerance as well as load balancing. It is highly effective but requires configuration changes on the switch and the switch must support 802.3ad Link Aggregation.

Mode 5: Adaptive Transmit Load Balancing. This mode provides fault tolerance and transmit (out going) load balancing. It provides no receiving load balancing.  This mode does not require any configuration on the switch.  Ethtool support is required in the network adapter (NIC) driver.

Mode 6: Adaptive Load Balancing.  Like mode five but provides fault tolerance and bidirectional load balancing.  The transmit load balancing is identical but receipt load balancing is accomplished by ARP trickery.

January 21, 2007: MLK Does a Body Good

Today is Martin Luther King Jr. Day and that means that the markets are closed and I don’t have to go to work.  Yay!  Dominica does not have the day off, though, so it is only a holiday for me and Oreo.  Oreo wishes that he could go to daycare, though, because he has way too much energy and wishes that he had an opportunity to burn some of it off.

When Dominica got ready to go to work this morning Oreo jumped out of bed and tried to go with her.  But she told him to go back to bed and to snuggle with me so he did, reluctantly.

I took my “day off” seriously and did pretty much nothing.  Over the weekend my Ruby script doing the massive migration of Netgear firewall log data from IMAP based email to a MySQL database finally wrapped up at around one million one hundred thousand rows of data.  There is still more being generated every day and I have a bit of old, archived data that I need to figure out how to move as well.  But I have made a good start on it at least.  My email mail box has gone from 195MB to 17MB.

I got to play some Bard’s Tale today but not as much as you might have guessed.  I read some magazines.  Did a tiny bit of cleaning.  Hung out with Oreo quite a bit.  He was very needy today as far as attention went.  He isn’t tired at all and even when he was laying around today he was almost never sleeping.

I tried to have lunch with Susan  and Kevin today but Susan got stuck in a meeting and Kevin didn’t wake up until after two in the afternoon.  So I just had lunch alone at Food for Life.

Dominica got home early and I had to spend my evening taking a midterm exam for my class on project management.  I had to wait for Dominica to get home so that she could handle incoming phone calls (there were two) and deal with the needs of the dog (he ended up needing to be walked again, fed twice, played with once or twice and more just during the test even though I had walked him just before starting it.)  Dominica got home around five thirty and I started the test, all loaded up with caffeine, at almost exactly six o’clock.  The test was to run up to three hours to answer six questions.  So this was to be the majority of my evening.

One topic that we have discussed at length in my project management class and that has come up on this exam (I can mention this now as the exam closed at midnight) is the topic of Measurable Organizational Value.  I decided that I wanted to seriously address the concept of MOV as the book that we are using as our class textbook is based around it and research online seems to suggest that the term only exists for this class even though it is taught as if it was a standard industry concept.  I think that MOV is an important “academia” mistake made by managers who learn management from a book and never work in an actual business and I think that the author really leads people astray.  So I decided to post online my overview of Measurable Organization Value.  It took less than five hours from the time that I posted it until I was on the front page of Google as a top hit for the term and the very top hit for anything less than a three word definition or a link to a review or place to buy the book with that title.

About two hours into the test Oreo got very upset that I was unable to spend time with him.  He kept trying to talk to me but I kept deferring him to Dominica.  He was very upset and didn’t know how to tell us what he needed and he ended up going into a panic and having an accident that involved peeing not just on the floor but onto my chair that I was sitting in while taking the test.  It was obvious that he was really scared.

So I had to take time out of my test to deal with that cleanup!  What a mess.  Poor little Oreo.  He had a really rough night.  I had to take him for yet another walk immediately after finishing my test as well.

After wrapping up my test Dominica, Oreo and I just watched a few episodes of the first season of <em>The Fresh Prince of Bell Air</em>.  I haven’t seen that show in a very long time.

Back to work tomorrow.