Apple and Cisco started partnering together — to facilitate the very best app experience for iPhone and iPad with Fast lane on corporate networks, Cisco DevNet opened a Fast lane Validation Lab for enterprise iOS developers and partners to help education on the design and build of business-critical apps, with a service to verify iOS app functionality on a Cisco infrastructure without having to spend thousands of dollars on a test bed. DevNet provides Cisco enterprise and cloud-managed Cisco Meraki infrastructure test beds for testing QoS tagging at no cost to developers! DevNet is working to expand the validation processes to include iOS 12, which now includes a total of 9 queues for Fast lane traffic flows, among other features.
In the past year, we met many iOS developers who wanted to get their applications ‘Fast Lane Validated’. For iOS developers, Quality of Service (QoS) was known to be a network responsibility and not something with much developer focus from the iOS developer point of view. While educating and consulting with them, we showed them how the “user-experience” of their app can be enhanced by QoS tags right from their application. This was very well received and developers started to inquire more about the validation process.
Understanding the various application traffic types that each application generates is the key. When you mark your app flow with QoS, it receives the right priority as it gets down the network stack inside iOS, as well as the right priority over the air and finally across the network. As part of this interaction we also coded and released an application which showcases Fast lane working in real life. This demo is available for download and access can be requested on the DevNet Fast lane page.
Not all flows need prioritizing (or for that matter, de-prioritizing). In fact, each queue is tailored for a specific type of traffic and sending a flow to the wrong queue may lead to performance issues. iOS 12 now supports 9 queues. Among them, 4 are top of mind for most developers and previously available:
- Voice (NET_SERVICE_TYPE_VO): use this queue for your real-time voice traffic. Real time means “interactive”, like a phone call. One way audio streaming or playback is not interactive (because the receiving end can buffer it), and should not be in this queue. Instead, use the best effort queue. Please also see Signaling below.
- Video (NET_SERVICE_TYPE_VI): use this queue for your real-time video traffic. Here again, real-time means interactive, like in a video call. One way video streaming should not be there (instead, put it in the best effort queue). Please also see Signaling below.
- Best Effort (NET_SERVICE_TYPE_BE): this is the default queue if you do not mark QoS. Best effort means that the device will do its best to transmit the traffic. If there is congestion, the voice and video traffic will be sent first, then the best effort traffic. Background will go next, when the air becomes available. BE goes before BK, because BE is undefined, and may be urgent, while BK was designed with “I know that this packet can be delayed a few milliseconds” in mind.
- Background (NET_SERVICE_TYPE_BK): use this queue for all non-urgent traffic, such as file-transfers, software-updates, photo-exchanges, etc. The rationale behind the background queue is to allow all urgent and default traffic to go ahead, and then utilize any residual bandwidth for this queue. The background queue is a great way to “play nicely and efficiently.”
Those are the four main queues. There are five other queues, that are less common but definitely important in certain use cases. If you are unsure, use the ‘BE’ queue as a best practice. However, using the precise and correct marking may help your app flow get in the right priority queue in the overall traffic in the cell:
- Responsive Multimedia Audio and Video (SO_NET_SERVICE_TYPE_RV): use this queue for real time video flows that do not support rate control. You can also use this queue for interactive game and control flows, or any other interactive, time-critical application that requires low delay, and that is inelastic (i.e. unable to adapt to congestion condition changes).
- Multimedia Audio / Video (SO_NET_SERVICE_TYPE_AV): use this queue for multimedia streaming (video traffic that can be buffered at destination).
- Signaling (NET_SERVICE_TYPE_SIG): use this queue for signaling traffic that relates to real time audio or video flows.
- Real-time Data (NET_SERVICE_TYPE_RD): use this queue for client/server applications, web-based transactions, Enterprise Resource Planning (ERP) applications and other applications that require a fast response, and where the client side typically sends a short message to the server and expects a larger flow from the server. Web traffic does not need to be in this queue (use best effort instead), except if it requires fast responses during a transaction phase.
- Operations, Administration and Management (NET_SERVICE_TYPE_OAM): use this queue administration and management traffic, such as remote configuration, FTP, TFTP, telnet, SNMP, or COPS traffic. Applications using this service class require a low packet loss but are relatively not sensitive to delay.
QoS on iOS uses industry standards. If you are unsure about your application traffic flow, use best effort. You can also consult RFC 4594, which provides guidance on what type of traffic should receive what type of QoS priority as well as https://www.ietf.org/id/draft-ietf-tsvwg-ieee-802-11-01.txt
Last year was all about learning from and educating partners and working alongside with them on their journey. We will continue to validate more applications in our DevNet’s Fast Lane Validation Lab. For this year, Cisco DevNet is embarking on a newer journey with Fast lane given the new traffic types that are supported in iOS 12. We will continue to enhance our lab over the next few months that further enrich experiences for our developers and developers working with Apple products used in the enterprise domain.
Looking forward to working with you all in the Fast lane. Let DevNet help you make your apps Fast lane enabled!