FreeBSD and Multipath

I didn’t find any blog posts of discussions on FreeBSD and multipath (for storage) that wasn’t a man page.

That means it is up to me to write about it :)

Hardware

CPU

Machine class:	amd64
CPU Model:	Intel(R) Xeon(R) CPU           E5530  @ 2.40GHz
No. of Cores:	16

Memory

Total real memory available:	65511 MB
Logically used memory:		3945 MB
Logically available memory:	61565 MB

Storage

The storage is a large ~90TB Enterprise class Fibre Channel array, a Data Direct Networks S2A9900. Connected to that are two, dual port QLogic 2532 8Gb HBA’s. We also have two SSD drives (configured as a RAID1 device) for the ZFS Intent Log.

The storage array was configured from 120 1TB, 7200RPM Hitachi drives. It has 12 volumes in total, composed of 10 of the SATA drives (1 parity, 1 Spare), or ~7TB.

The S2N9900 has two controllers, one controller is responsible for LUN’s 1-6, the other controller is responsible for LUN’s 7-12. every LUN is presented to all four Fibre Channel ports. This got a little messy, trying to sort out 48 raw disk devices takes some patience and a decent attention span…

yeah, I did make a few typo’s here and there, thankfully creating and clearing disk labels is easy.

# camcontrol devlist|grep lun\ 0
                at scbus0 target 0 lun 0 (pass0,da0)
                at scbus1 target 0 lun 0 (pass6,da6)
                at scbus4 target 0 lun 0 (pass24,da24)
                at scbus5 target 0 lun 0 (pass30,da30)
# camcontrol inquiry da0 -S
108EA1B10001
# camcontrol inquiry da6 -S
108EA1B10001
# camcontrol inquiry da24 -S
108EA1B10001
# camcontrol inquiry da30 -S
108EA1B10001
# gmultipath label -v DDN-v00 /dev/da0 /dev/da6 /dev/da24 /dev/da30
Done.
# gmultipath status
             Name  Status  Components
multipath/DDN-v00     N/A  da0
                           da6
                           da24
                           da30

Now, to do that 12 more times…

Whew, hard work!

Now, to create a simple ZFS volume across all 12 luns:

# zpool create zfs multipath/DDN-v00 multipath/DDN-v01 multipath/DDN-v02 multipath/DDN-v03 multipath/DDN-v04 multipath/DDN-v05 multipath/DDN-v06 multipath/DDN-v07 multipath/DDN-v08 multipath/DDN-v09 multipath/DDN-v10 multipath/DDN-v11 log mfid1

# zpool status
  pool: zfs
 state: ONLINE
 scrub: none requested
config:

	NAME                 STATE     READ WRITE CKSUM
	zfs                   ONLINE       0     0     0
	  multipath/DDN-v00  ONLINE       0     0     0
	  multipath/DDN-v01  ONLINE       0     0     0
	  multipath/DDN-v02  ONLINE       0     0     0
	  multipath/DDN-v03  ONLINE       0     0     0
	  multipath/DDN-v04  ONLINE       0     0     0
	  multipath/DDN-v05  ONLINE       0     0     0
	  multipath/DDN-v06  ONLINE       0     0     0
	  multipath/DDN-v07  ONLINE       0     0     0
	  multipath/DDN-v08  ONLINE       0     0     0
	  multipath/DDN-v09  ONLINE       0     0     0
	  multipath/DDN-v10  ONLINE       0     0     0
	  multipath/DDN-v11  ONLINE       0     0     0
	logs                 ONLINE       0     0     0
	  mfid1              ONLINE       0     0     0

errors: No known data errors

Results

These results wre obtained from two similar servers. The other server is using a Winchester Systems Storage array, and has 24GB of system memory. The Winchester Storage is ~40TB of 2TB SATA disks:

Another RAID array, just for a comparison

I used IOZone for the test (iozone -a). The default iozone test is using 64k files to 512MB files, and since I’m trying to see how the server might actually react to the real worl, I’m okay with this (ie, I fully understand that a LOT of caching is taking place, and I want that for right now).

Forward Re-Write

Forward Re-Read

Forward Read

Forward Read


Backwards Read


Random Read


Re-Read


Rec? Re-Write

Write


Strided Read

