So after long deliberations I have decided to write this article about iperf. Let me preface this with a statement that I like iperf very much and use it very often as it has many valid uses. You can find loads of tutorials on how to use it all over the internet but this article has very different aim.Here I would like to explain proper use-cases of this tool and some limitations and caveats one should be aware of while using software based testing (which iperf is prime example of). There are many version of iperf in the wild but the topics discussed below are valid for all of them to some degree.
So I have had many conversation over the years in regards of that is MTU and how does it work and what is the relationship between frame/packet/datagram sizes. Despite the fact that this is actually fairly simple there seems to be a lot of confusion on this topic so that is why this article come about.
After writing the first article I was left with couple bits that I wanted to mention but they didn’t quite fit. So I have decided to write up a follow up where I would like to outline what I think would be the ideal process and some other notes on questions commonly asked.
This Article will be bit unusual for this blog as it is not about any technology but it is about my experience with interview process. I had the opportunity of experiencing it from both sides many times and quite intensively during the last year or so. And I made quite a few observations that I think are worth sharing.
Let me start with couple of statements that would explain the issue in broader terms. JUNOS is system based on fairly old version of FreeBSD UNIX (I think something like version 4.X). The BSD serves as the underlying layer for services that run like daemons on top of the OS. This is great for many reasons as you can do thing like separate various functions completely in daemons. Or you can use some existing BSD packages without much work allowing for faster implementation of needed features. Also BSD in general is quite good for for the way it treats the kernel/network stack (which is different from Linux). So how does this look like? In the traditional JUNOS the logic would be something like this: