| # 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 |