Tải bản đầy đủ (.doc) (5 trang)

Chương IX: Vấn đề vận chuyển code trong ANIPv6 potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (119.22 KB, 5 trang )

IP v6

Tác giả: Lê Anh Đc
Chương IX: Vấn đề vận chuyển code trong ANIPv6
Chương này mô tả về vấn đề thiết kế và hiện thực kỹ thuật truyền code bởi
AIPv6 Node.
I. Mục đích của việc tích hợp khả năng demand-load vào IPv6
AIPv6 node có thể xử lý IPv6 node và có thể được triển khai trong mạng IPv6.
Nếu kỹ thuật truyền code thiết lập code trong IPv6 packets mà trong quá trình
thực thi, các IPv6 nodes gặp lỗi thì AIPv6 packets sẽ không đến được đích. Bất
kỳ giải pháp nào đều phải tránh vấn đề ấy để có thể đạt được sử hòa hợp giữa
các IPv6 nodes.
Giải pháp được đề nghị cũng phải làm việc trong sự đặt tả IPv6 sẵn có. IANA
cũng định nghĩa một giải pháp Active protocol. Nếu một giải pháp không thể
dùng được cho IPv6 network thì giải pháp ấy cũng vô dụng.
II. Demand-load protocol trong ANTS
ANTS (Active Node Transport System) đã được nhắc đến trong chương 1.
ANTS là cách tiếp cận in-band. Nó dùng một kỹ thuật load code in-band. Cơ chế
của nó là một node, load code của một packet vào bộ nhớ của nó trong khi xử lý
packet đó. Version cuối cùng của kỹ thuật này đòi hỏi mỗi packet phải mang cả
code lẫn giá trị trạng thái tương ứng nhằm mục đích: packet đều có thể được xử
lý bởi mỗi node mà nó đi qua. Theo cách đó, thậm chí các packets liền kề nhau
được xử lý bởi code giống nhau, thì mỗi packet vẫn mang mỗi đoạn code riêng
biệt.
ANTS loại trừ code dư thừa này bằng cách dùng demand-load protocol. Thay vì
vận chuyển code ở trên mỗi packet, ANTS tin tưởng vào các node thuộc kiến
trúc của nó để gửi yêu cầu cần cung cấp code (code request) khi chúng không
có code để xử lý packet. Trong cách hiện thực ANTS hiện nay, một node chỉ gửi
một code request tới node kề theo hướng ngược lại (upstream node). Khi nhận
được code response từ upstream node, requesting node lưu code trong cache
trong một thời gian có giới hạn. Sau đó requesting node sẽ dùng code ấy xử lý


tất cả các packets liên tiếp có cùng định danh. Quá trình demand loading được
minh họa trong hình sau.
Các bước trong giao thức ở hình trên có thể được miêu tả như sau:
1. Một capsule được forward bởi một active node (previous node) có sở hữu code
để xử lý capsule. Trước khi capsule được gửi thì trường previous address
trong định dạng của capsule sẽ được thiết lập.
2. Khi capsule đến active node tiếp theo (loading node) và trong trường hợp code
trùng với type của nó bị thiếu thì một load request capsule sẽ được sinh ra và
được gửi cho node được xác định bởi trường previous address.
3. Khi load request đến previous node thì các load response capsule sẽ được tạo
ra, trong đó sẽ chứa code và những thứ cần thiết để load code.
4. Khi lode response đến loading node thì chúng sẽ được tái tạo lại để xây dựng
code group tương ứng. Sau đó, quá trình load code hoàn tất, code group sau
đó sẽ được sử dụng để forward capsule.
Bởi vì quá trình này đã chứa code trong packet và được chuyển đi trên
mạng, nên ứng dụng chỉ cần nhúng thông số trạng thái vào các mẫu phù hợp
của code.
ANTS demand load protocol có các đặc tính tốt. Thứ nhất, code lập trình chỉ gửi
tới những node nào có request thôi. Vì vậy ứng dụng không cần phải xác định
trước đường đi của packet và sau đó upload code cho tất cả các node mà packet
đi qua, càng không cần phải broadcast programming code tới toàn bộ mạng.
Hơn nữa, vì hầu hết các protocol thường dùng một dòng các packets, nên
overhead của việc khởi tạo demand load sẽ được giảm dần theo con số packet
gửi đi . Tuy nhiên overhead sẽ lớn nếu dòng các packets nhỏ quá.
III. Những lựa chọn cho việc vận chuyển code:
Phần này mô tả và phân tích về sự lựa chọn cho việc kết hợp giữa Active
Network vào IPv6 Network.
i. Tunneling:
Tunneling là cách để đóng gói một protocol vào trong một protocol khác.
Tunneling được dùng khi 2 node không nhìn thấy nhau bằng các protocol riêng

