Ref: https://learn.cantrill.io/courses/1820301/lectures/41301609
AWS docs: https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/enhanced-networking.html
EC2 Enhanced Networking
Diagram: https://github.com/acantril/aws-sa-associate-saac03/blob/main/1100-ADVANCED_EC2/00_LEARNINGAIDS/EC2EnhancedNetworking.png
- Feature that greatly improves performance of EC2 NWing
- Required for high performance features like EC2 cluster placement groups
- ❗ Available for no charge, enabled by default on most modern EC2 instance types
- 💡 Tricky to see if it's enabled → check AWS docs for implementing it operationally
- 🔧 Uses SR-IOV → NW Interface Card (NIC) is virtualization aware
- Without SR-IOV: several instances talk to the same physical NIC of the EC2 host
- Host sits in the middle & controls which instance has access to the NIC
- NIC access control takes place in SW
- 👎 slows down NWing processes a lot
- 👎 consumes a lot of host CPU
- 💡 inefficient → can cause performance degradation when load is heavy
- With SR-IOV: NIC offers logical cards (multiple logical cards per physical NIC)
- Each instance is given exclusive access to a logical card
- NIC handles process E2E with instance without consuming a lot of host CPU
- Benefits
- 👍 Higher I/O & lower host CPU usage
- More BW (more NWing speed, better scaling, host CPU not affected)
- Higher pps (packets-per-second)
- 💡 great for apps which rely on high NWing performance (e.g. those that shift lots of small packets across a small, isolated NW)
- 👍 Lower latency, but more importantly CONSISTENT lower latency
EBS-Optimized Instances
- 💡 Reminder: EBS provides block storage over the NW
- Historically NW was shared between data & storage
- resulted in contention & worse performance for both types of NWing
- 🔧 “EBS-optimized” means dedicated capacity for EBS
- NW stack optimization has taken place
- Storage NW does NOT impact data NW, nor does data NW impact storage NW
- Allows for faster speeds for EBS
- Per-instance feature: instance has it either ON or OFF
- Supported & enabled by default in most instances
- Disabling on modern instances usually makes no effect (HW today comes with the capability built in)
- ❗ In some older instances it's supported, but enabling it costs extra
- Required on instance types & sizes which offer higher levels of performance
- Especially GP2 & IO1 volume types (provide consistent, low latency as well as high IOPS)