Theo báo cáo của Cisco năm 2010 thì tài nguyên IPv4 đã cạn kiệt. Quay ngược thời gian , số lượng các IPv4 đã chạm đến ngưỡng giới hạn vào năm 1992 nhưng với sự ra đời của CIDR đã giúp nó vẫn tồn tại gần 20 chục năm. Do đó việc sử dụng IPv6 là yêu cầu vô cùng cấp thiết với các ISP và hãy thử xem IPv6 được đưa vào ứng dụng trong cloud, cụ thể là OpenStack như thế nào.
1. Các lưu ý về IPv6
- Trong IPv6, ta không có khái niệm Class như trong IPv4. Ta chia 128 bits địa chỉ của IPv6 thành 2 phần, bao gồm Prefix và Interface ID. Prefix sẽ có nhiệm vụ nhận dạng network hoặc subnet, trong khi đó Interface ID sẽ nhận dạng địa chỉ của host trong subnet được nhận biết trong Prefix. Thực tế hiện nay trong subnetting, Interface ID có kích thước 64 bit.
Có 2 phương pháp để determine 64-bit Interface ID:
- Thông qua Mac Address của Host: Host sẽ determine Interface ID bằng cách lấy 48-bit địa chỉ Mac của mình và extend thành 64-bit.
- Randomly Generating (RFC 3041): Host sẽ determine Interface ID bằng cách tự khởi tạo một cách ngẫu nhiên một dãy số 64-bit
- Một trong 2 dạng địa chỉ IPv6 đó chính là Temporary Transient Address. Dạng địa chỉ này thay đổi theo thời gian và được cung cấp thông qua DHCP server (sử dụng phương pháp RFC 3041 theo một chu kỳ nhất định) hoặc cơ chế tự động config sử dụng ID giao diện bất kì (RFC 3041).
- Trong mạng IPv4, TCP/IP sử dụng ARP(Address Resolution Protocol) để dịch địa chỉ IPv4 tới địa chỉ MAC. Nói cách khác ARP sẽ map địa chỉ IPv4 tại layer 3 vào MAC tại layer 2. NDP thực hiện vai trò tương tự với ARP trong IPv6.
- Vấn đề về VXLAN:
Nếu ta sử dụng VXLAN thì MTU của packet sẽ được đẩy lên với giá trị cao hơn, được tính bằng Ethernet payload 1500 bytes và overhead Một số vendor cho rằng 50 bytes cho overhead là cần thiết (bao gồm 20 bytes cho IPv4 header, 8 bytes UDP header, 8 bytes VXLAN header, 14 bytes MAC header), do đó MTU lúc này sẽ là 1550 bytes (trong trường hợp không sử dụng extension như VLAN tag).
Nếu ta dùng IPv6 thì header của nó được cố định với giá trị 40 bytes, do đó MTU lúc này ít nhất đạt được 1570 bytes. Sự thay đổi của MTU kéo theo sự thay đổi cần thiết của các thiết bị ảo hóa như vSwitch hay thiết bị vật lý như TOR switch, routers, etc.
2. IPv6 trong OpenStack
Khi ta tạo subnet trong OpenStack, ta sẽ có thêm 2 attributes đó là: ipv6_ra_mode và ipv6_address_model.
Attribute |
Chức năng |
Giá trị |
ipv6_ra_mode |
Quyết định bit AMO và phương pháp gửi RA (Routing Advertise)(RA sẽ được gửi bởi Neutron router hay router vật lý?) |
dhcpv6-statefull dhcpv6-stateless SLAAC (Stateless Address Autoconfiguration) |
ipv6_address_model |
Quyết định cách thức máy ảo nhận dạng gateway, địa chỉ IPv6 và các thông tin khác |
dhcpv6-statefull dhcpv6-stateless SLAAC (Stateless Address Autoconfiguration) |
Cách thức hoạt động của SLAAC:
- SLAAC là default model của IPv6
- Máy ảo sẽ khởi tạo một Interface ID như là một địa chỉ EUI-64 dựa trên địa chỉ MAC của máy ảo.
- IPv6 Prefix sẽ được cung cấp cho máy ảo thông qua RA (Routing Table). RA chứa các Prefix, default gateway, Prefix lifetime của subnet.
- Các RA sẽ được gửi theo chu kì bởi router để refresh lifetime.
- Sự kết hợp các attributes của subnet khi sử dụng SLAAC:
ipv6_ra_mode |
ipv6_address_mode |
Kết qủa |
SLAAC |
Not specified |
Đánh địa chỉ (addressing) sử dụng Neutron router |
Not specified |
SLAAC |
Đánh địa chỉ (addressing) sử dụng router ngoài (router vật lý) |
SLAAC |
SLAAC |
Đánh địa chỉ (addressing) sử dụng Neutron router |
- Mô hình triển khai SLAAC:
Source: Cisco
Ngoài ra việc sử dụng SLAAC sẽ tác động đến radvd agent trong việc gửi RA. Thiết lập giá trị cho address configuration flag trong RA sẽ cho phép các phương thức gửi RA thông qua Neutron router.
Cách thức hoạt động của DHCPv6:
- Ta phải cấu hình cho network để không cung cấp SLAAC prefix.
- Cấu hình cho máy ảo để nhận DHCPv6 thay vì SLAAC (thiết lập bit 'M' để RA chứa flag)
- DHCPv6 hoạt động tương tự như DHCPv4. Máy ảo sẽ yêu cầu một địa chỉ IPv6 từ DHCPv6 server và nhận 1 phản hồi với địa chỉ IPv6 được chứa bên trong và các thông tin khác như domain name, DNS resolver.
- DHCPv6 stateless
ipv6_ra_mode |
ipv6_address_mode |
Kết quả trong việc đánh địa chỉ |
DHCPv6-stateless |
Not specified |
Sử dụng dịch vụ DHCP ngoài và Neutron router |
Not specified |
DHCPv6-stateless |
Sử dụng Neutron DHCP và router ngoài |
DHCPv6-stateless |
DHCPv6-stateless |
Sử dụng Neutron router và Neutron DHCP |
Mô hình triển khai DHCPv6 stateless
Source: Cisco
Tương tự như SLAAC trong việc thiết lập address configuration flag.
- DHCPv6 Statefull
ipv6_ra_mode |
ipv6_address_mode |
Kết quả trong việc đánh địa chỉ |
DHCPv6-statelful |
Not specified |
Sử dụng dịch vụ DHCP ngoài |
Not specified |
DHCPv6-statelful |
Sử dụng Neutron DHCP |
DHCPv6-stateful |
DHCPv6-statelful |
Sử dụng Neutron DHCP |
Tương tự, ta cũng cần lưu trong việc thiết lập address configuration flag
3. Thách thức của IPv6 trong Openstack:
- Một trong những giới hạn của OpenStack hiện tại đó chính là đáp ứng được nhu cầu của các ứng dụng sử dụng IPv6. Các nhà cung cấp dịch vụ cloud tin rằng IPv6 sẽ tạo nên sự khác biệt đáng kể trong việc đáp ứng được nhu cầu về traffic ngày một gia tăng của thị trường các thiết bị thông minh. Hầu hết các ứng dụng đều nằm ở tầng SaaS và việc cung cấp sự truy cập các ứng dungj cho hàng tỷ các thiết bị trong tương lai đòi hỏi sự tích hợp vô cùng cấp thiết IPv6 trong Cloud. IoT (Internet of Thing) cần các tiền đề của Cloud nhưng IoT chỉ thực hiện được khi và chỉ khi IPv6 được sử dụng.
- IPv6 sẽ ảnh hưởng rất nhiều đến các yếu tố về mặt cấu trúc của OpenStack đã được xây dựng xoay quanh IPv4 như cấu trúc không gian địa chỉ, security. IPv6 sẽ ảnh hưởng mạnh mẽ nhất đến Nova và Neutron.
- Việc security của IPv6 cần phải được hỗ trợ trong OpenStack. Đã có một số sự thay đổi trong security group của OpenStack chính là việc sử dụng ICMPv6. Bên cạnh đó, OpenStack không hỗ trợ IPv6 floating IP như IPv4 floating IP nhằm giải quyết vấn đề về Duplicate Address Detection (DAD) trong các message multicast khi sử dụng SLAAC.
24-6-2015
VietStack Team
Comments