Files
notes/docs/lectures/acn/11_connecting.md
John Gatward c1b84c7f7d Add acn
2026-03-25 15:04:03 +00:00

158 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Connecting
#### Elasticity: Supply and Demand
This is about **resource management**
- **Supply** - Available link capacity on path
- **Demand** - Host transmitting and receiving traffic
- **Elastic** - capacity reduces -> demand is scaled back
- Hosts stop sending / send less
- **Inelastic** - applications cant handle this
TCP manages resource usage based on observed loss and latency
#### Quality of Service
If capacity > demand, there is no need for quality of service
If capacity < demand, we need to keep queuing minimal
- As queuing directly impacts latency, jitter and loss
- In stable networks
- **Jitter**: The difference in delays, a measure of stability
#### IP Type of Service
- Single IP header byte
```
Bits 0-2: Precedence.
Bit 3: 0 = Normal Delay, 1 = Low Delay.
Bits 4: 0 = Normal Throughput, 1 = High Throughput.
Bits 5: 0 = Normal Reliability, 1 = High Reliability.
Bit 6-7: Reserved for Future Use.
```
- Precedence for *special* traffic
```
0 1 2 3 4 5 6 7
+-----+-----+-----+-----+-----+-----+-----+-----+
| | | | | | |
| PRECEDENCE | D | T | R | 0 | 0 |
| | | | | | |
+-----+-----+-----+-----+-----+-----+-----+-----+
Precedence
111 - Network Control
110 - Internetwork Control
101 - CRITIC/ECP
100 - Flash Override
011 Flash
010 Immediate
001 Priority
000 - Routine
```
### Differentiated Services (DiffServ)
- Operates on *traffic aggregates*
- Label packets with desired class via ToS
- Routers apply different queuing as operator sees fit
- Four service classes, or *per-hop behaviour*
- **Default**: best effort
- No QoL applied
- **Expedited Forwarding**: low delay, loss & jitter
- **Assured Forwarding**: low loss if within rate
- **Class Selector**: use ToS precedence bits
##### Problems
- End to end semantics
- Mapping to service level agreement
- If an internet company sells a network with a certain speed, this might have legal repercussions if QoS are enacted
- Mapping to application demands
### Integrated Services (IntServ)
- Operates on explicitly signalled *flows*
- Think phone switchboards
- The network signals exactly what it can and cant do to the destination nodes
- Flow setup specifies some quality of service
- Routers perform **C**onnection **A**dmission **C**ontrol
- CDA can accept and reject traffic based on whether or not the route/path is available
##### Problems
- Complexity
- Hard to scale
- Mapping requirements to parameters
- This was easier when ATM did it as they owned all the infrastructure
- Whereas now it is difficult to map across all different companies
- Per-flow state
- Extremely difficult
## NAT
### Address Shortages
**IPv4** supports 32 bit addresses
- 95% allocated already (440,000 netblocks)
**IPv6** supports 128 bit address
- Loads of addresses :white_check_mark:
- Routing protocols need to ported :negative_squared_cross_mark:
- Associated services needing to move :negative_squared_cross_mark:
### Network Address Translation
Because IPv6 did not magically solve address shortage problem and not all routers are ipv6 aware, we had to rely on NAT.
- Private Addressing, `RFC1918`
- `172.16/12`, `192.168/16`, `10/8`
- Devices with these local IPs should never be externally routed
- Not for security reasons - just for getting more addresses
- Traditional NAT, `RFC3022` is the standard
- Use private addresses internally (within the local network)
- Map into a (small) set of routable addresses
- Use source ports to distinguish connections
- For large scale **carrier grade NAT** [`RFC6598`] on `100.64/10`
#### Implementation
- Requires IP, TCP/UDP header rewriting
- Addresses, ports and checksums all need to be recalculated
- Behaviours
- Network Address Translation
- Network Address and Port Translation
###### Full Cone
![image-20220124180451508](/home/jay/.config/Typora/typora-user-images/image-20220124180451508.png)
```
ea:ep - NAT address : NAT port
```
When client receives packet from server 1 `da:dp`, the NAT translates the NAT address `ea:ep` to the clients internet address and port `ia:ip`.
###### Address Restricted Cone NAT
![image-20220124181009792](/home/jay/.config/Typora/typora-user-images/image-20220124181009792.png)
In this case server 2 is not trusted and therefore any request will be dropped.
###### Port Restricted Cone NAT
![image-20220124181127801](/home/jay/.config/Typora/typora-user-images/image-20220124181127801.png)
If the router receives a packet from a bad IP or bad port, it will be dropped.
###### Symmetric NAT
![image-20220124181325935](/home/jay/.config/Typora/typora-user-images/image-20220124181325935.png)
Here the internal address is obfuscated from the external servers, same client can use different ports for different communications.