Q: On congestion, where does that actually happen on a network path?
A: 어느 특정 아웃바운드 연결/경료에 대해 너무 많은 트래픽이 올시에 라우터의 버퍼에서 발생함
- 특정 아웃바운드 연결/경로가 중요하다. 각각의 연결/경로는 다른 버퍼를 가질수 있으니까.
- 라우터 버퍼가 가득참 → 패킷이 드롭됨 → 손실 발생
- 라우터 버퍼가 거의 가득참 → 패킷이 보내지는데 시간 걸림 → 지연 발생
Q: What’s the difference between ‘throughput’ and ‘goodput’?
A:
- throughput은 통과하는 데이터의 볼륨 (크기)를 말한다 (그게 무슨 데이터간에).
- Goodput은 통과하는 “새로운” 데이터의 볼륨을 칭한다 (이게 어플리케이션에서 말하는 “effective transmission rate” 과 관계되어 있음). 즉 재전송이 아닌 새로운 데이터의 볼륨.
Q: Why do we get a collapse in goodput as we approach congestion?
A: 혼잡해질수록 새로운 데이터가 통과하는 볼륨은 줄어들고 대신 retransmission 과 이에 대한 requests만 늘어날테니까.
Q: Why does TCP traffic (often) have a sawtooth pattern?
A: 네트워크를 정찰 (probe) 하면서 혼잡을 일으키지 않을떄 까지 점점 증가하다가, 혼잡이 발생하자마자 바로 줄여버리니까
- Additive Increase, Multiplicative Decrease (AIMD)
Q: How can we detect congestion? (3 ways, at least)
A:
- 패킷 손실 증가: 명확하게 혼잡 감지, 대신 혼잡이 생긴후에 감지
- 패킷 지연 증가: 혼잡이 생김을 예상 (추론), 혼잡을 미리 감지함
- ECN: 혼잡을 감지 (라우터가 알랴줌), 대신 라우터와 호스트간에 협조 필요
- IP header에 플래그를 설정한다.
Q: How does Selective Acknowledgement (SACK) greatly help TCP performance?
A:
- 송신자에게 수신가자 무엇을 받았는지 정확하게 알려줌으로써 놓친 부분만 다시 보내게 되니 보내는 양이 줄어들고 성능에 도움이됨
Q: What’s the difference between ‘fairness’ and ‘efficiency’ in networking terms?
A: 공평성은 네트워크 접근에 공평하게 (비슷한 송신율) 처리되는지. 효율성은 전체적인 네트워크를 보면서 가능한 최대한 성능을 끌어 올리고 있는지
Q: TCP has (at least) 3 types of “windows” for managing the transmission of segments (over
packets). Explain their key roles: SendWindow, ReceiveWindow, and CongestionWindow
A:
- SendWindow: 네트워크 효율성을 최대한 높이기 위해서
- RecvWindow: 송수신자 간의 성능 밸런싱을 위해서 (수신자가 송신자보다 빠르면 문제가 발생함)
- CongestionWindow: 송수신자간의 네트워크의 capacity 를 (거의 즉각적으로) 계산해서 흐름간의 공평성을 보장함. 혼잡 윈도우는 그냥 전송가능한 버퍼크기라고 생각하면 되는데 송신자는 최대 자신의 혼잡윈도우 크기만큼 트래픽을 전송가능하다. 이 혼잡윈도우는 네트워크의 혼잡도에 따라 커지기도하고 작아지기도 한다.