The S2N9900 is a pretty nice device. Although you have to use TELNET (yeesh, couldn’t they spend a few more bucks on a small ARM processor and use ssh?), the controllers have a decent command line environment with HELP pages. What is also nice is the company provides the documentation for their products for free, and no registration is required. Good Job!

As far as raw read and write speeds, that is hard to nail down. I’ve been using IOZone, and when I run that, and take a look at ‘zpool iostat 1′, the ZFS Pool stays at a constant 200MB/sec for writes. I’ve seen in pop up higher, like 250MB to 500MB, but 200 seems to be the ceiling. I’ve done with and without a dedicated log device, with and without gmultipath, and finally, using the SSD RAID1 as a L2ARC cache device. All results are nearly identical. Reads are pretty crazy though, with 64GB of system memory, reading a file is nearly 1GB/sec.

Stuff and Things

I don’t have a central theme with this post, but I wanted to at least do something (it has been a while).

Packet Filter

Based on Chris’s “Falling in love with pf(4)” google status, I decided to take the plunge and move off of ipfw(4) to pf(4). I’m not at the point where I could write my one filter, however, I do feel I at least understand what is happening here. I also took the time to update all my ports, so I’m even running PHP 5.3.2, the latest WP release and about 600 other installed ports (Yikes, I’ve got a LOT of stuff on this server!).

I’ve always built my own kernel, at least on my home server, so the first thing to do is sync my /usr/src tree:

$ sudo su -
root# csup ~/bin/src-supfile
...
root# vim /usr/src/sys/amd64/conf/BLACKHOLE
# pf
device          pf
device          pflog
# pf's QoS - ALTQ
options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Required for SMP build

root# cd /usr/src ; make -j8 buildkernel && make installkernel && reboot

I use tcsh, a C Shell variant, and I find the AND (&&) operator really useful to chain commands together but I require that they succeed. This way, if my build fails, it will abort and not proceed with the install and reboot.

Now that I have a updated kernel with PF enabled, I had to steal Chris’s configuration:

/etc/rc.conf

root# vim /etc/rc.conf
#
# Packet Filter
#
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"

#
# Unused, pf replaces all of this
#
#natd_program="/sbin/natd"       # path to natd, if you want a different one.
#natd_enable="YES"                # Enable natd (if firewall_enable == YES).
#natd_interface="em0"               # Public interface or IPaddress to use.
#natd_flags="-u -s -m"                   # Additional flags for natd.
#firewall_enable="YES"
#firewall_script="/usr/local/etc/rc.firewall"
#firewall_logging="YES"

/etc/pf.conf

root# vim /etc/pf.conf
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# cshumway@titan-project.org wrote this file. As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return Christopher Shumway
# ----------------------------------------------------------------------------
#
# pf.conf
ext_if="em0"
int_if="em1"
lan_net="192.168.2.0/24"
open_ports="{ domain, ssh, http, https }"

# options
set skip on lo0
set skip on $int_if
set limit states 25000
set loginterface $ext_if
set state-policy if-bound

# scrub traffic
scrub in all

# NAT
nat on $ext_if from $lan_net to any -> ($ext_if)

# upnp redirection
rdr-anchor "miniupnpd"
anchor "miniupnpd"

# antispoofing
antispoof for $ext_if

# rules start here
block in
pass out on $ext_if keep state
pass in on $ext_if inet proto { tcp, udp } from any to ($ext_if) port $open_ports flags S/SA keep state
pass in on $ext_if inet proto icmp

Pretty simple, and after a reboot my top process is java, and not natd(8). I can almost feel the internet becoming faster :)

Rock n Roll Owen

Unlike me, Owen still looks like a nice guy with shades on. I look like someone who would drive a black acura and cut you off...

Owen doesn't like the Paparazzi treatment!

We’ve made up, and did a publicity photo-op together

Caralyne’s Garden

Caralyne is skillful with both tending plants, and stapling things.

Dogs

Zoey and Coal sharing the morning sun

The Poisoners Handbook

I was disappointed to find out this wasn't a Oreilly "Howto" book...

What a great book! There are so many interesting aspects and topics covered here, and not just the big obvious one the title hints at.

I heard Deborah Blum talk about her new book on the Scientific America Podcast, which was great and lively, so I put this book on the top of my “Book List” that I keep handy. So, in preparation of our Oregon trip, we (the family) too a trip to our local Barnes and Noble, where within the first minute of being there, I set off the alarmed Nook eReader that was on display. Hey, I have a gift for destruction and mayhem.

