Old P4-14 version is moved under p4-14 for archival purpose.
The objective of this project is to implement SRv6 functions still under discussion using P4 Lang to make running code available for testing and demo. To support SRv6 functions with routing tables and topology requiring vlans etc, we plan to expand this code to include basic layer 2/3 switch features required to test SRv6 as well.
This project was started as part of SRv6 Mobile User Plane POC conducted in SRv6 consortium. Thus current priority is functions from Mobile Uplane draft. But planning to expand to general SRv6 Network Programming functions for Edge Computing and Data Center use cases.
Please raise issue with use case description if you want to any SRv6 functions not implemented yet.
Note that this is still in very early development (alpha phase) and we expect pipeline structures including tables attributes and indirections would change while adding more features.
This is written for v1model architecture and confirmed to run on BMv2.
I am trying to make as most code common among different architectures as possible.
Following Target Architectures are in my mind. Any contribution is more than welcome. :)
- v1model : v1model.p4 (Supported)
- PSA : psa.p4
- p4c-xdp : xdp_model.p4
- Tofino Model
- SmartNIC ??
- Non functional design items
Item name | schedule |
---|---|
BSID friendly table structure | future |
- Basic Switching Features (Layer 1/2/3)
Feature | Schedule |
---|---|
Port Forwarding | DONE |
dmac table (static) | DONE |
VLAN (port) | Dec, 2019 |
VLAN (Tag) | future |
IPv4 forwarding (LPM) | Dec, 2019 |
IPv6 forwarding (LPM) | Dec, 2019 |
Host Interface (ping/arp) | future |
dmac (learning agent) | future |
Updates from -03
to -06
=> Nov, 2019
Function | schedule | description |
---|---|---|
Args.Mob.Session | Consider with End.MAP, End.DT and End.DX | |
End.MAP | ||
End.M.GTP6.D | Nov, 2019 | GTP-U/IPv6 => SRv6 |
End.M.GTP6.E | Nov, 2019 | SRv6 => GTP-U/IPv6 |
End.M.GTP4.E | DONE | SRv6 => GTP-U/IPv4 |
T.M.Tmap => T.M.GTP4.D | DONE => Nov, 2019 | GTP-U/IPv4 => SRv6 |
End.Limit | Rate Limiting function |
Nov, 2019
Transit behaviors
Function | schedule | description |
---|---|---|
T | n/a | Transit behavior |
T.Insert | DONE | |
T.Insert.Red | DONE | |
T.Encaps | future | |
T.Encaps.Red | future | |
T.Encaps.L2 | future | |
T.Encaps.L2.Red | future |
Functions associated with a SID
Function | schedule | description |
---|---|---|
End | PARTIAL | without error handling |
End.X | April, 2019 | |
End.T | ||
End.DX2 (V) | ||
End.DT2 (U/M) | ||
End.DX6 | ||
End.DX4 | ||
End.DT6 | ||
End.DT4 | ||
End.DT46 | ||
End.B6.Insert | ||
End.B6.Insert.Red | ||
End.B6.Encaps | ||
End.B6.Encaps.Red | ||
End.BM | ||
End.S |
Flavours
Function | schedule | description |
---|---|---|
PSP | May, 2019 | Penultimate Segment Pop |
USP | Ultimate Segment Pop | |
USD | Ultimate Segment Decapsulation |