biệt của mình.
Lợi ích của tunneling là một node tách biệt có thể kết nối đến active network
over IPv6 mà không làm hỏng mạng đó. Tunneling có thể hoạt động trên
MobileBone và 6bone.
Tunneling không thể hòa nhập hoàn toàn vào active network như một thành viên
của active network được. ANTS capsule được đóng gói thành dạng IPv6 trước
khi gửi vào mạng Active node. Công việc này là tác động ở lớp data link. Một
ứng dụng chạy trên IPv6 node nguyên thủy sẽ không bao giờ tương tác với
Active protocol, bởi vì IPv6 node nguyên thủy của ứng dụng ấy không bao giờ
xử lý các Active packet đã được phân phát trước cho ứng dụng ấy.
ii. Dùng Gateways:
Một khả năng nữa là tunnel giữa các Active node và sau đó bỏ đi Active
payload trước khi Active packet được gởi đi trên mạng IPv6. Công việc này đảm
bảo thao tác giữa các Active node và các non-Active node. Loại lượt đồ này yêu
cầu một Active node phải chức năng hóa cả một router và một gateway.
Để các phần gateway của node chức năng hóa đúng đắn, node phải cần biết mối
quan hệ về vị trí giữa tất cả các IPv6 node và Active node trong Internet. Đây là
một điểm khó khăn. Active packet có thể được ánh xạ để trở thành IPv6 packet
(bằng cách loại bỏ progamming code), nhưng ngược lại thì không thể. Vì thế
nên Active node sẽ không loại bỏ progamming code của một packet khi nhận
thấy rằng packet ấy vẫn còn đi qua Active node. Khi biết chắc rằng packet ra
khỏi Active node, programming code mới được xóa bỏ đi để đi vào IPv6 node.
Cost của việc loại bỏ đúng đắn này là rất “nặng ký” hơn các lợi ích thu được từ
phương pháp này, bởi vì việc loại bỏ đúng đắn này phải cần một giao thức IPv6
node discovery và một bảng chứa một số lượng rất lớn các thông tin về vị trí của
tất cả các IPv6 node.
iii. Dùng kỹ thuật của IPv6:
Kỹ thuật này vận chuyển code và các giá trị trạng thái (state values) trong một
payload và một option
IPv6 Extension header

