- Đặc điểm của đường hầm tự động là địa chỉ điểm cuối đường hầm được xác định một cách tự động Đường hầm được tạo ra một cách tự động và
3.2.7.2 BIA (Bump Into the API)
Phương pháp này áp dụng cho các dual- stack host (các host hỗ trợ cả IPv4 và IPv6), cho phép các host IPv6 khác với các ứng dụng IPv4 hiện có.
Mục đích của phương pháp cũng giống như cơ chế Bump-in-the-stack (BIS) nhưng nó đưa ra cơ chế dịch giữa các API IPv4 và IPv6. DO vậy, quá trình đơn giản không cần dịch header gói tin IP và không phụ thuộc vào các giao thức tầng dưới và trình điều khiển của giao diện mạng.
Host Translatorr( BIA) IPv6 hative host (API)
IP v6 network
IPv4 Applications
IPv6 hative host
Hình 58: BIA
- Phương pháp BIA không sủ dụng được trong các host chỉ hỗ trợ IPv4 như phương pháp BIS. Nó chỉ được sử dụng trên các host IPv6/Ipv4 nhưng có một số trình ứng dụng IPv4 không thẻ hoặc khó chuyển đổi sang hỗ trợ IPv6.
- Do BIA hoạt động tại mức API socket nên ta có thể sử dụng các giao thức an ninh tại tầng mạng (IPsec).
BIA hiện nay chỉ áp dụng được cho các trao đổi kiểu Unicast, chưa áp dụng được cho kiểu Multicast. Các tính năng mới của socket IPv6 không thể sử dụng.
- Phương thức hoạt động:
+ Phương pháp BIA chèn thêm một bộ dịch API vào giữa module socket API và module TCP/IP trên dual-stack host và dịch các hàm API socket IPv4 thành các hàm API socket IPv6 và ngược lại.
Để áp dụng phương pháp này, host hỗ trợ cả TCP(UDP)/IPv4 và TCP(UDP)/IPv6.
+ Khi một ứng dụng IPv4 giao tiếp với một host IPv6 khác, bộ dịch API phát hiện các hàm APG socket mà ứng dụng sử dụng và gọi tương ứng các hàm API socket IPv6 để giao tiếp với host IPv6 và ngược lại.
+ Quá trình chuyển đổi IPv6 sang một tập các địa chỉ IPv4 được thực hiện trong module ánh xạ tên (name resolver).
- Kiến trúc của dual-stack host sử dụng BIA. - Module BIA gồm 3 phần:
+ Module tra cứu tên (Name resolver): Đáp ứng các yêu càu tra cứu tên miền của các ứng dụng IPv4. Khi một ứng dụng giửi một truy vấn các bản ghi kiểu A tới name server, module này sẽ nhận truy vấn này, phân tích và tạo ra truy vấn tương ứng với tên máy đó cho cả các bản ghi kiểu A và AAAA rồi giửi cho name server.
IPv4 Applications
Socket API (IPv4 , IPv6)
API Translator TCP(UDP)/IPv4 TCP(UDP)/IPv6 Name Resolver Address Mapper Function Mapper
Hình 3- 13. Kiến trúc của dual- stack host sử dụng BIA
Nếu trả lời từ name server chỉ có bản ghi kiểu AAAA, module này sẽ yêu cầu module ánh xạ địa chỉ gán một địa chỉ IPv4 tương ứng với địa chỉ IPv6 này rồi tạo ra một trả lời kiểu A chứa địa chỉ IPv4 trả về cho ứng dụng
+ Module ánh xạ địa chỉ (Address mapper).
Duy trì một bảng các cặp địa chỉ IPv4 và IPv6. Các địa chỉ IPv4 được gán từ một tập các địa chỉ này và cập nhật thêm một mục trong bảng. Quá trình cập nhật xảy ra trong hai trường hợp:
Khi module ánh xạ tên chỉ nhận được trả lời về bản ghi kiểu AAAA và không có mục nào trong bảng chứa địa chỉ IPv6 tương ứng.
Khi module ánh xạ hàm nhận được một lời gọi hàm API socket từ dữ liệu thu nhận mà không có mục nào trong bảng tương ứng với địa chỉ IPv6 nguồn.
+ Module ánh xạ hàm (Function mapper): Chuyển đổi các hàm API socket IPv4 thành các hàm API socket IPv6 và ngược lại.
- Các vấn đề liên quan
+ Chuyển đổi API socket.
Các hàm API socket IPv4 được chuyển đổi tương ứng sang các hàm API socket IPv6. Quá trình này chuyển đổi cả các địa chỉ IP nhúng trong các giao thức tầng ứng dụng (FTP, DNS,...). Sự tương thích giữa các hàm API socket là không hoàn toàn do các hàm API socket IPv6 có nhiều tính năng hơn.
Các hàm API socket được chuyển đổi:
bind() connect() sendmsg() sendto() accept() rrecvfrom() recvmsg() getpeername() gétockname()
gétocketopt() sétocketopt() recv()
send()
Bảng 3- 1. Các hàm API socket được chuyển đổi
Các cấu trúc và hàm API cơ bản
AF_ INET AF- INET6
sockaddr_in sockaddr_in6 gethostbyname() getaddrinfo() gethosbyaddr() getnameinfo()
inet_ntoa()/inet_addr() inet_pton()/inet_ntop() INADDR_ANY in6addr_any
Bảng 3- 2. Các cấu trúc và hàm API cơ bản
- Các thông điệp ICMPv4 được chuyển thành ICMPv6 và ngược lại giống trong phưong pháp SIIT.
+ Tập các địa chỉ IPv4 và bảng ánh xạ địa chỉ.
Để tránh hiện tượng dùng hết tập địa chỉ IPv4 dẫn đến không thể tiếp tục đáp ứng các yêu cầu trao đổi với bên ngoài, BIA đưa ra các cơ chế để loại bỏ các mục tồn tại lâu nhất trong bảng để sử dụng trong các yêu càu mới.
+ Các địa chỉ IPv4 nội bô.
Để tránh đụng độ về địa chỉ, BIA sử dụng các địa chỉ không được cấp phát (0.0.0.0 đến 0.0.0.255).
+ Vấn đề không phù hợp giữa kết quả DNS (AAAA) với phiên bản ứng dụng (v4).
- Nếu server ứng dụng chưa hỗ trợ IPv6 nhưng chạy trên một máy có hỗ trợ IPv6 và có tên dưới kiểu bản ghi AAAA trong DNS, ứng dụng client có thể không kết nối được với server do có sự không phù hợp giữa bản ghi kết quả DNS (AAAA) với phiên bản ứng dụng server (IPv4).
- Một trong các giải pháp là thử tất cả các địa chỉ trong DNS và không kết thúc ngay sau lần thử đầu tiên. Điều này có thể ứng dụng bởi sự mở rộng module tra cứu tên và bộ dich API trong BIA. BIA thực hiện lặp công việc
tìm kiếm các địa chỉ hoạt động sử dụng bởi các ứng dụng khác bên ngoài các địa chỉ trả về từ name server.