The book is organized by a poison per chapter, however, there is the underlying narrative of two Chemists/MD’s/Toxicologists in NY who did some awesome work in the field of forensics. Most notably, developing tests and methodologies for detecting poisons. What is also discussed is the corrupt politicians of the time, and the still ever present jackassery of government organizations that forced Charles Norris to continually fund the NYC medical lab out of his own pocket. The best example was when the new Mayor decided wanted to show everyone he meant business on cutting down on department spending, so he took out EVERY wall clock. The created a real problem for the medical examiners who had to cite the time of death, or keep track of their autopsy’s. Actions like this cause Charles Norris, the Chief Medical Examiner, to pay for the departments supplies out of his own paycheck. This is similar to what most public school teachers have to do.

Another theme in the book was Prohibition, so there are three chapters dedicated to the two big Alcohols, Methyl Alcohol (Wood Alcohol, the industrial kind), and Ethyl Alcohol (Grain Alcohol, the good kind…).

There is a romanticized characature of Bootleggers in the media, and the view is they were sticking it to “The Man” by smuggling bathtub gin and good ol’ whiskey to Speakeasies. This was my impression of Speakeasies:

Good clean fun in a "Flower Shop"

What I didn’t really think of is that the Mob was smuggling alcohol as a means of profit, which meant they didn’t really care about providing a safe beverage, it meant using the cheapest and most widely available form of alcohol at the time. Since Prohibition shutdown legit breweries and Distileries, who specialized in Grain Alcohol, they turned to the deadly Wood Alcohol and denatured alcohol that was used in manufacturing and cleaning.

It’s all alcohol though right? I mean, what could the difference possibly be? How about when Methyl Alcohol metabolizes in your body it creates two deadly by products, formaldahide and then formic acid. What was also interesting is it takes 10 to 30 hours for this reaction to take place, so people would get drunk and die within a few days.

So, that was really bad of the boot leggers, they were making money by selling poison, so how did the governemnt respond? It the way you would expect them to, to stay headstrong on their decision and force manufaturers to put even deadlier chemicals in wood alcohol. Their rational was “If we make it less appealing, they will naturally stop drinking altogether..”.

The flip side to all of this was no matter how deadly methyl alcohol was, ethyl alcohol had it beat hands down. This is a statistics game, but people have been getting drunk and doing stupid things for centuries. That was the goal of Prohibition, to put an end to all the baggage that comes with recreational drinking: Violence, over dose, addition, health issues, etc…

The ironic part was that people drank and killed themselves with Alcohol at a higher rate during Prohibition than before of after.

The Mob wasn’t the only organization to profit from poisons. There were plenty of “legal” companies putting very unhealthy things like Thallium and Radium in all sort of cosmetics and tonics. The biggest problem with this was that Hoover wasn’t after the US Radium Corporation like he was after John Dillinger.

Just look at the products you could have bought under the guise of health back in the day:

This was prescribed as a Revitalizing tonic

Radioactive Chocolate! I'd probably eat it...

Um.. I don't really need to tell you what these are for... or do I? They go..

These are prophylactics that are fortified with radium. These are for Superman only!

I thoroughly enjoyed the other chapters, and I’m sure my buddy Jenny did as well. I mean, I could just see the look of terror as I came in every other day and talked about how Cyanide kills you, and that Ether is caustic and will leave burn marks if you are not careful… Nothing better when your co-worker who already has that “Quiet Type” look about them is reading up on poisons. So, when I read the Epilogue at the end where the author mentions that she would talk to her husband in the same way, and then he would casually slide his coffee cup out of her reach :) Jenny is safe, she drinks coffee from a travel mug.

Deborah gives great credit to Charles Norris and Alexander Gettler, as well as the staff behind them and their past and future colleges. The work Alexander did was truly amazing, the countless hours spent grinding up brain matter, boiling it down, mixing it with all sorts of acids and compounds just to detect the slightest hint of arsenic or cyanide was amazing. He also proved that the Radium Girl’s bones were radioactive by putting the bones on top of a sheet of film; the decaying radiation would show up as white spots on the file like an X-Ray does. Very mediapathic indeed!

