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

Test suite may crash with "Layer 'quic' does not exist in packet" #421

Open
koujaz opened this issue Jan 27, 2025 · 2 comments
Open

Test suite may crash with "Layer 'quic' does not exist in packet" #421

koujaz opened this issue Jan 27, 2025 · 2 comments

Comments

@koujaz
Copy link

koujaz commented Jan 27, 2025

Since recent addition of connectionmigration tests we started to observe a packet without quic layer in certain client/server combinations.
It will kill whole execution with the following exception:

...
Server: akamai-quic. Client: lsquic. Running test case: connectionmigration
    sys.exit(main())
  File "/quic-interop-runner/./run.py", line 179, in main
    ).run()
  File "/quic-interop-runner/interop.py", line 545, in run
    status = self._run_testcase(server, client, testcase)
  File "/quic-interop-runner/interop.py", line 365, in _run_testcase
    return self._run_test(server, client, None, test)[0]
  File "/quic-interop-runner/interop.py", line 465, in _run_test
    status = testcase.check()
  File "/quic-interop-runner/testcases.py", line 1469, in check
    super().check()
  File "/quic-interop-runner/testcases.py", line 1363, in check
    tr_server = self._server_trace()._get_packets(
  File "/quic-interop-runner/trace.py", line 123, in _get_packets
    if hasattr(p["quic"], "decryption_failed"):
  File "/usr/local/lib/python3.10/dist-packages/pyshark/packet/packet.py", line 52, in __getitem__
    raise KeyError('Layer does not exist in packet')
KeyError: 'Layer does not exist in packet'

Looking at the dump (see screenshot):

  • client sends CC and closes the listening port immediately
  • server responds ACK (to the CC)
  • this ACK causes the return of "ICMPv6 Port unreachable" packet
  • this returning packet contains original QUIC UDP packet as payload and this confuses packet parsing (packet is captured by filter but there is no QUIC layer - which is IMHO correct as this doesn't belong to QUIC communication)

Notes:

  • using quic-interop-runner version from this commit: f57bcf2
  • tshark built from this commit: v4.5.0rc0-1586-g0cea822e7889
  • pyshark 0.6 (from pip)

Image

@marten-seemann
Copy link
Collaborator

Probably need to add a check if it's actually a QUIC packet. Want to submit a patch?

@koujaz
Copy link
Author

koujaz commented Jan 27, 2025

Yes, I'll submit a patch to skip packets w/o 'quic' layer.

koujaz pushed a commit to koujaz/fix_quic-interop-runner that referenced this issue Jan 27, 2025
koujaz pushed a commit to koujaz/fix_quic-interop-runner that referenced this issue Jan 27, 2025
koujaz pushed a commit to koujaz/fix_quic-interop-runner that referenced this issue Jan 28, 2025
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

2 participants