So Sánh IPv6 và IPv4: Sự Khác Biệt, Hiệu Quả và Tương Lai của Internet
Trong bài học này, chúng ta sẽ xem xét sự khác biệt về cách hoạt động của IPv6 so với IPv4. Chúng ta sẽ so sánh tiêu đề IPv6 với tiêu đề IPv4 và nói về các tiêu đề mở rộng mới của IPv6.
Tầm quan trọng của việc chuyển đổi từ IPv4 sang IPv6
Sự phát triển nhanh chóng của Internet và số lượng thiết bị kết nối ngày càng tăng đã tạo áp lực lớn lên IPv4. Với không gian địa chỉ 32-bit chỉ cung cấp khoảng 4,3 tỷ địa chỉ, IPv4 đang dần cạn kiệt. Theo Internet Society, trên toàn cầu tỷ lệ áp dụng IPv6 đã đạt khoảng 38%, trong đó Hoa Kỳ dẫn đầu với tỷ lệ trên 50%. Việc chuyển đổi sang IPv6 không chỉ giải quyết vấn đề thiếu hụt địa chỉ mà còn mang lại nhiều lợi ích về hiệu suất và bảo mật.
Ví dụ thực tế về cải thiện hiệu suất với IPv6
Nhiều tổ chức lớn đã ghi nhận những cải thiện đáng kể về hiệu suất khi triển khai IPv6:
- Facebook đã báo cáo rằng News Feed tải nhanh hơn 20-40% trên các thiết bị di động sử dụng IPv6 so với IPv4. Theo kỹ sư của Facebook, việc truy cập vào nền tảng của họ có thể nhanh hơn 10-15% khi sử dụng IPv6. [Nguồn: Internet Society Blog, 2015[^1] và Facebook Engineering Blog, 2015[^2]]
- LinkedIn ghi nhận cải thiện hiệu suất đáng kể sau khi triển khai IPv6, với việc giảm thời gian tải trang và tăng tốc độ kết nối. [Nguồn: Internet Society, "LinkedIn Passes Another IPv6 Milestone", 2017[^3]]
- T-Mobile ở Mỹ đã chuyển sang mô hình "chỉ IPv6" cho các thiết bị mới nhất, loại bỏ hoàn toàn IPv4 trên một số thiết bị để tận dụng hiệu suất cao hơn. [Nguồn: Hội nghị NANOG (North American Network Operators Group), "The benefits of deploying IPv6 only", 2015[^4]]
Bảng so sánh tốc độ xử lý gói tin giữa IPv4 và IPv6
Thông số | IPv4 | IPv6 | Lợi ích của IPv6 |
---|---|---|---|
Tốc độ thiết lập kết nối | Chậm hơn do NAT và các lớp trung gian | Nhanh hơn nhờ kết nối end-to-end | Giảm độ trễ từ 10-15% |
Định tuyến gói tin | Phức tạp với các bảng định tuyến lớn | Hiệu quả hơn với cấu trúc địa chỉ phân cấp | Nhanh hơn 15-20% |
Xử lý tiêu đề | Cần tính toán checksum và xử lý phân mảnh | Tiêu đề đơn giản hơn, không có checksum | Tăng hiệu suất 20-30% |
Hiệu suất mạng di động | Bị hạn chế bởi NAT | Kết nối trực tiếp, không qua NAT | Nhanh hơn tới 40% (theo Facebook) |
Thời gian tải trang web | Cơ sở | Cải thiện từ 10-15% trên mạng được tối ưu | Trải nghiệm người dùng tốt hơn |
Tiêu đề IPv4 so với Tiêu đề IPv6
IPv6 sử dụng hai loại tiêu đề chính: Tiêu đề IPv6 chính và các Tiêu đề mở rộng IPv6 mới. Tiêu đề IPv6 chính tương đương với tiêu đề IPv4 nhưng có một số trường khác nhau được đưa vào để tăng hiệu quả. Hình 1 so sánh cả hai tiêu đề.
Lưu ý rằng tiêu đề IPv6 có ít trường hơn, điều này làm cho nó hiệu quả hơn và xử lý nhanh hơn. Một lợi thế lớn khác là độ dài tiêu đề có kích thước cố định 40 byte, so với kích thước độ dài thay đổi của tiêu đề IPv4.
Phiên bản (Version)
Trường Phiên bản là một định danh dài 4 bit của phiên bản giao thức IP. Không cần phải nói, nó được đặt thành 4 trong IPv4 và 6 trong IPv6.
Tuy nhiên, trong trường hợp phổ biến nhất khi IP được đóng gói trong Ethernet, việc nhận dạng giao thức IP xảy ra ở lớp liên kết dữ liệu thông qua trường 16 bit trong khung gọi là EtherType. Mỗi khung có một trường EtherType xác định giao thức lớp trên trong phần tải. Khi IPv6 được đóng gói trong Ethernet II, giá trị được sử dụng là 0x86dd, trong đó 0x nghĩa là các chữ số là giá trị thập lục phân. Khi IPv4 được đóng gói trong Ethernet II, giá trị được sử dụng là 0x800.
Hình 3. Gói IPv6 trong Khung Ethernet
Lớp lưu lượng (Traffic Class)
Trường Lớp lưu lượng là một định danh dài 8 bit của lớp hoặc ưu tiên của gói. Nó là cùng một khái niệm như trường Loại dịch vụ trong tiêu đề IPv4. 6 bit đầu tiên của trường Lớp lưu lượng đại diện cho trường DSCP như được định nghĩa trong RFC 2474, và 2 bit cuối được sử dụng cho ECN như được định nghĩa trong RFC 3168.
Ban đầu, trong IPv4 chỉ có 3 bit đầu tiên được sử dụng làm giá trị QoS gọi là IP Precedence. Sau đó, nó được thay thế bởi công nghệ Diffserv sử dụng 6 bit đầu tiên và giá trị được gọi là Điểm mã dịch vụ khác biệt (Differentiated Services Code Point) hoặc chỉ đơn giản là DSCP.
Nhãn luồng (Flow Label)
Nhãn luồng là một trường dài 20 bit cho biết các thiết bị trung gian rằng một gói thuộc một chuỗi gói cụ thể giữa nguồn và đích. Bộ định tuyến IPv6 sử dụng trường này để phân biệt các luồng lưu lượng khác nhau giữa cùng một nguồn và đích, ví dụ, các phiên TCP khác nhau giữa cùng các điểm cuối. Khi giá trị Nhãn luồng được đặt thành 0 có nghĩa là gói không liên kết với bất kỳ luồng cụ thể nào.
Độ dài tải (Payload Length)
Trường Tải IPv6 là một định danh 16 bit về độ dài tính bằng byte của phần dữ liệu của gói bao gồm mọi tiêu đề mở rộng IPv6. Độ dài không bao gồm tiêu đề IPv6 chính. Như bạn có thể thấy trong Hình 3, bất kỳ tiêu đề mở rộng nào cũng được coi là một phần của phần tải. Ngược lại, trường Tổng độ dài của IPv4 đo độ dài của toàn bộ gói IP bao gồm cả tiêu đề IPv4.
Cả trường Tổng độ dài của IPv4 và trường Độ dài tải của IPv6 đều dài 16 bit, do đó cho phép các gói dài tối đa 65.355 byte. Trong thực tế, hầu hết các gói IP (cả v4 và v6) đều dài 1500 byte do một công nghệ gọi là Đơn vị truyền tải tối đa (MTU), xác định kích thước tối đa của gói có thể đi qua đường dây. Tuy nhiên, IPv6 có thể mang các tải lớn hơn 65.355 byte bằng cách sử dụng tùy chọn Tải siêu lớn trong tiêu đề mở rộng Hop-by-hop. Những gói lớn hơn này được gọi là jumbograms và được định nghĩa trong RFC 2675. Các gói IPv6 jumbograms có thể mang tải từ 65.536 đến 4.294.967.295 byte. Chúng được sử dụng bên trong các trung tâm dữ liệu tốc độ rất cao và siêu máy tính.
Tiêu đề tiếp theo (Next Header)
Tiêu đề tiếp theo là một trường 8 bit chỉ định loại tiêu đề mở rộng đầu tiên (nếu có) hoặc giao thức lớp trên trong tải như TCP, UDP hoặc ICMPv6. Trường này tương tự như trường Giao thức của IPv4 nhưng có một số tùy chọn bổ sung. Khi chỉ ra một giao thức lớp trên, trường Tiêu đề tiếp theo của IPv6 sử dụng các giá trị giống như được sử dụng trong Giao thức IPv4.
Một số giá trị phổ biến nhất được hiển thị trong bảng dưới đây.
Giá trị Tiêu đề tiếp theo (ở dạng hex) | Mô tả |
---|---|
6 | Giao thức điều khiển truyền tải (TCP) |
11 | Giao thức dữ liệu người dùng (UDP) |
2F | Đóng gói định tuyến chung (GRE) |
32 | Đóng gói tải bảo mật (ESP) |
3A | Giao thức tin nhắn điều khiển Internet phiên bản 6 (ICMPv6) |
3B | Không có tiêu đề tiếp theo cho IPv6 |
59 | Đường đi ngắn nhất mở đầu tiên (OSPF) |
Trường kiểm tra tổng IPv4 (IPv4 Checksum Field)
Trong tiêu đề IPv4, có một trường Kiểm tra tổng được sử dụng để xác minh và loại bỏ các gói bị hỏng. Đó là một kiểm tra dư thừa tuần hoàn (CRC) 16 bit được xác nhận và tính toán lại tại mỗi bước dọc theo đường mạng.
Trong IPv6, không có trường Kiểm tra tổng. Để làm cho tiêu đề hiệu quả hơn và dễ xử lý hơn, những người tạo ra giao thức đã quyết định không bao gồm kiểm tra CRC này trong tiêu đề Lớp 3. Tại thời điểm này, bạn có thể tự hỏi liệu điều này có làm cho IPv6 kém tin cậy hơn IPv4 hay không? Câu trả lời là không vì các giao thức lớp trên như TCP và UDP có trường tổng kiểm tra riêng như được hiển thị trong Hình 5. Ngoài ra, có xác nhận CRC ở lớp Ethernet và do đó trong IPv6, tổng kiểm tra là không cần thiết.
Trong UDP, trường tổng kiểm tra là tùy chọn, nhưng vì không có trường tổng kiểm tra trong tiêu đề IPv6 khi UDP được mang bởi IPv6, trường tổng kiểm tra là bắt buộc.
Thời gian sống IPv4 (TTL) so với Giới hạn bước nhảy IPv6 (Hop Limit)
Trong IPv4, trường TTL đảm bảo một gói không lặp vô thời hạn định trong mạng trong trường hợp có vòng lặp định tuyến. Mỗi lần một gói đi qua một thiết bị lớp 3, giá trị TTL bị giảm đi một. Khi giá trị trở thành 0, gói bị loại bỏ. Theo mặc định, giá trị TTL được đặt thành 255.
Trong IPv6, trường Giới hạn bước nhảy về cơ bản là cùng một thứ, chỉ là tên đã được thay đổi để mô tả chính xác hơn chức năng của trường.
Phân mảnh trong IPv4 và IPv6
Nếu bạn nhìn kỹ vào các trường tiêu đề IPv4, bạn sẽ lưu ý ba trường không có trong Tiêu đề IPv6 - các trường Nhận dạng, Cờ và Bù đắp phân mảnh. Chúng đã bị loại bỏ trong phiên bản 6 vì sự khác biệt trong cách xử lý phân mảnh trong cả hai giao thức.
Trong IPv4, tất cả các thiết bị lớp mạng được phép phân mảnh các gói nếu bit DF (không phân mảnh) không được đặt. Ví dụ, nếu bộ định tuyến nhận được một gói lớn hơn MTU của giao diện đi ra, bộ định tuyến chia gói thành nhiều gói và gửi chúng ra ngoài. Đích cuối cùng sau đó chịu trách nhiệm lắp ráp lại các phân mảnh thành gói IP ban đầu. Một ví dụ như vậy được hiển thị trong hình 9.
Ba trường IPv4 Nhận dạng (Identification), Flags và Fragmentation Offset được sử dụng trong quá trình xử lý phân mảnh này.
Trong IPv6, bộ định tuyến không phân mảnh các gói. Khi bộ định tuyến IPv6 nhận được một gói lớn hơn MTU của giao diện đi ra, bộ định tuyến loại bỏ gói và gửi một thông báo ICMPv6 "Gói quá lớn" trở lại người gửi. Thông báo bao gồm giá trị MTU của liên kết ra, vì vậy nguồn có thể điều chỉnh kích thước gói và truyền lại. Quá trình này được gọi là Khám phá MTU đường dẫn và được mô tả trong RFC 1981, Khám phá MTU đường dẫn cho phiên bản IP 6. Một ví dụ được hiển thị trong hình 10.
Có hai điểm quan trọng cần làm rõ:
- Thông thường, khi một nguồn bắt đầu gửi các gói tin đến một đích, đó không phải là một gói duy nhất mà là một chuỗi nhiều gói. Quá trình điều chỉnh MTU này chỉ xảy ra với gói đầu tiên và sau đó, toàn bộ luồng được truyền với kích thước gói thích hợp.
- Rõ ràng, các thông điệp ICMPv6 phải có thể đến được người gửi để PMTU hoạt động. Thông thường, ICMPv6 bị lọc ra trên tường lửa hoặc các thiết bị bảo mật khác, và quá trình PMTU bị phá vỡ.
Hình 11. Phân mảnh IPv6 được thực hiện bởi nguồn
Ví dụ
Đây là một ví dụ về một gói Yêu cầu Echo ICMPv6 sử dụng Lớp lưu lượng mặc định, Nhãn luồng và Giới hạn bước nhảy là 128. Nó được gửi giữa hai nút sử dụng địa chỉ link-local.
Frame:
+ Ethernet: Etype = IPv6
- Ipv6: Next Protocol = ICMPv6, Payload Length = 40
- Versions: IPv6, Internet Protocol, DSCP 0
Version: (0110............................) IPv6, Internet Protocol, 6(0x6)
DSCP: (....000000......................) DSCP 0
ECT: (..........0.....................) ECN-Capable Transport not set
CE: (...........0....................) ECN-CE not set
FlowLabel: (............00000000000000000000) 0
PayloadLength: 40 (0x28)
NextProtocol: ICMPv6, 58(0x3a)
HopLimit: 128 (0x80)
SourceAddress: FE80:0:0:0:0:0:11FA:3BF1
DestinationAddress: FE80:0:0:0:135A:BFFF:D313:D427
+ Icmpv6: Echo request, ID = 0x0, Seq = 0x18
Trường IPv4 | Trường IPv6 | Chức năng |
---|---|---|
Các trường có chức năng giống nhau và tên giống nhau trong IPv4 và IPv6 | ||
Phiên bản | Phiên bản | Chỉ ra phiên bản của giao thức IP đang sử dụng. |
Địa chỉ nguồn | Địa chỉ nguồn | Định danh lớp mạng của người gửi gói. 32-bit trong IPv4 và được tăng lên 128-bit trong IPv6. |
Địa chỉ đích | Địa chỉ đích | Định danh lớp mạng của người nhận gói. 32-bit trong IPv4 và được tăng lên 128-bit trong IPv6. |
Các trường có chức năng giống nhau nhưng tên của chúng đã thay đổi | ||
Loại dịch vụ | Lớp lưu lượng | Được sử dụng cho phân loại và đánh dấu lưu lượng. Ngày nay, cả hai giao thức đều sử dụng kỹ thuật Dịch vụ khác biệt 6-bit (DSCP). |
Tổng độ dài | Độ dài tải | Chỉ ra độ dài của gói IP. Trong IPv4, độ dài bao gồm cả tiêu đề IP và dữ liệu. Trong IPv6, độ dài bao gồm dữ liệu cộng với bất kỳ tiêu đề mở rộng nào nhưng không bao gồm tiêu đề IP chính. |
Thời gian sống | Giới hạn bước nhảy | Cả hai trường đều có cùng chức năng. Chúng đảm bảo rằng các gói không lặp vô thời hạn quanh mạng. |
Giao thức | Tiêu đề tiếp theo | Chỉ ra giao thức đang được vận chuyển trong phần tải. Trong IPv6, nó cũng có thể chỉ ra sự tồn tại của tiêu đề mở rộng. |
Các trường tồn tại trong IPv4 và đã bị xóa khỏi IPv6 | ||
Độ dài tiêu đề Internet | Trong IPv4, trường này được sử dụng trong trường hợp tiêu đề có độ dài thay đổi. Nó không cần thiết trong IPv6, vì tiêu đề v6 có độ dài cố định - 40 byte. | |
Nhận dạng, Cờ, Bù đắp phân mảnh | Trong IPv4, các trường này được sử dụng khi thực hiện phân mảnh. Trong IPv6, chỉ nguồn của gói thực hiện phân mảnh sử dụng tiêu đề mở rộng Phân mảnh. | |
Tổng kiểm tra tiêu đề | Sau nhiều năm kinh nghiệm, các nhà thiết kế của IPv6 đã quyết định rằng trường này là dư thừa và không cần thiết nữa vì có các trường tổng kiểm tra trong các giao thức lớp trên. | |
Tùy chọn | Các tùy chọn hiện được xử lý bằng cách sử dụng tiêu đề mở rộng trong IPv6, vì vậy trường này là không cần thiết. | |
Đệm | Vì IPv6 có kích thước cố định, việc đệm là không cần thiết. | |
Các trường mới trong IPv6 và không tồn tại trong IPv4 | ||
Nhãn luồng | Một trường mới trong IPv6 được sử dụng để xác định rằng một gói là một phần của một chuỗi và phải được xử lý giống như toàn bộ luồng lưu lượng. |
Tóm tắt
Tài liệu tham khảo
- Internet Society. (2015). "Facebook News Feeds Load 20-40% Faster Over IPv6". https://www.internetsociety.org/blog/2015/04/facebook-news-feeds-load-20-40-faster-over-ipv6/
- Facebook Engineering. (2015). "IPv6: It's time to get on board". https://engineering.fb.com/2015/09/14/networking-traffic/ipv6-it-s-time-to-get-on-board/
- Internet Society. (2017). "LinkedIn Passes Another IPv6 Milestone". https://www.internetsociety.org/deploy360/blog/2017/07/linkedin-passes-another-ipv6-milestone/
- NANOG. (2015). "The benefits of deploying IPv6 only". https://www.nanog.org/meetings/abstract?id=2569