Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
jingfeihu opened this issue Jan 25, 2024 · 1 comment
Open

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

jingfeihu opened this issue Jan 25, 2024 · 1 comment

Comments

@jingfeihu
Copy link
Contributor

jingfeihu commented Jan 25, 2024

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

@jingfeihu
Copy link
Contributor Author

This is the PR: #4232

@jingfeihu jingfeihu changed the title Support In-situ Operation Administration and Maintenance Protocol (IOAM) Support In-situ Operation Administration and Maintenance(IOAM) Jan 26, 2024
@jingfeihu jingfeihu changed the title Support In-situ Operation Administration and Maintenance(IOAM) Support In-situ Operation Administration and Maintenance (IOAM) Jan 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant