Posts Tagged ‘integration’
How to connect an iPod to a Cisco Call Manager Express System
Control Group has rolled out a number of Call Manager Express systems for our clients, and one issue that frequently comes up is what to do with callers on hold. While most companies – ours included – work to avoid putting people on hold, it does happen. The easy options offered by the Call Manager Express are a double beep at regular intervals or a ‘Music on Hold’ file that you can store in the host router’s flash memory. I have received many complaints about the beeps and even a single repeating music file can be insufficient for some users.
When I started searching for a way to connect an audio feed to a gateway router, I found that there were no great turnkey solutions. What I did find is that there is a way to make use of an available FXO port to bring a live feed into the system with some inexpensive parts. The solution I have deployed requires a surface mount RJ 45, a chassis mount RCA jack, and a stereo 1/8″ mini to RCA adaptor. All of these pieces can be found at a nearby electronics parts store and purchased for under $20. The FXO port and an iPod will set you back some but if you want easy control of your hold music it may be worth it.
Build the Adaptor
To make the adaptor, open up the surface mount box and figure out how you will attach the RCA jack. In one case I used a drill bit to make a hole for it, in another case I found a form factor where the notch for a cat 5 cable fit the connector perfectly. You may also find a general purpose surface mount with modular fittings where an RCA “snap in” would snap right in.
Once you’ve sorted that you will need a pair of wires from either a solid or stranded piece of cat 5. Punch these down to pins 4 and 5 of the RJ45 and solder the other side to the RCA jack.
When you are done it should look like this.

Adaptor wiring detail. Though the jack in this configuration is an RJ 45 you can use a standard RJ11 phone cord to connect between the adaptor and the FXO port.
Configuring the Voice Gateway
Configuring the voice gateway is pretty straightforward:
1. Create a DN for the MOH call out with an unused multicast address
ephone-dn 274
number 1 no-reg primary
moh ip 239.12.13.1 port 2000 out-call 899
2. Configure the available FXO port remain open to the iPod
voice-port 0/3/3
signal loopStart live-feed
input gain 2
description To MoH Live Feed
3. Create a dial peer to connect to the FXO port
dial-peer voice 55 pots
destination-pattern 899
port 0/3/3
4. Configure CME to use the multicast for MOH
telephony-service
multicast moh 239.12.13.1 port 2000
Then Shut/No shut the voice port to invoke the change.
I have been using one of the built in USB ports on our gateway here at Control Group to power the iPod which turns out to be very convenient.
Safety and Other Considerations
There are some very important caveats.
- The adaptor I describe is potentially dangerous. If you were to connect an iPod to a POTS line or an FXS port feeding a battery signal you could damage the iPod or the device connected to it. You could also receive a serious electrical shock.
- The use of copyrighted material for Music on Hold can be a violation of the rights of the copyright owner.
- The adaptor will only work with one channel of audio from the iPod. If you use a mono 1/8″ to RCA cable it will short out the other channel.
These issues need to be minded if you would consider this solution. Also, keep in mind that people’s taste in music varies widely. Implement Music on Hold and you will find out just how much!
Miles Green is a Senior Network Engineer at Control Group and worked as a Musician and Recording Engineer in a previous life.
A Look at Amazon’s Elastic Load Balancer
We have been doing some work with with Amazon’s Elastic Computing Cloud (EC2) which allows us to create virtual machines in the cloud in a few seconds. These are great for hosting websites, and what’s cool about them is that if you get Slashdotted or experience a similar unexpected spike in traffic you can create new hosts immediately. Recently Amazon added a new service called Elastic Load Balancing (ELB) which can distribute load across hosts. We’ve been looking at this for some of our recent development and infrastructure projects.
I just read this description of how ELB works by Shlomo Swidler from his Cloud Developer Tips blog. It’s a great reference.
You pay for ELB by usage just like everything else at AWS. From Amazon: “You are charged at $0.025 per hour for each Elastic Load Balancer, plus $0.008 per GB of data transferred through an Elastic Load Balancer.” For reference, on a deployment project in 2008 our Engineering team used a Cisco load balancer which I imagine cost a few thousand bucks.
Cost isn’t the only advantage. These can be created and destroyed quickly and remotely, allowing us to work more efficiently and spend less time visiting data centers in the middle of nowhere. This leads to improved quality of service for our clients as we can spend more time consulting on future technology growth plans and less time troubleshooting servers in cold, loud data centers.
This blog post brought to you by the iced coffee I am enjoying in the comfort and quiet of my office while deploying virtual machines!
Testing Storage Performance with iozone
As I’ve mentioned in previous posts about testing storage performance with lmdd and bonnie++, different applications require different characteristics from storage to provide the best performance. I’ve highlighted some tests that are good for large streaming files like video, and small file transactions like databases or mail servers. Today I want to look at a tool that runs a series of tests in many different ways to provide you with a holistic view of what the storage can and can’t do.
This tool is called iozone. iozone is open source and runs on a ton of operating systems (including Windows). It runs several tests which can take some time to complete but provide the best overall view of the capabilities of a piece of storage. For instance, iozone runs a write test with files of different sizes and with different size records (the amount of data written at a time). It does this over and over again with writes, reads, random writes, random reads, and so forth. Since it’s running all these tests you can see what sorts of operations will have good performance and which ones will not perform so well. Check out the iozone documentation here.
One really great thing about iozone is that the output it generates can be easily placed in a spreadsheet program like Excel to generate a great 3d diagram describing your storage. Here’s a diagram I generated from some tests on a Linux server.