I was sad when I read the last pages of this book, I hope there will be a follow up to other poisons like caffeine, nicotine and other radioactive substances. After all, its not always the compound that makes a poison, but the amount. Life will eventually kill you, it typically takes more time.

Valhalla Rising

Valhalla Rising

I haven’t felt the urge to post about movies recently. A lot of that comes from the lack of good movies, ones that might get me excited enough to spend a few minutes and collect my thoughts so this blog doesn’t turn into illegible techie gibberish. Here is one that I sort of liked though.

Here is the thing, when commit an entry on this blog about a movie, there are two things that I think about:

  1. I want people to share my excitement and see this movie
  2. I don’t want to spoil anything

What I’ve come to realize over the years, talking with people about movies, is that I’m WAAAAAY off the spectrum of what normal people consider “good”. Most of the movies I’ve blogged about here are from a different country, and might be considered “art house”. The combination of these two elements quickly eliminates said movie from someones list. That is OKAY, and I’m not going to act even more pretentious because I watch different movies than you, and keeping that in mind I’m going to write a little more content about the movies I watch because you may not want to see them anyway :)

I saw an image of this movie over a year ago, and the image was essentially what you see in the poster above,  of the main character “One-Eye” looking poised and ready to kill/mame/fight. My expectations were immediatly set, and they were high.

Fast forward to the other night, when I finally get to see the full featured film behind that one image, and my impression is mixed. It is stunning visually, and is reeks of something you would watch in school. It comes off more allegorical than your typical monomyth story. Its downfall is those very two points, I was really looking forward to a near mindless action flick with a good setting and an interesting main character.

Valhalla Rising starts its first chapter (yes, the movie is broken up into 6 parts, or chapters) in a Scotland, it is cold and brutal. One-Eye is a slave, forced to fight. Though “forced” might be the wrong term here, because while he eventually kills his captors, he seems content with playing by the rules. He sits quietly in his cage, and after a fight, he promptly presents his wrists so he may be cuffed again. He is also incredibly vicious when fighting, and his owners have to tie him by the neck to a post. With his missing eye, and his unnervingly proficient fighting skills he may actually be a representation Odin, and the film makes a few allusions to his mysterious origins.

One-Eye dreams of events that will happen to him. His first dream is of him finding an arrowhead in a river he is allowed to rinse off in. There doesn’t seem to be any sort of epiphany that accompanies these visions, he seems to just accept them and follow them through, much like his gladiator-esque fights. With this Arrowhead, he escapes and kills everyone save the small boy who tended to him.

The boy, now without any support, decides to follow One-Eye. They come across a group of fervent Crusaders, who immediately ask the two if they are tribesmen or good god-fearing Christians… As the boy gazes at the smouldering pile of bodies, he wisely says “Christians”. After some posturing and a bit of a sales pitch by the Crusaders, One-Eye and the child go with the Crusaders to Jerusalem to fight for the Holy Land.

They never reach Jerusalem, but instead, the America’s (Canada perhaps). Shipwrecked, isolated, and starved, the crew starts to degenerate and turn on One-Eye and the Boy. Then there is the indigenous Native Americans, who the Chief Crusader is intent on conquering for God after some of the crew are slain. One-Eye has another vision, and this time it is of their death. Just as before, he acts the vision out even though he knows the final outcome.

Even though I was expecting something between Casino Royal and Gladiator (Hey, One-Eye was the bad guy in CR, I was hoping for a similar pace m0vie), and I got what would have been an English assignment, I’m still thinking about the movie and it’s themes.

Creating an Audio Bootleg from YouTube

Tools required:

  • The internet
  • A quality *nix OS (FreeBSD in this case)
  • youtube-dl, available in FreeBSD under ports/www/youtube_dl/
  • ffmpeg, available in FreeBSD under ports/multimedia/ffmpeg/

First thing is first, find a really cool youtube clip. If you dont know of one already, use a Buckethead Song (Volume warning, this clip was mixed “hot”, so turn your speakers down):

Watch the drummer (Bryan Mantia) go crazy in the background, pretty intense.

Now, use ‘youtube-dl’, which is pretty simple, the main argument it accepts is a URL of the youtube clip in question, and it saves it as a Flash Video file.

[server] 3:41pm: ~>youtube-dl 'http://www.youtube.com/watch?v=61k041I4aEo'
[youtube] Setting language
[youtube] 61k041I4aEo: Downloading video info webpage
[youtube] 61k041I4aEo: Extracting video information
[download] Destination: 61k041I4aEo.flv
[download] 100.0% of 8.04M at   57.33k/s ETA 00:00

