Coder Social home page Coder Social logo

mp-quic's People

Contributors

carlosmn avatar chestnutprog avatar jmwample avatar lucas-clemente avatar marten-seemann avatar qdeconinck avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mp-quic's Issues

Chrome Integration of MP-QUIC

I'm interested in integrating MP-QUIC with Chrome so that I can test out the protocols performance with HD video streaming.
Would this be possible without a lot of changes?

Thanks, and sorry if this is a vague question.

Cant install mp-quic on Linux(fedora/debian) 64bit

Hi
I cant install the server on Linux(fedora 27 /debian 9) 64bit. I use Version 1.9.4 of Go.
If i clone the git repository then enter the directory and finally execute go get -t -u ./... I get the error:
unrecognized import path "_/home/test/Downloads/mp-quic" (import path does not begin with hostname)

I also tried to follow the instructions on https://multipath-quic.org/2017/12/09/artifacts-available.html. But here i always got

[root@localhost quic-go]# go get -t -u ./...
# github.com/lucas-clemente/quic-go/internal/handshake
internal/handshake/mint_utils.go:57:16: mc.conn.State undefined (type *mint.Conn has no field or method State, but does have mint.state)

Like i said i tried it on two different distributions with Go 1.9.4 and i tested those two scenarios.

Client behind can not receive packets from both of two paths

I used MPQUIC to transfer files from a server in cloud with one NIC to a client with two NIC, the output log shows that two paths are established but only one path can receive packets. I print the 4 tuple of the two paths from both perspective of client and server, from server's viewpoint, the client addresses are behind NAT(shown in the figure). So the reason of path unable to receive packet is the server can't find the local address of client behind NAT?
image

Disallow zero-length connection ID

Zero-length connection ID should not be enabled if a host want to advertise multipath-support. The same requirement was stated in QUIC transport draft to support connection migration, NAT rebinding, or client port reuse.

Panic: runtime error: invalid memory address or nil pointer dereference

Hi! Today when I was trying the echo example, I was thinking if I can change it little and transfer files from one vm one PC to vm on another PC. I set up the provided virtual machine one each side and configure the routing table. But every time I try to transfer some big files, it encounters this error:
image
I also try to set CreatePath = false, then I can transfer the files successfully. Please, anyone knows how to figure this out?

Thanks for helping :)

No matter which version of quic-go I use, some packages are not found in any modules

These are available quic-go releases,
https://github.com/lucas-clemente/quic-go/releases
but none can support this repository on mininet.

If I use 0.24.0, logs are:

mpquic1 imports
	github.com/lucas-clemente/quic-go/ackhandler: module github.com/lucas-clemente/quic-go@latest found (v0.24.0, replaced by github.com/lucas-clemente/[email protected]), but does not contain package github.com/lucas-clemente/quic-go/ackhandler
mpquic1 imports
	github.com/lucas-clemente/quic-go/congestion: module github.com/lucas-clemente/quic-go@latest found (v0.24.0, replaced by github.com/lucas-clemente/[email protected]), but does not contain package github.com/lucas-clemente/quic-go/congestion
mpquic1 imports
	github.com/lucas-clemente/quic-go/internal/crypto: module github.com/lucas-clemente/quic-go@latest found (v0.24.0, replaced by github.com/lucas-clemente/[email protected]), but does not contain package github.com/lucas-clemente/quic-go/internal/crypto
mpquic1 imports
	github.com/lucas-clemente/quic-go/qerr: module github.com/lucas-clemente/quic-go@latest found (v0.24.0, replaced by github.com/lucas-clemente/[email protected]), but does not contain package github.com/lucas-clemente/quic-go/qerr
mpquic1/example imports
	github.com/lucas-clemente/quic-go/h2quic: module github.com/lucas-clemente/quic-go@latest found (v0.24.0, replaced by github.com/lucas-clemente/[email protected]), but does not contain package github.com/lucas-clemente/quic-go/h2quic
mpquic1 tested by
	mpquic1.test imports
	github.com/lucas-clemente/quic-go/internal/mocks/mocks_fc: module github.com/lucas-clemente/quic-go@latest found (v0.24.0, replaced by github.com/lucas-clemente/[email protected]), but does not contain package github.com/lucas-clemente/quic-go/internal/mocks/mocks_fc
