Network Address Translation-Protocol Translation (NAT-PT) là một giải pháp
đóng vai trò quan trọng giúp cho nguời dùng chuyển đổi từ mạng IPv4 sẵn có lên
IPv6. Giải pháp này được mô tả trong RFC 2766. Việc chuyển đổi giao thức giữa IPv4 và IPv6 cho phép các Host thuộc các đoạn mạng khác nhau có thể kết nối với nhau.
Khi triển khai IPv6, Enterprise Network cung cấp cho khách hàng địa chỉ IPv6.
Tuy nhiên, trong quá trình chuyển đổi lên môi trường IPv6, các Node IPv6-only đều có nhu cầu giao tiếp với mạng IPv4, cũng như truy cập đến các tài nguyên mạng IPv4.
Ví dụ khách hàng dùng IPv6-only Node có nhu cầu truy cập web Server trên mạng
IPv4. NAT-PT được đưa ra để giải quyết vấn đề này.
NAT-PT là một hình thức phiên dịch qua lại giữa địa chỉ và giao thức IPv4 và
IPv6. Ưu điểm của NAT-PT là không cần phải thay đổi gì đến các Host, vì NAT-PT được cấu hình trên Router. NAT-PT sử dụng một dãi địa chỉ IPv4 đăng ký cho các Node IPv6 một cách tự động. Quá trình chuyển đổi giao thức và ánh xạ địa chỉ này xảy ra khi có phiên (session) giao dịch được khởi động qua các Router biên giữa IPv4- IPv6. Các địa chỉ IPv4 được sử dụng là các địa chỉ toàn cục duy nhất. NAT-PT liên kết các địa chỉ trong mạng IPv6 với các địa chỉ trong mạng IPv4 và ngược lại để cung cấp định tuyến trong suốt [NAT-TERM] cho các gói tin di chuyển qua lại giữa các vùng IPv4-IPv6.
5.3.3.a Một số thông tin về NAT-PT:
Traditional-NAT-PT: Cho phép Host trong mạng IPv6 truy cập đến mạng
IPv4, Tuy nhiên, các phiên truy cập là đơn hướng (uni-directional). Điều này khác với Bi-directional-NAT-PT, Bi-directional-NAT-PT cho phép các phiên truy cập hoạt động theo cả hai chiều. Cũng giống như NAT, traditional-NAT-PT chia thành hai loại:
Basic-NAT-PT và NAPT-PT.
- Đối với Basic-NAT-PT: Một khối địa chỉ IPv4 được thiết lập dành riêng cho
việc biên dịch địa chỉ các Host IPv6 khởi tạo phiên sang các Host IPv4 trong
miền ngoài. Với các gói tin đi ra ngoài từ miền IPv6, địa chỉ IP nguồn và các
trường liên quan như ICMP Header Checksum, TCP, UDP và ICMP sẽ được
biên dịch. Với các gói tin đi vào, địa chỉ đích IP và các checksum nêu ở trên
cũng được biên dịch.
- NAPT-PT mở rộng các bước phiên dịch bằng cách phiên dịch thêm chỉ số nhận
dạng lớp vận chuyển (Ví dụ: chỉ số cổng của TCP, UDP, chỉ số nhận dạng truy
vấn ICMP). Điều này cho phép các Transport ID của nhiều Host IPv6 có thể
được đa hợp vào một Transport IP của một địa chỉ IPv4 đơn. Nói cách khác,
NAPT-PT cho phép nhiều Host IPv6 cùng sử dụng chung một địa chỉ IPv4 khi
thực hiện cơ chế NAPT-PT để truy cập vào mạng IPv4. NAPT-PT có thể kết
hợp với Basic-NAT-PT, vì vậy một dãy địa chỉ bên ngoài được dùng kết hợp
với việc phiên dịch cổng (Port Transalation).Với các gói tin đi ra từ mạng IPv6,
NAPT-PT biên dịch địa chỉ IP nguồn, chỉ số nhận dạng lớp vận chuyển nguồn
và các trường liên quan như các IP, TCP, UDP, ICMP Header Checksum. Chỉ
số nhận dạng lớp vận chuyển có thể là chỉ số cổng TCP/UDP hay ID truy vấn
ICMP. Với các gói tin đi vào, địa chỉ đích IP, chỉ số nhận dạng lớp vận chuyển
đích, checksum tiêu đề IP và lớp vận chuyển sẽ được biên dịch.
Bi-Directional-NAT-PT: Còn được gọi là NAT-PT song hướng, các phiên được
khởi động từ các Host trong mạng IPv4 như các Host khởi động trong mạng IPv6. Các địa chỉ mạng IPv6 được liên kết (bind) với các địa chỉ mạng IPv4, có thể tĩnh hoặc động phụ thuộc vào kết nối được thiết lập trong mỗi hướng. Không gian tên (Ví dụ: các tên Fully Qualified Domain của chúng) giữa các Host trong mạng IPv4 và mạng IPv6 được xem là end-to-end unique. Các Host trong mạng IPv4 truy cập đến các Host trong mạng IPv6 bằng cách sử dụng DNS cho việc phân giải địa chỉ. Một DNS-ALG phải được triển khai kết hợp NAT-PT song hướng để tạo điều kiện dễ dàng ánh xạ tên sang địa chỉ. Đặc biệt, DN-ALG phải có khả năng phiên dịch các địa chỉ IPv6 trong các cú pháp truy vấn DNS và đáp ứng sang các địa chỉ IPv4 tương ứng, hay ngược lại, như các gói tin DNS di chuyển giữa các vùng IPv4 và IPv6.
5.3.3.b Nguyên lý làm việc của NAT-PT
NAT-PT định nghĩa ra một IPv6 Prefix được gọi là NAT Prefix, các gói tin từ
mạng IPv4 sang mạng IPv6 khi qua NAT-PT Router sẽ được chuyển đổi thành gói
IPv6 với địa chỉ nguồn là một địa chỉ IPv6 nằm trong NAT Prefix này. Trong trường hợp Static NAT, mỗi địa chỉ trong NAT Prefix tương ứng với một địa chỉ IPv4 ban đầu (ánh xạ 1:1). Trong trường hợp Dynamic NAT, hoặc NAT overload, một địa chỉ IPv6 trong NAT Prefix này có thể dùng cho một hoặc nhiều địa chỉ IPv4. Hiện nay hầu hết các NAT-PT router chỉ mới hỗ trợ NAT Prefix /96.
Nguyên lý hoạt động cơ bản của phương pháp NAT-PT được mô tả qua Ví dụ
sau:
Hình 5.3.3.b Mô tả nguyên lý hoat động của NAT-PT.
Trong vídụ này định nghĩa ra NAT Prefix “3ffe:aaaa::/96”.
Giả sử Node IPv6 B muốn truyền thông đến Node IPv4 A, Node B tạo gói tin
IPv6 với địa chỉ nguồn và đích lần lượt là:
- Source Address: 3ffe::2
- Destination Address : 3ffe:aaaa::a/96 (địa chỉ này thuộc NAT Prefix).
*NAT Prefix này đã được NAT-PT router quãng bá trong miền IPv6. Các gói
tin IPv6 có địa chỉ đích nằm trong NAT Prefix này sẽ được định tuyến đến NAT-PT Router. Tại đây, gói tin IPv6 sẽ được NAT-PT Router chuyển đổi thành gói tin IPv4 (chi tiết về việc chuyển đổi sẽ được trình bày sau).
Gói tin IPv6 sau khi được chuyển đổi thành gói tin IPv4 sẽ có địa chỉ nguồn và
đích lần lượt như sau:
- Source Address : 192.168.0.3
- Destination Address : 203.162.0.1
Gói tin sau khi được chuyển sang định dạng IPv4 sẽ được hạ tầng mạng IPv4
chuyển đến đích là Node A. Quá trình này cũng xảy ra tương tự khi gói tin IPv4 từ
Node A chuyển đến Node B.
Thông tin về việc ánh xạ giữa IPv4 và IPv6 được thiết lập và lưu giữ trong bộ
đệm của NAT-PT Router, thông tin này được lưu giữ trong suốt quá trình truyền thong giữa Node A và Node B.
5.3.3.c Chuyển đổi giao thức thực hiện bởi NAT-PT
Các gói tin lưu thông qua lại giữa các Site IPv4 và IPv6 cần có sự thay đổi về
cấu trúc. Khi gói tin rời khỏi mạng IPv4 sang mạng IPv6 thông qua NAT-PT Router, IPv4 Header được tách ra và thay thế bởi IPv6 Header và ngược lại. Tất cả các thong tin trong payload của gói tin thông thường phải được bảo toàn ngoại trừ các gói ICMP và các thông tin trao đổi với DNS.
Hình 5.3.3.c Chuyển đổi gói tin IPv4 thành IPv6.
5.3.3.d Chuyển đổi IPv4 Header sang IPv6 Header
Nếu DF flag không được thiết lập, gói IPv6 sau khi chuyển đổi có thể có kích
thước lớn hơn 1280 byte. Do đó, gói IPv4 phải bị phân đoạn trước khi được chuyển thành gói IPv6 và giá trị của Payload Length phải được cộng thêm kích thước của Fragment Header. Ngược lại nếu DF flag được thiết lập, gói tin không bị phân đoạn và gói tin sau khi được chuyển sang định dạng IPv6 không mang Fragment Header.
IPv4 Header ở gói tin ban đầu được tách ra và thiết lập IPv6 Header với giá trị
các trường được thiết lập như sau:
- Version : 6.
- Traffic class : Mặc định là copy từ “Type of Service” field của gói tin IPv4 ban
đầu.
- Flow Label: Được thiết lập với tất cả các bit bằng 0.
- Payload Length : Bằng kích thước của toàn bộ gói IPv4 trừ đi kích thước của
IPv4 Header và IPv4 option (nếu có IPv4 option).
- Next Header : Copy từ IPv4 Header.
- Hop Limit : kiểm tra xem giá trị TTL trong IPv4 Header ban đầu. Nếu giá trị
này bằng 0, NAT-PT router loại bỏ gói tin này và gửi bản tin ICMPv4 về nguồn
để thông báo lỗi. Nếu giá trị này khác 0, copy giá trị này từ IPv4 Header sang
IPv6 Header.
- Source & Destination Address : 128 bit mang địa chỉ IPv6 nguồn và đích của
gói tin sau khi ánh xạ địa chỉ.
*Trong trường hợp DF flag của gói tin IPv4 ban đầu không được thiết lập và gói
tin bị phân đoạn thì trong gói tin IPv6 sau khi được chuyển đổi có chứa Fragment
Header và “Next Header” field trong gói tin IPv6 được thiết lập giá trị 44 (tức chỉ đến Fragment Header). M flag được copy từ gói tin IPv4 ban đầu (gói tin đã bị phân đoạn). “Identification” field được copy từ IPv4 Header.
5.3.3.e Chuyển đổi ICMPv4 Header sang ICMPv6 Header.
ICMP là một giao thức hoạt động ở Transport Layer, là một phương tiện giúp
hệ thống có thể giám sát lỗi. Do đó, trong quá trình chuyển đổi mạng từ IPv4 lên IPv6, ICMP cũng phải hoạt động thông suốt trên toàn mạng. Các bản tin ICMP phân biệt nhau bởi giá trị của ICMP Header, khi các gói tin chứa các bản tin này đi qua NAT-PT router, ICMP Header cũng cần được chuyển đổi cho phù hợp. Cụ thể như sau:
ICMPv4 query messages:
- Echo & Echo Reply (Type 8 & type 0) được chuyển thành Type 128 & Type
129. Sau đó Checksum được tính toán lại.
- Information Request & Reply : (type 15 & type 16) Loại bỏ gói.
- Timestamp & Timestamp Reply : (type 17 & type 18 ) Loại bỏ gói.
- ICMP Router Advertisement (type 9) Loại bỏ gói.
- ICMP Router Solicitation (type 10) Loại bỏ gói.
- Unknown Type: Loại bỏ gói.
ICMPv4 error messages:
Destination Unreachable (type 3) code được phiên dịch như sau:
- Code 0, 1 (net, Host unreachable) được chuyển thành Code 0 (no route to
destination).
- Code 2 (protocol unreachable): được chuyển thành “ICMPv6 parameter” (type
4, code 1).
- Code 3 (port unreachable): chuyển thành Code 4 (port unreachable).
- Code 4 (Fragment need & DF set) chuyển thành bản tin ICMPv6 “Packet Too
Big”. Giá trị trường MTU được điều chỉnh lại từ IPv4 Header cho phù hợp với
IPv6 Header.
- Code 5 (source route failed): Chuyển thành Code 0.
- Code 6,7,8,11,12 : chuyển thành Code 0.
- Code 9,10 được chuyển thành Code 1.
- Redirect (Type 5): loại bỏ gói.
- Time Exceeded (Type 11) Chuyển thành Type 3 và Code vẫn không thay đổi.
- Parameter Problem (Type 12): Chuyển thành Type 4.
5.3.3.f Chuyển đổi các bản tin báo lỗi ICMP từ IPv4 sang IPv6
Ngoài một số thay đổi các thông số như vừa mô tả ở trên, các bản tin báo lỗi
ICMP còn có chứa thông tin về IP Header trong nội dung bản tin. Do đó, các thông tin này cũng cần thay đổi.
5.3.3.g Chuyển đổi các ứng dụng
Hiện nay hầu hết các ứng dụng TCP/IP đều dựa vào nền tảng IPv4, với chiều
dài địa chỉ cố định là 32 bit. Những ứng dụng đó muốn sử dụng với IPv6 cần phải có một số thay đổi cho phù hợp. Các ứng dụng được phát triển sử dụng các Socket như một công cụ để giao tiếp với hạ tầng mạng. IPv4 socket API giúp có nhiệm vụ xử lý Data stream từ lớp trên thành những IPv4 packet mà mạng có thể hiểu được. Cũng tương tự như vậy, hiện nay một số ngôn ngữ lập trình có hỗ trợ IPv6 socket API cho phép triển khai, xây dựng những ứng dụng hoạt động trên nền tảng IPv6.
Để tạo được sự mềm dẻo trong việc chuyển đổi, các tiến trình xử lý của máy
tính, hạ tầng mạng phải duy trì cả hai phiên bản của IP (IPv4/TCP, IPv4/UDP,IPv6/TCP, IPv6/UDP).
Để chuẩn bị cho việc chuyển đổi, những nhà quản trị mạng phải làm quen với
IPv6, chuẩn bị luôn cả chiến lược nâng cấp cho Host và Router. Kế hoạch này phải
đảm bảo những nội dung chính như sau:
- Cho phép các Host dùng IPv4 và IPv6 vẫn hoạt động được với nhau
(Interwork).
- Trên hạ tầng mạng sẵn có, khi triển khai, phát triển IPv6 phải hạn chế tối đa
sự phụ thuộc vào IPv4.
- Đảm bảo mô hình IPv6 triển khai dễ sử dụng.
Các nhà quản trị mạng thường gặp một số vấn đề. Những vấn đề cần phải quan
tâm là:
Vấn đề 1: Host và Router dành cho mạng IPv6 vẫn phải hoạt động được với
IPv4. tức duy trì song song cả hai giao thức IPv4/IPv6 (đây là những Dual-stack Node). Những Dual-stack Node này dùng một dạng địa chỉ IPv6 đặc biệt cho phép gắn kết địa chỉ IPv4 vào 32 low order bit của nó. Đặc điểm này cho phép các Router và Host có thể hoạt động cùng với các IPv4 Node trên mạng. Trên các thiết bị này, mỗi interface có thể được cấu hình nhiều địa chỉ IP cùng lúc (có thể vừa tồn tại IPv4 lẫn IPv6).
Vấn đề 2: Khi Host hay Router được cấu hình với cả IPv4 và IPv6, làm thế nào
mạng phân biệt được cần sử dụng địa chỉ nào?...Hầu hết các Host IPv4 và IPv6 đều sử dụng DNS để ánh xạ giữa địa chỉ IP (IPv4, IPv6) với tên miền. Do đó, trong quá trình chuyển đổi, trên các DNS Server phải chứa dữ liệu của cả Host IPv4 lẫn Host IPv6. DNS hỗ trợ IPv6 được mô tả trong khuyến nghị RFC 1886. Trong khuyến nghị này, các DNS sử dụng một bảng ghi dữ liệu mới có tên là AAAA sử dụng cho IPv6 (bảng ghi dữ liệu dành cho IPv4 là A). Vì các Host có khả năng hoạt động với IPv4 và IPv6 cùng lúc, nên các DNS phải sử dụng cả hai loại bảng ghi này đồng thời.
Vấn đề 3: Trong quá trình định tuyến các gói IPv6 cũng nảy sinh một số vấn đề
như: Cả nguồn và đích sử dụng IPv6 hoặc cả hai, trong khi các Node mạng trung gian chỉ dùng được với IPv4. Trong trường hợp này, muốn giao tiếp giữa những Site IPv6, cần phải tạo những đường hầm (Tunneling) xuyên qua hạ tầng mạng IPv4. Theo như hướng dẫn trong khuyến nghị RFC 1933, IETF đã giới thiệu hai
phương pháp để tạo đường hầm cho các Site IPv6 kết nối với nhau xuyên qua hạ tầng IPv4: Automatic Tunneling và Configured Tunneling.
Vấn đề 4: Sau khi triển khai và phát triển được IPv6, một vấn đề nảy sinh nữa
là: làm sao để các Host IPv4 thuần túy có thể khai thác tài nguyên của mạng IPv6 và ngược lại. NAT-PT (Network Address Translation-Protocol Translation) là giải pháp được đưa ra để giải quyết vấn đề đó. NAT-PT được mô tả trong khuyến nghị RFC 2765 và RFC 2765. NAT-PT cho phép các trạm IPv4 only và các trạm IPv6 only giao tiếp với nhau.