This commit is contained in:
John Gatward
2026-03-25 15:04:03 +00:00
parent 6e862b0fbf
commit c1b84c7f7d
36 changed files with 1541 additions and 0 deletions

View File

@@ -0,0 +1,157 @@
# 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.