Results of a write test with iozone
This particular server performed quite well with large files and a record size around 1 MB (interesting to note, this is the same storage from the lmdd post. Notice that the parameters I tested with there are the same as the best write that this disk can do according to iozone!).
If you’ve been following my posts on storage performance testing I hope you’ve learned about some new tools that you can use to see what’s going on. I use these on every deployment to make sure we’re giving our clients solutions that they can depend for performance and reliability. As always, let me know if you have any questions about these tools. Happy testing!
How The Cloud is Changing IT Services
Were getting ready for an event with Google and Mozy that we have dubbed “CloudSourcing”, taking a note from Gartner and tweaking it a little.
Tom Mills from Google and Sean Finnegan from Mozy will be giving an in-depth review of their offerings and how they fit into an agile, post-recession office technology strategy.
I’ll be giving a brief overview of how I think we arrived at this point in IT and what it means for creative, innovative firms that are trying to do more with less.
In an effort to get my thoughts together and get some feedback, I’m using this blog post as a draft for the event.
Let me start off by giving a brief overview of our services, and then a little history about the evolution of our offerings:
We provide a number of technical services for our clients in the areas of infrastructure, application development, and industry-focused workflow consulting. As this is New York, we work with a number of creative firms; media, architecture, publishing, and design companies, as well as some key clients in the financial sector. We strive for long-term relationships with our clients, many of whom we’ve worked with for close to a decade. We have installed and managed hundreds of servers, network devices and application suites, but more recently we’ve been focusing on helping our clients select, migrate to, integrate, and manage Cloud-based services.
Since the 1990s and the introduction of pervasive bandwidth, we’ve gone through a number of permutations of the remote server/client model, and much has been written about the benefits and the irony of the shift back to the mainframe/thin client structure of the 1960s. Now everyone is talking about the future of ‘The Cloud‘; a vast array of computing resources, abstracted and presented as a single source to the consumer.
At the turn of the century, we found most small to mid-sized businesses with a pure Local Area Network (LAN), typically comprised of in-house mail – most likely Exchange – and a few other local services: file, print, etc. A lot of these firms had an internal IT staff or a dedicated consultant to manage their servers, tape backup, networks, and desktops. Only a few were pushing the envelope by leveraging Application Service Providers (ASPs) to deliver back office services.
The risks with this situation were obvious. These systems mostly depended on a single Internet connection, a single building, and a single individual, prone to career changes and untimely vacations. Remote access to these in-house services was expensive to do right and applications rarely worked as well remotely as they did in the office.
Over the next five years, we saw a gradual shift towards ‘Hosted Applications’. This typically came in the form of a service provider taking a LAN-based solution like Exchange or SharePoint out of the office and putting it in a data center. In conjunction with this change, we saw the IT services industry begin to shift its focus from in-house IT, or consultants, to managed services – companies providing regular systems management remotely.
There were some benefits to this offering: critical applications were not dependent on intermittent Internet connections or over-heated server rooms. Flaky consultants were traded for predictable management services and cost became as regular as the electric bill.
But there were still problems. We had the same old model of doing things, only it was moved out of the business’s office and into the provider’s. Services that were built for an onsite installation and LAN speeds were shifted to a remote location – not always producing the best results. Access to applications designed for the LAN was sometimes unacceptable because of bandwidth and latency. In a similarly narrow view of the problem, Managed Service companies focused on monitoring systems and patching software, maintaining the status quo, without looking at the big picture, or driving the business forward.
Now the next generation of IT services is coming along and delivering on the promise of on-demand, scalable solutions. These services are web-native, built for the Cloud and multi-tenant environments.
As services like Google Apps and Mozy were built for the web – not re-purposed LAN applications – they deliver exceptional performance and remain very flexible. Control Group has designed our support and project services in a similar way. Our services are built to function efficiently remotely – scaling up when our clients need it, and going away when they don’t – and also to be flexible and innovative, driving business forward rather than maintaining the status quo.
Using the cloud paradigm, we act as a single source of technology for our clients. We help them run more efficient, profitable businesses by weaving an ever growing selection of web-based services, traditional IT, and industry expertise together, to provide an flexible, competitive business platform.
Testing Storage Performance with bonnie++
Last time I posted about checking disk performance with lmdd. lmdd is great for checking streaming throughput, but what if you have a different kind of application? Every application accesses storage in different ways: with video we need to be able to provide constant throughput when writing a lot of data to the disk, but other applications may have different storage needs. For example, a database can make lots of very small changes to the data on disk in a short period of time. The best performing disk for a database will probably need to have very low seek time and good transactional performance.
bonnie++ is a series of file system tests that focuses on small files. It was designed to behave like a mail server does, creating and dealing with lots of small files (emails). bonnie++ is easy to run and outputs a CSV file that you can view with something like Excel. With the bon_csv2html command you can quickly generate html pages from the CSVs.
Here’s the output from bonnie++ running on a server:

