ลูกค้า AWS ยังหนีออกจาก IPv4 ไม่ได้
(tty.neveragain.de)- ตั้งแต่เดือนกุมภาพันธ์ 2024 AWS จะคิดค่าบริการ $0.005 ต่อชั่วโมงสำหรับที่อยู่ public IPv4 แบบเฉพาะ แต่ข้อจำกัดของบริการ AWS ทำให้ลูกค้าหลีกเลี่ยงค่าใช้จ่ายด้วยการย้ายไปใช้ IPv6 ได้ยาก
- ขอบเขตการคิดค่าบริการครอบคลุมกว้าง ทั้ง Elastic Load Balancer, EC2/Elastic IP, งาน ECS Fargate ที่ตั้งค่า public IP, Global Accelerator, Site-to-site VPN, RDS, Managed NAT Gateway เป็นต้น
- แม้ EC2, VPN, Transit Gateway, Direct Connect, Network Firewall และบริการอื่น ๆ จะทำงานบนพื้นฐาน IPv6 ได้ แต่บริการหลักอย่าง API Gateway, Lambda, ECS, App Runner กลับปฏิเสธ subnet แบบ IPv6-only หรือรองรับได้ไม่สมบูรณ์
- ต่อให้ตั้งค่าภายในเป็น dual-stack ก็ยังไม่พอ เพราะ มากกว่า 90% ของ service API endpoints ยังไม่รองรับ IPv6 ทำให้ใช้งาน S3, Systems Manager, SQS และบริการอื่น ๆ จาก VPC โดยไม่มี public IPv4 ได้ยาก
- สำหรับลูกค้ารายใหญ่ ค่าใช้จ่ายนี้มักต่ำกว่า 1% ของบิล จึงมีแรงจูงใจในการย้ายไม่มากนัก ขณะที่ SMB, ผู้ใช้สายงานอดิเรก และสตาร์ทอัพอาจเจอต้นทุนเพิ่ม 10–30% จึงได้รับผลกระทบมากกว่า
เริ่มคิดค่าบริการ public IPv4 แบบเฉพาะตั้งแต่กุมภาพันธ์ 2024
- ตั้งแต่เดือนกุมภาพันธ์ 2024 AWS จะคิดค่าบริการ $0.005 ต่อชั่วโมง สำหรับ ที่อยู่ public IPv4 แบบเฉพาะ แต่ละรายการ
- คิดเป็นเกือบ $4 ต่อเดือน และมากกว่า $40 ต่อปี
- ใช้กับ IP ที่ AWS เป็นเจ้าของ ส่วนที่อยู่ BYOIP ที่ลูกค้านำบล็อก public IPv4 ที่ route ได้ของตนเองมาใช้จะไม่ถูกคิดค่าบริการ
- ทรัพยากรที่อยู่ในข่ายคิดค่าบริการครอบคลุมทรัพยากรหลักที่ใช้ public IPv4 โดยตรง
- Elastic Load Balancer
- ใช้ที่อยู่ 1 รายการต่อ Availability Zone
- ต้องมีอย่างน้อย 2 รายการ และไม่สามารถปิด IPv4 ได้
- EC2 instances และ Elastic IP
- งาน ECS Fargate ที่ตั้งค่า public IP
- Global Accelerator IP
- Site-to-site VPN IP
- RDS
- Managed NAT Gateway
- Elastic Load Balancer
- ที่อยู่ IPv4 แบบใช้ร่วมกันจะไม่ถูกคิดค่าบริการ
- ที่อยู่แบบใช้ร่วมกันที่ใช้กับ CloudFront distributions หรือ API Gateway endpoints ไม่อยู่ในข่ายคิดค่าบริการ
- public IPv4 ที่ Lambda functions นอก VPC ใช้ก็ไม่ถูกคิดเช่นกัน
รูปแบบที่ทำให้ต้นทุนเพิ่มขึ้นมาก
- Elastic Load Balancer แบบ public ที่กระจายอยู่ 3 Availability Zones จะมี ราคาพื้นฐานเพิ่มขึ้นมากกว่า 50%
- Managed NAT Gateway จะมีราคาพื้นฐานเพิ่มขึ้นราว 10%
- NAT Gateway ไม่มีความซ้ำซ้อนระดับ Availability Zone ในตัว
- หากการเชื่อมต่อขาออกมีความสำคัญ ก็ต้องมี NAT Gateway แยกในแต่ละ Availability Zone
- มีอยู่ 2 รูปแบบที่ได้รับผลกระทบมากเป็นพิเศษ เพราะสิ้นเปลืองที่อยู่จำนวนมาก
- การวางหลาย Load Balancer ไว้ในแต่ละ VPC
- มักเกิดจากการประกอบหลาย CloudFormation templates หรือ Terraform modules เข้าด้วยกัน หรือเมื่อ Kubernetes ingress controller สร้าง Load Balancer แยกต่อบริการ
- ทั้งที่ Load Balancer ตัวเดียวสามารถรองรับหลาย URL และหลายบริการได้
- การตั้งใจผูก public IPv4 ให้กับ EC2 instances และ Fargate tasks เพื่อหลีกเลี่ยง Managed NAT Gateway
- น่าขันที่จนกว่าจะใช้ public IPv4 ถึงราว 10 รายการต่อ Availability Zone วิธีนี้ก็ยังถูกกว่าอยู่ดี
- การวางหลาย Load Balancer ไว้ในแต่ละ VPC
วิธีตรวจสอบการใช้งานปัจจุบัน
- ปริมาณการใช้ public IPv4 address ถูกนับรวมไว้ในบัญชีแล้ว
- ตอนนี้ยังแสดงเป็น $0 แต่ตั้งแต่กุมภาพันธ์ 2024 จะถูกคิดที่อัตรา $0.005 ต่อชั่วโมง
- ตรวจสอบได้จากเส้นทางต่อไปนี้
- Billing Dashboard > Bills
- ในส่วน Virtual Private Cloud จะปรากฏเป็น
PublicIPv4:InUseAddress
- ในส่วน Virtual Private Cloud จะปรากฏเป็น
- Cost Explorer
- สามารถกรองให้รวมเฉพาะ
PublicIPv4:InUseAddressเพื่อดูการใช้งานรายวันและรายชั่วโมงได้ - และยังสามารถจัดกลุ่มตาม member account ได้
- สามารถกรองให้รวมเฉพาะ
- VPC > VPC IP Address Manager > Public IP insights
- ดูภาพรวมการใช้งาน public IPv4 ได้
- ส่วนนี้ของ IPAM ใช้งานฟรี
- แต่แสดงข้อมูลได้เพียงระดับ account และ region และจับที่อยู่ที่ถูกใช้ชั่วคราวไม่ได้ จึงทำให้ข้อมูลไม่สมบูรณ์
- Billing Dashboard > Bills
2 แนวทางในการนำ IPv6 มาใช้
- เมื่อที่อยู่ IPv4 มีค่าใช้จ่าย แต่ที่อยู่ IPv6 ฟรี มองเผิน ๆ การย้ายไปใช้ IPv6 ดูเป็นทางเลือกที่สมเหตุสมผล
- IPv6 ไม่มีแนวคิดเรื่อง private address จึงสามารถหลีกเลี่ยง Managed NAT Gateway และค่าใช้จ่ายของมันได้
- วิธีนำ IPv6 มาใช้มีหลัก ๆ 2 แบบ
- dual-stack
- ตั้งค่าทั้ง IPv4 และ IPv6 ให้ทุกระบบ
- IPv6-only ภายใน
- ใช้ IPv6 ภายในอย่างเดียว และให้มีการเชื่อมต่อ IPv4 เฉพาะที่ edge หรือ CDN ที่ติดต่อกับผู้ใช้ทั่วไป
- dual-stack
- บันทึกคำสั่งจากทำเนียบขาวสหรัฐระบุว่าการเดินระบบแบบ dual-stack ซับซ้อนเกินไปและไม่จำเป็นต่อการดูแลรักษาอีกแล้ว และองค์กรกำหนดมาตรฐานกับบริษัทเทคโนโลยีรายใหญ่ก็เริ่มขยับไปสู่การ deploy แบบ IPv6-only
- ตัวการรองรับเครือข่าย IPv6 พื้นฐานของ AWS เองนั้นถือว่าค่อนข้างดี
- สามารถตั้งค่า EC2 instances แบบ IPv6-only ใน subnet แบบ IPv6-only ได้
- ฟีเจอร์ที่คาดหวังในเครือข่าย IPv6 เช่น local DNS, time service, host configuration, security ใช้งานได้
- VPN, Transit Gateway, Direct Connect, Network Firewall ก็รองรับ IPv6 เช่นกัน
IPv6 ติดขัดตอนใช้งานบริการ AWS
- คอขวดไม่ได้อยู่ที่เครือข่ายเอง แต่เกิดขึ้นตอน เชื่อมต่อกับบริการ AWS อื่น
- บริการหลักอย่าง API Gateway, Lambda, ECS, App Runner จะปฏิเสธการตั้งค่า subnet แบบ IPv6-only หรือเกิด error
- Elastic Load Balancer อาจแสดง error เช่น
Not enough IP space available
- Elastic Load Balancer อาจแสดง error เช่น
- ต่อให้ตั้งค่าภายในเป็น dual-stack ก็ยังไม่พอ
- หลายบริการจะมองข้ามการตั้งค่า IPv6 แม้ subnet จะถูกตั้งค่าไว้แล้ว
- และมักเชื่อมต่อได้เฉพาะปลายทางแบบ IPv4
- มีหลายกรณีที่การใช้ service API จาก VPC โดยไม่มี public IPv4 address ทำได้ยากหรือแทบเป็นไปไม่ได้
- การรัน
aws s3 lsบน EC2 instance ล้มเหลว - Systems Manager ซึ่งเป็นวิธีที่แนะนำสำหรับการเข้าถึงและจัดการ instance ใช้งานไม่ได้
- ECS Task ไม่สามารถเข้าถึง SQS ได้
- การรัน
- ตาม สถานะการรองรับ IPv6 ของ AWS พบว่า มากกว่า 90% ของ service API endpoints ยังไม่รองรับ IPv6
- SES SMTP และ ECR repository endpoints ก็ใช้งานไม่ได้ และ CloudFront ก็เชื่อมต่อกับ IPv6 origin ไม่ได้
- แม้จะไม่สามารถเริ่ม ECS tasks จาก ECR ได้ แต่สามารถทำได้จาก Docker Hub ที่รองรับ IPv6
- Docker Hub มี rate limit สำหรับการ pull
PrivateLink เป็นทางเลือก แต่ติดข้อจำกัดด้านต้นทุน
- หลายบริการสามารถเชื่อมต่อผ่าน PrivateLink ได้
- เพราะเชื่อมตรงเข้ากับ VPC ของลูกค้า จึงไม่ต้องใช้ public IP address
- แต่ก็ไม่ได้รองรับทุกบริการ
- PrivateLink คิดค่าบริการ ต่อบริการและต่อ Availability Zone
- ตกประมาณ $9 ต่อ endpoint ต่อเดือน
- ตัวอย่างเช่น หากเชื่อม Secrets Manager, EC2, SSM และ SSM-Messages ใน 3 Availability Zones จะมีต้นทุนมากกว่า $1,200 ต่อปีต่อ VPC
- และยังมีค่าทราฟฟิกเพิ่มเติมอีก
ทำไมการคิดค่าบริการ IPv4 จึงผลักให้ย้ายไป IPv6 ได้ยาก
- สำหรับลูกค้าที่มีขนาดใหญ่ ค่าใช้จ่าย IPv4 โดยมากอยู่ที่ระดับ ต่ำกว่า 1% ของบิล จึงไม่รู้สึกว่าเป็นการเปลี่ยนแปลงใหญ่
- ค่าใช้จ่ายระดับนี้เพียงอย่างเดียวมักไม่พอให้เกิดการลงทุนทางวิศวกรรมอย่างจริงจัง
- สำหรับ SMB, ผู้ใช้งานแบบงานอดิเรก และสตาร์ทอัพ ค่าบริการอาจเพิ่มขึ้นถึง 10–30% ของบิล
- กลุ่มนี้มีแรงจูงใจสูงที่จะนำ IPv6 มาใช้เพื่อลดค่าใช้จ่าย
- แต่ช่องว่างด้านการรองรับ IPv6 ของบริการ AWS ทำให้ทางเลือกในการเลี่ยงต้นทุน IPv4 มีจำกัด
- เมื่อพิจารณาต้นทุนการจัดหา IPv4 ในปัจจุบัน การคิดค่าบริการที่อยู่ IPv4 เองอาจเป็นสิ่งจำเป็น
- หากการรองรับ IPv6 ของบริการต่าง ๆ บน AWS เติบโตเต็มที่กว่านี้ ลูกค้าจะย้ายไปสภาพแวดล้อมแบบ IPv6-only ได้มากขึ้น
- ปัจจุบันยังยากจะมองว่า IPv6 เป็น พลเมืองชั้นหนึ่ง บน AWS และในสภาพนี้ การคิดค่าบริการ IPv4 ก็ยิ่งทำให้การใช้ AWS สำหรับบัญชีส่วนตัว การเรียนรู้ การเตรียมสอบใบรับรอง และการสนับสนุนโอเพนซอร์ซ น่าสนใจน้อยลง
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เมื่อนานมาแล้วตอนผมเป็นนักพัฒนารุ่นจูเนียร์ที่ Amazon มีโปรเจกต์ภายในขนาดใหญ่ที่แยกระบบภายในทั้งหมดออกเป็น เวอร์ชันตามรีเจียน และอนุญาตให้เรียกข้ามรีเจียนได้ผ่านเกตเวย์ที่จำกัดไว้เท่านั้น
เหตุผลคือ ที่อยู่ IPv4 ภายในกำลังจะหมด
เมื่อมีคำถามว่า “แค่เปลี่ยนเป็น IPv6 ไม่ได้เหรอ?” Principal PM ที่รับผิดชอบตอบประมาณว่า “อุปกรณ์เครือข่ายภายในที่เรามีอยู่ตอนนี้ มีจำนวนมากเกินไปที่ไม่รองรับ IPv6 ถ้าจะเปลี่ยนใหม่ คงต้องซื้ออุปกรณ์ในปริมาณใกล้เคียงกับการผลิตทั้งปีทั่วโลกแล้วติดตั้งทั้งหมด”
มันง่ายที่จะมองว่า Amazon กำลังทำตัวไม่ดีในฝั่ง IPv4 แต่เมื่อคิดถึงขนาดของระบบ AWS แล้ว ก็เชื่อได้พอสมควรว่าการเปลี่ยนฮาร์ดแวร์เครือข่ายเก่าทั้งหมดภายในเวลาสั้น ๆ อาจเป็นโปรเจกต์ที่ใหญ่เกินไปจริง ๆ
ผมสงสัยว่านั่นอาจจะเป็นเรื่องเหลวไหลอยู่บ้าง หรืออย่างน้อยก็เป็นการห่อหุ้มข้อเท็จจริงแบบสร้างสรรค์ ตัวอย่างเช่น จริง ๆ แล้วอาจมี การรองรับ IPv6 ทั้งหมดอยู่แล้ว แต่เหล่าวิศวกรเครือข่ายที่เต็มไปด้วยความกลัว ความไม่แน่นอน และความสงสัยไม่อยากเปิดใช้ก็ได้
อุปกรณ์เครือข่ายส่วนใหญ่ที่ผมเคยเห็นเป็น dual stack มานานก่อนที่คนรอบตัวจะใช้ IPv6 จริง ๆ แล้ว และผมคิดมาตลอดว่านั่นเป็นเพราะข้อกำหนดของรัฐบาลหรือกองทัพสหรัฐฯ
จำไม่ได้ว่า PM ของโปรเจกต์นั้นคือใคร แต่ตอนนั้นทำให้ผมเคารพคุณค่าที่ TPM สามารถสร้างได้จริง ๆ
เรื่องที่ค่าใช้จ่ายและความจำเป็นในการเปลี่ยนอุปกรณ์เครือข่ายเป็นหนึ่งในเหตุผลสำคัญที่ไม่ไปทาง IPv6 นั้นถูกต้อง Amazon ใช้อุปกรณ์เครือข่ายที่ออกแบบและผลิตเองด้วยหลายเหตุผล และน่าจะยังเป็นเช่นนั้นอยู่ตอนนี้
อุปกรณ์เหล่านั้นทั้งหมดมี ความจุหน่วยความจำแบบคงที่ ดังนั้นถ้าจะเพิ่มหน่วยความจำให้พอรองรับตาราง routing ของ IPv6 เป็นต้น ก็ต้องเปลี่ยนอุปกรณ์อยู่ดี ต่อให้เลือกใช้ IPv6-only อุปกรณ์เดิมก็คงไม่พอ และไม่ว่าจะอย่างไรก็คงผ่านไปได้ยากหากไม่มี dual stack IPv4/IPv6
ดูเหมือนเธอจะทำโปรเจกต์ระดับมหึมาอยู่เสมอ และตอนนี้ IPv4 กลายเป็นแค่ส่วนเล็ก ๆ ในบรรดาโปรเจกต์เหล่านั้น โปรเจกต์ใหญ่บางอย่างที่ทำอยู่ตอนนี้น่าเสียดายที่แชร์ไม่ได้
เธอเคยสละเวลาให้สองสามครั้งและให้คำแนะนำที่ชาญฉลาด ซึ่งผมรู้สึกขอบคุณ
แน่นอนว่าคงเริ่มกระบวนการไปแล้ว
ใช่ไหม? นึกภาพไม่ออกว่า AWS จะเอาหัวมุดทรายแล้วทำเป็นไม่สนใจเรื่องนี้
การที่ AWS จะให้บริการ IPv6 ที่ใช้งานได้จริงดูเหมือนจะขัดกับแรงจูงใจของตัวเองอย่างชัดเจน เครื่องมืออิทธิพลของ AWS เช่นเกณฑ์ Well-Architected หรือการรับรองต่าง ๆ ผลักดันอย่างหนักให้สร้างเขาวงกตเครือข่าย 10.x RFC1918 ที่มีการกำหนดที่อยู่แบบคลุมเครือ แทนที่จะเป็นสถาปัตยกรรมแบบอินเทอร์เน็ตที่มีการกำหนดที่อยู่แบบ end-to-end
ในโลกของแนวทางแนะนำของ AWS แนวคิดเรื่อง “ที่อยู่ IP สาธารณะ” เองก็เป็นสัญญาณอันตราย และ AWS ยังแนะนำเครื่องมือที่คิดค่าใช้จ่ายเพิ่มเพื่อแสดงและ “บรรเทา” ที่อยู่เหล่านั้นด้วย
ถ้าทำให้ลูกค้าทุ่มแรงสร้างโครงสร้างพื้นฐานที่ซับซ้อนในนามของความปลอดภัย ก็จะเกิด ผลของการล็อกอิน ที่แข็งแรง ทั้งที่จริงแล้วมันบั่นทอนความปลอดภัยด้วยความซับซ้อนที่ไม่จำเป็น ความคลุมเครือของที่อยู่ และอื่น ๆ
มีผลิตภัณฑ์อย่าง “Private Endpoints”, “Private Links”, “Service Endpoints”, “Private Resolvers”, “Virtual WAN” ออกมามากจนแทบนับไม่ไหว และทั้งหมดมีไว้เพื่อใช้งาน IPv4 ในระดับใหญ่
ถ้าทำให้ IPv6 ใช้งานได้จริง ผลิตภัณฑ์พวกนี้จะไม่จำเป็นแม้แต่ตัวเดียวอย่างแท้จริง
แต่ Azure กลับทำ NAT กับ IPv6 ด้วย ดังนั้นจึงใช้ IPv6 เพื่อหลีกเลี่ยง NAT ที่ถูกบังคับเพราะ IPv4 ไม่ได้ ในปี 2023 ก็ยังออกผลิตภัณฑ์ใหม่ที่ไม่รองรับ IPv6 และมีแนวโน้มสูงว่าจะเป็นแบบนั้นต่อไป
ในเอกสารยังมีข้อจำกัดเหลืออยู่เต็มหนึ่งหน้า: https://learn.microsoft.com/en-us/azure/virtual-network/ip-s...
ถ้าลองคิดว่านี่เป็นการเปลี่ยนผ่านจาก IPX ไป IPv4 จะเห็นว่ามันไร้เหตุผลแค่ไหน เหมือนในหน้านี้เขียนว่า “ข้อจำกัดของ IPv4: VM ทุกเครื่องต้องมีที่อยู่ IPX อย่างน้อยหนึ่งรายการ”
ฟังดูแปลกไหม? ในปี 1999 ลูกค้ากำลังถูกย้ายจาก IPX ไป IPv4 และการรองรับ IPv6 ก็เริ่มปรากฏราวปี 2001–2003 ผ่านมาหลายสิบปีแล้ว แต่ยังให้ความรู้สึกเหมือนยุคก่อนย้ายจาก Novell NetWare ที่บอกว่า “ยังไม่ใช่ทุกอย่างรองรับ IPv4 ดังนั้นจึงต้องใช้ IPX+IPv4”
รายการนี้ไม่ใช่ข้อจำกัดทั้งหมดอย่างแน่นอน ผลิตภัณฑ์ PaaS ส่วนใหญ่ไม่รองรับ IPv6 ดังนั้นโซลูชันแบบ IaaS+PaaS จึงลงเอยด้วยการต้องใช้ IPv4 เป็นส่วนใหญ่
ผมไม่เข้าใจว่าทำไม แต่จนกว่าบริษัทเทคโนโลยีรายใหญ่สักแห่งจะผลักดันการกำหนดที่อยู่แบบ end-to-end ให้เป็น best practice ก็จำเป็นต้องทำตามความเชื่อเดิมเพื่อไม่ให้เกิดสัญญาณอันตราย
ลูกค้าต้องการ เครือข่ายส่วนตัว ของตัวเองเพื่อป้องกันการบุกรุกและข้อมูลรั่วไหล แม้บนเครื่องที่ตนไม่ได้เป็นเจ้าของ ยิ่งไปกว่านั้นยังอยากนำบริการ PaaS แบบครบเครื่องเข้าไปไว้ในเครือข่ายนั้นด้วย
ผมเดาว่าเหตุผลน่าจะธรรมดากว่านั้น เมื่อคำนึงถึงจำนวนบริการของ AWS แล้ว การรองรับ IPv4 มันง่ายกว่าเฉย ๆ
ในฐานะลูกค้า AWS ผมอยากหลุดพ้นจากเรื่อง IP ไปเลย การดูแลระบบเครือข่ายที่ซับซ้อนซึ่งประกอบด้วยโปรโตคอลเก่า ๆ อย่าง IP, BGP, DNS เป็นเรื่องเสียเวลา
แค่ผูก ตัวตนที่แข็งแรง เข้ากับ workload แล้วให้กำหนดเป็นนโยบายได้ว่า workload ไหนรับส่งข้อมูลกับ workload ไหนได้ก็พอ
ข้อมูลจะเดินทางจาก workload หนึ่งไปอีก workload หนึ่งอย่างไรไม่ควรเป็นเรื่องที่ผมต้องสนใจ แค่ทำให้มันใช้งานได้ก็พอ
แทนที่จะจมอยู่กับ สวนสัตว์ขององค์ประกอบ เครือข่ายจำลอง หรือก็คือดาต้าเซ็นเตอร์เสมือนจริง ก็抽象มันทั้งหมดออกไปเลย
ในความเป็นจริงมันไม่เคยทำงานได้ดีจริง ๆ เลย และต่อไปก็ไม่น่าจะทำได้ มี nuance และรายละเอียดที่ต้องพิจารณามากเกินไปหากต้องรันและปรับแต่ง workload จริง
จากประสบการณ์ของผม ปัญหาใหญ่ที่สุดเมื่อจะไปเป็น IPv6-only บน AWS คือ GitHub ยังใช้ IPv6 ไม่ได้ ซอฟต์แวร์จำนวนมากตั้งสมมติฐานไว้ว่าจะเชื่อมต่อ GitHub เพื่อดาวน์โหลดอะไรบางอย่างได้
จะใช้บริการ NAT64 สาธารณะก็ได้ แต่สำหรับงานจริงจังมันไม่น่าเชื่อถือเท่าไร: https://nat64.xyz/
AWS คิดค่า traffic ผ่าน NAT gateway แพงมาก และผมก็ไม่รู้ว่าสามารถตั้งค่าให้ดักเฉพาะ traffic ที่จะไปยังโฮสต์ IPv4-only ได้หรือไม่ ถ้าผมเข้าใจผิดก็ช่วยบอกด้วย
นอกเหนือจากนี้ การใช้ IPv6-only บน AWS ทำงานได้ไร้ที่ติและถูกกว่า egress gateway สำหรับ private network ฟรี แน่นอนว่าต้องมีเงื่อนไขว่าไม่ต้องสนใจ IPv4
ผมคิดว่าปัญหาจริง ๆ คือ Lambda และ S3 ไม่รองรับ IPv6 และ AWS ควรทำให้บริการเหล่านี้เป็น dual-stack และเข้าถึงผ่าน IPv6 ได้ก่อน แล้วค่อยเปลี่ยนราคา
ในเชิงเทคนิค S3 มี dual-stack endpoint แยกต่างหากก็จริง แต่ไม่ได้ช่วยมากนัก เพราะอย่างไรก็ต้องเปลี่ยนการตั้งค่าแอปพลิเคชันเพื่อรับมือกับการเปลี่ยนแปลงนี้อยู่ดี
เหตุผลครึ่งหนึ่งที่ AWS นำหน้าเรื่องการรองรับ IPv6 ตั้งแต่แรก เป็นเพราะ ข้อบังคับเชิงนโยบาย ของรัฐบาลสหรัฐฯ ที่สั่งให้เริ่มย้าย
ในมุมต้นทุนก็จริงที่ค่าใช้จ่ายใหม่เป็นเรื่องเล็กน้อยสำหรับลูกค้ารายใหญ่ แต่อย่าประเมินพลังของข้อบังคับเชิงนโยบายของลูกค้ารายใหญ่ที่สุดต่ำเกินไป แค่การขู่ว่าจะสร้างทางเลือกของตัวเองเพื่อให้เป็นไปตามนโยบาย ก็อาจทำให้ AWS ต้องยกระดับความสำคัญของการรองรับในที่สุด
ฝั่ง client หรือฝั่งผู้ใช้ปลายทางดูเหมือนจะไปได้ดี เห็นได้จากที่ Google รายงานว่า traffic IPv6 ของผู้ใช้ปลายทาง ตอนนี้เกือบ 50%
โดยส่วนตัว สิ่งที่แย่ที่สุดคือ CloudFront ไม่รองรับ IPv6 ของ custom origin
ถ้ารันคอนเทนเนอร์ Fargate แยกเป็น origin จำนวนมาก ก็ต้องเปิด public IPv4 address และอีกไม่นานต้นทุนของคอนเทนเนอร์เล็ก ๆ จะเพิ่มเป็นสองเท่า
Amazon ควรทำให้โครงสร้างพื้นฐานของตัวเองรองรับ IPv6 ได้จริงก่อนจะคิดค่าธรรมเนียมเพิ่มสำหรับการใช้ IPv4 แบบ legacy
ผมเข้าใจว่า Amazon สร้างสัตว์ประหลาดขนาดมหึมาขึ้นมา และการ deploy IPv6 ทั่วทั้งบริการจำนวนมากเป็นงานใหญ่มาก แต่ผมไม่เห็นเหตุผลที่ CloudFront จะยังไม่รองรับ IPv6 origin ตั้งแต่เมื่อวานแล้วด้วยซ้ำ ไม่ใช่แค่ตอนนี้
มันก็ดูไม่ได้ยากขนาดนั้นเมื่อเทียบกัน และยังอาจเป็นเครื่องมือที่ดีในการอ้อมข้อจำกัดอื่น ๆ ได้ด้วย
พูดตรง ๆ จนถึงตอนนี้ผมยังรู้สึกว่าการตัดสินใจของ Amazon สุดท้ายแล้วคำนึงถึงผลประโยชน์สูงสุดของลูกค้า แต่ตอนนี้ไม่รู้สึกแบบนั้นแล้ว และมองว่าเป็นสัญญาณไม่ดีต่อไปข้างหน้า
ถ้าสหรัฐฯ มี การแข่งขันของ ISP จริง ๆ ก็คงช่วยได้มาก
ที่ที่ผมเช่าอยู่เป็นชานเมืองใกล้ Seattle แต่มี ISP บรอดแบนด์จริง ๆ แค่เจ้าเดียว ตามนิยามไหนก็ไม่ใช่ชนบท แต่ Comcast เป็นตัวเลือกเดียว ราคาและบริการก็สะท้อนความจริงนั้นอย่างชัดเจน
ไม่ใช่ว่าบังเอิญ “มีแค่ Comcast” แต่เป็น “มีแค่ Comcast” เพราะกฎระเบียบทางกฎหมาย
ที่การบ่น Comcast น่าสนุกคือ ตอนผมใช้ Comcast ผมมี IPv6 native แต่ผู้ให้บริการที่ใช้อยู่ตอนนี้มีแค่ IPv6 ผ่าน NAT46
แม้จะมีข้อเสียอย่างประสิทธิภาพตกตอนฝนตกหนัก แต่ผมก็เห็นรีวิวเชิงบวกอยู่บ้าง
คนส่วนใหญ่ไม่รู้ว่าตอนนี้มีอินเทอร์เน็ต IPv6 อยู่สองฝั่ง คือฝั่ง Cogent กับฝั่ง Hurricane Electric ทั้งสองมีขนาดใกล้เคียงกันและปฏิเสธที่จะเชื่อมต่อกัน ดังนั้นต้องรู้เรื่องนี้แล้วซื้อ transit จากทั้งสองฝั่ง หรือซื้อจากเครือข่ายที่ซื้อ transit จากทั้งสองฝั่ง
ผู้ให้บริการรายใหญ่อย่างน้อยหนึ่งรายที่ผมรู้จักยังรัน v6 บน tunnel อยู่ ในหลายที่ traffic v6 วิ่งผ่านเส้นทางที่ไม่ optimal และเครือข่ายองค์กรอาจมีการเชื่อมต่อ v4 ที่แต่ละดาต้าเซ็นเตอร์ แต่ v6 กลับถูกส่งทั้งหมดไปยัง “กล่องใบนั้นใต้โต๊ะของ Dave” เพียงจุดเดียว
ถึงอย่างนั้น พวกเขาก็วัดอัตราการนำ v6 ไปใช้จากที่อย่าง Google หรือ Cloudflare ซึ่งมีทีมเฉพาะคอยรับประกันว่า packet จะไปถึง แล้วก็ตบหลังชมตัวเอง
สำนวนที่ว่า “ไม่สามารถหลุดพ้นจาก IPv4 ได้” ถือว่าเหมาะสมแล้ว แม้จะสร้าง VPC แบบ IPv6-only ได้ แต่มีหลายอย่างเสียหายมากเกินไป ตั้งแต่บริการต่าง ๆ ของ AWS ไปจนถึง repository ของแพ็กเกจ: https://blog.devopstom.com/ipv6-only-ec2/
ท้ายที่สุดก็ต้องเปิด IPv4 หรือรัน NAT64 gateway เอง หรือไม่ก็ต้องเชื่อใจ NAT64 ที่มีคนอื่นดำเนินการให้: https://nat64.net และ http://v4-frontend.netiter.com
คำกล่าวที่ว่า “ใน IPv6 ไม่มีแนวคิดเรื่องที่อยู่ส่วนตัว จึงบอกลา Managed NAT Gateway กับราคาสุดอลังการของมันได้” อาจจริงใน AWS แต่ใน IPv6 มี Unique Local IPv6 address ในช่วง fc00::/7 และถ้ารัก NAT จริง ๆ ก็ยังมี NAT66 ด้วย
อย่างไรก็ตาม ULA มักไม่ค่อยถูกแนะนำให้ใช้ และ NAT66 นั้น… แค่ไม่ควรทำ
จากที่ได้ยินมาเมื่อไม่นานนี้ Microsoft ทำให้ IPv6 ของ Azure ทั้งหมดเป็นแบบ เน้น NAT เป็นศูนย์กลาง ว่ากันตรง ๆ คือแปลกมาก