Next, use ffmpeg to save the audio stream as a mp3 file:

[server] 3:45pm: ~>ffmpeg -i 61k041I4aEo.flv -ab 128000 -ar 44100 interworld_and_the_new_innocence.mp3
FFmpeg version 0.5.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on May  8 2010 15:43:57, gcc: 4.2.1 20070719  [FreeBSD]

Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 29.92 (359/12)
Input #0, flv, from '61k041I4aEo.flv':
  Duration: 00:03:38.24, start: 0.000000, bitrate: 306 kb/s
    Stream #0.0: Video: flv, yuv420p, 320x218, 242 kb/s, 29.92 tbr, 1k tbn, 1k tbc
    Stream #0.1: Audio: mp3, 22050 Hz, mono, s16, 64 kb/s
Output #0, mp3, to 'interworld_and_the_new_innocence.mp3':
    Stream #0.0: Audio: libmp3lame, 44100 Hz, mono, s16, 128 kb/s
Stream mapping:
  Stream #0.1 -> #0.0
Press [q] to stop encoding
size=    3411kB time=218.31 bitrate= 128.0kbits/s
video:0kB audio:3411kB global headers:0kB muxing overhead 0.000916%

Verify the file with file(1), or listen to the newly saved mp3 file over and over and over and over and over and over again.

[server] 3:45pm: ~>file interworld_and_the_new_innocence.mp3
interworld_and_the_new_innocence.mp3: Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, Monaural

Mt. Diablo – The Quick Way to The Top

Caralyne spent the night at a friends house Saturday, so after we dropped her off the three of us drove to the peak of Mount Diablo and hung out for a bit.

I got a little queasy on the drive up, and I think Owen did too. Hiking up to the peak was easier in that respect at least :

Whew, made it to the 1K mark...


View at 1K

Owen and I playing with pebbles, a milk jug, and two planter buckets

Still fun...

Owen's showing me the drill, small rocks (ones that float) go from the bucket into the jug.

Then they go back into the bucket.

I think I almost got it down...

Oh, I'm sorry, I didn't hear you. I was busy sorting pebbles...

A hazy vista

Turkey Vultures

Back at home, Owen decided to colonize my chair, he explained that it was manifest destiny, and he'd be willing to give the chair back to me at a later date where it would be seen as a "chair"-itable thing to do.

Now he's leaving my chair, but only to leave it unguarded and defenseless

Great, now I've got a hyper Aussie in my lap :)

A hyper Aussie that likes the camera...

See, what a camera hog

Zoey seems bored of our antics

Gibson SG work

Last month when I helped my Friend Glenn,who now works at An Olde Town Tattoo Parlour in Monterey, move he was cool enough to lighten his load by giving me a very cool cream and black Gibson SG. The original heavy metal guitar made popular by Toni Iommi and Angus Young.

The guitar’s neck was broken at the body, and thankfully someone who knew what they were doing successfully glued it back on. Glenn put some heavy .11 gauge strings on it to keep a good amount of tension to help maintain structural integrity. I normally play with .10′s, so its really fun playing with the heavy strings and then switching back to my strat. I’ve decided to keep the heavy strings, and even down tune to D and C# just for fun. Keeping that in mind, I went ahead and picked up two Dimarzio X2N humbuckers, and since most of the brass parts on the SG went through some heavy usage, I also picked up a new tail-piece, bridge, and a new all black faceplate.

Replacing pickups is pretty easy, it required a little (de)soldering but that is the hardest part. What probably took me the most time was figuring out HOW I was supposed to re-wire the new 4 wire X2N pickups in a setup that only had 1 wire…

It seems modern humbuckers are REALLY fancy, and if you have a 5-way selector you can activate them in different combinations. Whereas the SG pickups had only 1 loop for the humbucker, the DiMarzio’s had a north loop and a south loop, and you could either wire them in series or parallel. There is no right way, its a matter of preference I guess, but since I’ve never hear either one, I chose a guide I found on Semour Duncan’s site.