The HTML output of bonnie++ on a Linux Server
At first glance the output can seem quite cryptic, but if we look close we can see that this provides us a great amount of information about latency and speed on different filesystem operations. I generally run this several times as I make changes to verify that the storage is providing the right performance characteristics. Tweaking a file system to make file system operations happen a few milliseconds faster may seem ridiculous, but in some environments it can make a huge difference.
Next time I’ll post about a tool that’s new to me but can test a disk in so many different ways I’m planning to run it on every system we install from now on.
Testing Storage Performance for Video with lmdd
One of the unique things about how Control Group works is that our focus is much more involved than simply putting in a solution for a client and then moving on. We work with our clients to determine how they work, so we can design IT solutions that really fit their needs. Since we have partnerships with a variety of vendors, we work with our clients to arrive at the best solutions for their business. This means we do quite a bit of research and planning before we begin a project — and then a great deal of testing during and after we install new hardware or software.
I do some work on implementing storage systems for our clients, and we’ve found that different applications have different storage requirements. For example a video post production facility — like the facility at WWE — generally needs lots of disk space that is very good at reading and writing large files at high speeds. The storage here needs to provide good streaming throughput, because high quality video files generally have high bit rates, and are being stored or played back from the disk in real-time for ingesting, editing, or playout. If the storage system is not fast enough to read or write the file in real-time, frames will be dropped. This can cause unsatisfactory media files, programs to crash, or audio and video to become out of sync.
Suboptimal read/write performance can become a huge problem. When we put in a new system this is something we need to test. I usually do the test with a tool called lmdd.
lmdd comes from the lmbench tools which are provided by Bitmover for benchmarking systems. lmdd is great for testing streaming bandwidth. In most of our engagements with video, we install a Stornext or Xsan filesystem so we’ll run our tests against this. lmdd will probably work on any filesystem that you can mount on your Mac or Linux computer (Leave a comment if you need a version for Mac OS X, I have one compiled). lmdd lets us verify exactly what the maximum number of megabytes per second we can push through the storage and point us to where we need to make changes to the hardware or software configuration. I use lmdd like this :
lmdd of=/path/to/test_file count=1g
lmdd if=/path/to/test_file
The first tests write performance and the second tests read performance. More information about the syntax is available in the manual page for lmdd. The results of the command from a server I was testing looked like this:
2147.4755 MB in 6.8003 secs, 315.7914 MB/sec
lmdd is great because it’s easy to read. This result shows I could write to the filesystem at 315 megabytes per second. That’s really fast! This is from a test with a server with a lot of RAM and a special filesystem that took advantage of that cache. When I run it on my Macbook, I get a result like this:
18342.6171 MB in 376.7685 secs, 48.6841 MB/sec
So the next time you’re interested in how your storage is performing give lmdd a shot and let me know how it goes. If you’re looking for more information about storage performance testing then stay tuned; I’ll be posting about testing storage with tools that benchmark small reads and writes next.
Advantages of Storage Networking
I was recently having a conversation with a friend and we both laughed when we thought back to the first five hundred megabyte hard drives that we had owned. Back then, the half-gigabyte drive was ridiculously expensive and physically huge. We both thought that it would be impossible to fill these drives up.
This of course was not the case. Now you’re lucky if an application can be installed in less than 500 MB, and as hard disk sizes grow, we find new ways to fill them up with applications, documents, and media. Digital files have become the most valued assets for most of our customers, so the organization, storage, and archiving of data is a serious concern.
I find that the best way to evaluate storage technologies solutions for our clients is to step back and take a look at the problems the client is looking to solve and the priorities dictated by their business needs. Usually, our clients’ storage needs require a combination of performance, reliability, disaster recovery, scalability, and manageability. Fortunately technology has stepped up to the challenge to handle the increased need for larger, faster, and more reliable storage.
Storage networking is a general term that encompasses many different technologies that provide excellent solutions to modern storage problems. A storage area network (SAN) is an architecture in which storage devices are connected in a high-speed, dedicated network and are presented to computers that are part of the same network. Using storage networking, we can accommodate our clients’ performance and reliability needs: by abstracting groups of hard drives as logical units (LUNs) we can stripe data across disks to increase speed and add redundancy by storing parity on the disks. This configuration will allow us to rebuild the LUN when a disk fails, without causing downtime or data loss.
A storage network abstracts the underlying hardware that provides storage services, providing some great advantages for disaster recovery. When we add tape libraries to a SAN we can make backups quickly and efficiently without slowing down the network or computers on it. We can also connect a SAN to another SAN that’s in a different building or even a different state. This allows us to easily replicate data to a secondary location so our clients can be up and running quickly if there is some kind of catastrophe in the data center.
Even the largest SANs will eventually get filled up with data. What happens when it’s time to increase capacity? With traditional storage, the system is shut down, new equipment is installed, and the data is migrated. This typically involves downtime and runs the risk of data loss if something goes wrong. With a SAN expansion is no problem. Since the storage services are abstracted from the storage hardware it’s easy to add capacity or replace older equipment, in many cases involving no downtime.
A SAN also provides centralized management for storage: administrators can look in one place to see the status of all storage in a data center. This allows businesses to evaluate storage health and utilization, which can prevent problems and help plan for future growth.
As data becomes a more and more important part of business strategy, it becomes critical for businesses to have larger, faster, and more reliable storage services to keep things operating smoothly. Storage networking is a core component of these strategies. I’ll continue posting about our thoughts and experiences with SAN solutions, and try to shed some light on the storage ecosystem as new technologies emerge.
Exporting Assets from Final Cut Server
Last week, I wrote about leveraging Final Cut Server as the core of a platform for asset management, approvals, and delivery. I wanted to append that post with some recent thinking and findings.
First, a quick discussion of semantics:
When you ingest a media file into Final Cut Server, it creates an asset. This asset is actually a collection of files, including the original media file, or primary representation. If the file being uploaded is a graphics or video file, Final Cut Server creates additional representations: a poster frame and a thumbnail. These are used to represent the asset’s media within Final Cut Server. If the file being uploaded is a video asset, a clip proxy representation is also generated, used for viewing the file within Final Cut Server. This representation is created by transcoding the primary representation file to a lower-resolution codec.

