Support In-situ Operation Administration and Maintenance (IOAM)
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 12.6k
- Forks
- 2.2k
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 56
Description
Brief description
I would like to contribute CMCC IOAM protocol to scapy.
Partly of the IOAM layer has been implemented.
I hope everyone who are interested in this can join us to enhance it.
In-situ Operation Administration and Maintenance (IOAM)
Notice:
This is China Mobile Communications Corporation (CMCC) IOAM, instead of Cisco IOAM
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+--------------------------------------+-+-+-+-+--------------+
| Flow ID |L|D|C|R| Next Header |
+--------------------------------------+-+-+-+-+--------------+
L: Loss Flag, alias color value of packet
D: Delay Flag, set enable to measure packet delay
C: Color Flag, set enable to measure packet drop
IOAM Shim Reference:
https://datatracker.ietf.org/doc/rfc9486/
https://datatracker.ietf.org/doc/html/rfc8321
IOAM Report Packet Reference:
https://datatracker.ietf.org/doc/draft-ietf-netconf-udp-notif/12/
IOAM layer identifier:
IPv4.proto == 186
IPv6.NextHeader == 0x0 && IPv6.HBH.option_type == 0x11
Example Packet Format:
IOAMoIPv4 = Ether/IP/IOAM/Payload
IOAMoIPv4UDP = Ether/IP/IOAM/UDP/Payload
IOAMoIPv4TCP = Ether/IP/IOAM/TCP/Payload
IOAMoIPv4VxLAN = Ether/IP/IOAM/UDP/VXLAN/Ether/IP/TCP/Payload
IOAMoIPv6IP = Ether/IPv6/IPv6ExtHdrHopByHop(nh=59, options=[HBHOptIOAM(ioam=ioam)])/Payload
IOAMoIPv6UDP = Ether/IPv6/IPv6ExtHdrHopByHop(nh=socket.IPPROTO_UDP, options=[HBHOptIOAM(ioam=IOAM)])/UDP/Payload
IOAMoIPv6TCP = Ether/IPv6/IPv6ExtHdrHopByHop(nh=socket.IPPROTO_TCP, options=[HBHOptIOAM(ioam=IOAM)])/TCP/Payload
IOAMoIPv6VxLAN = Ether/IPv6/IPv6ExtHdrHopByHop(nh=socket.IPPROTO_UDP, options=[HBHOptIOAM(ioam=IOAM)])/UDP/VXLAN/Ether/IP/TCP/Payload
Scapy version
2.5.0
Python version
3.7
Operating system
Linux 5.10.27-051027-generic
Additional environment information
No response
How to reproduce
Ignore
Actual result
No response
Expected result
No response
Related resources
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing Scapy's existing protocol-layer support and the RFC 9486, RFC 8321, and IOAM report-packet references. Define the CMCC IOAM fields, IPv4 and IPv6 identifiers, and packet compositions listed in the issue; done means those IOAMoIPv4, IOAMoIPv6, UDP, TCP, and VXLAN formats are supported.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100