mpquic1/benchmark tested by
	mpquic1/benchmark.test imports
	github.com/lucas-clemente/quic-go/integrationtests/tools/testlog: module github.com/lucas-clemente/quic-go@latest found (v0.24.0, replaced by github.com/lucas-clemente/[email protected]), but does not contain package github.com/lucas-clemente/quic-go/integrationtests/tools/testlog
mpquic1/integrationtests/chrome tested by
	mpquic1/integrationtests/chrome.test imports
	github.com/lucas-clemente/quic-go/integrationtests/tools/testserver: module github.com/lucas-clemente/quic-go@latest found (v0.24.0, replaced by github.com/lucas-clemente/[email protected]), but does not contain package github.com/lucas-clemente/quic-go/integrationtests/tools/testserver

If I use 0.6.0, logs are:

mpquic1 tested by
	mpquic1.test imports
	github.com/lucas-clemente/quic-go/internal/mocks/mocks_fc: module github.com/lucas-clemente/quic-go@latest found (v0.24.0, replaced by github.com/lucas-clemente/[email protected]), but does not contain package github.com/lucas-clemente/quic-go/internal/mocks/mocks_fc
mpquic1/example imports
	github.com/lucas-clemente/quic-go/h2quic imports
	golang.org/x/net/lex/httplex: module golang.org/x/net@latest found (v0.0.0-20211216030914-fe4d6282115f), but does not contain package golang.org/x/net/lex/httplex

The middle versions behave just the same.
My go version is 1.16.12

Could the developers provide the version of quic-go they used for the experiment?

"go get -t -u ./..." doesn't work well

Hello everyone, I have an issue when running the "go get -t -u ./..." command to download dependency packages for mpquic.
I flowed this tutorial " https://multipath-quic.org/2017/12/09/artifacts-available.html", using go1.17.5 instead of go1.9, and I got the following error:

github.com/lucas-clemente/quic-go/internal/crypto

internal/crypto/key_derivation.go:47:60: cs.KeyLen undefined (type mint.CipherSuiteParams has no field or method KeyLen)
internal/crypto/key_derivation.go:48:58: cs.IvLen undefined (type mint.CipherSuiteParams has no field or method IvLen)

I tried to reset the mint repo, as it is mentioned in the tutorial, but it didn't solve the problem.

MPQUIC and packet loss in a mininet envirement

Hello,
I’m writing an MPQUIC client-server connection using Golang in a Mininet environment. I want to forward a file from the server to the client, so I send the whole stream over the connection and I create a buffer to read data from the stream and store it to the received file.
Everything went well until I added loss/delay options to the Mininet environment. Although the loss was only 1%, the number of packet losses was bigger than what was expected. Sometimes I lose more than half of the amount of data. I don’t know where the problem is exactly? Maybe the MPQUIC protocol and Mininet’s way of simulating package loss and delay do not go well together. If yes, could you please direct me to the right software that can be more efficient than Mininet?

Is FEC added in MPQUIC?

Hello,
I read your paper: Adding Forward Erasure Correction to QUIC, and noticed
that you've already added FEC in MPQUIC and designed a scheduler named HighRB Scheduler, but I didn't find the code, is the code available?It would be appreciated if you could answer this question.

the aggregated throughput is quite low

I have tested your code and find a problem,the client has two ips and the server is one, but when i tested it, lots of udp packets were sent through one ip of the client and a few udp packets were sent through the other ip. so the aggregated output is quite low,Do you test it between the clouds server and your client or you just test it locally ? Have you found this problem?

Which version of quic-go support the existed mpquic

During the process of installing mpquic, I have met a lot of problems. I found that mpquic was completed around 2 years ago and it has not been updated now, however, quic-go is being continually updated. Could you please tell me which version of quic-go support the existed mpquic?

Can MPUIC be used in Android?

Hello,
I found your excellent job in MlitipathTester,which support ios OS,I'm curious if MPQUIC can be used in Android?

Does mp-quic implements Cubic or Reno?

Hi,

I can see multiple references to Reno in cubic_sender.go . Now I'm a bit confused. Is Cubic really implemented in cubic_sender.go or does this implement Reno or both?

Setting up Multipath QUIC

Hello all,

I have two mininet VMs and I'm unable to generate multipath QUIC due to this error. Any proper setup guidelines to setup this? And also is mininet VM a CMD line based VM, coz I'm not able to see GUI in my local machine.
image

Thank you.

Real machine environment

Hello, everyone! I want to reproduce the environment in the real machine. However, when I tested the performance of the handover, I met an error like this:

panic: NetworkIdleTimeout: No recent network activity

