{"action":"created","issue":{"url":"https://api.github.com/repos/quicwg/base-drafts/issues/1451","repository_url":"https://api.github.com/repos/quicwg/base-drafts","labels_url":"https://api.github.com/repos/quicwg/base-drafts/issues/1451/labels{/name}","comments_url":"https://api.github.com/repos/quicwg/base-drafts/issues/1451/comments","events_url":"https://api.github.com/repos/quicwg/base-drafts/issues/1451/events","html_url":"https://github.com/quicwg/base-drafts/issues/1451","id":332829542,"node_id":"MDU6SXNzdWUzMzI4Mjk1NDI=","number":1451,"title":"Looping with multiple Retry packets","user":{"login":"martinthomson","id":67641,"node_id":"MDQ6VXNlcjY3NjQx","avatar_url":"https://avatars1.githubusercontent.com/u/67641?v=4","gravatar_id":"","url":"https://api.github.com/users/martinthomson","html_url":"https://github.com/martinthomson","followers_url":"https://api.github.com/users/martinthomson/followers","following_url":"https://api.github.com/users/martinthomson/following{/other_user}","gists_url":"https://api.github.com/users/martinthomson/gists{/gist_id}","starred_url":"https://api.github.com/users/martinthomson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martinthomson/subscriptions","organizations_url":"https://api.github.com/users/martinthomson/orgs","repos_url":"https://api.github.com/users/martinthomson/repos","events_url":"https://api.github.com/users/martinthomson/events{/privacy}","received_events_url":"https://api.github.com/users/martinthomson/received_events","type":"User","site_admin":false},"labels":[{"id":481871399,"node_id":"MDU6TGFiZWw0ODE4NzEzOTk=","url":"https://api.github.com/repos/quicwg/base-drafts/labels/-transport","name":"-transport","color":"fbca04","default":false},{"id":481871361,"node_id":"MDU6TGFiZWw0ODE4NzEzNjE=","url":"https://api.github.com/repos/quicwg/base-drafts/labels/design","name":"design","color":"1d76db","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":8,"created_at":"2018-06-15T15:58:55Z","updated_at":"2018-06-18T15:33:14Z","closed_at":null,"author_association":"MEMBER","body":"Allowing multiple Retry packets creates a potential for regression of the address validation tokens.\r\n\r\nSay that a client retransmits its first Initial packet without a token.  The server responds to both with the same token.  The second of these packets is delayed.\r\n\r\nThe client receives the first, sends another Initial packet and receives a second token in response.\r\n\r\nThen the Retry that the server sent in response to the retransmission of the first Initial is received.  The client switches to that token as though it were new, but it's back to the first token.\r\n\r\nIf the server relies on multiple Retry packets and the progressive validation of the address using those tokens, then this will revert any progress that was made.  Because Retry can't be sent indefinitely (it has this arbitrary limit of 3 changes), this might cause that connection to fail."},"comment":{"url":"https://api.github.com/repos/quicwg/base-drafts/issues/comments/398096042","html_url":"https://github.com/quicwg/base-drafts/issues/1451#issuecomment-398096042","issue_url":"https://api.github.com/repos/quicwg/base-drafts/issues/1451","id":398096042,"node_id":"MDEyOklzc3VlQ29tbWVudDM5ODA5NjA0Mg==","user":{"login":"ianswett","id":20072817,"node_id":"MDQ6VXNlcjIwMDcyODE3","avatar_url":"https://avatars1.githubusercontent.com/u/20072817?v=4","gravatar_id":"","url":"https://api.github.com/users/ianswett","html_url":"https://github.com/ianswett","followers_url":"https://api.github.com/users/ianswett/followers","following_url":"https://api.github.com/users/ianswett/following{/other_user}","gists_url":"https://api.github.com/users/ianswett/gists{/gist_id}","starred_url":"https://api.github.com/users/ianswett/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ianswett/subscriptions","organizations_url":"https://api.github.com/users/ianswett/orgs","repos_url":"https://api.github.com/users/ianswett/repos","events_url":"https://api.github.com/users/ianswett/events{/privacy}","received_events_url":"https://api.github.com/users/ianswett/received_events","type":"User","site_admin":false},"created_at":"2018-06-18T15:33:14Z","updated_at":"2018-06-18T15:33:14Z","author_association":"CONTRIBUTOR","body":"If we're going to allow more than 2, I'm not at all clear on how we're going to guarantee forward progress.\r\n\r\nI'll point out that if a server is under DoS and thinks a QUIC connection is a potential attack, it can close the connection and force the client to fall back to TCP.  This isn't optimal, but it avoids a lot of edge cases involving multiple retries and rollout issues where the server expects to be behind a DoS prevention device, but isn't temporarily.\r\n\r\nI'll remind everyone that QUIC's requirement of a full-sized INITIAL should make it much less prone to issues than TCP syn attacks, so one layer of defense really should be enough."}}
{"actor":{"display_login":"ianswett"}}