Cách dễ nhất để hiểu sự khác biệt giữa hai là thông qua một ví dụ cho thấy bản chất phân cấp của các tiền tố.
Một hệ thống phân cấp ví dụ
Một ISP đã được phân bổ tiền tố từ RIR (Đăng ký Internet khu vực) mà trong ví dụ này chúng tôi sẽ giả sử là 2001:db8::/32
. Tiền tố này khác với tiền tố được truyền cho khách hàng theo nghĩa là ISP sẽ phải thông báo nó thông qua BGP cho các ISP khác mà nó được xem.
ISP hiện sẽ phân bổ tiền tố cho khách hàng. Đầu tiên họ gán 2001:db8:0:1::/64
cho liên kết kết nối bộ định tuyến ISP với bộ định tuyến CPE (thiết bị tại chỗ của khách hàng). Đây là một tiền tố liên kết vì nó được gán cho một liên kết. Như một khuyến nghị chung, tất cả các tiền tố liên kết trong IPv6 phải là /64
.
Bộ định tuyến ISP sẽ gửi quảng cáo bộ định tuyến thông báo tiền tố này và CPE sẽ sử dụng SLAAC để xây dựng địa chỉ cho giao diện bên ngoài hướng về bộ định tuyến ISP trong /64
. Giả sử giao diện bên ngoài có địa chỉ IP 2001:db8:0:1:42:ff:fe00:42/64
(trong ký hiệu /64
này được bao gồm để nhắc nhở chúng tôi về độ dài của tiền tố liên kết là gì, nhưng tôi cũng có thể bỏ nó đi).
Tiền tố liên kết này đủ để bộ định tuyến CPE giao tiếp với phần còn lại của thế giới, nhưng nó không giúp bộ định tuyến CPE hỗ trợ bất kỳ máy khách nào trên mạng LAN được kết nối với giao diện bên trong của nó. Bộ định tuyến CPE cần một tiền tố cho mạng LAN được định tuyến thông qua bộ định tuyến CPE này, do đó đây được gọi là tiền tố được định tuyến .
Tiền tố định tuyến có thể được cấu hình tĩnh hoặc thông qua DHCPv6. Các chi tiết chính xác về cách bộ định tuyến CPE đàm phán độ dài tiền tố với máy chủ DHCPv6 do ISP cung cấp nằm ngoài phạm vi của câu trả lời này. Một tìm kiếm cho ủy quyền tiền tố có thể cho bạn biết thêm về điều này. Chúng ta hãy giả sử tiền tố định tuyến kết thúc 2001:db8:1::/48
. Trên bộ định tuyến ISP, một mục nhập bảng định tuyến sẽ được tạo cho biết rằng 2001:db8:1::/48
cần phải được định tuyến qua cổng 2001:db8:0:1:42:ff:fe00:42
. Mục nhập bảng định tuyến này là tính năng xác định của tiền tố định tuyến.
Bộ định tuyến CPE có thể có nhiều mạng LAN nội bộ, từ /48
đó nó có thể phân bổ /64
tiền tố liên kết cho mỗi mạng LAN nội bộ. Nếu chúng tôi giả sử một trong các mạng LAN đã được chỉ định 2001:db8:1:1::/64
làm tiền tố liên kết của nó, một nút trên liên kết này có thể nhận địa chỉ 2001:db8:1:1::42:ff:fe00:43
thông qua SLAAC. Nút đó có thể là một bộ định tuyến không dây cần tiền tố cho giao diện không dây của nó. CPE có thể chỉ định 2001:db8:1:100::/60
làm tiền tố định tuyến cho bộ định tuyến không dây và bộ định tuyến không dây có thể chỉ định 2001:db8:1:100::/64
làm tiền tố liên kết cho giao diện không dây.
Bây giờ trong một thiết lập như vậy những gì chúng ta có là một hệ thống phân cấp tiền tố. Sau đây là tất cả lồng nhau bên dưới:
2001:db8::/32
BGP công bố tiền tố
2001:db8:1::/48
tiền tố định tuyến
2001:db8:1:100::/60
tiền tố định tuyến
2001:db8:1:100::/64
tiền tố liên kết
Các gói thực sự được xử lý như thế nào
Khi bộ định tuyến ISP nhận được một gói 2001:db8:0:1::/64
là tiền tố liên kết, nó sẽ thực hiện khám phá hàng xóm để tìm địa chỉ MAC của máy chủ trong /64
.
Bằng cách này, bộ định tuyến ISP sẽ cần một mục nhập bộ đệm lân cận riêng cho mỗi địa chỉ IP trong tiền tố liên kết.
Khi bộ định tuyến ISP nhận được một gói 2001:db8:1::/48
là tiền tố được định tuyến, nó sẽ thực hiện khám phá hàng xóm để tìm địa chỉ MAC của cổng 2001:db8:0:1:42:ff:fe00:42
.
Bằng cách này, bộ định tuyến ISP chỉ cần một mục nhập bộ đệm lân cận duy nhất cho cổng để định tuyến các gói đến bất kỳ địa chỉ IP nào trong tiền tố được định tuyến. Khách sạn này rất quan trọng đối với khả năng mở rộng của internet.
Làm việc xung quanh thiếu tiền tố định tuyến
Đôi khi, khách hàng thấy mình bị mắc kẹt với một ISP sẽ chỉ cung cấp tiền tố liên kết và không có tiền tố định tuyến. Trong tình huống như vậy, khách hàng có thể cài đặt một daemon đáp ứng khám phá hàng xóm cho tất cả các địa chỉ IP trong một phạm vi con cụ thể của tiền tố liên kết. Điều này sẽ có tác động tương tự như cấu hình tiền tố đó như một tiền tố được định tuyến. Nhưng nó có một số nhược điểm:
- Trong các tiền tố định tuyến chung được cho là ngắn hơn
/64
, nhưng daemon đáp ứng các yêu cầu khám phá hàng xóm chỉ có thể tạo tiền tố "định tuyến" dài hơn /64
.
- Nó tăng độ trễ một chút do thêm một vòng tròn mỗi khi địa chỉ IP không có trong bộ đệm lân cận trên bộ định tuyến ISP.
- Nó tăng tải cho bộ định tuyến ISP do cần khám phá hàng xóm thường xuyên hơn nhiều. Rất có khả năng bộ định tuyến ISP có thể chuyển tiếp các gói đến tiền tố đích đã biết hoàn toàn bằng phần cứng, nhưng phát hiện hàng xóm sẽ được thực hiện trong phần mềm.
- Nó tăng mức tiêu thụ bộ nhớ trên bộ định tuyến ISP. Nếu ISP phân bổ tiền tố được định tuyến cho mỗi khách hàng, họ có thể dễ dàng thoát khỏi việc chỉ có một mục nhập bộ đệm hàng xóm duy nhất cho mỗi khách hàng. Nhưng với trình nền trả lời hàng xóm, điều này có thể biến thành hàng ngàn mục nhập cho mỗi khách hàng.
Chi phí xử lý trên bộ định tuyến ISP có thể là một vấn đề quan trọng. Một số router có được như vậy xấu tại xử lý một lũ các gói cần khám phá hàng xóm mà nó biến thành một cuộc tấn công DoS thực tế, và sử dụng tiền tố liên kết lâu hơn (trong /120
- 127
range) đã được sử dụng như là cách giải quyết cho các cuộc tấn công DoS như vậy.
Ngay cả khi bộ định tuyến không dễ bị tấn công DoS, bộ nhớ cần thiết cho các mục nhập bộ đệm lân cận khi cách khắc phục được mô tả ở trên được sử dụng đắt hơn cho ISP so với địa chỉ IP cho tiền tố được định tuyến, do đó, có rất ít lý do cho một ISP từ chối đưa ra một tiền tố định tuyến.
Các trường hợp đặc biệt xung quanh các liên kết điểm-điểm
Liên kết điểm tới điểm (như đường hầm 6in4 và liên kết PPP) không cần khám phá hàng xóm. Chỉ có một hướng để gửi một gói trên một liên kết như vậy và không cần tìm địa chỉ phần cứng trước khi gửi gói.
Điều này có nghĩa là chi phí phát hiện hàng xóm không phải là một vấn đề trên một liên kết như vậy. Vì vậy, việc có một đầu của một liên kết điểm tới điểm sử dụng nhiều địa chỉ không phải là vấn đề, miễn là các điểm cuối có một số thỏa thuận về việc ai sử dụng địa chỉ nào. Thiếu khám phá hàng xóm có nghĩa là cũng không có phát hiện địa chỉ trùng lặp, vì vậy cả hai điểm cuối đều cố gắng sử dụng cùng một địa chỉ mà nó sẽ không hoạt động như mong đợi (trừ khi bạn đang mong đợi nó hoạt động như một địa chỉ anycast).
Có một lưu ý cần lưu ý xung quanh các liên kết điểm tới điểm. Mỗi điểm cuối sẽ cho rằng tất cả các địa chỉ trên liên kết mà nó không được gán chính nó được gán cho đầu kia. Điều này có nghĩa là các địa chỉ không được sử dụng trên một liên kết điểm đến điểm có xu hướng kích hoạt một vòng lặp định tuyến. Một vòng lặp định tuyến như vậy (và một số trường hợp khác của các vòng định tuyến) có thể tránh được bởi một điểm cuối không bao giờ gửi gói tin trực tiếp trở lại nút mà nó đã nhận được. Vì vậy, một gói tin nhận được từ một liên kết điểm tới điểm không được gửi lại qua cùng một liên kết điểm tới điểm, miễn là một điểm cuối có quyền này, vòng lặp định tuyến bị hỏng. Là một nút bên trên Ethernet, việc nhận gói tin và chuyển tiếp trở lại vào cùng một liên kết là hợp lệ, nhưng tốt nhất là tránh làm như vậy nếu nó được chuyển trở lại cùng địa chỉ MAC từ nơi nhận được.
Vì hầu hết các địa chỉ trên một liên kết điểm tới điểm sẽ được chuyển tiếp đến đầu kia của liên kết mà không cần khám phá hàng xóm, nên nó trông rất giống với tiền tố được định tuyến. Ví dụ: nếu ISP được gán 2001: db8: 42 :: / 64 cho liên kết điểm tới điểm với các điểm cuối được gán địa chỉ 2001: db8: 42 :: 1 và 2001: db8: 42 :: 2, sau đó gói đến hầu hết các địa chỉ vào năm 2001: db8: 42 :: / 64 sẽ được chuyển tiếp từ ISP đến khách hàng giống như cách họ làm nếu đây là tiền tố được định tuyến bằng cách sử dụng 2001: db8: 42 :: 2 làm cổng.
Điều này có nghĩa là một hack nhất định là có thể. Trên CPE, có thể thực sự định cấu hình 2001: db8: 42 :: / 64 làm tiền tố liên kết trên mạng LAN. Để CPE biết được liên kết nào trong hai liên kết của một điểm đến nhất định, cấu hình thực tế trên liên kết điểm tới điểm tới ISP sau đó sẽ phải được thay đổi thành 2001: db8: 42 :: / 126. Tất cả điều này sẽ hoạt động với một ngoại lệ nhỏ, các máy chủ trên mạng LAN không thể giao tiếp với bốn địa chỉ IP vào năm 2001: db8: 42 :: / 126. Vì dù sao họ có thể không cần liên lạc với những người đó, nên đây không phải là vấn đề lớn. Tuy nhiên không nên sử dụng bản hack này, cấu hình phù hợp là lấy tiền tố được định tuyến từ ISP.
Một cách hack khác để lưu địa chỉ là chỉ phân bổ địa chỉ toàn cầu cho tiền tố được định tuyến và sử dụng địa chỉ RFC 4193 cho liên kết điểm tới điểm. Tuy nhiên, đây là một hack ngớ ngẩn vì nó vẫn đưa ra một số nhược điểm để giải quyết vấn đề không tồn tại.
Cũng có thể không gán bất kỳ tiền tố nào cho một liên kết điểm tới điểm. Miễn là mỗi điểm cuối có giao diện khác có địa chỉ chung, họ có thể sử dụng địa chỉ được gán cho giao diện khác khi liên lạc trên liên kết điểm tới điểm. Tôi không biết bất kỳ nhược điểm nào từ cách tiếp cận này, vì vậy nếu bạn thấy rằng cách tiếp cận điểm tới điểm này đơn giản hóa cấu hình mạng của bạn thì hãy sử dụng nó, nhưng đừng sử dụng nó như một biện pháp để lưu địa chỉ.
Các trường hợp sử dụng cho tiền tố định tuyến
- Định tuyến phân cấp như trong ví dụ đầu tiên của tôi là những gì các tiền tố được định tuyến được thiết kế cho.
- VPN / đường hầm thêm một lớp khác vào hệ thống phân cấp của các bộ định tuyến cần tiền tố. Mặc dù chúng là ảo thay vì phần cứng thực, chúng không khác nhau về địa chỉ và cần một tiền tố được định tuyến giống như một liên kết vật lý.
- Chỉ định nhiều địa chỉ cho một máy chủ lưu trữ . Có các trường hợp sử dụng để gán nhiều địa chỉ cho một máy chủ. Đối với một vài địa chỉ, đơn giản họ có thể được chỉ định và xử lý với phát hiện hàng xóm cho từng và nhiều mục nhập bộ đệm như có địa chỉ. Nhưng nếu cần hàng ngàn địa chỉ thì tiền tố được định tuyến sẽ tốt hơn.
Một ví dụ chi tiết hơn về điểm cuối cùng sẽ là đệ quy DNS. Vì tôi không thấy DNSSEC có nhiều lực kéo cho đến khi chúng tôi hoàn thành chiến đấu với IPv4, nên cần có các biện pháp khác để chống ngộ độc DNS. Nỗ lực đã được đưa vào để có được càng nhiều entropy vào các truy vấn càng tốt. ID và số cổng có thể chứa tối đa 32 bit entropy, một vài bit khác có thể được giữ trong yêu cầu nếu chữ hoa và chữ thường được trộn lẫn trong tên miền cần giải quyết. Bạn sẽ hiếm khi nhận được nhiều hơn 48 bit theo cách này. Việc chỉ định đầy đủ /64
cho bộ nhận DNS sẽ cho phép entropy được tăng thêm 64 bit trong một lần, nhiều hơn tất cả các nỗ lực khác cộng lại.