Q1. what if the app requires a modification of Barefoot switch.p4, which is not open? A patch to switch.p4 can be shared?
A: having public version of switch.p4 and APIs is under discussion. Till then, we start from apps that don�t require switch.p4 integration.
Q2. What about non-p4 apps, such as INT implementation in DPDK or eBPF under a license different from Apache2 that P4.org uses?
A: we start from apps under Apache2.
Candidate apps to host in the library:
Princeton Cabernet projects: https://github.com/Princeton-Cabernet/
SwitchML: in-network ML training acceleration. https://arxiv.org/abs/1903.06701
AIs:
bring
the license issue to P4 TST.
JK
creates a PR of template to submit a p4 app: documents and code directory structure.
<> SwitchML talk
<> BUM (Broadcast, Unknown unicast and Multicast) traffic handling in INT
Key questions: duplicate INT per egress bcast/mcast copy? Distinguish each branch/copy as a new flow or not? More issue with MD, less with MX.
Consensus: every copy carries metadata, but policy-specific. E.g., only for mcast not for bcast or unknown unicast.
Issue: tree ID is vendor specific.
We agreed that BUM handling varies and is implementation specific, not easy to define one way everyone has to follow. In the future, INT spec might capture per-switch branch ID metadata.
<> INT UDP port number
IANA declined the request to assign a UDP dest port number for INT. The main reason from IANA is that INT is deployed in confined/controlled environments rather than Internet. A port from the dynamic range can be selected and used by each INT domain (similar to VLAN assignment). IANA would assign a port number if INT is to be deployed in the Internet, but then INT must handle e2e security, congestion control as required for any new UDP transport services. Although INT-UDP is an infra tunnel service, the INT encap/decap points are considered as end-hosts generating and consuming the new UDP traffic from IANA's point of view.
Members agreed that this is not a blocker in using UDP-based INT encap.
AI: update the spec re: the UDP port number assignment.
<> INT UDP encap with IPSEC
When we want INT outside of IPSEC:
OuterIP-UDP-INT-InnerIP-AH/ESP
example: https://github.com/p4lang/p4-applications/pull/90/files
If INT is purely edge to edge (only btw end-hosts or vswitches, excluding fabric switches),
INT can come inner of IPSEC AH or ESP.
e.g., IP-AH/ESP-UDP-INT-...
<> new PR: Telemetry Report: Support packet fragments longer than 1020 bytes
https://github.com/p4lang/p4-applications/pull/89
Who participates in a domain is a business decision between vendors and operators. Some Domain Specific (DS) instructions may be published, others may stay private or shared between participants in a private channel.
3 unique roles around domain ID are discussed.
Who are the producers of domain IDs (and DS instructions)? Implementors of INT devices. Vendors (SW/HW), or network/system owners with DevOps capabilities on programmable dataplanes.
Who do consume domain IDs? parsers of the DS instructions and metadata. Either public, or private the parser is part of the domain. Examples: collector that analyzes the telemetry reports and generate high-level information. Pkt dissector such as wireshark parser can be implemented based on public or private DS definitions. INT transit/sink devices that execute the instructions populated by INT source.
Network admin: configures collector/transit/sink devices to understand the ID->instruction mapping.
A large network owner w/ devops may play all three 3 roles.
I support Jonathan’s proposal.