Asset Representations in Final Cut Server
So a video asset is actually a container that’s made up of a bunch of files. This is pretty cool, and it’s mostly transparent to the end-user in Final Cut Server. However, while these representations are customizable (codecs, quality, etc), they all generated on ingest. Final Cut Server doesn’t currently support a way to create a new representation of an asset on-the-fly and have that representation become part of the asset container.
I’m struggling with this limitation as I explore Final Cut Server/Episode Engine integration. It would be ideal if I could setup Episode integration via a Final Cut Server copy response to an Episode watch folder, and have the resulting transcoded file copied back into Final Cut Server and made a representation of the original asset. Right now there’s no way to do this, so instead we are only able to re-ingest the new transcoded file as a new asset. And there is no relationship between this new asset and the original asset from which it was created.
Frustrating, but we’re thinking about ways around this. More to come as our tests and thinking solidifies. More info on Episode Engine/Final Cut Server integration in this pdf from Telestream’s website.
Connecting the Dots with Final Cut Server
As an Enterprise Consultant at Control Group, I help lead our Broadcast, Media, and Entertainment technology consulting group. While CG employs experts in a wide variety of technologies, my area of experience and expertise is focused around Apple solutions for professional video and design. A few months ago, I wrote an article for O’Reilly on Final Cut Server that was targeted at consumers and covered the basics for professionals in the production industry. I wanted to expand on that article and share some thoughts on Final Cut Server as part of an integrated media workflow.