Due to this error, the QUIC connection was always closed. However, even if the client connects two paths, when one of the paths is canceled, the connection fails again!

Could everyone help me? Thanks in advance!

MPQUIC installation

Hello, everybody! I want to install the mpquic in real environment, however, I could not install when I executed _go get github.com/lucas-clemente/quic-go and go get -t -u ./... . Does anybody successfully install it? I would very appreciated if someone could tell me how to install it. Thank you so much for your attention and participation.

Test problem

Hello, Quentin De, Thanks for your excellent work! I want to reproduce your result with your VM zip files! However, I do not know how to set up the client VM and the server VM for running a script (for instance quic_mptcp_https_tests_expdes_wsp_lowbdp_quic.py), just like you said in the link-https://multipath-quic.org/2017/12/09/artifacts-available.html. Would you please tell me how to run the test code? if anyone has successfully run these test files, please help me! Thanks a lot!

ProofInvalid

Hi, I tested
go run main.go -bind ":8088" on a terminal and
go run client/main.go https://localhost:8088 on another terminal
I got the error:

Closing session with error:ProofInvalid
Connection fec6298ed2bab059 closed
panic: Get https://localhost:8088/demo/tiles: ProofInvalid

I have the id_rsa, id_rsa.pub and authorized_keys file in ~/.ssh
I read the README.md, it seems that the privkey.pem and fullchain.pem file in invalid
So I need to get a new privkey.pem and fullchain.pem in example file right? : -)

Something wrong with the process

Hello,
I followed the tutorial https://multipath-quic.org/2017/12/09/artifacts-available.html
But when I got to go get -t -u ./... , there was a problem as belong showing:

#github.com/lucas-clemente/quic-go/internal/crypto
internal/crypto/key_derivation.go:47:60: cs.KeyLen undefined (type mint.CipherSuiteParams has no field or method KeyLen)
internal/crypto/key_derivation.go:48:58: cs.IvLen undefined (type mint.CipherSuiteParams has no field or method IvLen)

Can you tell me what is the problem is?And I notice there's no reply to lots of issues, is mpquic dead?

These two bits of code in the path_manager.go file confuse me.

1.from ‘setup()’

` // Initial PathID is 0
// PathIDs of client-initiated paths are even
// those of server-initiated paths odd

if pm.sess.perspective == protocol.PerspectiveClient {
	pm.nxtPathID = 1
} else {
	pm.nxtPathID = 2
}

`
2.from ‘createPathFromRemote(p *receivedPacket)’

` // Sanity check: odd is client initiated, even for server initiated

if pm.sess.perspective == protocol.PerspectiveClient && pathID%2 != 0 {
	return nil, errors.New("server tries to create odd pathID")
}
if pm.sess.perspective == protocol.PerspectiveServer && pathID%2 == 0 {
	return nil, errors.New("client tries to create even pathID")
}

`
So who created the odd numbered paths and who created the even numbered paths?

Unable to set CreatePaths in server Config

While the intention of the populateServerConfig function seems to be to enable path creation by default (the comments explicitly say that we want to "Grant this ability by default for a server"), and the implementation sets the CreatePaths value to true for the passed *Config...

mp-quic/server.go

Lines 166 to 171 in 7a91883

func populateServerConfig(config *Config) *Config {
if config == nil {
config = &Config{
CreatePaths: true, // Grant this ability by default for a server
}
}

... the value of the passed config.CreatePaths is never propagated to the returned *Config meaning that it takes the default bool value (false) whenever populateServerConfig is called.

mp-quic/server.go

Lines 200 to 209 in 7a91883

return &Config{
Versions: versions,
HandshakeTimeout: handshakeTimeout,
IdleTimeout: idleTimeout,
AcceptCookie: vsa,
KeepAlive: config.KeepAlive,
MaxReceiveStreamFlowControlWindow: maxReceiveStreamFlowControlWindow,
MaxReceiveConnectionFlowControlWindow: maxReceiveConnectionFlowControlWindow,
}
}

populateServerConfig is in the call chain for all of the Listen* functions which means that unless you are creating the internal server struct with a config that has CreatePaths set, it is impossible to set the value to true.

Further down the call path, when the value of session.createPaths is false, the pathManager will never call createPaths in run which means that the pathManagers on the server never get a chance to call advertiseAddresses.

Impact:

This bug means that server pathManagers will never call createPaths -- preventing them from advertising local addresses to clients, and client pathManagers are currently prevented from advertising paths. I believe this means that configurations where the client has multiple addresses and the server has a single address will work as expected as the client will create connections from each suitable local address to the singular remote it knows about. The server will integrate these connections into the session properly using createPathFromRemote. However, in configurations where the server has multiple available addresses, the client will not be able discover the additional paths.

Fix:

Propagate the value of config.CreatePaths in populateServerConfig.

// populateServerConfig populates fields in the quic.Config with their default values, if none are set
// it may be called with nil
func populateServerConfig(config *Config) *Config {
...
	return &Config{
		Versions:                              versions,
...
		MaxReceiveStreamFlowControlWindow:     maxReceiveStreamFlowControlWindow,
		MaxReceiveConnectionFlowControlWindow: maxReceiveConnectionFlowControlWindow,
+		CreatePaths:			       config.CreatePaths,
	}
}

TLDR: The value of CreatePaths in the Config is not forwarded in populateServerConfig meaning that the current implementation does not allow the server to enable path advertisement no matter what value is passed in via config in the Listen* functions.

Entire connection fails when one path fails

I have 2 paths, one the one to my router (192.168.0.X) and other one to a virtual machine that gives an error when trying to write to it.

The problem is that although the first path (the one to my router) is working properly, when the second path fails the entire connection is dropped. If a path fails it should only be cleared from that connection, and fail the entire connection only when all paths fail.
eue5 1

In this case the problem is obvious, but a socket write could fail for a lot of reasons, so I guess it must be handled properly.

AttributeError: 'ExperienceLauncher' object has no attribute 'num'

I followed the instructions and when I started to run the .py file saved in the /minitopo-experiences/experiences files. I got the error:

AttributeError: 'ExperienceLauncher' object has no attribute 'num'

I used python quicreqres_test.py

I don't know how to fix that. If anyone has met with that problem, could you teach me how to fix that? Thanks in advance: -)

Does MPQUIC not perform full mesh with the client host?

Does MPQUIC not perform full mesh with the client host? For example, there are two hosts (client and server), each host has two interfaces, in MPTCP there are 4 subflows creating the full mesh, however, in MPQUIC I only see 2 subflows created in the pathmanager. How does MPQUIC work, does it not do full mesh?

<xxx> is not using a known version control system

I followed the instruction and I met this error when I ran go get -t -u ./.. in the directroy of ~/go/src/github.com/lucas-clemente/quic-go

directory "/root/go/src/github.com/lucas-clemente" is not using a known version control system

has anyone met with that problem? Could you teach me how to fix that? Thanks in advance. : )

when I build on ubuntu, crypto handshake timeout,please which reason???

$go run example/client/main.go https://clemente.io

GET https://clemente.io
Starting new connection to clemente.io ([::]:36759 -> 18.65.116.106:443), connectionID fae96b208619c577, version 512
Closing session with error: HandshakeTimeout: Crypto handshake did not complete in time.
Connection fae96b208619c577 closed.
panic: Get https://clemente.io: HandshakeTimeout: Crypto handshake did not complete in time.

goroutine 5 [running]:
main.main.func1(0xc420067290, 0xc420012660, 0x7ffceead91f1, 0x13)
/home/frank/go/src/github.com/lucas-clemente/quic-go/example/client/main.go:56 +0x312
created by main.main
/home/frank/go/src/github.com/lucas-clemente/quic-go/example/client/main.go:53 +0x332
exit status 2

How install MPQuic with quic-go?

I tried different ways to install MPQuic, but were not successful. How can I install MPQuic? and what version of quic-go is compatible?

I tried this tutorial
https://multipath-quic.org/2017/12/09/artifacts-available.html
but when I try "go get -t -u ./..."
I get error

package golang.org/x/net/lex/httplex: cannot find package "golang.org/x/net/lex/httplex" in any of: /usr/local/go/src/golang.org/x/net/lex/httplex (from $GOROOT) /home/thomas/go/src/golang.org/x/net/lex/httplex (from $GOPATH)
So, I change this files request_writer.go and roundtrip.go
"golang.org/x/net/lex/httplex" ==> "golang.org/x/net/http/httpguts"

And when I try again "go get -t -u ./..."
I got this error:

github.com/lucas-clemente/quic-go/internal/crypto internal/crypto/key_derivation.go:47:60: cs.KeyLen undefined (type mint.CipherSuiteParams has no field or method KeyLen) internal/crypto/key_derivation.go:48:58: cs.IvLen undefined (type mint.CipherSuiteParams has no field or method IvLen)

