Skip to content

Support In-situ Operation Administration and Maintenance (IOAM) #4231

@jingfeihu

Description

@jingfeihu

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions