Team Eenvironment Setup


Here are some team environment I have worked with, some with MaxxSports.

Version control: git(gitlab or github), svn, perforce, MS Team Foundation
Code review: Codeflow, Swarm
Issue Tracking: Jira, Bugzilla
Task tracking: Jira
Email: Gmail Business, AWS WorkMail, MS Exchange
Messaging: Slack, Lync
Conference: G Suite Hangouts Meet meet.google.com, bluejeans,
Wiki: Confluence
File sharing: Box
Build Management: Teamcity, Jenkins, MS Team Foundation
Build System: make, msBuild, BitBake, OpenEmbedded

Advertisements

Server Push Thru Http2


Server: nginx-1.15.8 downloaded as Pre-Built Packages from http://nginx.org/en/download.html

Config: in /etc/nginx, different from nginx-1.9.15, whose config in /usr/local/nginx
Add to server section: listen 444 ssl http2;
Add to location section: http2_push /style.css;

Test:
with Chrome: go to https://riowing.net:444/index.htm
Developer Tools – network: header colum shows h2
with Curl 7.63: curl.exe -vso /dev/null –http2 https://riowing.net:444/index.htm
watch for output: “server accepted to use h2”
Notes: style.css is downloaded both with and without http2. The difference is that without a separate corresponding request from browser, or so called Server Push.

TCP behind NAT


It’s assumed that host A B both behind NAT, and UDP hole punching is already working.
There are two more requirements for A to initiate a TCP connection to B.
1. natA has to tolerate B’s sending A a SYN by not replying a RST.
2. natB allows A’s SYN to come in, while natB normally expects A’s SYN/ACT.
Most NAT doesn’t meet these two requirements, which explains TCP hole punching seldom works.

UDP behind NAT


There are challenges when communicating through NAT.
1. client is behind NAT. It doesn’t know it’s own public IP, which is needed by, e.g. RTSP
The public IP can be learned from STUN server.
2. server is behind NAT. No private-to-public port map in NAT initially.
server talks to STUN to establish the map, and STUN tells client server’s public IP-port.
With STUN, for both restricted and unrestricted NAT, two hosts can talk to each other directly.
TCP is not discussed here, which is more complicated.

A few words on NAT type:
Cone: one private IP-port maps to one public IP-port, when talking to multiple destinations
Symmetric: one private IP-port maps to different public IP-port pairs for different destinations

Communication cannot be established if both A and B are behind symmetric NAT, because neither A nor B and the STUN server can possibly know B’s pubic port number.