Final Cut Server client
Apple markets Final Cut Server as a tool primarily for Final Cut Pro users. Apple’s focus is on enabling users to manage their FCP projects and related files, providing them with automations to save time, and giving production teams a centralized system for collaboration. Beyond Apple’s sales pitch, we think Final Cut Server has real potential to play a central role in a production and distribution platform made up of a framework of connected systems.
Here’s an example of a typical broadcast infrastructure:
- Storage area network (SAN) for storage
- Media asset management system (MAM) for organizing and versioning
- Editor/artist workstations
- Producer workstations
- A transcode system for delivery
Now here’s an example of how those pieces might fit together in a broadcast workflow:
- Content from tape or tapeless media is ingested through the MAM. Metadata is added at ingest – both technical metadata (shot, tape, take, etc) and possibly contextual metadata (actor, object brands, locations).
- Data is saved to the SAN, where it is cut and crafted by editors and artists. As the content comes together, project files and new assets are saved to the SAN by editors and artists, and reviewed by producers.
- As content is completed, it is transcoded for delivery to television, tape, and the web. Web distribution might include delivery in a custom player, and/or Hulu, YouTube, Vimeo.
- Once content is in the wild, content owners need analytics tools to understand who is watching what and where.
Beyond its out-of-the box capabilities, Final Cut Server can be customized to play a key role in workflows like these. While it doesn’t include an API, developers can leverage custom responses in Final Cut Server to read and write XML and run external scripts. On its developer website, Apple provides an example of Final Cut Server integration with an external Rails application that enables the viewing and commenting of movie clips in a web browser. An example like this serves as a useful starting place when exploring building the middleware to connect Final Cut Server to other applications or platforms in a workflow.

Episode Engine Admin
For example, Final Cut Server leverages Compressor for all of its out-of-the-box transcoding. However many existing infrastructures exist using established transcoding systems, such as Telestream’s Episode Engine. By combining metadata subscriptions and watch folders in Final Cut Server with custom responses that leverage external scripts, Episode can easily be integrated as the transcode delivery component for a Final Cut Server workflow. Similarly, the ability to read and write XML to assets in Final Cut Server makes possible the development of web applications that interact with assets, and can even store information in their own disparate databases, populating Final Cut Server when appropriate.
What excites us about this are the many Final Cut Server integration possibilities that are not currently being talked about. And since Control Group marries Apple video integration expertise with a team of developers under the same roof, we’re excited to continue to innovate in this area. Give us a shout if you’d like to open up a dialog on how Final Cut Server might fit into your broadcast or production workflow.



