Open Source for Networking: Protocol Stacks - IEEE Xplore

5 downloads 107145 Views 290KB Size Report
drivers, and TCP/IP stacks (e.g., in Linux, BSD, and Android operating ... tool for educators, researchers, and students to study network- ing protocol ... of networking, this open source approach enables instructors to ... world software development. A recent ... MAC/PHY-layer hardware and application-layer daemons.
NETWORK_GUEST_EDIT-March.qxp_Layout 1 3/27/14 12:25 PM Page 2

GUEST EDITORIAL

Open Source for Networking: Protocol Stacks

Ying-Dar Lin

Ren-Hung Hwang

O

pen source is playing an increasingly important role in the software and communications industries. In particular, open source implementations are widely available for most Internet protocols, from kernel-resident Ethernet drivers, WLAN drivers, and TCP/IP stacks (e.g., in Linux, BSD, and Android operating systems) up to user-space networked applications (e.g., web clients and proxies). Open sourced applications are arguably becoming more prevalent than proprietary closed software. Hundreds of open source networking packages have played important roles in our daily life. The same open source spirit also goes to some medium access control (MAC)/physical (PHY) hardware components and the development platforms for simulation, rapid prototyping, software defined radio, and software defined networking. There are many benefits in developing software with the open source model, and there are many software developers and communities devoting their time to tens of thousands of open source projects. Open source has also become a useful tool for educators, researchers, and students to study networking protocol designs and implementations [1]. Specifically, open source codes are ideal curricular materials to fill in the implementation part of the coursework. By interleaving live running source codes from open source projects with theoretical designs of networking, this open source approach enables instructors to teach students how to convert theoretical designs into realworld software development. A recent example is the textbook Computer Networks: An Open Source Approach (McGraw-Hill, 2011) by Ying-Dar Lin, Ren-Hung Hwang, and Fred Baker [2]. The authors utilize the freely available Linux kernel source code to effectively demonstrate the implementation of over 56 different networking subsystems. Earlier examples on exposing students to developing code for a full function database system for a database course were reported in [3, 4].

Gap Between Design and Implementation Tracing open source codes of a real system is believed to be very helpful to reduce the gap between design and implementation [2–4]. For example, Table 1 shows the list of some important source codes used in [2] to guide learners in walking through the Linux implementation of important protocols of each layer of the TCP/IP protocol stack. Reference [2] covers packet reception and transmission through the drivers, PPP, and bridging at the data link layer, packet forwarding, check-

2

Grenville Armitage

Vincenzo Eramo

sum, fragmentation, NAT, IPv6, ARP, and ICMP at the IP layer, as well as UDP, TCP congestion control, and socket at the transport layer. Besides implementations within the Linux kernel, it also covers other protocol implementations in the MAC/PHY-layer hardware and application-layer daemons. For each layer, general design issues of that layer are presented first, followed by an overview of packet flows of the open source implementation. The packet flows are call graphs which examine a packet’s reception path and transmission path of that layer. Then for each layer it interleaves protocol designs and implementations to illustrate where and how a design could be implemented.

Split into Two Issues: Protocol Stacks, and Tools and Applications Despite abundant resources and effort spent by the open source community, there is little reporting of development experiences in academic publications. This special issue on open source aims to provide a platform for sharing experiences on developing network-related open sources for a diverse community of professionals from academia, industry and independent developers. We received 70 submissions, well exceeding our expectation. Thus, we decided to split this topic into two issues containing eight papers each (an acceptance ratio of 23 percent). The March 2014 issue is on protocol stacks, and the September 2014 issue is on tools and applications. In this March issue, the first three articles focus on open source implementations of solutions for improving the router data plane performance. The next two articles introduce open source software frameworks implementing network control functions that enable the realization of a more scalable and energy-efficient Internet. The sixth article describes a survey on a well-known open source routing software. The open source implementation of authentication protocols in access networks is covered in the seventh article. Finally, the last article focuses on traffic classification. Brief summaries of the accepted articles are listed below.

Data Plane Performance “Portable Packet Processing Modules for OS Kernels” by Rizzo illustrates the dummynet network emulator and the netmap high-speed packet processing framework that have become extremely popular and widely used. Dummynet and

IEEE Network • March/April 2014

NETWORK_GUEST_EDIT-March.qxp_Layout 1 3/27/14 12:25 PM Page 3

GUEST EDITORIAL Layer

Topics

Directory

Files

Functions

Descriptions

DataLink

Receiving grames

net/core/

dev.c

net_rx_action()  netif_receive_skb()

Upon NET_RX_SOFTIRQ interrupt, kernel calls net_rx_action() which in turn calls netif_receive_skb() to process the frame.

DataLink

Sending grames

net/core/

dev.c

net_tx_action()  dev_queue_xmit()

Upon NET_TX_SOFTIRQ interrupt, kernel calls net_tx_action() which in turn calls dev_queue_xmit() to send the frame.

Network

Packet forwarding

net/ipv4/

route.c

ip_queue_xmit(), ip_route_input(), __ip_route_output_key(), ip_route_output_slow() fib_lookup(), ip_rcv_finish(), ip_route_input_slow()

Forward packets based on routing cache; if cache miss, forward based on routing table

Network

IPv4 fragmentation

net/ipv4/

ip_output.c ip_input.c ip_fragment.c

ip_fragment(), ip_local_deliver(), ip_defrag(), ip_find(), ipqhashfn(), inet_frag_find(), ipq_frag_create()

IP packet fragmentation and reassembly procedure; hash is used to indentify fragments of a packet.

Network

NAT

net/ipv4/ netfilter/

nf_conntrack_core.c nf_nat_standalone.c nf_nat_ftp.c nf_nat_protoicmp.c ip_nat_helper.c

nf_conntrack_in(), resolve_normal_ct(), nf_conntrack_find_get(), nf_nat_in(), nf_nat_out(), nf_nat_local_fn(), etc.

Perform source NAT after packet filtering and before sending to the output interface; perform destination NAT before packet filtering for packets from network interface card or upper layer protocols.

Network

ARP

net/ipv4/

arp.c

arp_send(), arp_rcv(), arp_process()

Implementation of the ARP protocol, including send, receive, and process ARP packets.

Network

ICMP

net/ipv4/

icmp.c

icmp_send(), icmp_unreach(), icmp_redirect(), icmp_echo(), icmp_timestamp, icmp_address(), icmp_address_reply(), icmp_discard(), icmp_rcv()

Implementation of ICMPv4, different types of ICMP messages are processed by corresponding functions.

Transport

TCP sliding window flow control

net/ipv4/

tcp_output.c

tcp_snd_test(), tcp_packets_in_flight(), tcp_nagle_check()

Check follow three conditions before sending out a TCP segment: (1) outstanding segments is less than cwnd (2) number of sent segments plus the one to be sent is less than rwnd (3) do Nagle’s test

Transport

TCP slow start and congestion avoidance

net/ipv4/

tcp_cong.c

tcp_slow_start(), tcp_reno_cong_avoid() tcp_cong_avoid_ai()

TCP slow start and congestion avoidance.

Transport

Socket R/W inside out

net/

socket.c

sys_socketcall(), sys_socket(), sock_create(), inet_create(), sock_read(), sock_write()

Explain how the user space’s socket interfaces are implemented in the kernel space.

Table 1. Open source implementations for TCP/IP within Linux kernel.

IEEE Network • March/April 2014

3

NETWORK_GUEST_EDIT-March.qxp_Layout 1 3/27/14 12:25 PM Page 4

GUEST EDITORIAL netmap are kernel components supporting different operating systems. In addition to technical issues, the author discusses the choices that made them popular and comments on how developing open source software relates to academic activity. “KeyFlow: A Prototype for Evolving SDN toward Core Network Fabrics” by Martinello et al. describes the experience of developing KeyFlow nodes and testing them in a networkrelated open source environment. The objective of the KeyFlow approach is to replace the table lookup in the forwarding engine by elementary and low-complexity operations. The developed prototype involves OpenFlow and Mininet 1, with modifications of the standard OpenFlow 1.0 switch as the basis for performance benchmarks. “Prototyping the Recursive InterNet Architecture: The IRATI Project Approach” by Vrijders et al. discusses the development and evaluation of a Linux-based prototype of the Recursive InterNet Architecture (RINA) that is a true new network architecture, introduced within the IRATI project to overcome some Internet problems. This article focuses on the software design required to implement a network stack in the Linux kernel. The authors motivate the placement of, and communication between, the different software components in either kernel or user space.

Control Plane Framework “DROPv2: Energy-Efficiency through Network Function Virtualization” by R. Bolla et al. presents a recent extension of an open source software framework called the Distributed Router Open Platform (DROP). DROP was originally designed as middleware for realizing extensible multi-chassis Linux software routers on top of component-off-the-shelf hardware platforms and for transparent integration of Linux network control plane applications. The authors show the extension of DROP for implementing advanced power management strategies by means of the green abstraction layer (GAL), a standard interface under consideration for standardization in ETSI. “The OpenLISP Control Plane Architecture” by Phung et al. presents an open source implementation of the control plane relative to the Locator/Identifier Separation Protocol (LISP), which appears as a viable solution to tackle the scalability issue of the current Internet routing architecture. The proposed implementation is deployed in the worldwide LISP Beta Network and includes the key standardized control plane features. The authors describe the OpenLISP control plane architecture, implementation aspects, and performance evaluation results.

Routing Suite “Introduction to the Quagga Routing Suite” by Jakma et al. describes the Quagga Routing suite as a package of Unix/Linux software implementing a number of common network routing protocols, including the Routing Information Protocol (RIP), Open Shortest Path First (OSPF), the Border Gateway Protocol (BGP), and Intermediate System to Intermediate System (IS-IS). The package also includes a routing information management process to act as an intermediary between the various routing protocols and the active routes installed with the kernel. The article studies the scalability, performance, and reliability of the code in Quagga, and gives an overview of possible uses and applications of Quagga.

Authentication “An Open Source Implementation of the Protocol for Carrying Authentication for Network Access: OpenPANA” by Moreno-Sanchez et al. presents OpenPANA, the open source software that implements the standard Protocol for Carrying Authentication for Network Access (PANA). The authors describe the design and implementation decisions around

4

OpenPANA. They also show different usage scenarios where the implementation has been considered and used. Finally, they provide performance results and an interoperability test with CPANA, the other well-known open source implementation of PANA.

Traffic Classification “Traffic Identification Engine (TIE): An Open Platform for Traffic Classification” by de Donato et al. describes the traffic identification engine (TIE), an open source software framework for network traffic classification. TIE enables the evaluation, comparison, and combination of different traffic classification techniques, which can be applied to both live traffic or previously captured traffic traces. The authors describe how, thanks to the support of the open source community, this platform has gradually evolved over the past five years, supporting an increasing number of functionalities, some of which are highlighted in this article through sample use cases.

References [1] K. O’Hara and J. S. Kay, “Open Source Software and Computer Science Education,” J. Computing Sciences in Colleges , vol. 18, issue 3, Feb. 2003, pp. 1–7. [2] Y.-D. Lin, R.-H. Hwang, and F. Baker, Computer Networks: An Open Source Approach, McGraw-Hill, 2011. [3] A. Ailamaki and J. M. Hellerstein, “Exposing Undergraduate Students to Database System Internals,” ACM SIGMOD Record, vol. 32, no. 3, Sept. 2003, pp. 18–20. [4] R. K. Raj and F. Kazemian, “Using Open Source Software in Computer Science Courses,” Proc. 36th ASEE/IEEE Frontiers in Education Conf., 2006.

Biographies YING-DAR LIN [F’13] ([email protected]) is a professor of computer science at National Chiao Tung University (NCTU), Taiwan. He received his Ph.D. in computer science from the University of California, Los Angeles (UCLA) in 1993. He served as the CEO of Telecom Technology Center during 2010–2011 and a visiting scholar at Cisco Systems in San Jose, California, during 2007–2008. Since 2002, he has been the founder and director of the Network Benchmarking Lab (NBL, www.nbl.org.tw), which reviews network products with real traffic. He also cofounded L7 Networks Inc. in 2002, which was later acquired by D-Link Corp. He founded, in 2011, the Embedded Benchmarking Lab (www.ebl.org.tw) to extend into the review of handheld devices. His research interests include design, analysis, implementation, and benchmarking of network protocols and algorithms, quality of services, network security, deep packet inspection, and embedded hardware/software co-design. His work on multihop cellular was the first along this line, and has been cited over 600 times and standardized into IEEE 802.11s, IEEE 802.15.5, IEEE 802.16j, and 3GPP LTE-Advanced. His IEEE Fellowship was in recognition of his contributions to multihop cellular communications and deep packet inspection; he is also an IEEE Distinguished Lecturer, 2014–2015. He is currently on the editorial boards of IEEE Transactions on Computers , IEEE Computer , IEEE Network , IEEE Communications Magazine (Network Testing Series), IEEE Wireless Communications, IEEE Communications Surveys and Tutorials, IEEE Communications Letters , Computer Communications , Computer Networks , and IEICE Transactions on Information and Systems . He published a textbook, Computer Networks: An Open Source Approach (McGraw-Hill, 2011; www.mhhe.com/lin). It is the first textbook that interleaves open source implementation examples with protocol design descriptions to bridge the gap between design and implementation. REN-HUNG HWANG [SM] received his Ph.D. degree in computer science from the University of Massachusetts, Amherst, in 1993. He joined the Department of Computer Science and Information Engineering, National Chung Cheng University, Chia-Yi, Taiwan, in 1993, where he is now the Dean of the College of Engineering and distinguished professor of the Department of Computer Science and Information Engineering. He is currently on the editorial boards of the Journal of Information Science and Engineering and The Scientific World Journal (Computer Science area). He is also a co-author of the textbook Computer Networks: An Open Source Approach (McGraw-Hill, 2011). He received the IEEE Outstanding Paper Award from IEEE IC/ATC/ICA3PP 2012. He was Guest Editor of IET Communications’ Special Issue on WiMAX Integrated Communications and Program Chair of International Symposium on Pervasive Systems, Algorithms, and Networks ’09. GRENVILLE ARMITAGE [M] received his B.Eng. degree (Hons.) in electrical engineering and Ph.D. degree in electronic engineering from the University of Melbourne, Australia, in 1988 and 1994, respectively. Between 1994 and 1997

IEEE Network • March/April 2014

NETWORK_GUEST_EDIT-March.qxp_Layout 1 3/27/14 12:25 PM Page 5

GUEST EDITORIAL he worked in New Jersey at Bellcore as a senior scientist in the Applied Research Division’s Internetworking Research Group. From 1997 to 2001 he worked as a member of technical staff in Bell Labs, Lucent Technologies (in both New Jersey and California), and in 1998 was also product marketing director in Lucent Technologies’ then Data Networking business unit. He is currently a professor of telecommunications engineering and eirector of the Centre for Advanced Internet Architectures, Swinburne University of Technology, Melbourne. He authored Quality of Service In IP Networks: Foundations for a Multi-Service Internet (Macmillan, 2000) and coauthored Networking and Online Games — Understanding and Engineering Multiplayer Internet Games (Wiley, 2006). He is a member of the Scientific Advisory Board for the ECfunded Reducing Internet Transport Latency (RITE) project, and on the editorial boards of IEEE Communications Surveys and Tutorials and ACM Transactions on Multimedia Computing Communications and Applications . He is a member of the ACM. VINCENZO ERAMO received his Laurea degree in electronics engineering in 1995 and his Dottorato di Ricerca (Ph.D. degree) in information and communications engineering in 2001, both from the University of Roma La Sapienza. From June 1996 to December 1996 he was a researcher at the Scuola Superiore Reiss Romoli. In 1997, he joined the Fondazione Ugo Bordoni as a researcher in the Telecommunication Network Planning group. From November 2002 to October 2005 he was an assistant professor, and from November 2006 to June 2010 was an aggregate professor in the Infocom Department of the University of Rome La Sapienza. Currently he is an aggregate professor in the Department of Engineering of Information, Electronics and Telecommunications. He collaborated with the Alcatel Lucent Research

IEEE Network • March/April 2014

Center in Murray Hill, New Jersey from 1 January 2001 to 31 December 2001. His research activities have been carried out in the framework of national and international projects. In particular, he was scientific coordinator for the University of Roma La Sapienza in Experimental University Router Open (EURO), Building Open Router Architecture Based on Router Aggregation (BORA-BORA), and Software Routers to Improve Next-Generation Internet (SFINGI), three national projects financed by the Minister for University and Research (MUR) in 2002–2004, 2005–2006, and 2011–2013, respectively, focused on the performance evaluation of software routers. He was scientific coordinator for the University of Roma La Sapienza of E-PhotoONe+ and BONE, two Networks of Excellence focusing on the study of optical networks and financed by the European Commission]s Framework Programmes 6 and 7 in 2006 to 2007 and 2008 to 2011, respectively. He has been an Associate Editor of IEEE Transactions on Computers since July 2011, Associate Editor of Dataset Papers in Science (Hindawi) since November 2011, and an Associate Editor of Photonic Network Communications (Springer) since September 2013. He is organizing as Guest Editor two Special Issues (SI): Innovative Techniques for Power Consumption Saving in Telecommunication Networks, Journal of Electrical and Computer Engineering (February 2014) and Elastic Optical Networks organized by Photonic Network Communications . He has served as Chair of some international conferences (IEEE ICC 2003, EuroIMSA 2005, and IEEE ICC 2011). His research areas are queuing theory, resource dimensioning techniques in telecommunication networks, all-optical networks, and Internet switching architectures. His current research interests are focused on the definition and performance evaluation of routing techniques and technologies to reduce power consumption in telecommunication networks.

5