Abstract
The basic model for processing packets and routing them from one hardware system to another can be extended to describe virtual packet transmission from one module to another within a single program image. Representing virtual and physical ports interchangeably and embodying their routing relations in runtime data structures makes it possible to produce object modules that can be deployed in a variety of roles without recompilation. We describe a fielded system that combines (a) application virtual ports, (b) a software tool for specifying packet routing to virtual and physical ports, (c) an advanced linker that encapsulates routing actions in runtime tables within a single multi-application image, and (d) a table-driven dispatcher that effects control flow and packet routing. We present results that show performance advantages and demonstrate the usability and security benefits of reconfiguring and redeploying programs in object module form.
Similar content being viewed by others
References
Comer, D.: Network Systems Design Using Network Processors, Intel 2xxx Version. Prentice Hall, Upper Saddle River, NJ (2006)
Intel Corporation: Intel Microengine C Compiler Language Support: Reference Manual (Order number 278426-004) (2001)
Applied Micro Circuits Corporation, Inc.: nPsoft Software Development Environment. Product sheet. https://myapm.apm.com/MyAMCC/retrieveDocument/SNP/nPsoft_. Accessed 12 Dec 2012
CloudShield Technologies: CS-2000 System. Product datasheet. http://www.cloudshield.com/platform/CS2000.asp. Accessed 14 Dec 2012
International Business Machine Corporation: IBM BladeCenter PN41. Product datasheet. IBM Systems and Technology Group, Route 100, Somers, New York, USA 10589 (2008)
Jungck, P., Duncan, R., Mulcahy, D.: packetC Programming. Apress, New York, NY (2011)
Duncan, R., Jungck, P., Ross, K., Mulcahy, D.: Reference variables for dynamic, reliable packet operations. In: Proceedings of the 9th IFIP International Conference on Network and Parallel Computing, (Gwangju, South Korea), pp. 48–60 (2012)
Johnson, E.K., Kunze, A.R.: IXP 2400/2800 Programming: The Complete Microengine Coding Guide. Intel Press, Hillsboro, OR (2003)
Duncan, R., Jungck, P., Ross, K.: packetC language and parallel processing of masked databases. In: Proceedings of the 39th International Conference on Parallel Processing, (San Diego), pp. 472–481 (2010)
Duncan, R., Jungck, P., Ross, K., Tillman, S.: Packet content matching with packetC searchsets. In: Proceedings of the 16th International Conference on Parallel and Distributed Systems, (Shanghai, China), pp. 180–188 (2010)
IXIA: XM12 High Performance Chassis: Product Datasheet. http://www.ixiacom.com/pdfs/datasheets/ch_optixia_xm12.pdf (2014). Accessed 28 July 2014
Wagner, J., Leupers, R.: C compiler design for a network processor. IEEE Trans. CAD 20(11), 1–7 (2001)
George, L., Blume, M.: Taming the IXP network processor. In: Proceedings of the ACM SIGPLAN ’03 Conference on Programming Language Design and Implementation, San Diego, CA, USA, ACM, pp. 26–37 (2003)
Vin, H.M., Mudigonda, J., Jason, J., Johnson, E.J., Ju, R., Kunze, A., Lian, R.: A programming environment for packet-processing systems: design considerations. In: Network Processor Design: Issues and Practices, vol. 3, pp. 145–173. Morgan Kaufmann, Burlington, Massachusetts (2004)
Cavium Networks, Inc.: Octeon multi-core processor family. Retrieved December 13, 2012 from http://www.cavium.com/OCTEON_MIPS64.html
Integrated Device Technology, Inc.: IDT strengthens collaboration with AMCC by delivering NSE development kit with AMCC network processor evaluation system. Retrieved December 12, 2012 from http://ir.idt.com/releasedetail.cfm?ReleaseID=414510
Melnick, R., Morris, K.: AMCC nPcore NISC architecture. In: Franklin, M.A., Crowley, P., Hadimioglu, H., Onufryk, P.Z. (eds.) Network Processor Design: Issues and Practices, vol. 2, pp. 327–342. Morgan Kaufmann, Burlington, Massachusetts (2003)
Yamagiwa, S., Sousa, L.: Modelling and programming stream-based distributed computing based on the meta-pipeline approach. Int. J. Parallel Emerg. Distrib. Syst. 24(4), 311–330 (2009)
Wikipedia: GStreamer, http://en.wikipedia.org/wiki/Gstreamer. Accessed 26 April 2012
Beynon, M., Ferreira, R., Kure, T., Sussman, A., Saltz, J.: DataCutter: middleware for filtering very large scientific datasets on archival storage systems. In: Proceedings of the Eighth Goddard Conference on Mass Storage Systems and Technologies/17th IEEE Symposium on Mass Storage Systems, National Aeronautics and Space Administration, NASA/CP 2000-209888, pp. 119–133 (2000)
Acknowledgments
Peder Jungck, Matt White and Dwight Mulcahy developed the basics of the multi-application approach. Key implementers included Matt White, Dwight Mulcahy, Minh Nguyen, Mary Pham and Jim Frandeen. Ralph Duncan, Peder Jungck and Dwight Mulcahy designed the packetC language. Ken Ross created and timed the applications used in this paper. Kareem Khan contributed key insights to the paper.
Author information
Authors and Affiliations
Corresponding author
Additional information
Ixia is a trademark of Ixia in the United States and/or other countries. NetLogic is a trademark of NetLogic Microsystems, Inc. in the United States and/or other countries. Xilinx and Virtex are trademarks of Xilinx Inc. in the United States and/or other countries. VMWare is a registered trademark of VMWare, Inc. vSphere is a trademark of VMWare, Inc. ESX is a trademark of VMWare, Inc.
Rights and permissions
About this article
Cite this article
Duncan, R., Jungck, P., Ross, K. et al. Using Packet Processing Object Modules Interchangeably as Stand-Alone Programs or “Multi-app” Components. Int J Parallel Prog 44, 26–45 (2016). https://doi.org/10.1007/s10766-014-0332-7
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10766-014-0332-7