blob: 12d81c8aabb0b4ae87bac7109241a3ca1a4cc747 [file] [log] [blame] [view] [edit]
# Patchpanel
This directory contains the Patchpanel platform networking service daemon
(formerly arc-networkd).
Patchpanel is the network control plane manager for all guest application
platforms running inside virtual machines (ARCVM, Termina VM, Parallels VM) or
containers (ARC++). Patchpanel configures and controls the network datapath for
these guest platforms and provides additional services and features:
* Creation and configuration of virtual ethernet interface pairs for ARC++.
* Creation and configuration of TAP devices for CrosVM (ARCVM, Termina VM,
and Parallels VM).
* Configuration of source NAT and IP forwarding for all guest platforms, and
configuration of inbound firewall destination NAT rules for ARC.
* IPv6 NDProxy forwarder implementing [RFC 4389] and proxying ICMPv6 traffic
between physical networks and guest platforms.
* mDNS forwarder proxying mDNS traffic between physical networks and guest
platforms in both directions, with additional facilities for transparent
traversal over IPv4 SNAT.
* SSDP forwarder proxying SSDP traffic between physical networks and guest
platforms.
* ADB-over-TCP proxy relaying ADB inbound connections and Crostini
ADB-sideloading connections to ARC.
* Broadcast forwarder proxying broadcast packets between physical networks and
ARC.
Patchpanel's IPv6 NDProxy and mDNS/SSDP forwarders also run as standalone
binaries inside Termina for providing these features to user lxd containers.
In addition Patchpanel implements other general networking services and
features not associated with virtualization:
* A ConnectNamespace D-Bus API for creating a virtual datapath and configuring
routing for a network namespace. This API is currently used by:
* The [authenticated web proxy relay](../system-proxy) that transparently
supports web proxy authentication for proxy aware web clients on the
host platform or in guest application platforms.
* The [DNS proxy service](../dns-proxy) that manages DNS functionality
including providing Chrome OS with DNS-over-HTTPS.
* Various Tast test packages including those for VPN and [system-proxy](../system-proxy).
* A ModifyPortRule D-Bus API for opening destination ports in the inbound
firewall rules and for forwarding destination ports to guest application
platforms.
* Traffic counters for measuring network usage for a variety of sources
(Chrome, system, guest application platforms, ...). Counters are polled
by [shill](../shill) with the GetTrafficCounters D-Bus API for implementing
Service network usage metering.
[RFC 4389]: https://tools.ietf.org/html/rfc4389