enable createpath ,run the client and server in the example,why didn't crypto handshake complete in time

[root@localhost client]# go run main.go https://liyanjunlab.vip:6121
GET https://liyanjunlab.vip:6121
Created pconn_manager, any on [::]:55716
Starting new connection to liyanjunlab.vip ([::]:55716 -> 192.168.237.150:6121), connectionID 9e94571b99992a51, version 512
Sending CHLO:
SNI : "liyanjunlab.vip"
VER : "Q512"
CCS : "\x01\xe8\x81`\x92\x92\x1a\xe8~퀆\xa2\x15\x82\x91"
MSPC: "d\x00\x00\x00"
PDMD: "X509"
ICSL: "\x1e\x00\x00\x00"
MIDS: "d\x00\x00\x00"
CFCW: "\x00\xc0\x00\x00"
SFCW: "\x00\x80\x00\x00"
PAD : (893 bytes)
-> Sending packet 0x1 (1069 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StreamFrame{StreamID: 1, FinBit: false, Offset: 0x0, Data length: 0x410, Offset + Data length: 0x410}
Dequeueing handshake retransmission for packet 0x1
-> Sending packet 0x2 (1072 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0x2, PacketNumberLen: 0x2}
-> &wire.StreamFrame{StreamID: 1, FinBit: false, Offset: 0x0, Data length: 0x410, Offset + Data length: 0x410}
Dequeueing handshake retransmission for packet 0x2
-> Sending packet 0x3 (1072 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0x3, PacketNumberLen: 0x2}
-> &wire.StreamFrame{StreamID: 1, FinBit: false, Offset: 0x0, Data length: 0x410, Offset + Data length: 0x410}
Queueing packet 0x3 for retransmission (RTO), 1 outstanding
Dequeueing handshake retransmission for packet 0x3
-> Sending packet 0x4 (1072 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0x4, PacketNumberLen: 0x2}
-> &wire.StreamFrame{StreamID: 1, FinBit: false, Offset: 0x0, Data length: 0x410, Offset + Data length: 0x410}
-> Sending packet 0x5 (33 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.PathsFrame{MaxNumPaths:0xff, NumPaths:0x1, PathIDs:[]protocol.PathID{0x0}, RemoteRTTs:[]time.Duration{3600000000000}}
Queueing packet 0x4 for retransmission (RTO), 2 outstanding
Queueing packet 0x5 for retransmission (RTO), 1 outstanding
Dequeueing handshake retransmission for packet 0x4
-> Sending packet 0x6 (1072 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0x6, PacketNumberLen: 0x2}
-> &wire.StreamFrame{StreamID: 1, FinBit: false, Offset: 0x0, Data length: 0x410, Offset + Data length: 0x410}
Dequeueing handshake retransmission for packet 0x5
-> Sending packet 0x7 (36 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0x6, PacketNumberLen: 0x2}
-> &wire.PathsFrame{MaxNumPaths:0xff, NumPaths:0x1, PathIDs:[]protocol.PathID{0x0}, RemoteRTTs:[]time.Duration{3600000000000}}
-> Sending packet 0x8 (33 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.PathsFrame{MaxNumPaths:0xff, NumPaths:0x1, PathIDs:[]protocol.PathID{0x0}, RemoteRTTs:[]time.Duration{3600000000000}}
Queueing packet 0x6 for retransmission (RTO), 3 outstanding
Queueing packet 0x7 for retransmission (RTO), 2 outstanding
Queueing packet 0x8 for retransmission (RTO), 1 outstanding
Dequeueing handshake retransmission for packet 0x6
-> Sending packet 0x9 (1072 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0x9, PacketNumberLen: 0x2}
-> &wire.StreamFrame{StreamID: 1, FinBit: false, Offset: 0x0, Data length: 0x410, Offset + Data length: 0x410}
Dequeueing handshake retransmission for packet 0x7
-> Sending packet 0xa (36 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0x9, PacketNumberLen: 0x2}
-> &wire.PathsFrame{MaxNumPaths:0xff, NumPaths:0x1, PathIDs:[]protocol.PathID{0x0}, RemoteRTTs:[]time.Duration{3600000000000}}
Dequeueing handshake retransmission for packet 0x8
-> Sending packet 0xb (36 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0x9, PacketNumberLen: 0x2}
-> &wire.PathsFrame{MaxNumPaths:0xff, NumPaths:0x1, PathIDs:[]protocol.PathID{0x0}, RemoteRTTs:[]time.Duration{3600000000000}}
-> Sending packet 0xc (33 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.PathsFrame{MaxNumPaths:0xff, NumPaths:0x1, PathIDs:[]protocol.PathID{0x0}, RemoteRTTs:[]time.Duration{3600000000000}}
Queueing packet 0x9 for retransmission (RTO), 4 outstanding
Queueing packet 0xa for retransmission (RTO), 3 outstanding
Queueing packet 0xb for retransmission (RTO), 2 outstanding
Queueing packet 0xc for retransmission (RTO), 1 outstanding
Dequeueing handshake retransmission for packet 0x9
-> Sending packet 0xd (1072 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0xd, PacketNumberLen: 0x2}
-> &wire.StreamFrame{StreamID: 1, FinBit: false, Offset: 0x0, Data length: 0x410, Offset + Data length: 0x410}
Dequeueing handshake retransmission for packet 0xa
-> Sending packet 0xe (36 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0xd, PacketNumberLen: 0x2}
-> &wire.PathsFrame{MaxNumPaths:0xff, NumPaths:0x1, PathIDs:[]protocol.PathID{0x0}, RemoteRTTs:[]time.Duration{3600000000000}}
Dequeueing handshake retransmission for packet 0xb
-> Sending packet 0xf (36 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0xd, PacketNumberLen: 0x2}
-> &wire.PathsFrame{MaxNumPaths:0xff, NumPaths:0x1, PathIDs:[]protocol.PathID{0x0}, RemoteRTTs:[]time.Duration{3600000000000}}
Dequeueing handshake retransmission for packet 0xc
-> Sending packet 0x10 (36 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.StopWaitingFrame{LeastUnacked: 0xd, PacketNumberLen: 0x2}
-> &wire.PathsFrame{MaxNumPaths:0xff, NumPaths:0x1, PathIDs:[]protocol.PathID{0x0}, RemoteRTTs:[]time.Duration{3600000000000}}
-> Sending packet 0x11 (33 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.PathsFrame{MaxNumPaths:0xff, NumPaths:0x1, PathIDs:[]protocol.PathID{0x0}, RemoteRTTs:[]time.Duration{3600000000000}}
Closing session with error: HandshakeTimeout: Crypto handshake did not complete in time.
-> Sending packet 0x12 (76 bytes) for connection 9e94571b99992a51 on path 0, unencrypted
-> &wire.ConnectionCloseFrame{ErrorCode:0x43, ReasonPhrase:"Crypto handshake did not complete in time."}
Connection 9e94571b99992a51 closed.
panic: Get "https://liyanjunlab.vip:6121": HandshakeTimeout: Crypto handshake did not complete in time.

goroutine 6 [running]:
main.main.func1(0xc000075170, 0xc000022334, 0x7ffe40e357fd, 0x1c)
/usr/local/gopath/src/github.com/lucas-clemente/quic-go/example/client/main.go:56 +0x2f9
created by main.main
/usr/local/gopath/src/github.com/lucas-clemente/quic-go/example/client/main.go:53 +0x3ba
exit status 2

go build... no non-test Go files error

hello,

I'm using an unpublic project which uses MPQUIC, I followed the instructions mentioned in its readme file to build and install the project, but when I ran the go install ./... command it gave me an error:

go build github.com/lucas-clemente/quic-go/benchmark: no non-test Go files in /home/mininet/go/src/github.com/lucas-clemente/quic-go/benchmark
go build github.com/lucas-clemente/quic-go/integrationtests/chrome: no non-test Go files in /home/mininet/go/src/github.com/lucas-clemente/quic-go/integrationtests/chrome
go build github.com/lucas-clemente/quic-go/integrationtests/gquic: no non-test Go files in /home/mininet/go/src/github.com/lucas-clemente/quic-go/integrationtests/gquic
go build github.com/lucas-clemente/quic-go/integrationtests/self: no non-test Go files in /home/mininet/go/src/github.com/lucas-clemente/quic-go/integrationtests/self

could you please help me fix this error?
Best regards,

How InitialPath works (PathID=0)

Dear @qdeconinck ,

I have a question about InitialPath (PathID=0). I know that the path used for establishing the QUIC connection and the cryptographic handshake is done on this path.
However, in the scheduler, I try to return InitialPath for all packets to send, and it works. Especially, the transmission time is fast (compare to other schedulers as minRTT, BLEST,...).

Looking forward to your explanation of how this path works. Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.