I should point this out, even though I bought DiMarzio Pickups, I actually found more useful documentation on Seymour Duncan’s site. Not only did they have a really nice support section (http://www.seymourduncan.com/support/wiring-diagrams/), they also have color-code diagrams for each pickup vendor. So a big kudo’s for SD, maybe I’ll get those next time.

Okay, onto the work, let’s take a look at what we are working with:
I'm going to need another wall mount now that I have two sweet guitars.

It is hard to see, but there is a good amount of corrosion on the pickup and the frets

The saddles look very fragile from all the wear and tear

A faded tail piece

This is where the neck was broken, but I won't tackle that here. Or ever really :)

Here are the new parts:

Two black/black DiMarzio X2N's

Old and New tail piece


Old and new bridge, which turned out to be a problem

The real work begins:

Original wiring, two Humbuckers, Two Volumes and Two Tones...


Old faceplate and pickups de-soldered and removed


Front...


Since I only have one contact point, the ground and bottom south loop are wired together, as well as the top south and bottom north. That spot-light you see is my kick ass hiking head-lamp. I haven't used mine hiking yet, but it helped me out a LOT during all of this.


The Neck pickup finished...


... and the bridge pickup


Faceplate is installed with the pickups attached.

Let me just say, getting the pickups screwed on to the face plate was HARD. There are two tension springs that keep the pickup stationary, and getting those compressed so the screw could reach the faceplate took a lot of effort. I almost lost two of the four twice since they would shoot off while I was struggling to screw the pickup on.

New bridge and tail piece

I had a problem with the two screws that are used to adjust the bridge, the were slightly bigger than the old screws. I actually had to re-drill the holes for them, and this makes me a little uncomfortable. If it ever needs to be replaced, there is now a good chance the holes will have to be filled and re-drilled. Oh well.

Another shot


After cleaning the neck with mineral oil (finally found a use for that stuff), I re-strung it with a new set of .11's


All done, AND it works, two sometimes mutually exclusive outcomes :)

This was a great way to spend a Saturday afternoon, working on a guitar while listening to a Buckethead/Praxis playlist on Pandora. I spent most of the evening playing the guitar, those new pickups are very hot! They are going to require special attention so they don’t overload the amp. The sound is killer though, nice and low, a stark contrast to the Stratocaster’s sound.

Reference Material:
2h_2v_2t_3w
color_codes

Link Aggregation on FreeBSD

I recently configured a NFS/Samba server with FreeBSD’s Link Aggregation protocol. Here is how I set it up.

FreeBSD Configuration

/boot/loader.conf

I recommend adding the if_lagg_load=YES and kern.hz=”2000″ to /boot/loader.conf.

The OS will automatically load the lagg kernel module when your network configuration loads, I prefer to explicitly set it to load.

ispfw_load="YES"
kern.hz="2000"
aio_load="YES"
hw.igb.rxd=4096
hw.igb.txd=4096
if_lagg_load="YES"

Since I am using the igb ethernet device (Intel 82575 and 82576 chipsets), I also set the max number of send and receive descriptors from the default from 256 to the maximum 4096. Give some thought to this step, increasing this will allocate more memory per interface. Since there are four in use in this setup, that is an order of magnitude higher than the stock configuration.

/etc/rc.conf

ifconfig_igb0="UP polling"
ifconfig_igb1="UP polling"
ifconfig_igb2="UP polling"
ifconfig_igb3="UP polling"
ifconfig_lagg0="create laggproto lacp laggport igb0 laggport igb1 laggport igb2 laggport igb3 128.115.132.165 netmask 255.255.255.0"
Jumbo Frames

Normally, I set a MTU of 9194 for my igb/82575 ethernet controllers.

Setting an arbitrary MTU size above the default 1500 can cause the unexpected, and decrease the stability in your environment. This configuration is using the Intel 82575 Quad Port 1000 VT adapter, which has the maximum MTU of 9194. Not all ethernet controllers support the same MTU sizes, for instance, Broadcom chipsets have a max MTU of 9022. Also, verify your switch can support Jumbo Frames, and have the ports in use set to the appropriate MTU.

Some Notes from Intel’s 8257[5-6] README:

- Only enable Jumbo Frames if your network infrastructure supports them.
- To enable Jumbo Frames, increase the MTU size on the interface beyond
1500.
- The Jumbo Frames setting on the switch must be set to at least 22 bytes
larger than that of the MTU.
- The maximum MTU setting for Jumbo Frames is 9216. This value coincides
with the maximum Jumbo Frames size of 9234 bytes.
- Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or
loss of link.

