p-quic / pquic

The PQUIC implementation, a framework that enables QUIC clients and servers to dynamically exchange protocol plugins that extend the protocol on a per-connection basis
https://pquic.org
MIT License
126 stars 20 forks source link

how to run pquic with multipath plugins #23

Open ak47for opened 3 years ago

ak47for commented 3 years ago

I try to run pquic with multipath, but meet many problems, could you pls give the basic command on how to run mpquic?

I have tried following cmd but it crash:

  1. server side: ./picoquicdemo -P plugins/multipath/multipath_rr_cond.plugin -P plugins/multipath/multipath_rr.plugin

  2. client side: ./picoquicdemo -p 4443 -P plugins/multipath/multipath_rr.plugin -P plugins/multipath/multipath_rr_cond.plugin 127.0.0.1

==crash log== Starting PicoQUIC server on port 4443, server name = ::, just_once = 0, hrr= 0, 2 local plugins and 0 both plugins local plugin plugins/multipath/multipath_rr_cond.plugin local plugin plugins/multipath/multipath_rr.plugin include multipath_cond.plugin... create memory manager for plugin be.qdeconinck.multipath.rtt create fixed block size memory manager Successfully inserted preplugin plugins/multipath/multipath_rr_cond.plugin include multipath.plugin... create memory manager for plugin be.qdeconinck.multipath.rr create dynamic memory manager Successfully inserted local plugin plugins/multipath/multipath_rr.plugin 13cdaad11dd1d5ac: Receiving packet type: 2 (initial), S0, Version ff00001d, 13cdaad11dd1d5ac: <13cdaad11dd1d5ac>, <8d0a8603a507a0a8>, Seq: 0, pl: 1206 13cdaad11dd1d5ac: Decrypted 1206 bytes 13cdaad11dd1d5ac: Crypto HS frame, offset 0, length 275: 0100010f030393df... 13cdaad11dd1d5ac: padding, 927 bytes

quic/picoquic/tls_api.c:386 [picoquic_client_hello_call_back]: ALPN Selection call back selects 0 (out of 8) quic/picoquic/tls_api.c:401 [picoquic_client_hello_call_back]: Client Hello call back returns 0 (0x0) Register plugin be.qdeconinck.multipath.rtt for full registration include multipath_cond.plugin... Replace pluglet already inserted! Failed to insert pluglet for parametrable protocol operation parse_frame with param 64 Trying to unplug pluglet for non-existing proto op id process_transport_parameter... Segmentation fault (core dumped)

I think maybe I didn't get the right way to use it, could you pls show me how to run? thank you very much.

ak47for commented 3 years ago

I test with following command and it crash too server: ./picoquicdemo -P plugins/multipath/multipath_rr_cond.plugin client: ./picoquicdemo -P plugins/multipath/multipath_rr_cond.plugin 127.0.0.1

gdb bt

Program received signal SIGSEGV, Segmentation fault. get_path (path=0x10, ak=21, param=0) at picoquic/getset.c:487 487 return path->send_mtu; (gdb) bt

0 get_path (path=0x10, ak=21, param=0) at picoquic/getset.c:487

1 0x00007ffff7fb64fb in ?? ()

2 0x00007fff00000000 in ?? ()

3 0xffffffffffffffff in ?? ()

4 0x0000000000000000 in ?? ()

ArthurCChen commented 2 years ago

have you executed make in every directory of plugins you used? I solved the Segmentation fault (core dumped) by doing so,

balusch commented 2 years ago

@ak47for Hi! I met the same problem. Have you solved it?

balusch commented 2 years ago

have you executed make in every directory of plugins you used? I solved the Segmentation fault (core dumped) by doing so.

Did you meet the same problem(i.e. return path->send_mtu) and solve it by run make in every plugin under the plugins directory?

balusch commented 2 years ago

I test with following command and it crash too server: ./picoquicdemo -P plugins/multipath/multipath_rr_cond.plugin client: ./picoquicdemo -P plugins/multipath/multipath_rr_cond.plugin 127.0.0.1

gdb bt

Program received signal SIGSEGV, Segmentation fault. get_path (path=0x10, ak=21, param=0) at picoquic/getset.c:487 487 return path->send_mtu; (gdb) bt #0 get_path (path=0x10, ak=21, param=0) at picoquic/getset.c:487 #1 0x00007ffff7fb64fb in ?? () #2 0x00007fff00000000 in ?? () #3 0xffffffffffffffff in ?? () #4 0x0000000000000000 in ?? ()

Hi! I met the same problem but after compiling plugins with llvm-6(clang-6.0 and llc-6.0), it worked without crash.