Tấc cả các IPv6 node đều phải xử lý các IPv6 extension header. Vì vậy tất cả
IPv6 node đều có khả năng trở thành Active node.
Upper Layer Payload
Upper layer payload là một phần của IPv6 packet, cái theo sau IPv6 header và
extension header. Nó không được đặc tả bởi IPv6. Không giống IPv6 extension
header, sự tiêu chuẩn hóa của một uper layer protocol chỉ áp dụng cho sự thực
thi ở end node. Sự giới hạn kích thước của payload là kích thước lớn nhất của
IPv6 packet. Vì thế, payload là một phương tiện tốt để vận chuyển những phân
mảnh lớn của code và state values. Một option cũng được chèn vào hop-by-hop
option header để báo cho AIPv6 router biết về sự hiện diện của payload này
trong packet. Lợi ích của option này là một AIPv6 router không phải phân tích
extension header ở mỗi packet cho công việc tìm kiếm một Active header.
Không may mắn là việc định nghĩa một payload mới mà IPv6 node không hỗ trợ
thì IPv6 end node sẽ drop các packet chứ payload mới này và gửi ICMP error
message về node nguồn của packet ấy. Khi này xem như việc vận chuyển code
là thất bại.
Option trong Hop-by-Hop Header
Một IPv6 option cung cấp các thuộc tính cho việc xử lý tiền xác định phi chuẩn.
IPv6 node cần điều ấy để áp dụng vào packet kết hợp. IPv6 option là lựa chọn
tốt cho việc vận chuyện code, bởi vì nó có thể chỉ định IPv6 node bỏ qua option
nếu node đó không hiểu option. Một điểm có lợi nữa là có một cơ chế network
socket cung cấp cho các ứng dụng tại end node để chèn option vào và nhận
option từ Hop-by-hop option header, nên cho phép ứng dụng dùng kỹ thuật
Active Network trong khi chạy ở IPv6 end node. Một khuyết điểm của việc
dùng option để vận chuyển code là kích thước của Hop-by-hop option header
được giới hạn ở 256 bytes. Với kích thước ấy thì option rất thích hợp với việc
vận chuyển state value (trung bình cần khỏang 50 bytes), nhưng không thích hợp
với viêc vận chuyển các phân mảnh code lớn (trung bình cần kích thước 750-
1000 bytes).
Hop-bu-hop option header có kích thước tối đa là 256 bytes, nên ta có thể tổ

chức như sau: hop-by-hop option có thể giữ số lượng các option. Code được
phân mảnh ra nhỏ. Một option giữ con số phân mảnh ấy. Mỗi mảnh code nhỏ sẽ
được đưa vào option. Khuyết điểm là các Active node phải tốn chi phí cho việc
parse. Mỗi Active node có thể phân tích 5 option / 1 packet, như vậy sẽ được 1K
phân mảnh code.


IV. Giải pháp: kết hợp Option và Payload
Quá trình vận chuyển phải phân ra làm hai phần tách biệt: vận chuyển state
value và vận chuyển code (state value transport và code transport).
Trong Active network, code transport là một quá trình xử lý end-to-end giữa 2
Active node. Active node A gửi một code request tới Active node B, và Active
node B gửi code response tới Active node A. Vì thế, trong mạng có Active node
và non-Active node (được gọi là mạng lai – hybrid network), một IPv6 payload
có thể được dùng để vận chuyển code, bởi vì chỉ có 2 node cố gắng xử lý
payload mới được kích hoạt.
Mặc khác, state value transport là một quá trình xử lý bao gồm tất cả các node
trong mạng Active network. Trong mạng hybrid network, state value có thể sẽ
được xử lý bởi các IPv6 node trên đường đi (IPv6 intermediate node)hoặc end
node. Packet đi qua mạng vả state value có 2 khả năng :
· Đặt các state value trong option ( có tối đa 256 bytes), và kích hoạt
sự tương tác giữa các IPv6 intermediate node và các end node.
· Đặt các state value trong payload( có tối đa 2056 bytes), và kích
hoạt tương tác giữa các IPv6 intermediate node, nhưng yêu cầu rằng
source code chỉ gửi các packet cho các Active node đích.
AIPv6 transport protocol dùng một option (marshaled option), và một payload
(system payload) để transport state value và code trên mạng IPv6. Marshaled
option mang state value, system payload mang data được gởi bởi các demand
requests, demand responses. Marshaled option có thể ánh xạ trực tiếp thành
marshaled capsule trong ANTS, và system payload có thể ánh xạ trực tiếp thành

một marshaled system capsule trong ANTS. Chi tiết về option và pay load được
trình bày trong phụ lục.

×