Since the Cisco hardware used can be set to a max MTU of 9216, our igb interfaces can be set to 9194.

Of course, the lagg interface wont let me set a mtu higher than 1500. If anyone has additional information on this, that would be great to know.

Results

[root@laggy ~]> ifconfig lagg0

lagg0: flags=8843 metric 0 mtu 9194
	options=1bb
	ether 00:26:b9:62:ae:c8
	inet 128.115.132.165 netmask 0xffffff00 broadcast 128.115.132.255
	media: Ethernet autoselect
	status: active
	laggproto lacp
	laggport: igb3 flags=1c
	laggport: igb2 flags=1c
	laggport: igb1 flags=1c
	laggport: igb0 flags=1c

[root@laggy ~]> netstat -I lagg0 -w 1

            input        (lagg0)           output
   packets  errs      bytes    packets  errs      bytes colls
     87581     0  127400293          0     0          0     0
     85126     0  123891200          0     0          0     0
     84926     0  124237023          0     0          0     0

[root@laggy ~]> netstat -I igb0 -w 1

            input         (igb0)           output
   packets  errs      bytes    packets  errs      bytes colls
     38118     0   54749173          0     0          0     0
     35833     0   51498282          0     0          0     0

[root@laggy ~]> netstat -I igb1 -w 1

            input         (igb1)           output
   packets  errs      bytes    packets  errs      bytes colls
     12889     0   18315538          0     0          0     0
     16303     0   23159114          0     0          0     0
     27672     0   39275792          0     0          0     0

[root@laggy ~]> netstat -I igb2 -w 1

            input         (igb2)           output
   packets  errs      bytes    packets  errs      bytes colls
     23709     0   35778378          0     0          0     0
     24445     0   36901194          0     0          0     0

[root@laggy ~]> netstat -I igb3 -w 1

            input         (igb3)           output
   packets  errs      bytes    packets  errs      bytes colls
        11     0       1535          0     0          0     0
         1     0         60          0     0          0     0

Cisco Configuration

interface GigabitEthernet 8/41
 description (L5D13) laggy
 switchport                           # Required for L2 Etherchannel
 switchport access vlan 132           # VLAN assignment (optional)
 spanning-tree portfast               # Recommended
 channel-group 4 mode active          # Required assign channel # and mode
                                         see table below
 channel-protocol lacp                # Required assign lacp or pagp
 no shutdown

Verify the interface port-channel is not shutdown and add a description

interface Port-channel 4
 description Test Channel 2/22/10 laggy
 switchport
 switchport access vlan 101
 switchport trunk encapsulation dot1q
 no shutdown

This command will cause load balancing to occur for the source and destination IP addresses and applied to all Etherchannels on the switch. Other load balancing options exists.

port-channel load-balance src-dst-ip

Use the following show commands for verifying the condition of the Etherchannel

show interfaces port-channel ‘channel number’
show etherchannel port-channel
show etherchannel summary
show Etherchannel load-balance

Switch# show interfaces port-channel 4
Port-channel4 is up, line protocol is up (connected)
  Hardware is EtherChannel, address is 0017.9499.94ac (bia 0017.9499.94ae)
  Description: TEST CHANNEL 2/22/10 laggy
  MTU 9214 bytes, BW 4000000 Kbit, DLY 10 usec,
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  Full-duplex, 1000Mb/s
  input flow-control is off, output flow-control is on
  Members in this channel: Gi8/41 Gi8/43 Gi8/45 Gi8/47

Switch#show etherchannel port-channel
                Channel-group listing:
                -----------------------
Group: 4
----------
                Port-channels in the group:
                ----------------------
Port-channel: Po4    (Primary Aggregator)

------------
Age of the Port-channel   = 0d:05h:25m:33s
Logical slot/port   = 14/1          Number of ports = 4
Port state          = Port-channel Ag-Inuse
Protocol            =   LACP

Ports in the Port-channel: 

Index   Load   Port     EC state        No of bits
------+------+------+------------------+-----------
  1     11     Gi8/41   Active    2
  2     22     Gi8/43   Active    2
  3     44     Gi8/45   Active    2
  0     88     Gi8/47   Active    2

Time since last port bundled:    0d:04h:47m:26s    Gi8/41
Time since last port Un-bundled: 0d:05h:22m:14s    Gi8/47

