{"action":"created","issue":{"url":"https://api.github.com/repos/mobile-shell/mosh/issues/773","repository_url":"https://api.github.com/repos/mobile-shell/mosh","labels_url":"https://api.github.com/repos/mobile-shell/mosh/issues/773/labels{/name}","comments_url":"https://api.github.com/repos/mobile-shell/mosh/issues/773/comments","events_url":"https://api.github.com/repos/mobile-shell/mosh/issues/773/events","html_url":"https://github.com/mobile-shell/mosh/issues/773","id":163754754,"number":773,"title":"Mosh, VPN, and MTU","user":{"login":"cgull","id":1934797,"avatar_url":"https://avatars.githubusercontent.com/u/1934797?v=3","gravatar_id":"","url":"https://api.github.com/users/cgull","html_url":"https://github.com/cgull","followers_url":"https://api.github.com/users/cgull/followers","following_url":"https://api.github.com/users/cgull/following{/other_user}","gists_url":"https://api.github.com/users/cgull/gists{/gist_id}","starred_url":"https://api.github.com/users/cgull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cgull/subscriptions","organizations_url":"https://api.github.com/users/cgull/orgs","repos_url":"https://api.github.com/users/cgull/repos","events_url":"https://api.github.com/users/cgull/events{/privacy}","received_events_url":"https://api.github.com/users/cgull/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2016-07-05T00:46:57Z","updated_at":"2016-07-12T05:14:02Z","closed_at":"2016-07-12T05:13:27Z","body":"Tonight I'm riding home on an Acela Express train.  I started  OS X's L2TP VPN client to access a server (running an IRC client).  After connecting to the Acela Express wifi and starting VPN, my Mosh connection was not coming back up.  I've actually seen issues with Mosh on my last 2 or 3 rides, but not figured out what was going on.\r\n\r\nLooking at the network connection showed that mosh-server is sending packets at its max MTU (IRC scrollback no doubt), but the client is not receiving them. Running various tests with 'ping' suggests that maximum-MTU pings to my VPN server's external address succeed, but large pings over VPN to the server fail.  The failure threshold appears to be about 1320 bytes, which is smaller than the the 1380-byte MTU in mosh master.  Switching to phone tethering and bringing up the VPN there results in a working connection.\r\n\r\nI suspect Amtrak's Wifi/hotspot provider is simply dropping large packets in known (and maybe unknown) VPN encapsulation, because they can't manage/shape that traffic and need to control users attempting to use VPN to evade bandwidth limits.\r\n\r\nUltimately, the battle between Acela VPN abusers and Amtrak's Wifi provider could become a game of whack-a-mole, and we're left trying to figure out how to get Mosh's transport to work in this environment.  \r\n\r\nWe can reduce the IPv4 MTU to work around this specific case, but that's probably not a general solution.  Some ideas I have include falling back to a small MTU on evidence of persistent one-way connectivity, or occasionally/randomly falling back to a small MTU to break MTU logjams.\r\n\r\nIn my specific example the client has chosen a 1280-byte MTU for its VPN tunnel interface (though the VPN server is using 1500 bytes).  I don't believe the client MTU is related to this issue, but if mosh-server and mosh-client could learn MTUs and tell the other side, that might also help with other MTU/fragmentation issues.\r\n\r\n#299 has several reports of VPN-related issues which may or may not resemble what I've seen here.\r\n"},"comment":{"url":"https://api.github.com/repos/mobile-shell/mosh/issues/comments/231939267","html_url":"https://github.com/mobile-shell/mosh/issues/773#issuecomment-231939267","issue_url":"https://api.github.com/repos/mobile-shell/mosh/issues/773","id":231939267,"user":{"login":"cgull","id":1934797,"avatar_url":"https://avatars.githubusercontent.com/u/1934797?v=3","gravatar_id":"","url":"https://api.github.com/users/cgull","html_url":"https://github.com/cgull","followers_url":"https://api.github.com/users/cgull/followers","following_url":"https://api.github.com/users/cgull/following{/other_user}","gists_url":"https://api.github.com/users/cgull/gists{/gist_id}","starred_url":"https://api.github.com/users/cgull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cgull/subscriptions","organizations_url":"https://api.github.com/users/cgull/orgs","repos_url":"https://api.github.com/users/cgull/repos","events_url":"https://api.github.com/users/cgull/events{/privacy}","received_events_url":"https://api.github.com/users/cgull/received_events","type":"User","site_admin":false},"created_at":"2016-07-12T05:14:02Z","updated_at":"2016-07-12T05:14:02Z","body":"Agreed that ICMP-less PMTU discovery is probably the long-term solution.  But not for 1.2.6."}}
{"actor":{"display_login":"cgull"}}