Nếu một ứng dụng mà hỗ trợ cả IPv4 và IPv6 sẽ yêu cầu DNS server cung cấp cho nó cả hai loại địa chỉ. Đầu tiên ứng dụng tìm bản ghi AAAA. Nếu nó không tìm thấy, nó tìm tiếp bản ghi A để liên lạc với host name. Một ứng dụng hỗ trợ cả IPv4 và IPv6 thông thường được mã hóa để nhận được một địa chỉ IPv6 trước. Như trình bày trong hình 5.5, một ứng dụng với cả IPv4 và IPv6 được hỗ trợ trên một nút hai ngăn
xếp X yêu cầu DNS server Y phân giải tên miền FQDN www.example.org thành bản
ghi AAAA và A. Sau đó DNS server Y trả lời cho nút X, chỉ ra địa chỉ 3ffe:b00:ffff:a:1 như là địa chỉ đích IPv6 và 206.123.31.2 như là địa chỉ đích IPv4. Cuối cùng, ứng dụng trên nút X dùng địa chỉ IPv6 3ffe:b00:ffff:a:1 để thiết lập một phiên kết nối tới nút đích.
Hình 5.5 - Ứng dụng với IPv4 và IPv6 yêu cầu một bản ghi A và AAAA của FQDN từ DNS
5.2. Kỹ thuật đường hầm(Tunneling)[1],[7],[5]
Các cơ chế đường hầm có thể được sử dụng để triển khai một cơ sở hạ tầng truyền dẫn IPv6 trong khi toàn bộ cơ sở hạ tầng IPv4 vẫn là nền tảng và sẽ không hoặc là không thể được thay đổi và nâng cấp.
Kỹ thuật tunneling thực chất là quá trình đóng gói các gói tin để truyền trên một đường hầm. Với sự đóng gói này, một giao thức ( ở đây là IPv6) được đóng gói trong tiêu đề của một giao thức khác (trong trường hợp này là IPv4) và được truyền trên cơ sở hạ tầng của giao thức thứ hai (IPv4). Quá trình đóng gói có ba giai đoạn:
Sự đóng gói tại đầu vào đường hầm
Sự tháo gói tại đầu ra đường hầm
Sự quản lý đường hầm
Vì vậy đường hầm có thể được sử dụng để mang lưu lượng IPv6 bằng việc đóng gói nó trong các gói tin IPv4 và truyền nó trên cơ sở hạ tầng định tuyến IPv4. Ví
dụ, nếu nhà cung cấp vẫn chỉ có cơ sở hạ tầng IPv4, tunneling cho phép có một mạng IPv6 riêng và một đường hầm xuyên qua mạng IPv4 của nhà cung cấp dịch vụ để tới các host hoặc các mạng IPv6 khác. Hoặc có thể triển khai các vùng IPv6 trong mạng riêng của các tổ chức trong khi mạng lõi vẫn là IPv4. Các gói tin IPv6 đi từ vùng IPv6 này tới vùng IPv6 kia có thể đi qua đường trục được đóng gói trong các gói tin IPv4. Các kỹ thuật đường hầm và sự đóng gói các gói tin IPv6 trong các gói tin IPv4 được định nghĩa trong một vài RFC. Có hai loại đường hầm thông thường.
Đường hầm được cấu hình bằng tay của IPv6 trên IPv4
Các gói tin IPv6 được đóng gói trong các gói tin IPv4 được mang trên các cơ sở hạ tầng định tuyến IPv4. Đây là các đường hầm điểm-điểm mà cần được cấu hình bằng tay.
Đường hầm tự động của IPv6 trên IPv4
Các nút IPv6 có thể sử dụng hai loại địa chỉ khác nhau, như 6to4 hoặc các địa chỉ ISATAP, tạo đường hầm tự động truyền các gói tin IPv6 trên một cơ sở hạ tầng định tuyến IPv4. Các địa chỉ unicast IPv6 đặc biệt này mang một địa chỉ IPv4 trong một số phần của các trường địa chỉ IPv6.
5.2.1. Hoạt động của đường hầm
Đường hầm thường được sử dụng trên một mạng để mang các giao thức không tương thích hoặc dữ liệu riêng biệt trên một mạng đã có sẵn. Ví dụ, Các đường hầm giao thức định tuyến Multicast véc tơ khoảng cách (DVMRP) mang các gói tin multicast trên các mạng unicast. IPSec trong cơ chế đường hầm, giao thức đường hầm lớp 2 (L2TP), và các cơ chế mạng riêng ảo khác (VPN) truyền dữ liệu nhạy cảm trên các mạng IP công cộng sử dụng các giao thức đường hầm bảo mật.
Để triển khai IPv6 trong phạm vi cơ sở hạ tầng mạng IPv4 đang có ở bất cứ chỗ nào trên mạng, đường hầm cung cấp một phương pháp cơ bản cho các host IPv6 hoặc các vùng mạng tạo bởi các host IPv6, các server, và các router có thể liên lạc được với các vùng mạng IPv6 khác, và các mạng IPv6 này sử dụng các miền định tuyến IPv4 như là lớp vận chuyển. Như trình bày trong hình 5.6, một đường hầm được triển khai giữa hai vùng tạo bởi các nút IPv6 trên một mạng IPv4 thuần túy (chẳng hạn như Internet). Các router biên tại biên của các vùng mạng IPv6 và Internet có thể đóng gói các gói tin IPv6 vào trong IPv4 và gửi đi trên đường hầm.
Khi một gói tin IPv6 được đóng trong IPv4, tiêu đề gốc của nó và phần dữ liệu không bị thay đổi. Một tiêu đề IPv4 được chèn vào đằng trước gói tin IPv6. Vì vậy, tiêu đề bên trong chứa địa chỉ nguồn và đích của phiên kết nối IPv6 từ đầu cuối đến đầu cuối, và tiêu đề bên ngoài chứa địa chỉ nguồn và đích của hai đầu đường hầm. Tại mỗi đầu đường hầm, quá trình đóng gói và gỡ gói được thực hiện. Các thiết bị tại mỗi đầu đường hầm phải hỗ trợ cả hai loại giao thức IPv4 và IPv6 (dual-stack) để đóng và gỡ các gói tin IPv6 trong IPv4.
Hình 5.6 – Đường hầm được thiết lập trên mạng IPv4 giữa hai vùng mạng IPv6
Như trình bày trong hình 5.7, host IPv6 A biết địa chỉ đích IPv6 của host IPv6 B, muốn thiết lập một phiên kết nối tới host B. Cả hai mạng IPv6 bị cách ly, nhưng chúng được kết nối sử dụng một mạng IPv4. Một đường hầm mang các gói tin IPv6 trong IPv4 được thực hiện giữa router R1 và R2. Để bắt đầu một phiên kết nối, host A gửi gói tin IPv6 đầu tiên, tạo bởi một tiêu đề IPv6 và dữ liệu của nó, tới địa chỉ IPv6 của host B như là địa chỉ đích. Bởi vì host đích nằm trên một miền định tuyến IPv6 khác, gói tin được truyền trên IPv6 tới router biên R1, hoạt động như điểm đầu vào của đường hầm. Vì vậy, router R1 đóng gói gói tin IPv6 trong gói tin IPv4 bằng việc chèn một tiêu đề IPv4 vào. Sau đó nó gửi gói tin IPv4 mới này tới R2 trên mạng IPv4. Sau khi nhận được gói tin IPv4, router R2, hoạt động như điểm đầu ra của đường hầm, thực hiện việc gỡ gói và gửi gói tin IPv6 trên mạng IPv6 tới host đích B. Có thể thấy rằng tiêu đề và dữ liệu của gói tin IPv6 không hề bị thay đổi trong khi truyền.
Hình 5.7 – Quá trình đóng gói và gửi đi trên đường hầm
Hình 5.8 trình bày quá trình đóng gói một gói tin IPv6 trong một gói tin IPv4. Các trường trong tiêu đề IPv4 bao gồm: Trường Total Length trong tiêu đề IPv4 chứa độ dài của tiêu đề IPv4 cộng với chiều dài của gói tin IPv6 (ở đây gói tin IPv6 bây giờ được đối xử như phần dữ liệu). Nếu gói tin được đóng gói phải phân mảnh, sẽ có các giá trị tương ứng trong trường Flags và Fragment Offset. Giá trị trường Time to Live (TTL) tùy thuộc vào quá trình thực hiện. Số giao thức được đặt
bằng 41, giá trị được gán cho IPv6. Địa chỉ nguồn IPv4 thường là địa chỉ của giao diện ra của điểm đầu vào đường hầm. Địa chỉ đích IPv4 là địa chỉ IPv4 của điểm đầu ra đường hầm. Đường hầm IPv6-over-IPv4 được xem như một hop đơn. Trường Hop Limit trong tiêu đề IPv6 vì vậy bị giảm đi một.
Hình 5.8 – Quá trình đóng gói
Khi điểm đầu ra đường hầm nhận được một gói tin IPv4 với giá trị giao thức bằng 41, nó biết rằng gói tin này đã được đóng gói. Trước khi forward gói tin IPv6 đã được gỡ bỏ, điểm đầu ra đường hầm phải kiểm tra xem địa chỉ nguồn của đường hầm là có thể chấp nhận được không. Nếu đường hầm được cấu hình là một đường hầm hai chiều, thì quá trình kiểm tra này được thực hiện bằng việc so sánh địa chỉ nguồn của gói tin được đóng gói với địa chỉ được cấu hình ở đầu kia của đường hầm. Đối với các đường hầm được cấu hình một chiều, thì phải được cấu hình với một danh sách các tiền tố địa chỉ IPv4 nguồn mà có thể chấp nhận được. Theo mặc định, danh sách này là trống, điều này có nghĩa là điểm đầu ra đường hầm phải được cấu hình rõ ràng để cho phép truyền các gói tin đã được tháo gỡ. Trong trường hợp phân mảnh, nó lắp ghép các gói lại và loại bỏ tiêu đề IPv4. Trước khi chuyển gói tin IPv6 tới đích cuối cùng, nó kiểm tra xem địa chỉ IPv6 nguồn có thích hợp không. Các địa chỉ nguồn dưới đây được xem là không hợp lệ.
Tất cả các địa chỉ multicast (FF00::/8)
Địa chỉ loopback (::1)
Tất cả các địa chỉ IPv6 tương thích với IPv4 (::/96), loại trừ địa chỉ
unspecified để phát hiện sự trùng lặp địa chỉ (::/128)
Tất cả các địa chỉ IPv6 được ánh xạ từ IPv4 (::ffff:0:0/96)
Cả hai đầu của đường hầm cần có một địa chỉ IPv6 link-local. Địa chỉ IPv4 của cùng giao diện đó có thể là trường nhận dạng giao diện trong địa chỉ IPv6. Ví dụ, một host với một địa chỉ IPv4 192.168.0.2 có thể có một địa chỉ IPv6 link-local là FE80::192.168.0.2/64.
Host to Host: Các host hai ngăn xếp bị cách ly trên mạng IPv4 có thể thiết lập một đường hầm với các host hai ngăn xếp khác. Cấu trúc này chỉ cho phép thiết lập các phiên kết nối IPv6 giữa các host với nhau.
Host to Router: Các host hai ngăn xếp bị cách ly trên một mạng IPv4 có thể thiết lập một đường hầm với các router hai ngăn xếp. Router có thể có khả năng kết nối chỉ một loại giao thức trên một giao diện khác. Cấu trúc này cho phép thiết lập các phiên kết nối IPv6 giữa bất kỳ host đích IPv6 nào thông qua một router.
Router to Router: Các router với hai ngăn xếp trên một mạng IPv4 có thể thiết lập một đường hầm với các router hai ngăn xếp khác. Các router có thể được sử dụng để liên kết các vùng IPv6 khác nhau. Vì vậy, bất kỳ host nào có thể thiết lập các phiên kết nối IPv6 với các host khác.
Trong hình 5.9, ví dụ A trình bày một đường hầm được triển khai giữa hai host hai ngăn xếp. Ví dụ B là một đường hầm được thiết lập giữa một host hai ngăn xếp và một router hai ngăn xếp; trong ví dụ này, router được kết nối tới một mạng IPv6 thuần túy. Cuối cùng, ví dụ C trình bày một đường hầm được thiết lập giữa hai router hai ngăn xếp; mỗi router được kết nối với một mạng IPv6 thuần túy.
Hình 5.9 – Các kiểu tunnel IPv6 trong IPv4
5.2.2. Đường hầm được cấu hình bằng tay
Các đường hầm cấu hình bằng tay được cho phép và được cấu hình tĩnh trên các node hai ngăn xếp. Bởi vì đường hầm được cấu hình là một trong những cơ chế chuyển đổi đầu tiên được hỗ trợ bởi IPv6, nó được hỗ trợ bởi hầu hết các triển khai có sẵn ngày nay, bao gồm cả phần mềm IOS của Cisco.
Trên mỗi đầu của đường hầm được cấu hình, các địa chỉ IPv4 và IPv6 phải được gán bằng tay để cấu hình cho giao diện đường hầm. Các địa chỉ sau được gán cho giao diện đường hầm:
Địa chỉ IPv4 cục bộ: Một địa chỉ IPv4 được sử dụng bởi node hai ngăn xếp trên mạng IPv4. Địa chỉ IPv4 này được sử dụng như địa chỉ IPv4 nguồn cho lưu lượng ra.
Địa chỉ IPv4 đầu xa: Một địa địa chỉ IPv4 được sử dụng bởi một node hai ngăn xếp ở đầu xa trên mạng IPv4. Địa chỉ này được sử dụng như địa chỉ IPv4 đích cho lưu lượng ra.
Địa chỉ IPv6 cục bộ: Địa chỉ IPv6 được gán cục bộ cho giao diện đường hầm. Như trình bày trong hình 5.10, mạng IPv6 A, được đại diện bởi tiền tố unicast toàn cầu 3ffe:b00:ffff::/48, và mạng IPv6 B, sử dụng không gian địa chỉ 2001:420:ffff::/48, được kết nối với nhau thông qua một đường hầm được cấu hình bằng tay. Địa chỉ IPv4 được gán cho giao diện đường hầm được cấu hình trên router R1 là 206.123.31.200, và địa chỉ IPv6 được gán cho cùng giao diện đó trên router này là 3ffe:b00:ffff:2::1/64. Còn địa chỉ IPv4 được gán cho giao diện đường hầm được cấu hình trên router R2 là 132.214.1.10, và địa chỉ IPv6 của nó là 3ffe:b00:ffff:2::2/64. Địa chỉ IPv6 được gán cho cả hai đầu đường hầm là cùng trong một subnet (cùng tiền tố /64).
Hình 5.10 – Các địa chỉ được gán cho một tunnel được cấu hình bằng tay
Sau khi tất cả các địa chỉ của giao diện đường hầm được gán, định tuyến IPv6 phải được cấu hình đúng để cho phép truyền các gói tin IPv6 giữa hai mạng IPv6. Tuy nhiên, đường hầm được cấu hình bằng tay chỉ có thể được sử dụng sau khi cấu hình được áp dụng toàn bộ trên cả hai phía. Chú ý rằng đường hầm được cấu hình bằng tay thì quan trọng đối với các tổ chức mà yêu cầu điều khiển chính xác trên sự thiết lập các đường hầm, vì các lý do sau:
Bởi vì các địa chỉ nguồn và đích IPv4 của mỗi đường hầm được cấu hình bằng
tay là toàn cầu, các qui tắc bảo mật trong các tường lửa hoặc các ACL trong các router có thể được cho phép. Tuy nhiên, đối với một vài cơ chế đường hầm, như 6to4, sự điều khiển đường hầm bị hạn chế.
Khi nhiều đường hầm cấu hình bằng tay được triển khai, nhân viên mạng có
thể cấm một đường hầm tại bất kỳ thời điểm nào bằng việc tắt một giao diện đường hầm. Điều này chỉ ảnh hưởng đến lưu lượng trên giao diện đường hầm đó.
5.2.2.1. Đường hầm Brockers
Như đã thảo luận ở trên, thiết lập một đường hầm bằng tay giữa hai nút hai ngăn xếp yêu cầu phải cấu hình bằng tay tại cả hai đầu.
Để dễ dàng cho việc triển khai các đường hầm bằng tay trên một mạng IPv4, IETF định nghĩa một cơ chế gọi là đường hầm broker. Đường hầm Broker là một hệ thống mở rộng, đúng hơn là một router, mà hoạt động như một server trên mạng IPv4 và nó nhận các yêu cầu về sự thiết lập đường hầm từ các nút hai ngăn xếp. Về cơ bản, các yêu cầu được gửi trên IPv4 bởi các nút hai ngăn xếp tới đường hầm broker sử dụng HTTP. Các người dùng đầu cuối có thể viết một trang web để yêu cầu một đường hầm được cấu hình cho các nút hai ngăn xếp.
Sau đó đường hầm broker gửi trả lại thông tin trên HTTP tới các nút hai ngăn xếp như các địa chỉ IPv4, các địa chỉ IPv6, và các tuyến IPv6 mặc định để áp dụng cho việc thiết lập một đường hầm tới một router hai ngăn xếp. Một đường hầm broker có thể cung cấp tùy ý một mẫu cho các nút hai ngăn xếp giúp đơn giản hóa việc cấu hình một đường hầm trên hệ điều hành.
Cuối cùng, đường hầm broker ở xa áp dụng các lệnh trên router hai ngăn xếp để tạo ra một đường hầm. Router hai ngăn xếp phải được kết nối tới một miền IPv6. Trong kỹ thuật đường hầm broker, đường hầm broker và rotuer hai ngăn xếp sử dụng các địa chỉ IPv4 khác nhau.
Như trình bày trong hình 5.11, một host hai ngăn xếp trên một mạng IPv4 đầu tiên, bằng IPv4, đạt đến broker sử dụng HTTP. Người sử dụng đầu cuối viết một trang web, và sau đó nhận được địa chỉ IPv4 và IPv6 từ broker thông qua HTTP. Người sử dụng đầu cuối áp dụng cấu hình nhận được cho host hai ngăn xếp của anh ta để thiết lập một đường hầm. Đồng thời, broker tự động áp cấu hình ở đầu xa của đường hầm cho router hai ngăn xếp được kết nối tới một miền IPv6. Ngay khi cấu hình được áp trên host hai ngăn xếp và trên router, đường hầm được thiết lập và có thể sử dụng để thiết lập một phiên kết nối IPv6 trên mạng IPv4.
Hình 5.11 – Host hai ngăn xếp thiết lập một đường hầm sử dụng tunnel broker
Mô hình đường hầm broker giả sử rằng cả router hai ngăn xếp và đường hầm