FBOSS
FBOSS
that our design principles are specific to our own infrastruc- are able to rapidly test and evaluate the changes in produc-
ture. Data center network at Facebook has multiple internal tion. In addition, we run our databases on commodity servers,
components, such as Robotron [48],FbNet [46], Scuba [15] rather than running them on custom hardware, so that both
and Gorilla [42], that are meticulously built to work with one the software and the hardware can be easily controlled and
another, and FBOSS is no different. Thus, our design has our debugged. Lastly, since the code is open source, we make
specific goal of easing the integration of FBOSS into our ex- our changes available back to the world and benefit from
isting infrastructure, which ultimately means that it may not discussions and bug fixes produced by external contributors.
be generalized for any data center. Given this, we specifically Our experiences with general software services showed
focus on describing the effects of these design principle in that this principle is largely successful in terms of scalability,
terms of our software architecture, deployment, monitoring, code reuse, and deployment. Therefore, we designed FBOSS
and management. based on the same principle. However, since data center net-
works have different operational requirements than a general
software service, there are a few caveats to naively adopting
2.1 Switch-as-a-Server this principle that are mentioned in Section 8.
A motivation behind this principle comes from our experi-
ences in building large scale software services. Even though
many of the same technical and scaling challenges apply 2.2 Deploy-Early-and-Iterate
equally to switch software as to general distributed software Our initial production deployments were intentionally lack-
systems, historically, they have have been addressed quite ing in features. Bucking conventional network engineering
differently. For us, the general software model has been more wisdom, we went into production without implementing a
successful in terms of reliability, agility, and operational sim- long list of “must have” features, including control plane
plicity. We deploy thousands of software services that are not policing, ARP/NDP expiration, IP fragmentation/reassembly,
feature-complete or bug-free. However, we carefully monitor or Spanning Tree Protocol (STP). Instead of implementing
our services and once any abnormality is found, we quickly these features, we prioritized on building the infrastructure
make a fix, deploy the change. We found this practice to be and tooling to efficiently and frequently update the switch
highly successful in building and scaling our services. software, e.g., the warm boot feature (Section 7.1).
For example, database software is an important part of Keeping with our motivation to evolve the network quickly
our business. Rather than using a closed, proprietary vendor- and reduce complexity, we hypothesized that we could dy-
provided solution that includes unnecessary features, we namically derive the actual minimal network requirements by
started an open source distributed database project and modi- iteratively deploying switch software into production, observ-
fied it heavily for internal use. Given that we have full access ing what breaks, and quickly rolling out the fixes. By starting
to the code, we can precisely customize the software for the small and relying on application-level fault tolerance, a small
desired feature set and thereby reduce complexity. Also, we initial team of developers were able to go from nothing to
make daily modifications to the code and, using the industry code running in production in an order of magnitude fewer
practices of continuous integration and staged deployment, person-years than in typical switch software development.
SIGCOMM ’18, August 20–25, 2018, Budapest, Hungary S. Choi et al.
Software
4.1 Architecture
Configuration
Monitor Routing Daemon
Manager FBOSS consists of multiple interconnected components
Standard that we categorize as follows: Switch Software Development
FBOSS
System Tools &
(Agent, QSFP Service, CLI) Kit (SDK), HwSwitch, Hardware abstraction layer, SwSwitch,
Libraries
Switch SDK
Linux Kernel OpenBMC
State observers, local config generator, a Thrift [2] manage-
ment interface and QSFP service. FBOSS agent is the main
Switch Hardware process that runs most of FBOSS’s functionalities. The switch
x86 Microserver BMC SDK is bundled and compiled with the FBOSS agent, but is
Power
provided externally by the switch ASIC vendor. All of the
Switch ASIC Fans
Supply other components besides the QSFP service, which runs as
Front Panel Ports and Modules
Console and OOB its own independent process, reside inside the FBOSS agent.
Management Ports
We discuss each component in detail, except the local config
generator, which we will discuss in Section 6.
Figure 5: Switch software and hardware components. Switch SDK. A switch SDK is ASIC vendor-provided soft-
ware that exposes APIs for interacting with low-level ASIC
functions. These APIs include ASIC initialization, installing
forwarding table rules, and listening to event handlers.
HwSwitch. The HwSwitch represents an abstraction of
FBOSS Agent
State Local Config Thrift Management the switch hardware. The interfaces of HwSwitch provide
Observers Generator Interface generic abstractions for configuring switch ports, sending and
receiving packets to these ports, and registering callbacks for
SwSwitch state changes on the ports and packet input/output events that
Switch Hardware Independent Thrift occur on these ports. Aside from the generic abstractions,
State Manager Routing Logic Handler ASIC specific implementations are pushed to the hardware
abstraction layer, allowing switch-agnostic interaction with
HwSwitch
the switch hardware. While not a perfect abstraction, FBOSS
Generic Switch Hardware Abstraction has been ported to two ASIC families and more ports are in
progress. An example of a HwSwitch implementation can be
Hardware Abstraction found here [14].
Event Handler Switch Feature Implementation Hardware Abstraction Layer. FBOSS allows users to
Callback (L2, L3, ACL, LAG) easily add implementation that supports a specific ASIC by
extending the HwSwitch interface. This also allows easy sup-
SDK port for multiple ASICs without making changes to the main
QSFP
Service Link Status Slow Path Switch ASIC FBOSS code base. The custom implementation must sup-
Handler Packet Handler APIs port the minimal set of functionalities that are specified in
HwSwitch interface. However, given that HwSwitch only
Figure 6: Architecture overview of FBOSS. specifies a small number of features, FBOSS allows custom
project since its inception. The big jump in the size of the implementation to include additional features. For example,
codebase that occurred in September of 2017 is a result of open-source version of FBOSS implements custom features
adding a large number of hardcoded parameters for FBOSS such as specifying link aggregation, adding ASIC status mon-
to support a particular vendor NIC. itor, and configuring ECMP.
FBOSS is responsible for managing the switch ASIC and SwSwitch. The SwSwitch provides the hardware-
providing a higher level remote API that translates down to independent logic for switching and routing packets, and in-
specific ASIC SDK methods. The external processes include terfaces with the HwSwitch to transfer the commands down to
management, control, routing, configuration, and monitoring the switch ASIC. Some example of the features that SwSwitch
processes. Figure 5 illustrates FBOSS, other software pro- provides are, interfaces for L2 and L3 tables, ACL entries,
cesses and hardware components in a switch. Note that in our and state management.
production deployment, FBOSS share the same Linux envi- State Observers. SwSwitch make it possible to implement
ronment (e.g., OS version, packaging system) as our server low-level control protocols such as ARP, NDP, LACP, and
fleet, so that we can utilize the same system tools and libraries
on both servers and switches.
FBOSS: Building Switch Software at Scale SIGCOMM ’18, August 20–25, 2018, Budapest, Hungary
Issues 28% continuous deployment processes [22] and is split into three
Microserver 24%
Reboot distinct parts: continuous canary, daily canary and staged
Kernel Panic deployment. Each of these parts serves a specific purpose to
Microserver ensure a reliable deployment. We currently operate roughly
Unresponsive at a monthly deployment cycle, which includes both canaries
Loss of Power 1%
and staged deployment, to ensure high operational stability.
2%
Hardware (40%)
monitor high-level switch usage and link statistics. Given that 7.1 Side Effect of Infrastructure Reuse
FBOSS runs as a Linux process, we can also directly access For improved efficiency, our data centers deploy a network
the system logs of the switch microserver. These logs are topology with a single ToR switch, which implies that the
specifically formatted to log the category events and failures. ToR switches are a single point of failure for the hosts in
This allows the management system to monitor low-level sys- the rack. As a result, frequent FBOSS releases made on the
tem health and hardware failures. Given the statistics that it ToR switches need to be non-disruptive to ensure availability
collects, our monitoring system, called FbFlow [46], stores of the services running on those hosts. To accomplish this,
the data to a database, either Scuba [15] or Gorilla [42], based we use an ASIC feature called "warm boot". Warm boot
on the type of the data. Once the data is stored, it enables allows FBOSS to restart without affecting the forwarding
our engineers to query and analyze the data at a high level tables within the ASIC, effectively allowing the data plane to
over a long time period. Monitoring data, and graphs such as continue to forward traffic while the control plane is being
Figure 3, can easily be obtained by the monitoring system. restarted. Although this feature is highly attractive and has
To go with the monitoring system, we also implemented an allowed us to achieve our desired release velocity, it also
automated failure remediation system. The main purpose of greatly complicates the state management between FBOSS,
the remediation system is to automatically detect and recover routing daemons, switch SDK and the ASIC. Thus, we share
from software or hardware failures. It also provides deeper in- a case where warm boot and our code reuse practices have
sights for human operators to ease the debugging process. The resulted in a major outage.
remediation process is as follows. Once a failure is detected, Despite the fact that we have a series of testing and moni-
the remediation system automatically categorizes each failure toring process for new code deployments, it is inevitable for
to a set of known root causes, applies remediations if needed, bugs to leak into data center-wide deployments. The most dif-
and logs the details of the outage to a datastore. The auto- ficult type of bugs to debug are the ones that appear rarely and
matic categorization and remediation of failures allows us to inconsistently. For example, our BGP daemon has a graceful
focus our debugging efforts on undiagnosed errors rather than restart feature to prevent warm boots from affecting the neigh-
repeatedly debugging the same known issues. Also, the exten- bor devices when BGP sessions are torn down by FBOSS
sive log helps us drive insights like isolating a rare failure to restarts or failures [38]. The graceful restart has a timeout
a particular hardware revision or kernel version. before declaring BGP sessions are broken, which effectively
In summary, our approach has the following advantages: puts a time constraint on the total time a warm boot oper-
Flexible Data Model. Traditionally, supporting a new type ation can take. In one of our deployments, we found that
of data to collect or modifying an existing data model requires the Kerberos [7] library, which FBOSS and many other soft-
modifications and standardization of the network management ware services, use to secure communication between servers,
protocols and then time for vendors to implement the stan- caused outages for a small fraction of switches in our data
dards. In contrast, since we control the device, monitoring center. We realized that the reason for the outages is that
data dissemination via FBOSS and the data collection mecha- the library often took a long time to join the FBOSS agent
nism through the management system, we can easily define thread. Since the timing and availability constraints for other
and modify the collection specification. We explicitly define software services are more lenient than FBOSS’s warm boot
the fine-grained counters we need and instrument the devices requirements, existing monitors were not built detect such
to report those counters. rare performance regressions.
Improved Performance. Compared to conventional moni- Takeaway: Simply reusing widely-used code, libraries or
toring approaches, FBOSS has better performance as the data infrastructure that are tuned for generic software services may
transfer protocol can be customized to reduce both collection not work out of the box with switch software.
time and network load.
Remediation with Detailed Error Logs. Our system al-
lows the engineers to focus on building remediation mecha- 7.2 Side Effect of Rapid Deployment
nisms for unseen bugs, which consequently improves network
During the first few months of our initial FBOSS deploy-
stability and debugging efficiency.
ment, we occasionally encountered unknown cascading out-
ages of multiple switches. The outage would start with a
7 EXPERIENCES single device and would spread to nearby devices, resulting in
While the experiences of operating a data center network very high packet loss within a cluster. Sometimes the network
with custom switch software and hardware has been mostly would recover on its own, sometimes not. We realized that
satisfactory, we faced outages that are previously unseen and the outages were more likely to occur if a deployment would
are unique to our development and deployment model. go awry, yet they were quite difficult to debug because we
FBOSS: Building Switch Software at Scale SIGCOMM ’18, August 20–25, 2018, Budapest, Hungary
Figure 11: Overview of cascading outages seen by a failed ToR switch within a backup group.
had deployed a number of new changes simultaneously as it Thus, one must be careful in adopting features that are known
was our initial FBOSS deployment. to be stable in conventional networks.
We eventually noticed that the loss was usually limited to a
multiple of 16 devices. This pointed towards a configuration
in our data center called backup groups. Prior to deploying
7.3 Resolving Interoperability Issues
FBOSS, the most common type of failure within our data Although we developed and deployed switches that are
center was a failure of a single link leading to a black-holing built in-house, we still need the switches and FBOSS to inter-
of traffic [36]. In order to handle such failures, a group (il- operate with different types of network devices for various rea-
lustrated on the left side of Figure 11) of ToR switches are sons. We share our experiences where the design of FBOSS
designated to provide backup routes if the most direct route allowed an interoperability issue to be quickly resolved.
to a destination becomes unavailable. The backup routes are When configuring link aggregation between FBOSS and
pre-computed and statically configured for faster failover. a particular line of vendor devices, we discovered that flap-
We experienced an outage where a failure of a ToR resulted ping the logical aggregate interface on the vendor device
in a period where packets ping pong between the backup ToRs could disable all IP operations on that interface. A cursory
and the aggregation switches, incorrectly assuming that the inspection revealed that, while the device had expectantly
backup routes are available. This resulted in a loop in the engaged in Duplicate Address Detection (DAD) [50] for the
backup routes. The right side of Figure 11 illustrates the aggregate interface’s address, it had unexpectedly detected a
creation of path loops. The loop eventually resulted in huge duplicate address in the corresponding subnet. This behavior
CPU spikes on all the backup switches. The main reason was isolated to a race condition between LACP and DAD’s
for the CPU spikes was because FBOSS was not correctly probe, wherein an artifact of the hardware support for link
removing the failed routes from the forwarding table and was aggregation could cause DAD’s Neighbor Solicitation packet
also generating TTL expired ICMP packets for all packets to be looped back to the vendor switch. In accordance with
that had ping-ponged back and forth 255 times. Given that the DAD specification, the vendor device had interpreted the
we had not seen this behavior before, we had no control looped back Neighbor Solicitation packet as another node
plane policing in place and sent all packets with TTL of 0 to engaging in DAD for the same address, which the DAD spec-
the FBOSS agent. The rate the FBOSS agent could process ification mandates should cause the switch to disable IP oper-
these packets was far lower than the rate we were receiving ation on the interface on which DAD has been invoked. We
the frames, so we would fall further and further behind and also found that interconnecting the same vendor device with
starve out the BGP keep-alive and withdraw messages we a different vendor’s switch would exhibit the same symptom.
need for the network to converge. Eventually BGP peerings Flapping of interfaces is a step performed by our network
would expire, but since we were already in the looping state, operators during routine network maintenance. To ensure that
it often made the matters worse and caused the starvation to the maintenance could still be performed in a non-disruptive
last indefinitely. We added a set of control plane fixes and the manner, we modified the FBOSS agent to avoid the scenario
network became stable even through multiple ToR failures. described above. In contrast, in response to our report of this
Takeaway: A feature that works well for conventional bug to the vendor, whose switch exhibited the same behavior
networks may not work well for networks deploying FBOSS. as ours, the vendor recommended the other vendors to im-
This is a side effect of rapid deployment, as entire switch plement an extension to DAD. By having entire control over
outages are more frequently than in conventional networks. our switch software, we were able to quickly provide what’s
necessary for our network.
SIGCOMM ’18, August 20–25, 2018, Budapest, Hungary S. Choi et al.
Takeaway: Interoperability issues are common in net- the data plane of our switches follows closely conventional
works with various network devices. FBOSS allows us to vendor-sourced chassis architectures. The main difference is
quickly diagnose and fix the problem directly, instead of wait- that we do not deploy additional servers to act as supervisor
ing for vendor updates or resorting to half-baked solutions. cards and instead leverage our larger data center automation
tooling and monitoring. While this design does not provide
the same single logical switch abstraction that is provided by
8 DISCUSSION
conventional vendor switches, it allows us to jump to larger
Existing Switch Programming Standards. Over time, switch form factors with no software architectural changes.
many software standards have been proposed to open up vari- Implicit and Circular Dependency. One subtle but impor-
ous aspects of the software on the switch. On the academic tant problem we discovered when trying to run our switches
side, there are decades of approaches to open various aspects like a server was hidden and implicit circular dependencies
of switches, including active networking [35], FORCES [32], on the network. Specifically, all servers on our fleet run a
PCE [26], and OpenFlow [40]. On the industry side, upstart standard set of binaries and libraries for logging, monitoring,
vendors have tried to compete with incumbents on being more and etc. By design, we wanted to run these existing software
open (e.g., JunOS’s SDK access program, Arista’s SDK pro- on our switches. Unfortunately, in some cases, the software
gram) and the incumbents have responded with their own built for the servers implicitly depended on the network and
open initiatives (e.g., I2RS, Cisco’s OnePK). On both the when the FBOSS code depended on them, we created a circu-
academic and industry sides, there also are numerous control lar dependency that prevented our network from initializing.
plane and management plane protocols that similarly try to Worse yet, these situations would only arise during other er-
make the switch software more programmable/configurable. ror conditions (e.g., when a daemon crash) and were hard to
Each of these attempts have their own set of trade-offs and debug. In one specific case, we initially deployed the FBOSS
subset of supported hardware. Thus, one could argue that onto switches using the same task scheduling and monitoring
some synthesis of these standards could be “the one perfect software used by other software services in our fleet, but we
API” that gives us the functionalities we want. So, why didn’t found that this software required access to the production
we just use/improve upon one of these existing standards? network before it would run. As a result, we had to decouple
The problem is that these existing standards are all “top our code from it and write our own custom task scheduling
down": they are all additional software/protocols layered on software to specifically manage FBOSS deployments. While
top of the existing vendor software rather than entirely re- this was an easier case to debug, as each software package
placing it. That means that if ever we wanted to change the evolves and is maintained independently, there is a constant
underlying unexposed software, we would still be limited by threat of well-meaning but server focused developers adding
what our vendors would be willing to support and on their a subtle implicit dependency on the network. Our current
timelines. By controlling the entire software stack “bottom solution is to continue to fortify our testing and deployment
up", we can control all the possible states and code on the procedures.
switch and can expose any API anyway we want at our own
schedule. Even more importantly, we can experiment with the
APIs we expose and evolve them over time for our specific 9 FUTURE WORK
needs, allowing us to quickly meet our production needs. Partitioning FBOSS Agent. FBOSS agent currently is a
FBOSS as a Building Block for Larger Switches. While single monolithic binary consisting of multiple features. Sim-
originally developed for ToR, single-ASIC style switches, ilar to how QSFP service was separated to improve switch
we have adapted FBOSS as a building block to run larger, reliability, we plan to further partition FBOSS agent into
multi-ASIC chassis switches as well. We have designed and smaller binaries that runs independently. For example, if state
deployed our own chassis-based switch with removable line observers exist as external processes that communicates with
cards that supports 128x100Gbps links with full bisection FBOSS agent, any events that can overwhelms the state ob-
connectivity. Internally, this switch is composed of eight line servers no long brings FBOSS agent down with it.
cards each with their own CPU and ASIC, connected in a Novel Experiments. One of our main goals for FBOSS is
logic CLOS topology to four fabric cards also with their own to allow more and faster experimentation. We are currently ex-
CPU and ASIC. perimenting with custom routing protocols, stronger slow path
We run an instance of FBOSS on each of the twelve (eight isolation (e.g., to deal with buggy experiments), micro-burst
line cards plus four fabric cards) CPUs and have them peer detection, macro-scale traffic monitoring, big data analytic of
via BGP internally to the switch, logically creating a single low-level hardware statistics to infer failure detection, and a
high-capacity switch that runs the aggregation layers of our host of other design elements. By making FBOSS open source
data centers. While appearing to be a new hardware design, and our research more public, we hope to aid researchers with
FBOSS: Building Switch Software at Scale SIGCOMM ’18, August 20–25, 2018, Budapest, Hungary
tools and ideas to directly implement novel research ideas on frameworks that support continuous canary [45]. Some no-
production ready software and hardware. table examples are Chef [3], Jenkins [6], Travis CI [10] and
Programmable ASIC Support. FBOSS is designed to Ansible [1]. Contrary to other frameworks, fbossdeploy
easily support multiple types of ASICs simultaneously. In is designed specifically for deploying switch software. It is
fact, FBOSS successfully iterated through different versions capable of monitoring the network to perform network spe-
of ASICs without any huge design changes. With the recent cific remediations during the deployment process. In addition,
advent of programmable ASICs, we believe that it will be fbossdeploy can deploy the switch software in a manner
useful for FBOSS to support programmable ASICs [19] and that considers the global network topology.
the language to program these ASICs, such as P4 [18]. Network Management Systems. There are many network
management systems built to interact with vendor specific
devices. For example, HP OpenView [23] has interfaces to
10 RELATED WORK
control various vendors’ switches. IBM Tivoli Netcool [29]
Existing Switch Software. There are various proprietary handles various network events in real-time for efficient trou-
switch software implementations, often referred to as “Net- bleshooting and diagnosis. OpenConfig [9] recently proposed
work OS”, such as Cisco NX-OS [12] or Juniper JunOS [41], a unified vendor-agnostic configuration interface. Instead of
yet FBOSS is quite different from them. For example, FBOSS using a standardized management interface, FBOSS provides
allows full access to the switch Linux, giving users flexibility programmable APIs that can be integrated with other network
to run custom processes for management or configuration. management systems that are vendor-agnostic.
In comparison, conventional switch software are generally
accessed through their own proprietary interfaces.
There is also various open-source switch software that 11 CONCLUSION
runs on Linux, such as Open Network Linux (ONL) [30],
This paper presents a retrospective on five years of develop-
OpenSwitch [11], Cumulus Linux [20] and Microsoft
ing, deploying, operating, and open sourcing switch software
SONiC [33]. FBOSS is probably most comparable to SONiC:
built for large-scale production data centers. When building
both as results of running switch software at scale to serve
and deploying our switch software, we departed from conven-
ever increasing data center network needs, and with similar
tional methods and adopted techniques widely used to ensure
architecture (hardware abstraction layer, state management
scalability and resiliency for building and deploying general
module, etc.). One major difference between SONiC and
purpose software. We built a set of modular abstractions that
FBOSS is that FBOSS is not a separate Linux distribution,
allows the software to be not tied down to a specific set of
but using the same Linux OS and libraries in our large server
features or hardware. We built a continuous deployment sys-
fleet. This allows us to truly reusing many best practices of
tem that allows the software to be changed incrementally and
monitoring, configuring, and deploying for server software.
rapidly, tested automatically, and deployed incrementally and
In general, open source communities around switch software
safely. We built a custom management system that allows
are starting grow, which is promising for FBOSS.
for simpler configuration management, monitoring and op-
Finally, there are recent proposals to completely eliminate
erations. Our approach has provided significant benefits that
switch software [31, 51] from a switch. They provide new
enabled us to quickly and incrementally grow our network
insights for the role of switch software and the future of data
size and features, while reducing software complexity.
center switch design.
Centralized Network Control. In the recent Software-
Defined Network (SDN) movement, many systems (e.g.,
ACKNOWLEDGMENT
[28, 34]), sometimes also referred to as “Network OS”, are
built to realize centralized network control. While we rely Many people in the Network Systems team at Facebook
on centralized configuration management and distributed have contributed to FBOSS over the years and toward this
BGP daemons, FBOSS is largely orthogonal to these efforts. paper. In particular, we would like to acknowledge Sonja
By functionality, FBOSS’s is more comparable to software Keserovic, Srikanth Sundaresan and Petr Lapukhov for the
switches such as Open vSwitch [44], even if the implemen- extensive help with the paper. We also would like to thank
tation and performance characteristics are quite different. In Robert Soulé and Nick McKeown for providing ideas to initi-
fact, similar to how Open vSwitch uses OpenFlow, FBOSS’s ate the paper. We would like to acknowledge Facebook for the
Thrift API, in theory, can interface with a central controller resource it provided for us. And finally, we are also indebted
to provide a more SDN-like functionality. to Omar Baldonado, our shepherd, Hitesh Ballani, as well as
Large-scale Software Deployment. fbossdeploy is the anonymous SIGCOMM reviewers for their comments and
influenced by other cloud scale [16] continuous integration suggestions on earlier drafts.
SIGCOMM ’18, August 20–25, 2018, Budapest, Hungary S. Choi et al.
REFERENCES [25] Tian Fang. 2015. Introducing OpenBMC: an open software framework
[1] [n. d.]. Ansible is Simple IT Automation. [Link] for next-generation system management. [Link]
[2] [n. d.]. Apache Thrift. [Link] posts/1601610310055392.
[3] [n. d.]. Chef. [Link] [26] A. Farrel, J.-P. Vasseur, and J. Ash. 2006. A Path Computation Element
[4] [n. d.]. FBOSS Open Source. [Link] (PCE)-Based Architecture. Technical Report. Internet Engineering Task
[5] [n. d.]. FBOSS Thrift Management Interface. [Link] Force.
facebook/fboss/blob/master/fboss/agent/if/[Link]. [27] Phillipa Gill, Navendu Jain, and Nachiappan Nagappan. 2011. Un-
[6] [n. d.]. Jenkins. [Link] derstanding Network Failures in Data Centers: Measurement, Anal-
[7] [n. d.]. Kerberos: The Network Authentication Protocol. [Link] ysis, and Implications. In Proceedings of the ACM SIGCOMM 2011
edu/kerberos/. Conference (SIGCOMM ’11). ACM, New York, NY, USA, 350–361.
[8] [n. d.]. Microsoft showcases the Azure Cloud [Link]
Switch. [Link] [28] Natasha Gude, Teemu Koponen, Justin Pettit, Ben Pfaff, Martín Casado,
microsoft-showcases-the-azure-cloud-switch-acs/. Nick McKeown, and Scott Shenker. 2008. NOX: Towards an Operating
[9] [n. d.]. OpenConfig. [Link] System for Networks. SIGCOMM Comput. Commun. Rev. 38, 3 (July
[10] [n. d.]. Travis CI. [Link] 2008), 105–110. [Link]
[11] 2016. OpenSwitch. [Link] [29] IBM. [n. d.]. Tivoli Netcool/OMNIbus. [Link]
[12] 2017. Cisco NX-OS Software. [Link] software/products/en/ibmtivolinetcoolomnibus.
ios-nx-os-software/nx-os-software/[Link]. [30] Big Switch Networks Inc. 2013. Open Network Linux. https:
[13] 2018. Facebook Open Routing Group. [Link] //[Link]/.
groups/openr/about/. [31] Xin Jin, Nathan Farrington, and Jennifer Rexford. 2016. Your Data
[14] 2018. HwSwitch implementation for Mellanox Switch. [Link] Center Switch is Trying Too Hard. In Proceedings of the Symposium
com/facebook/fboss/pull/67. on SDN Research (SOSR ’16). ACM, New York, NY, USA, Article 12,
[15] Lior Abraham, John Allen, Oleksandr Barykin, Vinayak Borkar, 6 pages. [Link]
Bhuwan Chopra, Ciprian Gerea, Daniel Merl, Josh Metzler, David [32] D Joachimpillai and JH Salim. 2004. Forwarding and Control Element
Reiss, Subbu Subramanian, Janet L. Wiener, and Okay Zed. 2013. Separation (forces). [Link]
Scuba: Diving into Data at Facebook. Proc. VLDB Endow. 6, 11 (Aug. [33] Yousef Khalidi. 2017. SONiC: The networking switch software that
2013), 1057–1067. [Link] powers the Microsoft Global Cloud. [Link]
[16] Michael Armbrust, Armando Fox, Rean Griffith, Anthony D. Joseph, [34] Teemu Koponen, Martin Casado, Natasha Gude, Jeremy Stribling, Leon
Randy Katz, Andy Konwinski, Gunho Lee, David Patterson, Ariel Poutievski, Min Zhu, Rajiv Ramanathan, Yuichiro Iwata, Hiroaki Inoue,
Rabkin, Ion Stoica, and Matei Zaharia. 2010. A View of Cloud Takayuki Hama, and Scott Shenker. 2010. Onix: A Distributed Control
Computing. Commun. ACM 53, 4 (April 2010), 50–58. https: Platform for Large-scale Production Networks. In Proceedings of the
//[Link]/10.1145/1721654.1721672 9th USENIX Conference on Operating Systems Design and Implemen-
[17] Randy Bias. 2016. The History of Pets vs Cattle and How to Use tation (OSDI’10). USENIX Association, Berkeley, CA, USA, 351–364.
the Analogy Properly. [Link] [Link]
the-history-of-pets-vs-cattle/. [35] David L. Tennenhouse and David J. Wetherall. 2000. Towards an Active
[18] Pat Bosshart, Dan Daly, Glen Gibb, Martin Izzard, Nick McKeown, Network Architecture. 26 (07 2000), 14.
Jennifer Rexford, Cole Schlesinger, Dan Talayco, Amin Vahdat, George [36] P. Lapukhov, A. Premji, and Mitchell J. 2016. Use of BGP for Routing
Varghese, and David Walker. 2014. P4: Programming Protocol- in Large-Scale Data Centers. [Link]
independent Packet Processors. SIGCOMM Comput. Commun. Rev. 44, [37] Ville Lauriokari. 2009. Copy-On-Write 101. [Link]
3 (July 2014), 87–95. [Link] copy-on-write-101-part-1-what-is-it/.
[19] Pat Bosshart, Glen Gibb, Hun-Seok Kim, George Varghese, Nick McK- [38] K. Lougheed, Cisco Systems, and Y. Rkhter. 1989. A Border Gateway
eown, Martin Izzard, Fernando Mujica, and Mark Horowitz. 2013. For- Protocol (BGP). [Link]
warding Metamorphosis: Fast Programmable Match-Action Processing [39] R. P. Luijten, A. Doering, and S. Paredes. 2014. Dual function heat-
in Hardware for SDN. In SIGCOMM Conference on Applications, Tech- spreading and performance of the IBM/ASTRON DOME 64-bit mi-
nologies, Architectures, and Protocols for Computer Communication croserver demonstrator. In 2014 IEEE International Conference on
(SIGCOMM). 99–110. [Link] IC Design Technology. 1–4. [Link]
[20] Cumulus. [n. d.]. Cumulus Linux. [Link] 6838613
products/cumulus-linux/. [40] Nick McKeown, Tom Anderson, Hari Balakrishnan, Guru Parulkar,
[21] Harrington D., R. Presuhn, and Wijnen B. 2002. An Architecture for De- Larry Peterson, Jennifer Rexford, Scott Shenker, and Jonathan Turner.
scribing Simple Network Management Protocol (SNMP) Management 2008. OpenFlow: Enabling Innovation in Campus Networks. SIG-
Frameworks. [Link] COMM Comput. Commun. Rev. 38, 2 (March 2008), 69–74. https:
[22] Sebastian Elbaum, Gregg Rothermel, and John Penix. 2014. Tech- //[Link]/10.1145/1355734.1355746
niques for Improving Regression Testing in Continuous Integration [41] Juniper Networks. 2017. Junos OS. [Link]
Development Environments. In Proceedings of the 22Nd ACM SIG- products-services/nos/junos/.
SOFT International Symposium on Foundations of Software Engi- [42] Tuomas Pelkonen, Scott Franklin, Justin Teller, Paul Cavallaro, Qi
neering (FSE 2014). ACM, New York, NY, USA, 235–245. https: Huang, Justin Meza, and Kaushik Veeraraghavan. 2015. Gorilla: A Fast,
//[Link]/10.1145/2635868.2635910 Scalable, In-memory Time Series Database. Proc. VLDB Endow. 8, 12
[23] HP Enterprise. [n. d.]. HP Openview. [Link] (Aug. 2015), 1816–1827. [Link]
en-us/products/application-lifecycle-management/overview. [43] A.D. Persson, C.A.C. Marcondes, and D.P. Johnson. 2013. Method
[24] Facebook. 2017. Wedge 100S 32x100G Specification. [Link] and system for network stack tuning. [Link]
[Link]/products/facebook-wedge-100s-32x100g/. US8467390 US Patent 8,467,390.
FBOSS: Building Switch Software at Scale SIGCOMM ’18, August 20–25, 2018, Budapest, Hungary
[44] Ben Pfaff, Justin Pettit, Teemu Koponen, Ethan Jackson, Andy Zhou,
Jarno Rajahalme, Jesse Gross, Alex Wang, Joe Stringer, Pravin Shelar,
Keith Amidon, and Martin Casado. 2015. The Design and Implemen-
tation of Open vSwitch. In 12th USENIX Symposium on Networked
Systems Design and Implementation (NSDI 15). USENIX Association,
Oakland, CA, 117–130. [Link]
technical-sessions/presentation/pfaff
[45] Danilo Sato. 2014. Canary Release. [Link]
[Link].
[46] Brandon Schlinker, Hyojeong Kim, Timothy Cui, Ethan Katz-Bassett,
Harsha V. Madhyastha, Italo Cunha, James Quinn, Saif Hasan, Petr
Lapukhov, and Hongyi Zeng. 2017. Engineering Egress with Edge
Fabric: Steering Oceans of Content to the World. In Proceedings of the
ACM SIGCOMM 2017 Conference (SIGCOMM ’17). ACM, New York,
NY, USA, 418–431. [Link]
[47] Arjun Singh, Joon Ong, Amit Agarwal, Glen Anderson, Ashby Armis-
tead, Roy Bannon, Seb Boving, Gaurav Desai, Bob Felderman, Paulie
Germano, Anand Kanagala, Jeff Provost, Jason Simmons, Eiichi Tanda,
Jim Wanderer, Urs Hölzle, Stephen Stuart, and Amin Vahdat. 2015.
Jupiter Rising: A Decade of Clos Topologies and Centralized Control in
Google’s Datacenter Network. SIGCOMM Comput. Commun. Rev. 45,
4 (Aug. 2015), 183–197. [Link]
[48] Yu-Wei Eric Sung, Xiaozheng Tie, Starsky H.Y. Wong, and Hongyi
Zeng. 2016. Robotron: Top-down Network Management at Face-
book Scale. In Proceedings of the ACM SIGCOMM 2016 Confer-
ence (SIGCOMM ’16). ACM, New York, NY, USA, 426–439. https:
//[Link]/10.1145/2934872.2934874
[49] David Szabados. 2017. Broadcom Ships Tomahawk 3, Industry’s
Highest Bandwidth Ethernet Switch Chip at 12.8 Terabits per Sec-
ond. [Link]
irol-newsArticle&ID=2323373.
[50] S Thomson, Narten T., and Jinmei T. 2007. IPv6 Stateless Address
Autoconfiguration. [Link]
[51] F. Wang, L. Gao, S. Xiaozhe, H. Harai, and K. Fujikawa. 2017. Towards
reliable and lightweight source switching for datacenter networks. In
IEEE INFOCOM 2017 - IEEE Conference on Computer Communica-
tions. 1–9. [Link]
[52] Jun Xiao. 2017. New Approach to OVS Datapath Performance. http:
//[Link]/support/boston2017/[Link].
[53] Xilinx. [n. d.]. Lightweight Ethernet Switch. [Link]
com/applications/wireless-communications/wireless-connectivity/
[Link].