Switch#show etherchannel summary
Flags:  D - down        P - bundled in port-channel
        I - stand-alone s - suspended
        H - Hot-standby (LACP only)
        R - Layer3      S - Layer2
        U - in use      f - failed to allocate aggregator

        M - not in use, minimum links not met
        u - unsuitable for bundling
        w - waiting to be aggregated
Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
4      Po4(SU)         LACP      Gi8/41(P)  Gi8/43(P)  Gi8/45(P)  Gi8/47(P)
Switch#show Etherchannel load-balance
EtherChannel Load-Balancing Configuration:
        src-dst-ip
        mpls label-ip

EtherChannel Load-Balancing Addresses Used Per-Protocol:
Non-IP: Source XOR Destination MAC address
  IPv4: Source XOR Destination IP address
  IPv6: Source XOR Destination IP address
  MPLS: Label or IP

Owen’s Chores and Lasagna

One of the unspoken rewards of being a parent is forcing your children to work for you. It is a delicious treat to my eyes, especially when it is a chore that I’ve handled since I was in the 3rd grade:

Mush!

The best part is, Owen still thinks the lawn mower is cool, and exciting. Even the edging tool is fun:

Owen helping Michele

Enough fun mister, back to work!

only 20 more laps around the yard to go...

No son, you cannot take a break...

He had enough of us taking pictures, so he stole the camera:

The yard looks bigger from his perspective

After all that hard work, he was tired, so it was time for a nap. I heard something odd under his crib:

That is one strange Cat5 cable...

Mini-B has taken a liking to Owens room, she like to sleep on the warm GigE switch that lives under there.

Now, time to make Dinner!

Lasagna is pretty easy to make, we even made the tomato sauce. My mom picked up a cooking book for us, so while I assembled most of the lasagna, Michele made Lemon Squares:

We got hungry and ate dessert first...

I don’t remember the recipe off the top of my head, so I won’t be doing the full good-eats style run down. It was pretty simple though, you need the following:

  • Tomato Sauce, we made ours with:
    • 3 minced cloves of garlic
    • a couple diced tomatoes
    • Tomato paste
    • Basil, finely chopped/minced
    • Then blend in a food processor
  • Lasagna shells
  • Ricotta cheese
  • Parmigiana and mozzarella cheese
  • a little milk and a little nutmeg

One problem I had was the recipe called for a 10x12x2 pan, but I only had a 9x13x2. Since always have a xterm at hand, made sure my substitute was okay:

# echo 'scale=3\n s=(10*12*2)-(9*13*2)\n s/(10*12*2)' | bc
.025

Good enough, a loss of .025% is acceptable.

Delicious fresh Parmigiana cheese!


After the pork sausage was finished, Michele was getting ready to leave. Since it is always dangerous to leave me alone, unsupervised, she verbally told me how I should layer the lasagna. I was lost about 10 seconds into it, so I asked if she could make a diagram. Sort of like when I go to the grocery store and ask for a diagram, which I finally no longer require.

My clear instructions and organized workspace


Layer 1


Layer 2


Layer 3


Layer 4, and this is where a functional OSI model stops (no one uses all 7 anyway)

Ready for the oven


Great teamwork, thanks for napping Owen!


mmmm, delicious!

My only complaint was the overall product was a little skinny. I would have liked to have more sauce, to go around as well. maybe next time I’ll add another layer.

Now, but this time, I’m sure at least two of you are saying:
Who cares about the food, where is Coal!!!

Water Table fun


His coloring is starting to change, a nice brown color for roots, and a nice black for the rest. He may loose all the silver coloring, we'll see.


He moves around to much to properly capture

Misadventures of Cole – Chapter 1

Pretend you are a dog, specifically my dog (oh if only you could be so lucky!) Coal. You’ve got that cute little muzzle with a cute button nose; but since you are such a smart little aussie, your brain-pan is bigger than your mouth. This gives your head a particular triangular shape, the kind of shape that will let you easily shove you head into a tight spot. Well, you better hope you can squeeze your whole body through, because if not, there is no way your head is backing out at this point.

Oh, you can’t? Well, better call the fire department…

He can almost taste the freedom!

Fixed, but now our cat cannot slip through

This is unrelated, I just wanted to post how funny he looks when that hair is flattened

We used warm water, he's not really cold.