• If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.
Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

IP v6

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • IP v6

    IP v6

    Chương I: Giới thiệu về cấu trúc của IPv6

    ỊLợi ích của IPv6:

    Một trong những lý do chính để phát triển một phiên bản mới của IP đó
    là việc địa chỉ IPv4 lớp B đang hết dần. Hình vẽ sau mô tả tình hình hiện
    nay của IPv4, và tầm địa chỉ
    hiện có của IPv4, qua đó ta thấy dự đoán có thể hết địa chỉ vào khoảng
    năm 2010 hay sớm hơn.




    Hình 1: Tầm địa chỉ IPv4


    Bên cạnh đó, do sự phát triển ngày một lớn của bảng định tuyến ở
    backbone. Sau đây là hình mô tả kích thước của bảng định tuyến được
    nở dần ra theo các năm.



    Hình 2:Kích thước bảng định tuyến


    Các vấn đề về bảo mật, các tùy chọn của IP và hiệu suất định tuyến.
    Các ích lợi của IPv6 gồm: Tăng kích thước của tầm địa chỉ IP; tăng
    sự phân cấp địa chỉ; đơn giản hoá địa chỉ host (địa chỉ được thống
    nhất là: toàn cục, site và cục bộ) ; đơn giản hoá
    việc tự cấu hình địa chỉ (gồm DHCPv6 và neighbor discovery thay
    cho ARP broadcast); tăng độ linh hoạt cho định tuyến multicast; có
    thêm địa chỉ anycast; header được sắp xếp hợp lý; tăng độ bảo mật
    (vì có thêm các header mở rộng về
    bảo mật giúp bảo đảm sự toàn vẹn dữ liệu); có tính di động tốt hơn
    (home agent; care-of-address; và header định tuyến mở rộng); hiệu
    suất tốt hơn (việc tóm tắt địa chỉ; giảm ARP broadcast; giảm sự phân
    mảnh gói tin; không có header checksum; QoS được tích hợp sẵn...).

    1. Tăng kích thước của tầm địa chỉ:

    IPv6 sử dụng 128 bit địa chỉ trong khi IPv4 chỉ sử dụng 32 bit; nghĩa là IPv6 có
    tới 2128 địa chỉ khác nhau; 3 bit đầu luôn là 001 được giành cho các địa chỉ khả
    định tuyến toàn cầu (Globally Routable Unicast –GRU). Nghĩa là còn lại 2125 địa
    chỉ, nghĩa là có khoảng 4,25.1037 địa chỉ, trong khi IPv4 chỉ có tối đa 3,7.109
    địa chỉ, nghĩa là IPv6 sẽ chứa 1028 tầm địa chỉ IPv4.

    2.Tăng sự phân cấp địa chỉ:

    IPv6 chia địa chỉ thành một tập hợp các tầm xác định hay boundary:Ba bit đầu cho
    phép biết được địa chỉ có thuộc địa chỉ khả định tuyến toàn cầu (GRU) hay không,
    giúp các thiết bị định tuyến có thể xử lý nhanh hơn. Top level aggregation (TLA) ID
    được sử dụng vì 2 mục đích: thứ nhất, nó được sử dụng để chỉ định một khối địa chỉ
    lớn mà từ đó các khối địa chỉ nhỏ hơn được tạo ra để cung cấp sự kết nối cho những
    địa chỉ nào muốn truy cập vào Internet; thứ hai, nó được sử dụng để phân biệt một
    đường (route) đến từ đâu. Nếu các khối địa chỉ lớn được cấp phát cho các nhà cung
    cấp dịch vụ và sau đó được cấp phát cho khách hàng thì sẽ dễ dàng nhận ra các mạng
    chuyển tiếp mà đường đó đã đi qua cũng như mạng mà từ đó route xuất phát.
    Với IPv6, việc tìm ra nguồn của 1 route sẽ rất dễ dànNext level aggregator(NLA)
    là một khối địa chỉ được gán bên cạnh khối TLA, những địa chỉ này được tóm tắt
    lại thành những khối TLA lớn hơn, khi chúng được trao đổi giữa các nhà cung cấp
    dịch vụ trong lõi internet, ích lợi của loại cấu trúc địa chỉ này là: thứ nhất là sự ổn
    định về định tuyến, nếu chúng ta có 1 NLA và muốn cung cấp dịch vụ cho các
    khách hàng, ta sẽ cố cung cấp dịch vụ đầy đủ nhất, tốt nhất; bên cạnh đó, chúng ta
    cũng muốn cho phép các khách hàng của chúng ta nhận được đầy đủ bảng định
    tuyến nếu họ muốn để tạo việc định tuyến theo chính sách; cân bằng tải... để thực
    hiện việc này chúng ta phải mang tất cả các đường trong backbone để có thể chuyển
    cho họ.

    3.Đơn giản hoá việc đặt địa chỉ host: IPv6 sử dụng 64 bit sau cho địa chỉ host,và trong 64 bit đó thì có cả 48 bit là địa chỉ MAC của máy, do đó phải đệm vào đó một số bit đã được định nghĩa trước mà các thiết bị định tuyến sẽ biết được những bit này trên subnet, ngày nay, ta sử dụng chuỗi 0xFF và 0xFE (:FF:FE: trong IPv6) để đệm vào địa chỉ MAC. Bằng cách này, mọi host sẽ có một host ID duy nhất trong mạng. Sau này nếu đã sử dụng hết 48 bit MAC thì có thể sẽ sử dụng luôn 64 bit mà không cần đệm.

    4.Việc tự cấu hình địa chỉ đơn giản hơn: một địa chỉ multicast có thể được gán cho nhiều máy, địa chỉ anycast là các gói anycast sẽ gửi cho đích gần nhất (một trong những máy có cùng địa chỉ) trong khi multicast packet được gửi cho tất cả máy có chung địa chỉ (trong một nhóm multicast).

    Kết hợp host ID với multicast ta có thể sử dụng việc tự cấu hình như sau: khi một máy được bật lên, nó sẽ thấy rằng nó đang được kết nối và nó sẽ gửi một gói multicast vào LAN; gói tin này sẽ có địa chỉ là một địa chỉ multicast có tầm cục bộ(Solicited Node Multicast address). Khi một router thấy gói tin này, nó sẽ trả lời một địa chỉ mạng mà máy nguồn có thể tự đặt địa chỉ, khi máy nguồn nhận được gói tin trả lời này, nó sẽ đọc địa chỉ mạng mà router gửi, sau đó, nó sẽ tự gán cho nó một địa chỉ IPv6 bằng cách thêm host ID (được lấy từ địa chỉ MAC của interface kết nối với subnet đó) với địa chỉ mạng=>tiết kiệm được công sức
    gán địa chỉ IP.

    5.Tăng độ linh hoạt cho định tuyến multicast:

    Đặt trường hợp: giám đốc muốn gửi một hội nghị truyền hình đến các nhân viên trong công ty mà không muốn gửi tất cả mọi người trong internet (chỉ gửi những người cần xem), lúc đó, IPv6 có một khái niệm về tầm vực multicast. Với IPv6, bạn có thể thiết kế một luồng multicast xác định chỉ được gửi trong một khu vực nhất định và không bao giờ cho phép các packet ra khỏi khu vực đó.



    8 bit đầu luôn được thiết lập là 1 giúp các thiết bị định tuyến biết được gói tin này là một gói tin multicast. 4 bit sau là flag (hiện tại, 3 bit đầu không được định nghĩa và luôn là 0, bit thứ tư là T bit được sử dụng để quyết định xem địa chỉ multicast này là địa chỉ được gán lâu dài (được gọi là well-known) hay tạm thời (transient). 4 bit tiếp theo là scope, xác định gói tin multicast có thể đi bao xa, trong khu vực nào
    thì gói tin được định tuyến; scope có thể có các giá trị sau: 1(có tầm trong nội bộ node); 2 (có tầm trong nội bộ liên kết); 5 (có tầm trong nội bộ site); 8 (có tầm trong nội bộ tổ chức); E (có tầm toàn cục).
    Tuỳ vào cách gán địa chỉ multicast, chúng ta có thể kiểm soát các gói tin multicast
    được đi bao xa, và các thông tin định tuyến kết hợp với các nhóm multicast được
    quảng bá bao xa. Ví dụ: nếu chúng ta muốn quảng bá một multicast trong văn
    phòng của ta, và muốn toàn thế giới thấy nó, ta sẽ gán tầm cho nó là E (110),
    tuy nhiên, nếu bạn muốn tạo một nhóm multicast cho một hội nghị truyền hình
    bạn có thể gán tầm là 5 hay 2.
    6. Địa chỉ Anycast:
    IPv6 định nghĩa một loại địa chỉ mới: anycast. Một địa chỉ anycast là một địa chỉ
    IPv6 được gán cho một nhóm các máy có chung chức năng, mục đích. Khi
    packet được gửi cho một địa chỉ anycast, việc định tuyến sẽ xác định thành viên
    nào của nhóm sẽ nhận được packet qua việc xác định máy gần nguồn nhất.
    Việc sử dụng anycast có 2 ích lợi: một là, nếu bạn đang đến một máy gần nhất
    trong một nhóm, bạn sẽ tiết kiệm được thời gian bằng cách giao tiếp với máy
    gần nhất; thứ hai là việc giao tiếp với máy gần nhất giúp tiết kiệm được băng
    thông.
    Địa chỉ anycast không có các tầm địa chỉ được định nghĩa riêng như multicast,
    mà nó giống như một địa chỉ unicast, chỉ có khác là có thể có nhiều máy khác
    cũng được đánh số với cùng scope trong cùng một khu vực xác định.
    Anycast được sử dụng trong các ứng dụng như DNS...
    7.Header hợp lý:
    Header của IPv6 đơn giản và hợp lý hơn IPv4. IPv6 chỉ có 6 trường và 2 địa chỉ,
    trong khi IPv4 chứa 10 trường và 2 địa chỉ. IPv6 header có dạng:



    IPv6 cung cấp các đơn giản hoá sau:
    · Định dạng được đơn giản hoá: IPv6 header có kích thước cố định
    40 octet với ít trường hơn IPv4, nên giảm được overhead, tăng độ linh
    hoạt.
    · Không có header checksum: trường checksum của IPv4 được bỏ đi
    vì các liên kết ngày nay nhanh hơn và có độ tin cậy cao hơn vì vậy chỉ cần
    các host tính checksum còn router thì khỏi cần
    · Không có sự phân mảnh theo từng hop: trong IPv4, khi các packet
    quá lớn thì router có thể phân mảnh nó, tuy nhiên việc này sẽ làm tăng
    thêm overhead cho packet. Trong IPv6 thì chỉ có host nguồn mới có thể
    phân mảnh một packet theo các giá trị thích hợp dựa vào một MTU path
    mà nó tìm được, do đó, để hỗ trợ host thì IPv6 chứa một hàm giúp tìm ra
    MTU từ nguồn đến đích.
    8.Bảo mật:

    IPv6 tích hợp tính bảo mật vào trong kiến trúc của mình bằng cách giới thiệu
    2 header mở rộng tùy chọn: Authentication header(AH) và Encrypted
    Security Payload (ESP) header. Hai header này có thể được sử dụng chung
    hay riêng để hỗ trợ nhiều chức năng bảo mật.
    ·AH: quan trọng nhất trong header này là trường Integriry Check Value
    (ICU). ICU được tính bởi nguồn và được tính lại bởi đích để xác minh.
    Quá trình này cung cấp việc xác minh tín toàn vẹn và xác minh nguồn
    gốc của dữ liệu. AH cũng chứa cả một số thứ tự để nhận ra một tấn
    công bằng các packet replay giúp ngăn các gói tin được nhân bản.
    · ESP header: ESP header chứa một trường : security parameter index
    (SPI) giúp đích của gói tin biết payload được mã hoá như thế nào. ESP
    header có thể được sử dụng khi tunneling, khi tunnelling thì cả header
    và payload gốc sẽ được mã hoá và bỏ vào một ESP header bọc ngoài,
    khi đến gần đích thì các gateway bảo mật sẽ bỏ header bọc ngoài ra và
    giải mã để tìm ra header và payload gốc.

    9.Tính di động:

    IPv6 hỗ trợ tốt các máy di động như laptop. IPv6 giới thiệu 4 khái niệm
    giúp hỗ trợ tính toán di động gồm: Home address; care-of address;
    binding; home agent.
    Trong IPv6 thì các máy di động được xác định bởi một địa chỉ home
    address mà không cần biết hiện tại nó được gắn vào đâu. Khi một máy
    di động thay đổi từ 1 subnet này sang subnet khác; nó phải có một
    care-of address qua một quá trình tự cấu hình. Sự kết hợp giữa home
    address và care-of address được gọi là một binding. Khi một máy di
    động nhận được 1 care-of address, nó sẽ báo cho home agent của nó
    bằng gói tin được gọi là binding update để home agent có thể cập nhật
    lại binding cache của home agent về care-of address của máy di động
    vừa gửi. Home agent sẽ duy trì một ánh xạ giữa các home address và
    care-of address và bỏ nó vào binding cache. Một máy di động có thể
    được truy cập bằng cách gửi một packet đến các home address của nó.
    Nếu máy di động không được kết nối trên subnet của home agent thì
    home agent sẽ gửi packet đó cho máy di động qua care-of address
    của máy đó trong binding cache của home agent (Lúc này,home agent
    được xem như máy trung gian để máy nguồn có thể đến được máy di
    động). Máy di động sau đó sẽ gửi một gói tin binding update cho máy
    nguồn của gói tin. Máy nguồn sau đó sẽ cập nhật binding cache của nó,
    thì sau này máy nguồn muốn gửi đến máy di động, chỉ cần gửi trực tiếp
    đến cho máy di động qua care-of address chứa trong binding cache
    của nó mà không cần phải gửi qua home address. Do đó chỉ có gói tin
    đầu tiên là qua home agent.

    10. Hiệu suất:

    IPv6 cung cấp các lợi ích sau:
    · Giảm được overhead vì chuyện dịch địa chỉ: vì trong IPv4 có sử
    dụng private address để tránh hết địa chỉ, do đó xuất hiện kỹ thuật
    NAT để dịch địa chỉ, nên tăng overhead cho gói tin. Trong IPv6 do
    không thiếu địa chỉ nên không cần private address, nên không cần
    dịch địa chỉ.
    · Giảm được overhead do định tuyến: nhiều khối địa chỉ IPv4 được
    phân phát cho các user nhưng lại không tóm tắt được, nên phải cần
    các entry trong bảng định tuyến làm tăng kích thước của bảng định
    tuyến và thêm overhead cho quá trình định tuyến, ngược lại, các địa
    chỉ IPv6 được phân phát qua các ISP theo một kiểu phân cấp địa
    chỉ giúp giảm được overhead.
    · Tăng độ ổn định cho các đường: trong IPv4, hiện tượng route
    flapping thường xảy ra, trong IPv6, một ISP có thể tóm tắt các router|
    của nhiều mạng thành một mạng đơn và chỉ quản lý mạng đơn đó và
    cho phép hiện tượng flapping chỉ ảnh hưởng đến nội bộ của mạng bị
    flapping.
    · Giảm broadcast: trong IPv4 sử dụng nhiều broadcast như ARP,
    trong khi IPv6 sử dụng neighbor discovery để thực hiện chức năng
    tương tự trong quá trình tự cấu hình mà không cần sử dụng broadcast.
    · Multicast có giới hạn: trong IPv6, một địa chỉ multicast có chứa
    một trường scope có thể hạn chế các gói tin multicast trong các node,
    trong các link, hay trong một tổ chức.
    · Không có checksum.
    II. Cấu trúc của địa chỉ:

    Địa chỉ unicast IPv6 có chiều dài 128 bit và được chia làm 2 phần: một subnet
    prefix và interface ID. Với các địa chỉ khả định tuyến toàn cục AGU, thì cả
    prefix và interface ID đều có chiều dài là 64 bit. Subnet prefix là địa chỉ mạng
    được gán cho liên kết. Trong khi interface ID là địa chỉ MAC của node.
    Trong quá trình tự cấu hình của IPv6, host sẽ cung cấp interface ID của nó từ
    ROM và yêu cầu router cục bộ hay sử dụng DHCPv6 server để xác định
    subnet prefix.



    · Do địa chỉ MAC chỉ có 48 bit nên 16 bit trong interface ID sẽ được để giành.
    IEEE có yêu cầu một địa chỉ MAC dài 64 bit được gọi là EUI-64.
    · Quản lý địa chỉ: một địa chỉ khả định tuyến toàn cục sẽ có subnet prefix là 64
    bit và subnet prefix này sẽ được chia nhỏ thành 5 trường:



    Trường đầu tiên là trường format prefix(FP), giúp xác định một địa chỉ khả định
    tuyến toàn cục (AGU) với giá trị nhị phân là 001. Trường thứ 3 chưa được dùng
    đến và được để giành cho tương lai. Hai trường: TLA ID và NLA ID là quan
    trọng nhất. TLA ID là top level aggregation identifier. Các địa chỉ toàn cục
    IPv6 sẽ được gán cho các ISP hay các tổ chức dạng TLA. Các tổ chức TLA
    sẽ tiếp tục phân phát các tầm địa chỉ này cho các tổ chức Next level aggregation
    (NLA). Phương pháp phân phối địa chỉ theo thứ bậc này cho phép việc tóm tắt
    địa chỉ để giảm kích thước của bảng định tuyến ở core. Còn với các nhà quản trị
    mạng thì trường quan trọng nhất là site-level aggregation (SLA) ID. Không giống
    với 2 trường kia, SLA ID thường sẽ không được gán sẵn giá trị khi cung cấp cho
    các tổ chức. SLA ID cho phép 1 tổ chức định nghĩa các phân cấp địa chỉ trong
    cơ quan của họ. 16 bit SLA ID có thể hỗ trợ lên đến 65535 subnet.

    Bảng sau sẽ thể hiện sự so sánh về cấu trúc địa chỉ của IPv4 với IPv6:



    III. Khảo sát cấu trúc mạng của IPv6:


    1. Các vấn đề cơ bản về giao tiếp trong IPv6: chúng ta sẽ khảo sát cách các
    thiết bị giao tiếp với nhau trong một mạng và cách IPv6 tham gia vào đó cũng như
    khảo sát việc giao tiếp giữa 2 host/subnet, host với router...


    a. Các giao tiếp trong một subnet: IPv6 được thiết kế theo kiểu “plug and play”.
    Có hỗ trợ việc tự cấu hình. Để hiểu các giao tiếp trong một subnet, ta cần hiểu
    các khái niệm sau: tự cấu hình phi trạng thái (stateless); địa chỉ liên kết cục bộ
    (link-local); link-local prefix; Interface ID; Neighbor solicitation message; neighbor
    advertisement message; neighbor cache.


    · Nếu một mạng không có router, không có kết nối với internet, và không có cả
    các server để hỗ trợ cho quá trình tự cấu hình thì các host trong mạng đó phải cấu
    hình địa chỉ IPv6 của nó bằng một quá trình gọi là stateless autoconfiguration.


    · Khi một máy kết nối với 1 port trên 1 subnet, máy sẽ tự cấu hình một địa chỉ
    thử (tentative address) được gọi là địa chỉ liên kết cục bộ (link-local address).
    Địa chỉ này có kích thước 128 bit gồm 1 prefix liên kết cục bộ và địa chỉ MAC
    của máy; prefix liên kết cục bộ là một định danh toàn số 0 và theo dạng hex là
    FE8. Một địa chỉ liên kết cục bộ có dạng sau: FE80:0:0:0:xxxx:xxxx:xxxx:xxxx


    · Để đảm bảo địa chỉ đó là duy nhất thì máy sẽ gửi một gói tin đặc biệt là:
    neighbor solicitation đến địa chỉ vừa cấu hình và đợi reply trong một giây.
    Nếu không thấy thì máy sẽ xem địa chỉ đó là duy nhất trong mạng, nếu có
    một gói tin neighbor advertisement message thì địa chỉ đó không duy nhất.
    Sau khi xác định địa chỉ liên kết cục bộ là duy nhất, quá trình tiếp theo là
    query các router lân cận trong mạng.


    · Để giao tiếp với hoat đích trên mạng, máy phải tìm ra interface ID của máy
    đích. Do đó, máy sẽ sử dụng chức năng được gọi là IPv6 Neighbor Discovery
    protocol. Máy sẽ gửi một gói tin neighbor solicitation cho đích và interface ID
    sẽ được gửi trả lại trong gói tin Neighbor advertisement. Interface ID sẽ được
    bỏ vào header của IPv6 và truyền trên mạng. Máy sau đó sẽ thêm một entry
    vào neighbor cache của nó. Entry đó sẽ chứa địa chỉ IPv6 của đích, interface
    ID của nó , một con trỏ vào packet sắp truyền, và một flag để xác định đích
    có phải là một router hay không. Cache này sẽ được sử dụng cho những lần
    gửi sau mà không cần gửi lại gói tin solicitation.

    · Địa chỉ liên kết cục bộ không thể được sử dụng để giao tiếp ra khỏi một
    subnet. Với những giao tiếp liên subnet thì cần các địa chỉ site-local và global
    address để nối các router.

    b. Các giao tiếp liên subnet:

    Khi một máy phát hiện thấy có một router tồn tại trên subnet, thì quá trình tự
    cấu hình có sự khác biệt, và cần các khái niệm sau: site-local address; subnet ID;
    router solicitation message; router advertisement message; default router list cache;
    destination cache; prefix list cache; redirect message; path MTU discovery.

    · Trong và sau quá trình tự cấu hình thì PC đều phụ thuộc rất nhiều vào quá trình
    IPv6 neighbor discovery protocol, để tìm các node trong cùng subnet và tìm các
    router cho các đích đến các subnet khác.

    · Trong quá trình tự cấu hình, sau khi P4C sinh ra một địa chỉ liên kết cục bộ
    duy nhất thì nó sẽ query một router. PC sẽ gửi một gói tin được gọi là router
    solicitation và một router sẽ phản hồi lại với một gói itn gọi là router advertisement.
    Việc hiện diện của router nghĩa là có thể có các subnet khác kết nối với router.
    Mỗi subnet phải có một subnet ID của nó vì việc định tuyến là dựa trên subnet ID.
    Địa chỉ của PC bây giờ phải có một subnet ID duy nhất vì địa chỉ liên kết cục bộ
    không còn đủ để sử dụng nữa. Để hỗ trợ quá trình stateless autoconfig thì router
    advertisement sẽ chứa một subnet ID. Router advertisement của mỗi interface
    sẽ chứa một subnet ID khác nhau. ID này sẽ được kết hợp với interface ID
    để tạo địa chỉ IPv6. PC sẽ bỏ địa chỉ liên kết cục bộ của nó và cấu hình một địa
    chỉ mới được gọi là site-local address, gồm 16 bit subnet ID có dạng:


    FEC0:0:0:<subnet ID>:xxxx:xxxx:xxxx:xxxx

    · PC sẽ sử dụng thôn tin từ router advertisement để cập nhật các cache của nó
    . Subnet ID sẽ được thêm vào prefix list cache của PC. Cache này được sử dụng
    để xem một địa chỉ có cùng subnet hay không với PC. Thông tin của router sẽ
    được thêm vào neighbor cache và destination cache. Nếu router có thể được sử
    dụng là một router mặc định thì một entry sẽ được thêm vào default router list cache.
    · Khi PC đã sẵn sàng gửi packet cho đích, nó sẽ query prefix list để xem địa chỉ
    đích có chung subnet với nó hay không. Nếu không thì packet sẽ được gửi cho
    router trong default router list. PC sau đó sẽ cập nhật destination cache của nó với
    một entry cho host đích và next hop của nó. Nếu default router được chọn không
    phải là next hop tối ưu đến đích thì router sẽ gửi một Redirect message cho PC
    nguồn với một next hop router tốt hơn đến đích. PC sau đó sẽ cập nhật destination
    cache của nó với next hop mới cho đích đó. Các cache được duy trì bởi bởi mỗi
    IPv6 host và được query trước khi các solicitation message được truyền, các
    cache sẽ giúp giảm được số message và các cache này sẽ được cập nhật định kỳ.

    · Để hỗ trợ các giao tiếp liên subnet thì IPv6 cung cấp một dích vụ hữu ích khác
    là Path MTU discovery. IPv6 không cho phép các router phân mảnh các packet
    quá lớn được truyền qua các liên kết của next hop, chỉ có các node nguồn mới
    được phép phân mảnh packet. Sử dụng IPv6 Path MTU discovery, một node
    nguồn có thể quyết định packet lớn nhất có thể được gửi đến đích. Với thông
    tin về các MTU của các liên kết có trên những hop trung gian, node nguồn có
    thể định lại kích thước cho các packet của nó một cách phù hợp để truyền.

    c. Giao tiếp giữa các mạng:

    Trong quá trình tự cấu hình stateless, mỗi node có trách nhiệm cấu hình địa chỉ
    của chính nó và cache lại interface ID của nó và thông tin được cung cấp bởi
    giao thức neighbor discovery. Trong một mạng nhỏ, quá trình này có ích lợi là
    đơn giản và dễ dùng. Bất lợi của nó là quá dựa vào kỹ thuật multicast, sử dụng
    không hiệu quả tầm địa chỉ và thiếu bảo mật, thiếu sự kiểm soát chính sách và
    việc đăng nhập.

    · Để hỗ trợ các giao tiếp giữa các mạng lớn hơn và phức tạp hơn thì ta phải
    sử dụng quá trình tự cấu hình stateful. Để hiểu rõ hơn quá trình này, ta phải hiểu
    rõ các khái niệm sau: stateful autodiscovery; DHCPv6; DHCPv6 client, relay,
    agent, server.

    · Stateful autoconfig dựa trên các server để cung cấp các thông tin cấu hình,
    những server này được gọi là các DHCPv6 server. Tuy nhiên, với các nhà quản
    trị thì stateful phức tạp hơn stateless vì nó yêu cầu các thông tin cấu hình phải
    được thêm vào cơ sở dữ liệu của DHCPv6 server. Do đó, stateful có khả
    năng mở rộng tốt hơn cho những mạng lớn.

    · Stateful có thể được sử dụng đồng thời với stateless. Ví dụ: một node có thể
    theo các quá trình stateless trong quá trình khởi động để lấy địa chỉ liên kết cục bộ.
    Sau đó, nó có thể sử dụng stateful để lấy thêm các thông tin từ DHCPv6 server.

    · Để lấy thông tin cấu hình thì PC phải xác định một DHCPv6 server bằng cách
    gửi ra một DHCP solicit message hay bằng cách lắng nghe một DHCP advertisement.
    PC sau đó sẽ gửi một unicast DHCPv6 Request. Nếu DHCPv6 server không ở
    chung subnet với PC thì một DHCP relay hay agent sẽ forward yêu cầu cho một
    server khác. Server sẽ hồi âm bằng một DHCPv6 Reply chứa thông tin cấu hình cho PC.

    · Việc sử dụng DHCPv6 có nhiều ích lợi như:

    + Kiểm soát:DHCPv6 kiểm soát việc phân phối và gán các địa chỉ từ một điểm kiểm
    soát tập trung.

    + Tóm tắt: do việc phân phối có thứ bậc nên có thể tóm tắt.

    + Renumbering: khi một ISP mới được chọn để thay thế cái cũ thì các địa chỉ mới có
    thể dễ dàng được phân phối hơn với dịch vụ DHCPv6.

    + Bảo mật: một hệ thống đăng ký host có thể được sử dụng trong một dịch vụ
    DHCPv6. Hệ thống đăng ký này có thể cung cấp một cách có chọn lựa các dịch
    vụ mạng cho các host đăng ký và từ chối truy cập cho các host không đăng ký.



    Chương II: Cách đặt địa chỉ trong IPv6

    I. Các đặc tính:

    1.Cấu trúc địa chỉ IPv6: địa chỉ IPv6 dài 128 bit gồm 8 phần ở dạng thập lục
    phân được phân cách bởi các dấu hai chấm (:). Mỗi phần của nó sẽ dài 16 bit. IPv6
    sử dụng dang thập lục phân, đây là thay đổi cơ bản so với IPv4 sử dụng dạng chấm
    (dot). Nguyên nhân là do tầm địa chỉ IPv6 quá lớn nên không thể sử dụng dạng dot
    vì sẽ rất dài (gấp 4 chiều dài của IPv4 hiện tại).

    Một dạng chuẩn của một địa chỉ IPv6 sẽ có dạng: 2001:0010:3456:6EFD:00AC:0DEC:DDEE:EEDD

    · IPv6 cung cấp 2 phương pháp để rút gọn việc ghi địa chỉ. Thứ nhất là việc bỏ
    các số 0 đứng đầu và thứ hai là việc thay thế nhiều nhóm số 0 thành một dấu ::


    Ví dụ: địa chỉ sau đây trước khi được rút gọn có dạng:

    ADBF:0:0:0:0:000A:00AB:0ACD


    Sau khi rút gọn theo cách 1:


    ADBF:0:0:0:0:A:AB:ACD

    Theo cách 2:

    ADBF::A:AB:ACD

    Chú ý: Dấu :: chỉ xuất hiện duy nhất một lần trong địa chỉ.

    Để biểu diễn một địa chỉ IPv4 theo dạng IPv6, ta gán 6 phần đầu của địa chỉ
    IPv6 bằng 0, 2 phần còn lại dài 32 bit được ghi theo kiểu IPv4. Ví dụ: IPv4
    sẽ có dạng:

    0:0:0:0:0:0.A.B.C.D

    hay ::A.B.C.D

    Ví dụ: ::192.168.1.1

    2. Các loại địa chỉ: IPv6 có các loại địa chỉ sau: unicast, multicast và anycast.

    a. Unicast: một địa chỉ unicast đại diện cho một host. Các địa chỉ unicast được
    chia nhỏ thành những dạng sau: địa chỉ unicast khả tóm tắt toàn cục (AGU); địa
    chỉ loopback; địa chỉ không xác định; interface ID; địa chỉ unicast cục bộ;
    NSAP; IPX.
    · AGU: là một cấu trúc giúp gán và phân phối các địa chỉ IPv6. Cấu trúc này
    chia tầm địa chỉ ra làm 5 phần gồm: FP(Format prefix); Top level aggregation
    identifier (TLA ID); next level aggregation identifier (NLA ID); site level
    aggregation identifier (SLA ID); và interface ID.



    + FP: luôn là 001 để xác định địa chỉ này ở dạng địa chỉ khả định tuyến toàn cục.
    Với mỗi loại địa chỉ IPv6 sẽ có một Format Prefix duy nhất để giúp các thiết bị định
    tuyến dễ dàng xử lý địa chỉ hơn.

    + TLA-ID: cung cấp 8192 TLA, nghĩa là có thể có 8192 nhà cung cấp ở cấp này.
    Các TLA ở cấp cao nhất của bảng phân cấp định tuyến. Các TLA sẽ đuợc gán
    một trong 8192 TLA ID và sẽ có trách nhiệm phân phát các địa chỉ của mình
    quản lý xuống cho các khách hàng.

    +NLA-ID: là các ID cho các nhà cung cấp cấp 2, một NLA có thể là một tổ chức
    có một kết nối với một TLA hay là một ISP. NLA sẽ được nhận một NLA-ID từ
    TLA, và đến lượt nó, nó phải cung cấp địa chỉ của nó cho các khách hàng.

    + SLA-ID: SLA là mạng của khách hàng.

    · Nhà cung cấp cao nhất cho các tầm địa chỉ IPv6 là Internet Assigned Number
    Authority (IANA). IANA sẽ phân phối các tầm địa chỉ cho các Internet Registry
    (IR) ở từng khu vực. Có 3 IR là: ARIN; RIPE Network Cordination Centre
    (NCC); và APNIC. ARIN thuộc khu vực châu Mỹ, Caribê, và một phần châu Phi;
    RIPE NCC quản lý châu Âu, Trung Đông, và phần còn lại của châu Phi; APNIC
    quản lý khu vực châu Á Thái Bình Dương. Các IR sẽ chia tầm TLA thành những
    tầm TLA con, giúp phân phối địa chỉ theo quy luật sau:

    + IR sẽ gán các địa chỉ cho các TLA con (TLA ISP).

    + TLA ISP sẽ gán các địa chỉ NLA cho các NLA ISP.

    + NLA ISP sẽ gán các SLA cho khách hàng.

    · Địa chỉ loopback: không phải là một địa chỉ, có dạng: 0:0:0:0:0:0:0:1 hay :
    :1. Được sử dụng để kiểm tra.

    · Interface ID: để tạo các địa chỉ EUI-64 từ địa chỉ MAC, ta thực hiện
    các bước sau:+ Thêm FF-FE vào giữa các byte 3 và 4 của địa chỉ MAC.

    + Lấy bù bit “Universal/Local”(U/L), là bit thứ 7 kể từ trái sang của địa chỉ MAC.

    Ví dụ: Ta có địa chỉ MAC: 0008:749B:3CF4

    Bước 1: Thêm FF-FE vào giữa byte thứ 3,4 của địa chỉ MAC:

    Là thêm vào giữa 74 và 9B:

    0008:74FF:FE9B:3CF4

    Bước 2: Lấy bù bit U/L của byte đầu tiên:

    Byte đầu tiên là 00:

    00000000=00000010=02h

    Vậy ta có EUI-64 từ MAC trên là:

    0208:74FF:FE9B:3CF4

    · Địa chỉ sử dụng cục bộ: gồm 2 loại: địa chỉ liên kết cục bộ (được sử dụng
    trên 1 liên kết) và địa chỉ site cục bộ (được sử dụng trong một site).


    + Địa chỉ liên kết cục bộ: chỉ có tác dụng trên một liên kết của router. Chỉ những
    host và interface của router được kết nối vào cùng một subnet mới có được địa
    chỉ liên kết cục bộ của segment đó. Router sẽ không quảng bá địa chỉ này.
    Có dạng sau:

    1111111010 0.......0 Interface I
    10bit 54bit 64 bit
    hay :FE80::/64


    + Site-local address: là địa chỉ chỉ có thể định tuyến được trong một site.
    Nghĩa là các host được cấu hình với địa chỉ này có thể giao tiếp với các
    host khác trong cùng một múi mạng nhưng không được định tuyến ra ngoài.
    Site-local giống như địa chỉ private trong IPv4. Có dạng:

    1111111011 0......0 subnet ID Interface

    10 bit 38bit 16bit 64 bit

    Hay: FEC0::/10


    b. Subnet trong IPv6: IPv6 được chia nhỏ thành các prefix là TLA, subTLA,
    NLA và SLA. Các ARIN, RIPE, APNIC phân phối các sub TLA cho các
    nhà cung cấp TLA. Những nhà cung cấp này lại phân phối các tầm địa chỉ NLA
    cho các nhà cung cấp nhỏ hơn...



    Các tầm địa chỉ sau sẽ được phân phối cho các IR:

    2001:0400::/23 cho ARIN

    2001:0200::/23 cho APNIC

    2001:0600::/23 cho RIPE

    Chúng ta sẽ sử dụng ARIN làm ví dụ. Ta sẽ xem quy luật phân phối:

    +ARIN sẽ phân phối các địa chỉ /35 cho các subTLA.

    +TLA sẽ phân phối các tầm địa chỉ cho các NLA.

    +Và các NLA sẽ phân phối một tầm địa chỉ /48 cho các SLA.

    +Phân phối /64 cho các SLA chỉ có một subnet.

    +Phân phối /128 cho các SLA với chỉ 1 subscriber.

    Ví dụ: ARIN có được tầm địa chỉ 2001:0420::/23, sẽ phân phối xuống
    cho các subTLA: subTLA1 có tầm 2001:0420::/35; subTLA2 có tầm
    2001:0428::/35. Việc phân phối này cho phép các subTLA subnet tầm
    địa chỉ được phân để phân phối xuống cho các NLA:

    · SubTLA1 sẽ cung cấp các prefix cho các NLA:

    2001:0420:0001::/48

    2001:0420:0002::/48
    · SubTLA2 sẽ cung cấp cho các NLA:

    2001:0428:0001::/48

    2001:0428:0002::/48
    · Mỗi NLA lại subnet và phân phối cho các SLA; với NLA
    có tầm địa chỉ 2001:0420:0001::/48 có thể phân phối các địa
    chỉ sau:

    2001:0420:0001:1::/48

    2001:0420:0001:2::/48

    èsử dụng cách phân phối này, ta chỉ cần quản l‎ tầm địa chỉ ở mỗi cấp, vì vậy
    giảm được kích thước bảng định tuyến.

    c. Địa chỉ multicast: Có cấu trúc như sau:

    11111111 flag scope groupID

    8bit 4bit 4bit 112bit
    · Flag: là trường 4 bit, trong đó chỉ sử dụng bit thứ tư (ba bit đầu không
    sử dụng) để xác định xem đây là địa chỉ thường được sử dụng (permanent)
    hay không. Nếu bit đó bằng 0 thì nghĩa là permanent và 1 nghĩa là
    non-permanent. Các địa chỉ permanent là do một tổ chức quốc tế gán.
    · Trường scope: được sử dụng để xác định phạm vi của group, gồm các giá trị sau:


    1- Node-local scope


    2- Linl-local scope

    5-site-local scope

    8-organization-local scope

    E-global scope

    GroupID: xác định ID của group.
    Các địa chỉ thường dung:
    a. Node-local scope: FF01:0:0:0:0:0:0:1(địa chỉ cho tất cả
    các node); FF01:0:0:0:0:0:0:2(tất cả router).

    b. Link-local scope:

    FF02::1-tất cả các node

    FF02::2-tất cả router

    FF02::4-DVMRP router

    FF02::5-tất cả OSPF IGP router

    FF02::6-tất cả OSPF IGP DR

    FF02::7-ST router

    FF02::8-ST host

    FF02::9-RIP router

    FF02::A-EIGRP router

    FF02::B-mobile agent

    FF02::D-PIM router

    FF02::1:2-DHCP agent

    FF02::1:FFxx:xxx-solicited node address

    c. Site-local scope:

    FF05::2-tất cả router

    FF05::1:3-tất cả DHCP server

    d. Địa chỉ anycast: bất cứ địa chỉ nào được gán cho nhiều hơn 1
    interface thì được xem là địa chỉ anycast. Các packet được gửi
    đến một địa chỉ anycast sẽ được định tuyến đến interface gần
    nhất có địa chỉ đó. Anycast không khác unicast. Do đó, router
    phải được cấu hình để xử l‎ những gói tin anycast. Địa chỉ này
    có dạng:

    Subnet prefix 0….0

    n bit 128-n bit

    * Có 2 loại địa chỉ anycast được giành sẵn. Định dạng của những địa chỉ
    này phụ thuộc vào lọai địa chỉ IPv6 được cấu hình. Định dạng này được quyết
    định bằng cách xét định dạng prefix. Quy luật là nếu các bit đầu tiên của 1 địa
    chỉ là 000 thì interface ID có thể có chiều dài không cố định, còn nếu các bit đầu
    không phải là 000 thì interface ID phải là 64 bit.

    Ví dụ: Lọai địa chỉ anycast có 64 bit interface ID có dạng:

    Subnet Prefix 111…111 Anyast ID

    n bit 121-n 7 bit

    Interface ID của lọai này tùy thuộc vào chiều dài của subnet ID.

    · Các địa chỉ anycast này không được sử dụng để gán cho
    các interface. Hiện nay chỉ có 3 Anycast ID là: 7E (làm địa chỉ
    của home-agent trong mibile IPv6); 7F, và 00.

    · Ví dụ: Nếu ta viết interface ID của IPv6 home agent, ta sẽ viết:

    1111110111111111 111….111 1…10=111111011…111 1111110

    57bit 7bit=FE



    Chương 3: IPv6 Header

    I. Phân tích:

    IPv6 header có kích thước cố định. Trong khi IPv4 header có kích thước
    thay đổi. Với kích thước cố định thì một router có thể xử lý gói tin một cách hiệu quả.



    IPv6 header lưu các thông tin cần thiết để định tuyến và phân phát gói tin
    đến đích. Các header sẽ được xử lý bởi mỗi node trên đường đến đích.
    4 bit đầu tiên là version được sử dụng để xác định version của giao thức
    IP đang được sử dụng và nó có giá trị là 6 với IPv6. Trường này rất quan
    trọng vì nó cho phép cả hai giao thức cùng tồn tại trên một segment mà
    không xảy ra đụng độ.

    Hai trường tiếp theo là traffic class và flow label được sử dụng để cung
    cấp các kiểu chất lượng dịch vụ (QoS) dạng diffServe và cung cấp sự
    hỗ trợ các ứng dụng có yêu cầu xử lý đặc biệt theo từng luồng dữ liệu.
    Trường traffic class có tác dụng như trường Type of Service (ToS)
    của IPv4, được sử dụng để ưu tiên traffic. Trường flow label kết hợp
    với địa chỉ nguồn và đích giúp xác định luồng traffic có yêu cầu được
    xử lý đặc biệt bởi các router trên đường. Khi một router xác định dòng
    traffic lần đầu, nó sẽ nhớ dòng traffic đó, cũng như các xử lý đặc biệt ứng
    với traffic này, và khi các traffic khác thuộc dòng này đến, nó sẽ xử lý
    nhanh hơn là xử lý từng packet.
    Trường payload tương tự như trường total length của IPv4, xác định tổng
    kích thước của gói tin IPv6 (không chứa header).
    Trường next header được sử dụng để xác định header tiếp theo sau
    IPv6 header. Mục đích của trường nay giống với trường protocol bên
    IPv4.
    Trường hop limit được sử dụng để giới hạn số hop mà packet đi qua,
    được sử dụng để tránh cho packet được định tuyến vòng vòng trong
    mạng. Trường này giống như trường TTL (Time-To-Live) bên IPv4.
    II.So sánh IPv6 và IPv4 header:

    IPv6 header có một vài điểm chung so với IPv4, chúng ta sẽ phân tích lại
    IPv4 header để xem xét sự giống và khác nhau giữa chúng cũng như thấy
    được sự cải tiến trong nội dung header của IPv6.



    - Version: giống ở IPv6

    - Header length: xác định kích thước header tùy thuộc vào
    trường Option. Trường này không có ở IPv6 vì IPv6 header
    có kích thước cố định.

    - Type of service (ToS): tương tự như traffic class bên IPv6.

    - Total length: giống với payload length bên IPv6.

    - Identification, flags, fragment offset: được sử dụng để xử lý
    việc phân mảnh và kết hợp các gói tin. Ở IPv4, một hop trung
    gian có thể phân mảnh một packet khi kích thước lớn hơn MTU
    của hop đó. Không giống với IPv4, việc xử lý phân mảnh trong
    IPv6 xảy ra chỉ trên node nguồn bằng việc sử dụng kỹ thuật
    gọi là path MTU. Do đó, thông tin liên quan đến việc phân mảnh
    sẽ được mã hoá trong header “fragmentation” (là một header mở
    rộng của gói tin IPv6).

    - TTL: giống như hop limit bên IPv6.

    - Protocol: tương tự như next header bên IPv6.

    - Header checksum: được sử dụng để đảm bảo sự toàn vẹn
    của IPv6 header. Tuy nhiên, ở lớp trên lại tính lại checksum cho
    toàn packet nên việc tính header checksum là dư thừa, nên trong
    IPv6 header không có trường này.

    - Options: trường này được được mã hoá trong các header mở
    rộng bên IPv6.

    III. Header mở rộng của IPv6:

    Các header mở rộng được đặt giữa IPv6 header và header của các giao
    thức lớp trên, được sử dụng để mang các thông tin tuỳ chọn ở lớp Internet
    trong packet. Một IPv6 packet có thể chứa một hay nhiều header mở rộng.
    Mỗi header mở rộng sẽ có giá trị đại diện cho nó. Ví dụ: TCP (6); UDP (7);
    Routing header (43); Fragment header (44); ESP (50); AH (51); ICMP (58)...



    IPv6 có thể được thực thi đầy đủ với các header mở rộng sau:
    hop-by-hop option; routing; fragment; destination option; authentication
    và ESP. Khi có nhiều header cùng tồn tại trong một packet thì chúng nên
    theo thứ tự sau:
    - IPv6 header

    - Hop-by-hop option (0)

    - Destination option header (60) (được xử lý bởi mọi node
    có xuất hiện trong Routing header)

    - Routing header (43)

    - Fragment header (44)

    - Authentication header (51)

    - Encapsulating security payload (ESP) header (50)

    - Destination option header (60) (chỉ được xử lý bởi đích của gói tin)

    - Upper layer header.

    Trừ destination option header ra, các header khác đều xuất hiện một
    lần trong packet. Destination option header chứa thông tin được xử lý
    bởi đích cuối. Khi packet có chứa routing header, thì có thể sẽ có thêm
    một Destination option header nữa được sử dụng để xác định rằng
    packet này nên được xử lý bởi tất cả các node trung gian được liệt
    kê trong routing header.
    Khi IPv4 có chứa trường Option thì tất cả các hop trung gian đều phải
    xử lý gói tin nên làm tăng độ trễ truyền cho gói tin.
    Chỉ trừ header Hop-by-hop option, còn các header còn lại chỉ được xử
    lý bởi node đích của packet. Hop-by-hop option header chứa các thông
    tin tuỳ chọn mà cần được xử lý bởi tất cả các node trung gian.
    Giá trị của trường next header xác định hành động kế tiếp được xử lý,
    do đó các header mở rộng phải được xử lý theo thứ tự mà chúng xuất
    hiện trong các packet. Khi một node nhận được một giá trị next header
    mà nó không biết, nó sẽ bỏ gói tin và gửi một gói tin được gọi là ICMP
    parameter problem cho nguồn của gói tin.
    Hiện tại, hop-by-hop option header và destination option header sẽ chứa
    một số các tùy chọn được mã hoá ở dạng Type-Length-Value (TLV).



    Loại tùy chọn được mã hoá sao cho 2 bit cao nhất sẽ xác định hành động
    mà node sẽ làm nếu nó không nhận ra loại tuỳ chọn và bit thứ 3 sẽ xác
    định dữ liệu tuỳ chọn có thể thay đổi đường đi để đến đích cuối của packet
    hay không. Ví dụ: khi một node xác định một giá trị kiểu tuỳ chọn là 130
    (10000010), 2 bit cao nhất là 10 (nghĩa là bỏ packet và gửi một ICMP
    parameter problem cho nguồn của gói tin). Các giá trị 2 bit đầu như sau:

    00-bỏ qua option này và tiếp tục xử lý header

    01-bỏ qua packet

    10-bỏ qua packet và gửi ICMP parameter problem

    11-bỏ qua packet và nếu đích của packet không phải là multicast
    thì mới gửi ICMP parameter problem.

    Bit thứ 3 bằng 0 là không cho phép dữ liệu tuỳ chọn thay đổi đường
    đến đích và bằng 1 là cho phép thay đổi.

    1. Hop-by-hop option header:

    Là header chứa thông tin tùy chọn được xử lý bởi tất cả các node
    trung gian. Nó có dạng:



    Loại tuỳ chọn của tùy chọn cảnh báo router (Router Alert option) là 5
    (0000 0101) xác định rằng các node nếu không nhận ra tùy chọn này
    có thể bỏ qua nó và tiếp tục xử lý header, và dữ liệu tuỳ chọn không
    được thay đổi đường đi. Kích thước của tùy chọn là 2. Ví dụ: hình sau
    sẽ mô tả một packet gồm một router alert hop-by-hop option



    2. Routing header:

    Là header cho phép nguồn quyết định những đường để đến đích bằng
    cách liệt kê một hay nhiều các node mà nó sẽ đi qua. Nó có dạng:



    Khi một node xác định kiểu định tuyến mà nó không biết và giá trị của
    segment left bằng 0, nó sẽ bỏ qua routing header và tiếp tục xử lý
    header. Tuy nhiên nếu segment left khác 0 thì node sẽ bỏ gói tin và
    gửi ICMP parameter problem đến nguồn. Hiện nay, chỉ có kiểu định
    tuyến bằng 0 mới được định nghĩa và nó có dạng:



    Tác dụng khác của routing header là để giao tiếp với một node di
    động ở xa home network của nó mà không cần định tuyến tam giác.
    Nếu không cần tối ưu đường thì packet có thể được gửi đến home
    network của node di động và sau đó sẽ được home agent truyền đi,
    tạo nên định tuyến tam giác. Do đó, nguồn của kết nối có thể xác
    định đường đi bằng cách sử dụng routing header lọai 0 và cho phép
    nguồn xác định đường mà không cần định tuyến tam giác.
    Ví dụ: Với kết nối giữa node nguồn s và node đích d qua 2 router trung
    gian r1, r2 thì s có thể tạo IPv6 packet với routing header như sau:



    Ta thấy, ở hình (a) trường đích là r1 mà không phải là node d,
    nguyên nhân là do, vì chỉ trừ hop-by-hop option header là được
    xử l‎ bởi tất cả các node trung gian trên đường đi tới đích, các header
    còn lại chỉ được xử l‎ bởi duy nhất node đích của packet, do đó, đích
    của gói tin phải là router r1, sau khi xem xét IPv6 header, nó sẽ tiếp tục
    xử lý header mở rộng, lúc đó, r1 sẽ xử lý routing header mà node s gửi
    cho nó: địa chỉ đầu của routing header là router tiếp theo trên đường đi
    (r2) theo sau là node đến cuối cùng. Router r1 sẽ giảm trường segment
    left và hóan đổi các giá trị của trường destination trong IPv6 header
    với trường first address trong routing header, và gửi cho r2. Hình b
    miêu tả packet mà r1 gửi cho r2. Tương tự như vậy, sau khi xem xét
    IPv6 header, r2 sẽ tiếp tục xử lý routing header (vì trường đích là r2
    nên r2 được phép mở routing header), r2 sẽ giảm segment left và hóan
    đổi trường destination với địa chỉ thứ 2 trong routing header.
    Khi xử lý routing header, index của địa chỉ để có thể hóan chuyển với
    trường đích được tính như sau:
    (Header extension length%2)-(Segment left -1)

    Header Extension header=2*(số địa chỉ có trong routing header)

    Do đó, Hdr Ext length không được lẻ, nếu l3 thì node đang xử
    lý sẽ gửi gói tin ICMP parameter problem về node nguồn.

    Khi segment left giảm tới 0 thì node đang xử l‎ routing header sẽ được
    xem như node đích của gói tin và nó sẽ tiếp tục xử lý các header khác
    trong packet mà không gửi gói tin đi nữa.
    3. Fragment header:

    Ở IPv4 thì trường total length trong header sẽ giới hạn kích thước tối
    đa của 1 packet là 64 kB. Tuy nhiên, phụ thuộc vào kỹ thuật được sử
    dụng mà kích thước thật của packet có thể được giới hạn lại. Do đó,
    nếu packet quá lớn thì IP có nhiệm vụ phân mảnh packet để đảm
    bảo kích thước packet không vượt quá MTU. Do đó, dữ liệu của
    người dùng được gửi trong một packet từ một nguồn có thể đến đích
    trong nhiều packet nếu có 1 liên kết có MTU nhỏ hơn MTU của
    node nguồn. Tuy nhiên việc phân mảnh này sẽ không tối ưu.

    Ví dụ: giả sử, ta gửi 1 ứng dụng 3000 byte từ nguồn có MTU là
    3000 byte, khi gửi đến liên kết tiếp theo có MTU=1500 byte, do
    đó, packet phải bị chia đôi, sau đó lại gửi đến liên kết tiếp theo
    nữa có MTU là 1000 byte thì gói tin lại phải chia làm 4 phân: 2
    phần 1000 và 2 phần 500. Do đó, không tối ưu. Nếu nguồn biết
    được MTU thì nó có thể chỉ cần chia gói tin ra làm 3 phần, mỗi
    phần 1000byte ngay từ đầu. Ở IPv6 thì node nguồn sẽ tìm ra MTu
    nhỏ nhất trên đường đi và thực hiện việc phân mảnh tối ưu. Trước
    khi phân mảnh thì gói tin gốc sẽ gồm 2 phần: phần có thể phân mảnh
    và phần không thể phân mảnh. Trong đó, IPv6 header và các header
    mở rộng (được xử l‎ bởi node đích) là có thể phân mảnh. Hình sau
    sẽ mô tả quá trình phân mảnh trong IPv6:



    Fragment header có dạng:



    4.Authentication header:

    Trong một mạng IP, cả trong IPv4 và IPv6 thì header này được sử
    dụng để cung cấp sự toàn vẹn dữ liệu và xác minh nguồn gốc của
    dữ liệu. Trong mạng IPv6, AH cung cấp sự xác thực cho IPv6 header,
    các header của các giao thức lớp trên và dữ liệu người dùng, cũng
    như các header mở rộng không được phép thay đổi trên đường đi.
    Định dạng của AH được mô tả trong hình sau:



    Trường sequence number được sử dụng để cung cấp sự bảo vệ chống lại
    sự nghe lén dữ liệu. Khi một Security Association (SA) được thiết lập giữa
    nguồn và đích thì các bộ đếm ở bên gửi và bên nhận sẽ được thiết lập là 0.
    Do đó, bắt buộc bên gửi phải tăng trường này qua mỗi lần truyền, tuy nhiên,
    bên nhận có thể không xử lý việc truyền này. Dịch vụ này chỉ hiệu quả nếu
    bên nhận xử lý trường này.

    Trường xác thực dữ liệu chứa Integrity Check Value(ICV) cho packet.
    Giải thuật xác minh (được lựa chọn khi SA được thiết lập giữa bên gửi và
    bên nhận) sẽ xác định kích thước của ICV, các quy tắc so sánh, và các
    bước xử lý cần thiết. Giá trị này được tính trên gói tin bởi node nguồn và
    được xác minh bởi node đích (bằng cách so sánh giá trị trong packet nhận
    được với cái mà nó tính ra).

    AH có thể được sử dụng ở trạng thái transport hay tunnel. AH ở transport
    mode được thực thi ở các host, cung cấp sự bảo vệ cho các header ở lớp
    trên và các trường trong IPv6 header. Còn AH ở tunnel mode được áp vào
    gói tin IPv6 gốc, bao đóng gói tin gốc bằng cách xây dựng một gói tin IPv6
    mới sử dụng các địa chỉ IPv6 riêng, như một gateway bảo mật.

    Ở transport mode, AH được xem như một end-to-end payload và được
    đặt sau IPv6 header và các header mở rộng trừ destination option header.
    Hình sau mô tả AH hoạt động ở transport mode:



    Trong tunnel mode, AH được áp vào gói tin IPv6 ban đầu sử dụng các địa
    chỉ IPv6 khác như những điểm giao tiếp và một IPv6 header mới được xây
    dựng sử dụng các địa chỉ của các gateway bảo mật cho các địa chỉ nguồn
    và đích . Quá trình xử lý phân mảnh có thể được áp vào AH. Hình sau sẽ
    mô tả thứ tự của các header khi áp AH ở tunnel mode vào:



    5.Encapsulating security payload:

    ESP header được sử dụng ở transport mode hay tunnel mode cũng cung
    cấp các dịch vụ bảo mật trong các mạng IPv4 và IPv6. Các dịch vụ bảo
    mật qua ESP gồm xác thực nguồn gốc dữ liệu, dịch vụ anti-replay...Sự
    thực thi và các tuỳ chọn được chọn ở thời điểm thiết lập SA sẽ quyết
    định các dịch vụ bảo mật được sử dụng.

    Trong trường hợp của AH khi cung cấp dịch vụ anti-replay, nguồn sẽ
    tăng sequence number tuy nhiên node đích phải kiểm tra trường nay để
    bật dịch vụ anti-replay. Để cung cấp dịch vụ xác thực nguồn traffic thì
    thông tin về nguồn và đích thực phải được che đi. Do đó, dịch vụ này
    yêu cầu ESP header được sử dụng trong tunnel mode. Hình sau sẽ mô
    tả định dạng của ESP header. Giá trị next header của header trước nếu
    bằng 50 nghĩa là header tiếp theo được xử lý chính là ESP header.
    Trường payload data chứa dử liệu đã được mã hoá được mô tả bởi
    trường next header. Giải thuật mã hoá được sử dụng xác định kích
    thước và vị trí của cấu trúc dữ liệu trong trường payload data.



    Khi hoạt động ở transport mode thì thứ tự của các header trong IPv6
    packet sẽ như sau:



    Và ở tunnel mode sẽ có thứ tự như sau:

    Email : vnpro@vnpro.org
    ---------------------------------------------------------------------------------------------------------------
Trung Tâm Tin Học VnPro
149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
Tel : (08) 35124257 (5 lines)
Fax: (08) 35124314

Home page: http://www.vnpro.vn
Support Forum: http://www.vnpro.org
- Chuyên đào tạo quản trị mạng và hạ tầng Internet
- Phát hành sách chuyên môn
- Tư vấn và tuyển dụng nhân sự IT
- Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

Network channel: http://www.dancisco.com
Blog: http://www.vnpro.org/blog

  • #2
    RE: IP v6

    Chương IV: Các giao thức định tuyến trên IPv6

    Tương tự như các IPv4 node, các IPv6 node sử dụng một bảng định tuyến IPv6 cục bộ để quyết định cách để truyền packet đi. Các entry trong bảng định tuyến được tạo một cách mặc định khi IPv6 khởi tạo và các entry khác sẽ được thêm vào khi nhận được các gói tin Router Advertisement chứa các prefix và các route, hay qua việc cấu hình tĩnh bằng tay.

    I. Bảng định tuyến IPv6:

    Một bảng định tuyến sẽ có mặt trên tất cả các node chạy giao thức IPv6. Bảng định tuyến lưu những thông tin về các subnet của mạng và một next hop để có thể đến được subnet đó. Trước khi bảng định tuyến được kiểm tra, thì destination cache sẽ được kiểm tra trước xem có những entry nào trong đó match với địa chỉ đích có trong IPv6 header của packet hay không. Nếu không có thì bảng định tuyến sẽ được sử dụng để quyết định:

    * Interface được sử dụng để truyền gói tin (next hop interface). Interface xác định interface vật lý hay luận lý được sử dụng để truyền gói tin đến đích của nó hay router tiếp theo.

    * Địa chỉ next hop: với những đích nằm trên cùng một liên kết cục bộ thì địa chỉ next hop chính là địa chỉ đích của packet. Với những đích không nằm cùng subnet thì địa chỉ next hop chính là địa chỉ của một router.
    Sau khi interface và địa chỉ của next hop được xác định thì node sẽ cập nhật destination cache. Các gói tin tiềp theo sẽ được truyền đến đích sử dụng cache entry này mà không phải kiểm tra bảng định tuyến.

    1. Các loại entry trong bảng định tuyến IPv6:
    Các entry trong bảng định tuyến IPv6 được sử dụng để lưu những loại đường sau:

    • Các đường được kết nối trực tiếp. Những route này là những prefix cho những subnet được kết nối trực tiếp và thường là có kích thước prefix là 64 bit.

    • Những route của các mạng ở xa: những route này là những prefix của những mạng không được kết nối trực tiếp nhưng có thể đến được qua các router khác. Những route này là những prefix cho một subnet (thường có prefix là /64) hay là prefix cho một tầm địa chỉ (thường có prefix nhỏ hơn 64).

    • Các route của host: một host route là một route cho một địa chỉ IPv6 xác định. Với các host route thì prefix là một địa chỉ IPv6 xác định với prefix là 128 bit.

    • Default route: được sử dụng khi một mạng không được tìm thấy trong bảng định tuyến. Có prefix là ::/0

    2. Quá trình định đường: để quyết định sẽ sử dụng entry nào trong bảng định tuyến để truyền gói tin thì IPv6 sử dụng các quá trình sau:

    a. Với mỗi entry trong một bảng định tuyến, nó sẽ so sánh các bit trong network prefix với cùng các bit đó trong địa chỉ đích với số bit sẽ được xác định bởi prefix của route. Nếu tất cả đều match thì route đó sẽ là một match cho đích.

    b. Danh sách các route được match sẽ được xử lý lại. Route có chiều dài prefix lớn nhất sẽ được chọn (theo quy tắc longest match). Longest match route sẽ là route tốt nhất cho đích. Nếu nhiều entry cùng thoả mãn (cùng prefix) thì router sẽ chọn route nào có metric nhỏ nhất (theo quy tắc lowest metric). Nếu cả hai thông số trên đều trùng thì router sẽ chọn 1 để sử dụng.
    Với một đích bất kỳ cho trước, thì quá trình trên là kết quả của việc tìm route theo thứ tự sau:

    - Một host route match toàn bộ địa chỉ đích.
    - Một network route với prefix lớn nhất match địa chỉ đích.
    - Default router

    Route được chọn sẽ có interface và địa chỉ của next hop. Nếu quá trình định đường trên host thất bại thì IPv6 sẽ giả sử rằng đích có thể đến được một cách cục bộ. Còn nếu việc định tuyến trên router thất bại thì IPv6 sẽ gửi một ICMP Destination Unreachable-No Route to Destination về cho máy gửi và bỏ gói tin.

    Ví dụ: Bảng định tuyến trên một máy PC chạy WinXP. Để xem bảng định tuyến của máy cài WinXP, ta sử dụng lệnh netsh interface ipv6 show routes. Sau đây là output của lệnh trên của một máy cài 3 card mạng và được xem là default router cho 2 subnet và là một default route cho subnet thứ 3.

    Publish Type Met Prefix Idx Gateway/Interface Name

    ------- ------- ---- --------------- --- ------------------------

    yes Autoconf 8 fec0:0:0:1::/64 3 Local Area Connection

    yes Autoconf 8 fec0:0:0:2::/64 4 Local Area Connection 2

    yes Autoconf 8 fec0:0:0:3::/64 5 Local Area Connection 3

    yes Manual 256 ::/0 5 fe80::210:ffff:fed6:58c0
    Mỗi entry trong bảng định tuyến của WinXP có các trường sau:

    • Route đó có được quảng bá (Publish) hay không (được quảng bá qua các Router Advertisement)
    • Loại route (Type).
    • Metric được sử dụng để chọn khi có nhiều route cùng prefix (Met)
    • Prefix
    • Index của interface xác định interface mà qua đó packet có thể được gửi đến (Idx). Index này có thể được xem bằng lệnh: netsh interface ipv6 show interface
    • Địa chỉ của next hop hay interface của next hop.

    Với những route của những mạng ở xa, một địa chỉ IPv6 của next hop sẽ được liệt kê. Với những route được kết nối trực tiếp thì tên của interface sẽ được liệt kê ra.

    Với những route được cấu hình bởi các ứng dụng của người dùng sẽ có loại route là Manual. Các route được cấu hình bởi giao thức IPv6 sẽ có kiểu route là Autoconf. Bảng định tuyến IPv6 được xây dựng tự động và dựa trên cấu hình hiện tại của host. Các route cho những prefix liên kết cục bộ (có bắt đầu là FE80::/64) sẽ không có mặt trong bảng định tuyến.

    Với ví dụ ở trên, giả sử có một traffic gửi đến mạng FEC0::2:2AA:FF:FE90:4D3C thì longest match là route được kết nối trực tiếp: FEC0::2::/64. Và do đó, next hop interface sẽ là interface có index là 4. Khi traffic được gửi đến địa chỉ FEC0::9:2AA:FF:FE03:21A6 thì longest match sẽ là default route (::0/64) do đó, next hop interface cho traffic này sẽ là interface có index là 5.

    II. Các giao thức định tuyến trong IPv6:
    Việc tạo một mạng IPv6 chứa nhiều subnet sẽ được kết nối với nhau bởi các IPv6 router. Để có thể đến được tất cả các host trong mạng thì các route phải tồn tại trên các host và trên các router. Những route này có thể là route chung( như một deffault route) hay một route xác định đại diện cho một subnet.

    Các host thường sử dụng những route được kết nối trực tiếp để đến những node lân cận và một default route để đến tất cả những vị trí khác. Các router thường sử dụng những route xác định để đến những vị trí trong site của nó và những route tóm tắt để đến những site khác hay ra internet. Mặc dù việc cấu hình trên các host về các route đều được làm tự động qua các gói tin quảng bá từ router, nhưng việc cấu hình trên các router thì phức tạp hơn. Một router có thể có các route được cấu hình tĩnh hay động qua việc sử dụng các giao thức định tuyến.

    Việc định tuyến tĩnh dựa trên việc các entry trong bảng định tuyến được cấu hình tĩnh và không thay đổi khi topo thay đổi. Một router với bảng định tuyến được cấu hình tĩnh được gọi là một router tĩnh. Nhà quản trị mạng phải biết rõ topo của mạng để có thể tự tay xây dựng và cập nhật nội dung bảng định tuyến. Các router tĩnh có thể họat động tốt trên những mạng nhỏ, nhưng không co khả năng mở rộng cho những mạng lớn hay tự động thay đổi khi mạng thay đổi.

    III. Tổng quan về các giao thức định tuyến động:
    Định tuyến động là việc tự động cập nhật bảng định tuyến cho mỗi sự thay đổi trên mạng. Router được cấu hình cho việc định tuyến động được gọi là dynamic router. Các bảng định tuyến được duy trì tự động giữa các router. Các giao thức định tuyến (Routing protocol) đảm nhận công việc định tuyến động.
    Các giao thức định tuyến động có khả năng phát hiện được lỗi trên mạng nên định tuyến động là chọn lựa tốt cho mạng vừa, lớn, có thể rất lớn.
    Routing protocol được dùng giữa các router và được thể hiện bằng các luồng thông tin cập nhật lan truyền trên mạng. Luồng thông tin thêm vào này là một nhân tố quan trọng trong WAN.

    Routing protocol trong IPv4: Routing Information Protocol (RIP), Open Shortest Path First (OSPF), Border Gateway Protocol (BGP).
    Nhân tố quan trọng của hiện thực routing protocol là khả năng cảm nhận và khôi phục lỗi trên mạng, khả năng phát hiện lỗi nhanh hay chậm, làm cách nào để phát hiện được lỗi, và bằng cách nào để thông tin định tuyến lan truyền trên mạng. Khi tất cả các router trong mạng có được thông tin định tuyến chính xác từ bảng định tuyến, mạng được gọi là hội tụ (converged). Lúc ấy, mạng đạt trạng thái ổn định (stable) và mọi việc định tuyến đều theo đường đi tối ưu.

    Khi một liên kết hoặc một router bị lỗi, mạng phải tự cấu hình lại để hình thành một topology mới. Thông tin trong bảng định tuyến phải được cập nhật lại cho đến khi mạng hội tụ trở lại(converged). Có thể xảy ra hiện tượng “routing loops”, thông tin định tuyến di chuyển hoài mà mạng không đạt được trạng thái stable. Thời gian để mạng tái hội tụ gọi là thời gian hội tụ (convergence time). Convergence time phụ thuộc vào routing protocol và lỗi xảy ra (lỗi do link down hay do router down).

    IV. Các kỹ thuật cho giao thức định tuyến:
    Có các kỹ thuật sau: Distance vector, link state và path vector.

    • Distance vector:
    Giao thức định tuyến Distance vector lan truyền thông tin định tuyến gồm network ID và hop count của nó. Qua mỗi node router, hop count tăng lên 1. Router sẽ định kỳ trao đổi thông tin của bảng định tuyến cho nhau. Mỗi router nhận một bảng định tuyến trực tiếp từ các router kế cận. Quá trình này cứ lan truyền từng bước đến tất các các router trong mạng. Distance vector routig protocol chủ yếu làm các nhiệm vụ sau:

    Xác định nguồn của thông tin.
    Tìm đường.
    Chọn đường đi tốt nhất.
    Duy trì thông tin đường đi.
    Ưu điểm của distance vector-based routing protocols là đơn giản và dễ cấu hình. Khuyết điểm là lưu lượng thông tin trao đổi giữa các router quá nhiều, thời gian hội tụ (convergence time) lâu, không dùng được cho mạng lớn hoặc quá lớn.

    Giải thuật này tổng quát hoá ra một con số, gọi là metric value, cho mỗi đườn đi trên mạng. Metric càng nhỏ thì đường đi càng tốt. Metric được tính dựa vào đặc tính của đường đi đơn lẻ cũng như của nhiều đường đi chung. Metric dùng chung cho các router thường bao gồm:

    Hop count: số routers mà mỗi packet đi ngang qua.
    Cost: thường phụ thuộc vào bandwidth, giá thành, hoặc một đơn vị đo lường nào khác, thường được định ra bởi administrator.
    Bandwidth: dung lượng đường truyền. Ví dụ 100Mbps Ethernet.
    Delay: thời gian cần để di chuyển một packet từ nguồn đến đích.
    Load: tải của đường router và truyền.
    Reliability: tỳ lệ bit lỗi của mỗi đường truyền.
    MTU: maximum transmission unit, chiều dài tối đa của frame tính theo octet.

    • Link state:
    Routers trao đổi trạng thái đường truyền trong mạng và cập nhật bảng định tuyến. Link-state- protocols xây dựng bảng định tuyến dựa trên cơ sở dữ liệu của topology. Cơ sở dữ liệu này được xây dựng từ link-state packets – là packets truyền qua tất cả các router để mô tả trạng thái của mạng. Giải thuật link-state-base routing (cũng được biết vơ1i tên gọi shortest path first) duy trì một cơ sở dữ liệu phức tạp về thông tin topology. Trong khi giải thuật distance vector routing không xác định thông tin cụ thể về distance networks.và distance routers, giải thuật link-state routing có duy tri đầy đủ thông tin distance routers và chúng kết nối với nhau như thế nào. Thông tin định tuyến trao đổi giữa các link-state routers lđược đồng bộ và thừa nhận. Link-state cập nhật bằng truyền unicast hoặc multicast, ít khi dùng broadcast.

    Link-state có thể được dùng cho mạng lớn, hoạt động của nó như sau:
    Chỉ gửi thông tin cập nhật khi có sự thay đổi của topology.
    Không cập nhật định kỳ thường xuyên như distance-vector protocols.
    Mạng dùng link-state routing protocols có thể chia nhỏ thành những vùng phân cấp, như vậy mỗi khi có sự thay đổi thì sẽ thay đổi trên nhưng vùng nhất định, không lan truyền ra toàn mạng.
    Cung cấp classless addressing, tận dụng subnetting.
    Cung cấp việc tổng quát hoá.
    Ưu điểm của link-state là convergence time ngắn, có khả năng dùng cho mạng lơn và rất lớn. Khuyết điểm của link-state routing protocols là phức tạp và khó cấu hình.

    • Path Vector:
    Router dùng path vector-base protocols để hoán đổi trật tự của hop numbers- ví dụ như hệ thống tự đếm số (autonomous system numbers)- để xác định lộ trình. Thông tin định tuyến thayđổi giữa các path vector-based router được tổng quát hoá và được xác nhân. Ưu điểm của path-vector

    –based routing protocol là chiếm ít đường truyền của mạng, thời gian convergence thấp, và có khả năng dùng cho mạng lớn chứa nhiều hệ tự trị (autonomous systems). Khuyết điểm của phương pháp này là phức tạp và khó cấu hình.

    V. Các giao thức định tuyến trên IPv6:
    - RIPng cho IPv6.
    - OSPF cho IPv6.
    - IS-IS cho IPv6.
    - BGP-4.
    - IDRPv2.

    RIPng cho IPv6:


    RIP Next Generation là giao thức distance vector routing cho IPv6, được định nghĩa trong RFC 2080. RIPng cho IPv6 được xây dựng trên RIPv2. RIPng cho IPv6 có cấu trúc packet đơn giản và dùng UDP port 521 để quảng bá lộ trình, trả lời yêu cầu về lộ trình, và quảng bá các thay đổi bất đồng bộ.

    Hop count của giao thức này là 15. Những vị trí nào có khoảng cách hop count là 16 hoặc hơn thì sẽ không đến được. RIPng cho IPv6 là một giao thức đơn giản. Giao thức này có cơ cấu quảng bá định kỳ được thiết kế cho màng vừa và nhỏ. RIPng cho IPv6 không dùng được cho mạng lớn.
    Hoạt động RIPng:

    Khi router được khởi động, nó thông báo những lộ trình thích hợp trong bảng định tuyến của nó cho tất cả các interface, và gửi thông điệp đề nghị (general request) đến tất cả các interface khác. Và tất cả các neighboring router đều gửi trả lời nội dung của bảng định tuyến, và những thông tin hồi âm qua lại sẽ giúp xây dựng bảng định tuyến. Có một khoảng thời gian để router “học” thông tin định tuyến. Quá khoảng thời gian này, thông tin ấy xem như không được “học”. Thời gian mặc định là 3 phút.

    Sau khi khởi động, RIPng IPv6 router sẽ gửi thông báo vể con đường thích hợp trong bảng định tuyến của nó cho tấtc cả các touter khác theo định kỳ (mặc định là 30s). Split horizon hoặc split horizon với poison reverse sẽ là giải pháp chống looping. Tập chính xác các router được gửi thông báo tới phụ thuộc vào RIPng IPv6 dùng Split horizon hay là Split horizon với Poison reverse. Lỗi phát sinh trên mạng RIPng là do RIPng IPv6 “học” đường đi bị timeout. Khi một sự thay đổi xảy ra trên mạng, RIPng IPv6 gửi một triggered update – là một routing update – ngay lập tức.
    Chi tiết về RIPng IPv6 được trình bày trong RFC 2080.

    OSPF IPv6:

    OSPF IPv6 là một giao thức link state được định nghĩa trong RFC 2740. OSPF được thiết kế để chạy như một hệ tự trị. OSPF IPv6 được xây dựng trên OSPFv2 của IPv4. OSPF cost ở mỗi link được admin gán cho, và không phải là suy nhất. Cost đó bao gồm: thời gian trễ, đường truyền, giá tiền, và tổng phải nhỏ hơn 65.535.

    OSPF IPv6 có sự thay đổi so với OSPFv2:

    Cấu trúc của gói OSPF được sửa đổi để loại bỏ sự độc lập trong việc phân địa chỉ IPv4.
    Có LSA được định ra để mang địa chỉ IPv6 và prefixes.
    OSPF thường chạy trên mỗi link, chứ không trên mỗi subnet.
    Phạm vi của network cho việc flooding LSAs được tổng quát hoá.
    Giao thức OSPF không cung cấp việc uỷ quyền. Thay vào đó, OSPF dựa trên Authentication header (AH) và Encapsulating Security Payload (ESP) header and trailer.

    Hoạt động OSPF IPv6:

    Mỗi router có một LSA để miêu tả trạng thái hiện tại của nó. LSA của mỗi OSPF IPv6 router thì hiệu quả cho việc lan truyền khắp nơi trên mạng OSPF thông qua mối quan hệ với các neighboring routers được gọi là adjacencies. Khi tất cả sự lan truyền của tất cả các LSA ở router hiện tại hoàn thành, mạng OSPF được gọi là hội tụ (converged).

    Dựa trên tập hợp các OSPF LSA – được biết là link state database (LSDB) – OSPF tính toán đường đi có giá thấp nhất cho mỗi lộ trình, và những con đường ấy trờ thành OSPF routes trong bảng định tuyến IPv6. Để giảm kích thước của LSDB, OSPF cho phép tính toán và tạo ra ở mỗi vùng. Một vùng OSPF là một nhóm các segment của mạng liên tiếp nhau. Trong tất cả các mạng OSPF, có ít nhất một vùng được gọi là vùng backbone. Vùng OSPF cho phép tổng kết hoặc tập hợp các thông tin định tuyến trên các vùng OSPF biên. Một router tại vùng biên của vùng OSPF được gọi là Area border Router (ABR).

    Chi tiết về OSPF cho IPv6 được nhắc đến nhiều hơn trong RFC 2740.

    Integrated IS-IS IPv6:
    Là một giao thức link state rất giống với OSPF, được định nghĩa bởi ISO 10589. IS-IS cung cấp IPv4 và Connectionless Network Protocol (CLNP). IS-IS được mô tả trong “Routing IPv6 with IS-IS.”

    BGP-4:
    Border Gateway Protocol version 4 là một giao thức path vector routing được định nghĩa trong RFC 1771. RIPng IPv6 và OSPF IPv6 dùng như một hệ tự trị (autonomous system). BGP-4 thì khác, nó được thiết kế để thay đổi thông tin giữa các hệ tự trị. Thông tin định tuyến BGP-4 được dùng để tạo ra một đường đi ảo có thứ bậc như một cây (path tree). Cây này mô tả tất cả các kết nối giữa các hệ tự trị. Thông tin cây đường đi (path tree) được dùng để tạo loop-free routes trong bảng đường đi của BGP-4 routers. BGP-4 messages được gửi bằng port TCP 179. BGP-4 là giao thức inter-domain nguyên thuỷ dùng để duy trì bảng định tuyến trong mạng IPv4.

    IDRPv2:
    Inter-Domain Routing Protocol (IDRP) là path vector routing protocol được định nghĩa trong ISO 10747. IDRP được thiết kế để dùng giữa các hệ tự trị.
    IDRPv2 là giao thức định tuyến tốt hơn BGP-4 bởi vì thay vì dùng các các hệ trự trị thêm vào để làm bộ định danh, IDRPv2 được định danh bởi Ipv6 prefix luôn. Hơn nữa, các routing domain có thể gom nhóm lại để tạo ra một nhóm cấu trúc có thứ bậc nhằm tổn quát hóa việc định tuyến.
    Chi tiết về IDRPv2 được nêu ra trong ISO 10747.
    Email : vnpro@vnpro.org
    ---------------------------------------------------------------------------------------------------------------
    Trung Tâm Tin Học VnPro
    149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
    Tel : (08) 35124257 (5 lines)
    Fax: (08) 35124314

    Home page: http://www.vnpro.vn
    Support Forum: http://www.vnpro.org
    - Chuyên đào tạo quản trị mạng và hạ tầng Internet
    - Phát hành sách chuyên môn
    - Tư vấn và tuyển dụng nhân sự IT
    - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

    Network channel: http://www.dancisco.com
    Blog: http://www.vnpro.org/blog

    Comment


    • #3
      RE: IP v6

      Chương V: Các chiến lược triển khai IPv6



      I. Các chiến lược triển khai IPv6: chúng ta sẽ bàn về cách triển khai IPv6 vào một mạng IPv4 đang hoạt động hay triển khai IPv6 cùng với IPv4. IPv6 và IPv4 sẽ vẫn cùng tồn tại với nhau cho đến khi ta không còn sử dụng IPv4 nữa. Tuy nhiên, việc này vẫn còn khá lâu vì IPv4 vẫn đóng một vai trò quan trọng trong mạng thế giới. Có nhiều phương pháp để triển khai IPv6, mỗi phương pháp sẽ có ưu và nhược điểm của nó và tuỳ vào trường hợp cụ thể mà ta triển khai, không có phương pháp nào là tốt nhất cho mọi trường hợp. Chiến lược cơ bản nhất là xây dựng các tunnel hay các VPN để chạy các giao thức IPv4 và IPv6 cùng với nhau ở các router và host. Những kỹ thuật này được sử dụng cho cả nhà cung cấp dịch vụ và khách hàng. Với những nhà cung cấp dịch vụ, những phương pháp này có thể là kết quả của những trường hợp sau:

      · Các ứng dụng, dịch vụ của Internet như các hệ thống điện thoại tích hợp hay các thiết bị PDA có hỗ trợ Internet.

      · Các khách hàng yêu cầu truy cập vào mang 6Bone hay giữa các site với nhau.

      · Yêu cầu kết nối IPv6 giữa các nhà cung cấp với nhau.

      · Yêu cầu định tuyến cho các IPv6 traffic trên backbone giữa các tunnel.

      Những khách hàng có thể có những yêu cầu sau:

      · Các ứng dụng yêu cầu IPv6.

      · Sự triển khai các dịch vụ thoại qua IP yêu cầu thêm những địa chỉ.

      · Sự bảo mật ở đầu cuối không được hỗ trợ bởi các tác vụ NAT.



      II. Phân biệt các phương pháp triển khai: gồm 4 phương pháp triển khai cơ bản:

      · Cấu hình các tunnel bằng tay qua một mạng IPv4 đã có, để bao đóng các traffic của IPv6.

      · Thực thi các kỹ thuật có thể tự động xây dựng và chọn các tunnel dựa trên IPv6 header.

      · Cung cấp các liên kết ảo chuyên dụng như ATM, Frame Relay PVC hay MPLS VPN.

      · Thực thi một dual-stack network để cho IPv4 và IPv6 được triển khai.

      Để thực thi các phương pháp này, ta cần nâng cấp các router để có thể chạy các giao thức của cả IPv4 và IPv6. Các router này được gọi là dual-stack router.

      1. Cấu hình IPv6 qua các IPv4 tunnel:

      Đây là cách nhanh và dễ nhất để triển khai IPv6 qua những vị trí bị giới hạn. IPv6 chỉ xuất hiện ở các access point có hỗ trợ các IPv6 host. Interface hỗ trợ IPv6 segment sẽ được cấu hình cho cả IPv4 và IPv6 hay chỉ là IPv6. IPv6 traffic sau đó sẽ được đóng gói vào các IPv4 packet để truyền qua mạng. Chỉ những router hỗ trợ các tunnel interface ở đầu vào và cả đầu ra mới yêu cầu là dual-stack (chạy cả IPv6 và IPv4). Mỗi tunnel interface sẽ xử lý các IPv6 packet giống như cách các interface vật lý xử lý. Các IPv6 host sẽ sử dụng địa chỉ của tunnel làm default gateway và một giao thức định tuyến (như RIPv6) để forward các packet giữa các tunnel.

      2. Cấu hình Tunnel bằng tay: các IPv6 packet được đóng gói trong các IPv4 packet ở phần payload. Một dual-stack router được sử dụng ở các điểm cuối của tunnel. Với toàn bộ gói IPv6 được đóng gói trong IPv4 payload thì các header của IPv6 sẽ không bị thay đổi. Tuy nhiên, bạn phải cấu hình bằng tay các tunnel cho mỗi kết nối, nên nếu trong một mạng lớn thì việc kết nối sẽ khó khăn hơn.

      Ví dụ:



      Nếu router B gửi một packet cho router C thì nó phải đi qua tunnel 2 để đến router A trước khi nó đến router B qua tunnel 1. Các packet sẽ được định tuyến qua mạng IPv4 dựa trên địa chỉ đích của tunnel. Không cần định tuyến dựa trên địa chỉ IPv6 đích, chỉ địa chỉ đích tunnel là được định tuyến. Ở ví dụ trên thì các router A,B,C là các dual-stack router.

      Với các nhà cung cấp dịch vụ thì họ cần xây dựng các tunnel giữa các site của khách hàng , còn với khách hàng thì phải thực hiện giao tiếp giữa 2 IPv6 domain qua một mạng IPv4.

      Ở kỹ thuật này thì bạn cần cấu hình trên các dual-stack router để nó có thể bao đóng được IPv6 traffic.

      3. Các kỹ thuật tạo tunnel động: là một kỹ thuật mà 32 bit cuối của địa chỉ IPv6 được thay thế bởi một địa chỉ IPv4 và 6 phần còn lại bằng 0. Do đó, sẽ tạo ra một địa chỉ IPv6 có dạng: 0:0:0:0:0:0:A.B.C.D hay ::A.B.C.D. Mặc dù cách này cung cấp một cách động để xây dựng các tunnel, nhưng sẽ không tận dụng được tầm địa chỉ lớn của IPv6 vì mỗi host phải có một địa chỉ IPv4kỹ thuật này sẽ không tận dụng được IPv6 và không phù hợp cho những môi trường lớn. ISATAP là một kỹ thuật mở rộng của kỹ thuật này.

      4. 6to4 tunnel động: với kỹ thuật này thì mạng IPv4 sẽ được xem như một liên kết unicast P2P. Mục đích của việc sử dụng 6to4 tunnel là kết nối các IPv6 domain chứ không phải các host, tuy nhiên kỹ thuật này khó mở rộng. Mặc dù các gói IPv6 được bao đóng bên trong các gói IPv4, nhưng các tunnel lại không được định nghĩa. Và 13 bit TLA đó là: 0x0002 hay :2002::/16. 32 bit tiếp theo (high level NLA) sẽ là địa chỉ IPv4 toàn cục của interface router. Khi một 6to4 router nhận được một IPv6 packet không phải thuộc domain của nó với một TLA là 2002, nó sẽ bao đóng dữ liệu trong gói IPv4 packet và thiết lập trường protocol thành 41. Router sau đó sẽ sử dụng high level NLA (32 bit IPv4) như là một địa chỉ đích và định tuyến gói tin qua mạng IPv4. Còn nếu TLA khác 2002 thì packet sẽ được bao đóng và gửi ra một default route đến một 6to4 router khác để forward. Địa chỉ 6to4 có dạng:




      Ví dụ:



      5. ISATAP tunnel: Intra-site Automatic Tunnel Addressing Protocol (ISATAP) giống với 6to4 chỉ có 1 cái khác là: 6to4 nhúng địa chỉ IPv4 trong NLA ID, còn ISATAP sử dụng một loại đặc biệt là “FE” và chèn địa chỉ IPv4 vào các trường TSE và TSD của gói IPv4. Nghĩa là ISATAP được sử dụng để kết nối intranet, còn 6to4 là kết nối giữa các domain. Việc tiếp cận này có những lợi ích sau:

      * Các địa chỉ khả tóm tắt toàn cục AGU có thể được tạo ra và định tuyến qua mạng IPv6.

      * Cả địa chỉ public và private đều có thể được sử dụng trong ISATAP tunnel.

      Định dạng của ISATAP là:




      6. 6over4 tunnel:

      Đây là một phương pháp tunnel động khác, sử dụng địa chỉ IPv4 như là 32 bit cuối của interface address của IPv6. Các gói tin IPv6 được đóng gói trong các gói IPv4 với loại giao thức là 41,và IPv6 frame sẽ có dạng: FE80::A.B.C.D. 6over4 sử dụng IGMP để thông báo cho các IPv4 router cục bộ sử dụng 6over4. Do sử dụng multicast nên bị giới hạn.
      [align=justify:6e2947b1fa][/align:6e2947b1fa]
      Email : vnpro@vnpro.org
      ---------------------------------------------------------------------------------------------------------------
      Trung Tâm Tin Học VnPro
      149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
      Tel : (08) 35124257 (5 lines)
      Fax: (08) 35124314

      Home page: http://www.vnpro.vn
      Support Forum: http://www.vnpro.org
      - Chuyên đào tạo quản trị mạng và hạ tầng Internet
      - Phát hành sách chuyên môn
      - Tư vấn và tuyển dụng nhân sự IT
      - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

      Network channel: http://www.dancisco.com
      Blog: http://www.vnpro.org/blog

      Comment


      • #4
        RE: IP v6

        Chương VI: Cách hiện thực IPv6

        I. Trên Linux:
        1. Cấu hình ban đầu: Trước khi chúng ta có thể sử dụng IPv6 trên một máy Linux, ta phải kiểm tra xem hệ thống đã hỗ trợ IPv6 chưa. Đôi khi bạn cần phải thực hiện một số động tác để khởi động nó lên.
        a. Load IPv6 module: Ta sử dụng lệnh sau:
        # modprobe ipv6
        Nếu kernel không hỗ trợ IPv6, bạn có thể thực hiện:
        - Cập nhật phiên bản hỗ trợ IPv6.
        - Biên dịch một kernel mới.
        - Biên dịch lại kernel source được cung cấp bởi các nhà cung cấp Linux.
        b. Các công cụ kiểm tra:
        • IPv6 ping:
        # ping6 <hostwithipv6address>
        # ping6 <ipv6address>
        # ping6 [−I <device>] <link−local−ipv6address>
        Chú ý: khi sử dụng địa chỉ liên kết cục bộ thì kernel sẽ không biết thiết bị nào là nguồn của gói tin, vì mỗi địa chỉ sẽ có một địa chỉ liên kết cục bộ, nên bạn phải xác định cả interface:
        Ví dụ:
        # ping6 −I eth0 −c 1 fe80::2e0:18ff:fe90:9205
        PING fe80::212:23ff:fe12:3456(fe80::212:23ff:fe12:3456) from fe80::212:34ff:fe12:3478 eth0: 56 data bytes
        64 bytes from fe80::212:23ff:fe12:3456: icmp_seq=0 hops=64 time=445 usec
        −−− fe80::2e0:18ff:fe90:9205 ping statistics −−−
        1 packets transmitted, 1 packets received, 0% packet loss round−trip
        min/avg/max/mdev = 0.445/0.445/0.445/0.000 ms
        • IPv6 traceroute: giống như bên IPv4
        Ví dụ:
        # traceroute6 www.6bone.net
        traceroute to 6bone.net (3ffe:b00:c18:1::10) from 3ffe:ffff:0000:f101::2, 30 hops max, 16 byte packets
        1 localipv6gateway (3ffe:ffff:0000:f101::1) 1.354 ms 1.566 ms 0.407 ms
        2 swi6T1−T0.ipv6.switch.ch (3ffe:2000:0:400::1) 90.431 ms 91.956 ms 92.377 ms
        3 3ffe:2000:0:1::132 (3ffe:2000:0:1::132) 118.945 ms 107.982 ms 114.557 ms
        4 3ffe:c00:8023:2b::2 (3ffe:c00:8023:2b::2) 968.468 ms 993.392 ms 973.441 ms
        5 3ffe:2e00:e:c::3 (3ffe:2e00:e:c::3) 507.784 ms 505.549 ms 508.928 ms
        6 www.6bone.net (3ffe:b00:c18:1::10) 1265.85 ms * 1304.74 ms
        • IPv6 tracepath6: dò vết một đường để đến một đích và xác định MTU trên đường đi.
        Ví dụ:
        # tracepath6 www.6bone.net
        1?: [LOCALHOST] pmtu 1480
        1: 3ffe:401::2c0:33ff:fe02:14 150.705ms
        2: 3ffe:b00:c18::5 267.864ms
        3: 3ffe:b00:c18::5 asymm 2 266.145ms pmtu 1280
        3: 3ffe:3900:5::2 asymm 4 346.632ms
        4: 3ffe:28ff:ffff:4::3 asymm 5 365.965ms
        5: 3ffe:1cff:0:ee::2 asymm 4 534.704ms
        6: 3ffe:3800::1:1 asymm 4 578.126ms !N
        Resume: pmtu 1280
        • IPv6 tcpdump: Được sử dụng để xem các packet ra vào một interface.
        • Kiểm tra DNS:
        Ví dụ:
        # host −t AAAA www.join.uni−muenster.de
        www.join.uni−muenster.de. is an alias for tolot.join.uni−muenster.de.
        tolot.join.uni−muenster.de. has AAAA address 2001:638:500:101:2e0:81ff:fe24:37c6
        2. Cấu hình interface:
        a. Bật một interface:
        • Sử dụng “ip”:
        # ip link set dev <interface> up
        # ip link set dev <interface> down
        Ví dụ:
        # ip link set dev eth0 up
        • Sử dụng “ifconfig”:
        # /sbin/ifconfig <interface> up
        # /sbin/ifconfig <interface> down
        Ví dụ:
        # /sbin/ifconfig eth0 up
        b. Xem thông tin một interface:
        • Sử dụng “ip”:
        # ip −6 addr show dev <interface>
        Ví dụ:
        # /sbin/ip −6 addr show dev eth0
        2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_ fast qlen 100
        inet6 fe80::210:a4ff:fee3:9566/10 scope link
        inet6 3ffe:ffff:0:f101::1/64 scope global
        inet6 fec0:0:0:f101::1/64 scope site
        • Sử dụng “ifconfig”:
        # /sbin/ifconfig <interface>
        Ví dụ:
        # /sbin/ifconfig eth0 |grep "inet6 addr:"
        inet6 addr: fe80::210:a4ff:fee3:9566/10 Scope:Link
        inet6 addr: 3ffe:ffff:0:f101::1/64 Scope:Global
        inet6 addr: fec0:0:0:f101::1/64 Scope:Site
        c. Gán địa chỉ IPv6:
        • Sử dụng “ip”:
        # /sbin/ip −6 addr add <ipv6address>/<prefixlength> dev <interface>
        Ví dụ:
        # /sbin/ip −6 addr add 3ffe:ffff:0:f101::1/64 dev eth0
        • Sử dụng “ifconfig”:
        # /sbin/ifconfig <interface> inet6 add <ipv6address>/<prefixlength>
        Ví dụ:
        # /sbin/ifconfig eth0 inet6 add 3ffe:ffff:0:f101::1/64
        d. Xoá một địa chỉ IPv6: tương tự như khi gán chỉ việc thay “add” bằng “del”.
        3. Cấu hình định tuyến IPv6:
        a. Xem bảng định tuyến:
        • Sử dụng “ip”:
        # ip −6 route show [dev <device>]
        Ví dụ:
        # /sbin/ip −6 route show dev eth0
        3ffe:ffff:0:f101::/64 proto kernel metric 256 mtu 1500 advmss 1440
        fe80::/10 proto kernel metric 256 mtu 1500 advmss 1440
        ff00::/8 proto kernel metric 256 mtu 1500 advmss 1440
        default proto kernel metric 256 mtu 1500 advmss 1440
        • Sử dụng “ifconfig”:
        # /sbin/route −A inet6
        Ví dụ:
        # /sbin/route −A inet6 |grep −w "eth0"
        3ffe:ffff:0:f101 ::/64 :: UA 256 0 0 eth0 <− Interface route for global address
        fe80::/10 :: UA 256 0 0 eth0 <− Interface route for link−local address
        ff00::/8 :: UA 256 0 0 eth0 <− Interface route for all multicast addresses
        ::/0 :: UDA 256 0 0 eth0 <− Automatic default route
        b. Cấu hình một IPv6 route qua một gateway:
        • Sử dụng “ip”:
        # /sbin/ip −6 route add <ipv6network>/<prefixlength> via <ipv6address>[dev <device>]
        Ví dụ:
        # /sbin/ip −6 route add 2000::/3 via 3ffe:ffff:0:f101::1
        • Sử dụng “route”:
        # /sbin/route −A inet6 add <ipv6network>/<prefixlength> gw
        <ipv6address> [dev <device>]
        Device có thể phải xác định nếu địa chỉ IPv6 của gateway là một địa chỉ liên kết cục bộ.
        Ví dụ:
        # /sbin/route −A inet6 add 2000::/3 gw 3ffe:ffff:0:f101::1
        c. Xoá một route qua một gateway: tương tự như việc cấu hình ở phần (b) thay “add” bằng “del”
        d. Cấu hình một IPv6 route qua một interface:
        • Sử dụng “ip”:
        # /sbin/ip −6 route add <ipv6network>/<prefixlength> dev <device> metric 1
        Ví dụ:
        # /sbin/ip −6 route add 2000::/3 dev eth0 metric 1
        Metric mặc định khi sử dụng “ip” là 1024
        • Sử dụng “route”:
        # /sbin/route −A inet6 add <network>/<prefixlength> dev <device>
        Ví dụ:
        # /sbin/route −A inet6 add 2000::/3 dev eth0
        4. Neighbor discovery:
        a. Xem các neighbor:
        • Sử dụng “ip”:
        # ip -6 neigh show [dev <device>]
        Ví dụ: xem một neighbor là một router
        # ip -6 neigh show
        fe80::201:23ff:fe45:6789 dev eth0 lladdr 00:01:23:45:67:89 router nud reachable
        b. Xử lý‎ bảng neighbor:
        • Thêm một neighbor vào:
        # ip -6 neigh add <IPv6 address> lladdr <link-layer address> dev <device>
        Ví dụ:
        # ip -6 neigh add fec0::1 lladdr 02:01:02:03:04:05 dev eth0
        • Xóa một entry: Tương tự như thêm, chỉ cần thay “add” bằng “del”
        • Một số các hiệu chỉnh khác:
        # ip -6 neigh help
        Usage: ip neigh { add | del | change | replace } { ADDR [ lladdr LLADDR ]
        [ nud { permanent | noarp | stale | reachable } ] | proxy ADDR } [ dev DEV ] ip neigh {show|flush} [ to PREFIX ] [ dev DEV ] [ nud STATE ]
        5. Cấu hình IPv6-in-IPv4 tunnel:
        A. Các lọai tunnel:
        a. Tunnel tĩnh P2P: Một tunnel P2P là một tunnel tòan phần đến một điểm cuối, trong đó, nó biết về mạng IPv6 của bạn và địa chỉ IPv4 của tunnel ở endpoint. Các yêu cầu để thiết lập gồm:
        • Địa chỉ IPv4 của tunnel endpoint phải là địa chỉ tĩnh và có thể đến được từ một tunnel endpoint bên ngoài.
        • Phải có một IPv6 prefix toàn cục.
        • Tunnel endpoint bên kia phải có khả năng định tuyến prefix IPv6 của bạn về tunnel endpoint toàn cục.
        b. 6to4 tunneling: sử dụng một kỹ thuật để tạo các tunnel một cách tự động. Mỗi node với một địa chỉ IPv4 toàn cục đều có khả năng là một 6to4 tunnel endpoint (nếu không bị firewall cấm). 6to4 tunneling hầu như không phải là một one-to-one tunnel. Trường hợp tunnel này có thể bị chia thành tunnel upstream và downstream. Và một địa chỉ IPv6 đặc biệt diễn tả rằng node này sẽ sử dụng 6to4 tunneling để kết nối vào mạng IPv6 toàn cục.
        • Tạo ra một 6to4 prefix: Địa chỉ 6to4 được định nghĩa như sau:
        | 3+13 | 32 | 16 | 64 bits |
        +−−−+−−−−−−+−−−−−−−−−−−+−−−−−−−−+−−−−−−−−−−−−−−−−− −−−−−−−−−−−−−−−+
        | FP+TLA | V4ADDR | SLA ID | Interface ID |
        | 0x2002 | | | |
        +−−−+−−−−−−+−−−−−−−−−−−+−−−−−−−−+−−−−−−−−−−−−−−−−− −−−−−−−−−−−−−−−+
        Trong đó: FP và TLA có giá trị: 2002. IPv4 là địa chỉ toàn cục của node được biểu diễn dưới dạng hex.
        • 6to4 upstream tunnel: node phải biết tunnel endpoint bên kia là cái nào để nó gửi gói tin IPv4 có bọc IPv6 tới. Do đó, một upstream router sẽ nhận gói tin này. Các router này có thể được tìm tữ động bằng địa chỉ anycast 192.88.99.1
        • 6to4 downstream tunnel: downstream (theo chiều từ mạng 6BONE về node có bật 6to4) không cố định mà có thể thay đổi từ host bên kia. Có 2 trường hợp:
        + Host bên kia sử dụng 6to4 và gửi packet trực tiếp về node của bạn.
        + Host bên kia gửi packet ra mạng IPv6 toàn cục và tùy thuộc vào định tuyến mà một relay router sẽ tạo một tunnel về node của bạn.
        B. Cấu hình tunnel:
        1. Xem các tunnel:
        • Sử dụng “ip”:
        # /sbin/ip −6 tunnel show [<device>]
        Ví dụ:
        # /sbin/ip −6 tunnel show
        sit0: ipv6/ip remote any local any ttl 64 nopmtudisc
        sit1: ipv6/ip remote 195.226.187.50 local any ttl 64
        • Sử dụng “route:
        # /sbin/route −A inet6
        Ví dụ: output sau chỉ cho xem những tunnel qua interface ảo sit0:
        # /sbin/route −A inet6 | grep "\Wsit0\W*$"
        ::/96 :: U 256 2 0 sit0
        2002::/16 :: UA 256 0 0 sit0
        2000::/3 ::193.113.58.75 UG 1 0 0 sit0
        fe80::/10 :: UA 256 0 0 sit0
        ff00::/8 :: UA 256 0 0 sit0
        2. Thiết lập một P2P tunnel:
        a. Thêm một P2P tunnel:
        • Sử dụng “ip”:
        # /sbin/ip tunnel add <device> mode sit ttl <ttldefault> remote
        <ipv4addressofforeigntunnel> local <ipv4addresslocal>

        Ví dụ:
        # /sbin/ip tunnel add sit1 mode sit ttl <ttldefault> remote <ipv4addressofforeigntunnel1> local <ipv4addresslocal>
        # /sbin/ip link set dev sit1 up
        # /sbin/ip −6 route add <prefixtoroute1> dev sit1 metric 1
        # /sbin/ip tunnel add sit2 mode sit ttl <ttldefault> <ipv4addressofforeigntunnel2> local <ipv4addresslocal>
        # /sbin/ip link set dev sit2 up
        # /sbin/ip −6 route add <prefixtoroute2> dev sit2 metric 1
        # /sbin/ip tunnel add sit3 mode sit ttl <ttldefault> <ipv4addressofforeigntunnel3> local <ipv4addresslocal>
        # /sbin/ip link set dev sit3 up
        # /sbin/ip −6 route add <prefixtoroute3> dev sit3 metric 1
        • Sử dụng “ifconfig” và route”:
        Ví dụ: tạo 3 tunnel trong môi trường NBMA
        # /sbin/ifconfig sit0 up
        # /sbin/ifconfig sit0 tunnel <ipv4addressofforeigntunnel1>
        # /sbin/ifconfig sit1 up
        # /sbin/route −A inet6 add <prefixtoroute1> dev sit1
        # /sbin/ifconfig sit0 tunnel <ipv4addressofforeigntunnel2>
        # /sbin/ifconfig sit2 up
        # /sbin/route −A inet6 add <prefixtoroute2> dev sit2
        # /sbin/ifconfig sit0 tunnel <ipv4addressofforeigntunnel3>
        # /sbin/ifconfig sit3 up
        # /sbin/route −A inet6 add <prefixtoroute3> dev sit3
        • Chỉ sử dụng “route”:
        Ví dụ: như trên
        # /sbin/ifconfig sit0 up
        # /sbin/route −A inet6 add <prefixtoroute1> gw ::<ipv4addressofforeigntunnel1> dev sit0
        # /sbin/route −A inet6 add <prefixtoroute2> gw ::<ipv4addressofforeigntunnel2> dev sit0
        # /sbin/route −A inet6 add <prefixtoroute3> gw ::<ipv4addressofforeigntunnel3> dev sit0
        b. Xoá một tunnel: Tương tự như thêm chỉ cần thay add bằng del.
        3. Thiết lập một 6to4 tunnel:
        a. Tạo một 6to4 tunnel: Trước nhất, bạn phải tính 6to4 prefix sử dụng địa chỉ IPv4 toàn cục của bạn:
        Ví dụ: giả sử, bạn có một địa chỉ IPv4 là : 1.2.3.4 thì prefix sinh ra sẽ là: 2002:0102:0304::
        Các gateway cục bộ nên có suffix là ::1, do đó, ta có địa chỉ 6to4 sẽ là : 2002:0102:0304::1
        Có 2 cách tạo:
        • Sử dụng “ip” và một thiết bị tunnel chuyên dụng:
        - Tạo một thiết bị tunnel mới:
        # /sbin/ip tunnel add tun6to4 mode sit ttl <ttldefault> remote any local <localipv4address>
        - Bật interface:
        # /sbin/ip link set dev tun6to4 up
        - Gán địa chỉ 6to4 cục bộ vào interface (với prefix là 16):
        # /sbin/ip −6 addr add <local6to4address>/16 dev tun6to4
        - Thêm route đến mạng IPv6 toàn cục qua địa chỉ IPv4:
        # /sbin/ip −6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1
        - Chú ý: nếu hệ điều hành không hỗ trợ IPv4 thì ta sử dụng địa chỉ 6to4:
        # /sbin/ip −6 route add 2000::/3 via 2002:c058:6301::1 dev tun6to4 metric 1
        • Sử dụng ifconfig và route sử dụng một tunnel device sit0:
        - Bật tunnel interface sit0:
        # /sbin/ifconfig sit0 up
        - Gán địa chỉ 6to4 cục bộ vào interface:
        # /sbin/ifconfig sit0 add <local6to4address>/16
        - Gán route đến mạng IPv6 tòan cục:
        # /sbin/route -A inet6 add 2000::/3 gw ::192.88.99.1 dev sit0
        b. Xóa một 6to4 tunnel:
        • Sử dụng “ip”:
        - Xóa tất cả những route đi qua tunnel interface này:
        # /sbin/ip -6 route flush dev tun6to4
        - Shut down interface:
        # /sbin/ip link set dev tun6to4 down
        - Xóa tunnel:
        # /sbin/ip tunnel del tun6to4
        • Sử dụng ifconfig và route:
        - Xóa default route qua interface này:
        # /sbin/route -A inet6 del 2000::/3 gw ::192.88.99.1 dev sit0
        - Xóa địa chỉ cục bộ:
        # /sbin/ifconfig sit0 del <local6to4address>/16
        - Shut down interface:
        # /sbin/ifconfig sit0 down

        II. Trên Windows: Để một máy có thể chạy được IPv6 thì ta cần cài WinXP hay Win Server 2003 có hỗ trợ IPv6.
        Để cài IPv6 trên Win, ta sử dụng lệnh:
        # netsh interface ipv6 install
        hay :# ipv6 install
        1. Cấu hình địa chỉ IPv6:
        • Để cấu hình địa chỉ IPv6 trên một interface:
        netsh interface ipv6 add address InterfaceNameOrIndex IPv6Address [[type=]unicast|anycast] [[validlifetime=]Minutes|infinite] [[preferredlifetime=]Minutes|infinite] [[store=]active|persistent]
        Mặc định lọai địa chỉ này là unicast.
        Trên mỗi interface của host sẽ có một index, để xem những index này, ta sử dụng lệnh:
        # ipv6 if
        hay # netsh interface ipv6 show interface
        Để thay đổi một địa chỉ của một interface ta sử dụng lệnh:
        # netsh interface ipv6 set address
        Để xóa một địa chỉ, ta sử dụng lệnh:
        # netsh interface ipv6 set address
        2. IPv6 Router:
        Một IPv6 router không chỉ forward các IPv6 packet mà còn quảng bá sự hiện diện của nó để các host trong subnet của nó có thể thực hiện quá trình tự cấu hình.
        Để bật quá trình quảng bá và tự cấu hình trên một interface, ta sử dụng lệnh:
        netsh interface ipv6 set interface InterfaceNameOrIndex [forwarding=]enabled|disabled] [[advertise=]enabled|disabled] [[mtu=]MTUSize] [[store=]active|persistent]
        Mặc định thì forwarding và advertise là disabled.

        Ví dụ: netsh interface ipv6 set interface "Local Area Connection" forwarding=enabled advertise=enabled
        netsh interface ipv6 set interface "Local Area Connection 2" forwarding=enabled advertise=enabled
        netsh interface ipv6 set interface "Local Area Connection 3" forwarding=enabled
        Ở ví dụ trên, ta bật forwarding và advertise trên interface nối với LAN và LAN2, còn LAN3 ta chỉ bật forwarding.
        Sau khi đã bật lệnh này, thì ta phải thiết lập các thông số cho các gói tin router advertisement, vì lúc này gói tin này chưa có thông tin. Router phải được cấu hình các route được quảng bá. Để thêm một route, ta sử dụng:
        netsh interface ipv6 add route IPv6Address/PrefixLength InterfaceNameOrIndex [[nexthop=]IPv6Address] [[publish=]no|age|yes] [[validlifetime=]Minutes|infinite][[preferredlifetime=]Minutes|infinite] [[store=]active|persistent]
        Mặc định thì các route sẽ không được quảng bá và sẽ không có nexthop.
        Ví dụ: netsh interface ipv6 add route fec0:0:0:1::/64 "Local Area Connection" publish=yes
        netsh interface ipv6 add route fec0:0:0:2::/64 "Local Area Connection 2" publish=yes
        Ví dụ trên add và quảng bá các prefix trên mạng LAN và LAN2 mà nó gắn vào.
        • Với cấu hình này thì router sẽ không xem nó là một router mặc định. Các host trên các subnet sẽ tự động cấu hình địa chỉ phù hợp và thêm các route vào bảng định tuyến nhưng sẽ không có một route mặc định. Để cấu hình một router là một router mặc định cho các host trên một subnet, ta phải bắt router quảng bá một default route trên subnet đó.
        Ví dụ: Nếu trên LAN có một router với địa chỉ cục bộ là fe80::2aa:ff:fe98:2ab1, ta sẽ cấu hình thêm lệnh:
        netsh interface ipv6 add route ::/0 "Local Area Connection 3" nexthop=fe80::2aa:ff:fe98:2ab1 publish=yes
        3. 6to4 router: 6to4 là một kỹ thuật gán địa chỉ và tạo tunnel động được sử dụng để cung cấp kết nối cho những IPv6 site qua IPv4 Internet. Một pc cài WinXP có thể là một 6to4 router và sẽ tự động cấu hình khi bạn bật Internet Connection Sharing (ICS) trên interface gắn vào internet. Tuy nhiên, nếu bạn muốn cấu hình bằng tay, thì bạn cần thực hiện những việc sau:
        • Bảo đảm rằng 6to4 phải có một địa chỉ public được gán vào interface kết nối với internet và không nhận các router advertisement từ những IPv6 router khác. Lúc đó, router sẽ tự động tạo một interface ảo tên là: 6to4 Pseudo-interface và add route 2002::/16 vào bảng định tuyến, cộng với 1 default route chỉ đến một 6to4 relay router ở ngoài IPv4 internet.
        • Bật forwarding và advertise trên interface gắn với IPv6 subnet.
        • Bật forwarding trên 6to4 Pseudo-interface, sử dụng lệnh:
        netsh interface ipv6 set interface "6to4 Pseudo-Interface" forwarding=enabled
        • Add các route 6to4 prefix cho các interface gắn với IPv6 subnet và quảng bá chúng, sử dụng lệnh:
        netsh interface ipv6 add route 2002:WWXX:YYZZ: SubnetID::/64 InterfaceNameOrIndex publish=yes
        Trong đó, WWXX:YYZZ là dạng thập lục phân của địa chỉ IPv4 toàn cục. Còn subnetID là subnet ta gán cho các subnet trong mạng IPv6 (đây là công việc subnetting như trong IPv4).
        Ví dụ: một PC có gắn 3 NIC với yêu cầu như sau:
        LAN gắn với Internet và có địa chỉ IPv4 public là: 131.107.0.1
        LAN2 là IPv6 intranet có index là 5
        LAN3 là IPv6 intranet có index là 6
        Để cấu hình PC này làm một 6to4 router, ta sử dụng lệnh:
        netsh interface ipv6 set interface "Local Area Connection 2" forwarding=enabled advertise=enabled
        netsh interface ipv6 set interface "Local Area Connection 3" forwarding=enabled
        netsh interface ipv6 set interface "6to4 Pseudo-Interface" forwarding=enabled
        netsh interface ipv6 add route 2002:836b:1:5::/64 "Local Area Connection 2" publish=yes
        netsh interface ipv6 add route 2002:836b:1:6::/64 "Local Area Connection 3" publish=yes
        Ta thấy, trong ví dụ trên, prefix 2002:836b:1:5::/64 được quảng bá cho LAN2 và 2002:836b:1:6::/64 được quảng bá cho LAN3. Trong đó, 836b:1 là dạng thập lục phân của địa chỉ 131.107.0.1, và subnetID của chúng ở đây ta chọn chính là index của interface.
        4. Intra-Site Automatic Tunnel Addressing Protocol (ISATAP) router:
        Là một kỹ thuật gán địa chỉ và tự động tạo tunnel được sử dụng để cung cấp kết nối giữa các IPv6 host trên một IPv4 intranet. Mặc định thì IPv6 trên WinXP sẽ cấu hình các địa chỉ ISATAP liên kết cục bộ trên một Automatic Tunneling Pseudo-Interface cho mỗi địa chỉ IPv4 gán vào pc. Để cấu hình địa chỉ ISATAP site local và global, hay để giao tiếp giữa các subnet được định nghĩa bởi IPv4 intranet, thì bạn cần một ISATAP router. Cần thực hiện những chức năng sau đây:
        • Forward các IPv6 packet giữa các ISATAP host trên IPv4 intranet.
        • Quảng bá sự hiện diện của nó và các prefix để cấu hình các địa chỉ site local và global.
        Ví dụ: một ISATAP router có thể được kết nối vào 2 mạng vật lý riêng biệt, một IPv4 intranet và một IPv6 intranet.Trong trường hợp này, ta thực hiện cấu hình như sau:
        • Bật forwarding trên các interface gắn vào IPv6 intranet:
        netsh interface ipv6 set interface InterfaceNameOrIndex forwarding=enabled
        • Bật forwarding và advertise trên Automatic Tunneling Pseudo-Interface :
        netsh interface ipv6 set interface "Automatic Tunneling Pseudo- Interface" forwarding=enabled advertise=enabled
        • Add các route với các subnetID của các subnet ứng với IPv4 intranet vào Automatic Tunneling Pseudo-Interface và quảng bá chúng:
        netsh interface ipv6 add route IPv6Address/PrefixLength "Automatic Tunneling Pseudo-Interface" publish=yes
        • Add một default route sử dụng interface gắn với IPv6 intranet:
        netsh interface ipv6 add route ::/0 InterfaceNameOrIndex nexthop=IPv6Address publish=yes
        Ví dụ: Một pc có 1 interface gắn với một IPv4 intranet có tên là LAN, và một interface gắn với IPv6 intranet tên là LAN2. SubnetID gắn cho IPv4 intranet là 3FFE:FFFF:0:10::/64 và FEC0:0:0:10::/64. PC sử dụng một default router trên IPv6 subnet với nexthop là FE80::2AA:FF:FE98:2AB1. Để cấu hình pc này như một ISATAP router, ta sử dụng:
        netsh interface ipv6 set interface "Local Area Connection 2" forwarding=enabled
        netsh interface ipv6 set interface "Automatic Tunneling Pseudo-Interface" forwarding=enabled advertise=enabled
        netsh interface ipv6 add route 3ffe:ffff:0:10::/64 "Automatic Tunneling Pseudo-Interface" publish=yes
        netsh interface ipv6 add route fec0:0:0:10::/64 "Automatic Tunneling Pseudo-Interface" publish=yes
        netsh interface ipv6 add route ::/0 "Local Area Connection 2" nexthop=fe80::2aa:ff:fe98:2ab1 publish=yes
        • Các ISATAP host chạy WinXP trên IPv4 intranet sẽ tìm thấy các ISATAP router bằng cách phân giải tên “ISATAP”, do đó, bạn có thể đặt tên cho router là ISATAP hay add một host address phù hợp (A) hay CNAME record vào DNS server. Record đó có nhiệm vụ phân giải tên ISATAP ra địa chỉ IPv4 của ISATAP router. Nếu không, bạn phải thêm lệnh này trên tất cả các ISATAP host:
        netsh interface ipv6 isatap set state router=AddressOrName
        Email : vnpro@vnpro.org
        ---------------------------------------------------------------------------------------------------------------
        Trung Tâm Tin Học VnPro
        149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
        Tel : (08) 35124257 (5 lines)
        Fax: (08) 35124314

        Home page: http://www.vnpro.vn
        Support Forum: http://www.vnpro.org
        - Chuyên đào tạo quản trị mạng và hạ tầng Internet
        - Phát hành sách chuyên môn
        - Tư vấn và tuyển dụng nhân sự IT
        - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

        Network channel: http://www.dancisco.com
        Blog: http://www.vnpro.org/blog

        Comment


        • #5
          Chương VII: Giới thiệu về mạng hoạt động

          Các mạng hoạt động làm cho kiến trúc mạng trở nên động hơn bằng cách cho phép các code được thực thi trong mạng. Tuy nhiên, có một số trở ngại trong việc tạo ra một kiến trúc mạng hoạt động thực tế. Chương này mô tả một số tính năng cơ bản của mạng hoạt động đồng thời đưa ra một cái nhìn tổng quan về các dự án triển khai mạng hoạt động trên thế giới hiện nay.

          I. Nền tảng:
          Cấu trúc hiện nay của mạng là tĩnh. Mặc dù cũng có thể có vài active code được gửi từ các server đến cho các client (như các web applet) hay từ client đến cho server (như các OO database query), nhưng các node bên trong mạng như các router chỉ chuyển các packet một cách thụ động. Kiến trúc này được chuẩn hoá sử dụng các giao thức đã được xây dựng sẵn như IP vì vậy khi muốn thêm các chức năng vào mạng thì phải sửa lại giao thức thông qua một quá trình phức tạp. Kết quả là làm cho các giao thức lớn dần lên nhưng chúng vẫn không có khả năng tích hợp tất cả các chức năng mà ứng dụng yêu cầu. Bằng cách cho phép việc tính toán xảy ra trong mạng khi dữ liệu di chuyển qua các node, thì các mạng hoạt động cung cấp một giải pháp khác cho những vấn đề này. Thay vì phải chuẩn hoá một giao thức để mô tả cách các node chuyển các gói tin thì một mạng hoạt động sẽ chuẩn hoá dựa trên một môi trường thực thi được cung cấp cho các capsule khi chúng di chuyển qua các node trong mạng. Một capsule sẽ gồm cả dữ liệu và một tham khảo đến code để thực thi tại mỗi node mà capsule đó di chuyển qua. Trong một mạng truyền thống, các router sẽ xem header của các packet để tìm ra nơi để truyền gói tin. Trong một mạng hoạt động , thì các router sẽ thực thi code trong capsule. Và code này sẽ báo cho router biết nơi để gửi gói tin đến. Cách tiếp cận này cho phép các giao thức mạng phát triển nhanh hơn. Trong một mạng hoạt động, thì một giao thức có thể được viết và thực thi ngay lập tức mà không cần qua quá trình chuẩn hoá. Vì các giao thức mới có thể được viết để cung cấp các chức năng mà các ứng dụng yêu cầu nên việc các giao thức bị lớn dần lên sẽ không xảy ra.

          II. PAN:
          Để mạng hoạt động trở nên thực tế hơn thì chúng phải vượt qua sự kiểm tra về hiệu suất, độ an toàn, bảo mật và khả năng tương thích. Các mạng hoạt động phải có hiệu suất có thể so sánh được với mạng hiện tại. Chúng phải cung cấp khả năng bảo mật bằng hoặc lớn hơn những mạng hiện tại. (Một vấn đề khó khăn cho một hệ thống được thiết kế để cho phép code thực thi và di chuyển trong một hệ thống phân tán lớn). Và cuối cùng là khả năng tương thích (interoperability). Trừ khi 3 tiêu chuẩn này được hoàn thành, nếu không thì mạng hoạt động vẫn không thực tế.
          Một trong những mục đích chính của PAN là trả lời câu hỏi về hiệu suất: Trong trường hợp đơn giản khi định tuyến các packet đơn giản đến đích của chúng thì mạng hoạt động có khả năng đạt được hiệu suất ngang với các mạng hiện tại hay không. Mặc dù PAN được thiết kế với các khả năng an toàn, bảo mật và khả năng thích nghi, nhưng chúng vẫn chưa được hỗ trợ đầy đủ, mà chỉ cố gắng cải thiện hiệu suất của nó. Nhưng ta cũng có thể thêm những tính năng trên vào mà không cần thiết kế lại. PAN có thể đạt được hiệu suất cao bằng 4 cách: qua việc xử lý các capsule ở kernel, bằng cách tối thiểu hoá việc copy dữ liệu, qua việc thực thi các lệnh ngay trên các processor trên node, và qua một thiết kế cung cấp cho các capsule khả năng thực thi cao nhất.
          Bằng cách xử lý các capsule ở kernel thay vì xử lý trong user-space, node có thể tránh được việc copy dữ liệu giữa kernel và user-space, ngoài ra cũng giảm được sự can thiệp của các bộ định thời.
          PAN cung cấp một hệ thống quản lý bộ nhớ đồng dạng, cho phép các con trỏ đến các vùng của bộ nhớ có thể được truyền trong hệ thống. Trong trường hợp cơ bản của việc truyền các capsule đơn giản thì khả năng này cho phép các node không cần copy hay thậm chí không cần đụng đến dữ liệu của capsule. Ngoài ra việc caching các code tương ứng với các code trong capsule thì node chỉ tốn thời gian cho việc load và dịch cho lần đầu ứng với một loại capsule mới được sử dụng, còn lại, tất cả các capsule của cùng một loại sẽ được thực thi ngay mà không cần dịch lại.

          III. Active Node Transport System (ANTS):
          ANTS được phát triển bởi MIT, là một thực thi của mạng hoạt động, sự thực thi này sử dụng hướng tiếp cận theo dạng in-band(mang code theo gói tin) để xây dựng một cấu trúc mạng hoạt động. Thay vì luôn mang theo code với mọi packet thì ANTS node sẽ cache hầu hết các code đã sử dụng gần đây để tránh phải reload lại code cho những nhóm packet liên quan. Các packet hay còn gọi là các capsule sẽ mang những giá trị tham số cho một mẫu code liên quan. Nếu node mà packet đi qua chứa code liên quan thì node sẽ khởi tạo code với các giá trị tham số của packet và sau đó sẽ thực thi code. Nếu code không có trong node thì node sẽ yêu cầu code từ các hàng xóm gần nhất của nó. Sử dụng kỹ thuật mang code này thì các active node sẽ khá nhẹ nhàng và sẽ dễ dàng sử dụng hơn trong môi trường mạng IP. Hình vẽ sau mô tả các thành phần trong một mạng ANTS:



          Hình sau mô tả định dạng của ANTS capsule:



          ANTS được thực thi bằng Java. Mỗi node và càc ứng dụng chạy trên đó sẽ được thực thi trong một máy ảo Java (JVM) như là một process ở cấp user trong một hệ điều hành tựa Unix. ANTS toolkit được xây dựng làm một lớp mạng hoàn chỉnh sử dụng các dịch vụ được cung cấp bởi các thư viện Java chuẩn.



          IV. PANTS:
          Python Active Node Transfer System (PANTS) được phát triển bởi Đại học Sydney. Nó kế thừa các thuộc tính của ANTS nhưng nó mang tín động hơn. Nó cũng dựa vào mô hình lập trình capsule. Trong một PANTS node, hệ điều hành của node có nhiệm vụ quản lý resources của node. Các capsule chia sẻ và truy cập các resource thông qua các đối tượng giao diện. Các node được kết nối với nhau bởi các liên kết. Các capsule được gửi vào mạng bởi các ứng dụng chạy trên các node. Các capsule sẽ tự động định tuyến cho chúng qua các node. Mô hình lập trình này có nhiều điểm chung với ANTS. Điểm khác là cách mà các capsule được thực thi một cách an toàn và phương thức mà các capsule được nhóm lại với nhau. Trong PANTS, các capsule có thể được nhóm lại với nhau để chia sẽ dữ liệu. Hình sau mô tả định dạng của PANTS capsule:

          ANTS sử dụng kỹ thuật load code theo yêu cầu còn PANTS sử dụng kỹ thuật kéo và đẩy (push and pull). Kỹ thuật kéo tương tự như kỹ thuật của ANTS. Kỹ thuật đẩy gửi một gói tin kết hợp của trạng thái và code để yêu cầu cũng như trả lời yêu cầu.
          PANTS được thực thi bởi ngôn ngữ Python. Và cũng được thực thi trên mày ảo và cũng chạy process ở cấp user.
          Thực tế khảo sát cho thấy ANTS có thể chạy ở tốc độ 16Mbps cho những packet lớn, còn PANTS có thể đạt đến tốc độ 17Mbps.

          V. SwitchWare:
          Được phát triển bởi Đại học Pensylvania, gồm ba lớp: active packet, active extension, và một active router. Các active packet chứa các chương trình gồm code và dữ liệu để thay thế cả header và payload của gói tin truyền thống. Phần code cung cấp các hàm điều khiển cho các packet truyền thống. Phần dữ liệu thay thế phần payload của gói tin truyền thống. Có thể sử dụng cách forward truyền thống để truyền gói tin. Một ngôn ngữ lập trình mới cho AN ra đời được gọi là PLAN.
          Active extension giao tiếp với các router khác thông qua các active packet.

          VI. Việc tích hợp mạng hoạt động vào IP:
          Vì IP kết nối hàng tỉ node, do đó, IP sẽ là một cách triển khai tốt cho những mạng hoạt động trong tương lai. Kết hợp ANTS vào IP sẽ mang lại cho những nhà nghiên cứu và phát triển cơ hội để biết cách hoạt động của các node mạng hoạt động trong các mạng LAN và WAN. Từ quan điểm thực tế, kết hợp ANTS vào IPv6 cho phép cộng đồng mạng biết sự thực thi thực sự của một mạng hoạt động như thế nào và khía cạnh thích nghi ngược nào cần được triển khai trong các IPv6 node.
          Việc tích hợp một mạng hoạt động vào IP cũng cho những nhà nghiên cứu và phát triển khả năng thực nghiệm nhanh chóng và dễ dàng trong việc thêm những phần mới vào cấu trúc IP. Trong môi trường ngày nay, chạy các thử ngiệm trong việc thay đổi tầng IP sẽ liên quan đến việc thay đổi source code của IP, và nâng cấp các IP node để chạy các giao thức thử nghiệm. Nếu việc nâng cấp này chỉ cần được thực hiện cục bộ thì quá trình này sẽ đỡ tốn thời gian nhưng lại khó quản lý. Do đó, việc tạo một WAN gồm các Active IPv6 node sẽ có chi phí khởi tạo khá lớn nhưng chi phí kiểm tra những thay đổi mới lại ít và chỉ liên quan đến việc viết code cho giao thức và gắn nó vào mạng active IPv6.

          V. Các khía cạnh mới:
          Mục đích của việc thiết kế một Active IPv6 (AIPv6) node không phải là để thay thế IP node mà để cải tiến khả năng của IP. Do đó, một AIPv6 node phải có khả năng tương thích ngược. Do đó, bắt buộc phải có:
          • Một AIPv6 node có khả năng định tuyến cho cả các packet của IPv6 và AIPv6.
          • Các AIPv6 packet không bao giờ được tạo lỗi xử lý trên các node không phải là AIPv6.
          Để thoả mãn ràng buộc đấu tiên, ta phải xây dựng một IPv6 node bình thường giống với các thực thi khác. Nó hỗ trợ các thiết bị mạng và các Ethernet driver và cung cấp một giao diện lập trình cho nhiều ứng dụng. Node chạy hệ điều hành Linux và xử lý các Ethernet frame. Cái khá của node này so với những node khác là cách nó xử lý các packet. Node sẽ áp dụng một tập các xử lý xác định vào tất cả những packet đi vào và sau đó, nếu phù hợp sẽ xử lý các packet với một giao thức mà ứng dụng cung cấp. Để hỗ trợ việc xử lý tuỳ biến, node sẽ tích hợp một capsule dựa trên kiến trúc mạng hoạt động vào packet của nó dựa trên kiến trúc IP. Khi kết hợp 2 mô hình rất khác nhau này, xuất hiện 2 câu hỏi: Làm sao để khai thác những điểm chung giữa packet và capsule trong sự thực thi này? Và làm sao để bảo mật resource của node?
          • Để khai thác những điểm tương đồng giữa packet và capsule, ta sẽ làm cho IPv6 có các chức năng mặc định cho tất cả các thực thi của capsule. Gói tin AIPv6 sử dụng một option cộng với một IP payload để lần lượt mang các giá trị tham số và các code lập trình qua mạng IPv6. Điều này đảm bảo rằng các node non-AIPv6 sẽ không sinh lỗi khi xử lý các AIPv6 packet.
          • Để hỗ trợ bảo mật, một active node nên ngăn các active packet không được lạm dụng và sửa đổi các resource. Ta xây dựng chính sách kiểm soát truy cập được cung cấp bởi các gói của Java. Node cũng hạn chế các vùng buffer mà các AIPv6 có thể ghi vào đó. Nó sử dụng một kỹ thuật gọi là: “protected buffer” để ngăn không cho các AIPv6 packet sửa đổi địa chỉ nguồn và hop limit của packet.
          • Cuối cùng để hỗ trợ một môi trường lập trình cho các AIPv6 packet, ta phải phát triển một API mà node có thể export các AIPv6 packet. Tất cả các giao thức sẽ sử dụng API này để xử lý packet.
          Email : vnpro@vnpro.org
          ---------------------------------------------------------------------------------------------------------------
          Trung Tâm Tin Học VnPro
          149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
          Tel : (08) 35124257 (5 lines)
          Fax: (08) 35124314

          Home page: http://www.vnpro.vn
          Support Forum: http://www.vnpro.org
          - Chuyên đào tạo quản trị mạng và hạ tầng Internet
          - Phát hành sách chuyên môn
          - Tư vấn và tuyển dụng nhân sự IT
          - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

          Network channel: http://www.dancisco.com
          Blog: http://www.vnpro.org/blog

          Comment


          • #6
            Chương VIII: Node: Forwarding Engine



            Chương này mô tả thiết kế và hiện thực module lõi của một AIPv6 node là: Forwarding engine. Điểm mới trong việc thực thi này là nó chia giao thức IPv6 ra thành 2 phần: constant và variable. Phần constant của giao thức IPv6 phải được áp vào tất cả các packet đi qua node này. Phần variable (như IP forwarding) có thể được thay thế bởi các giao thức application specific. Cả IP forwarding routines và application specific protocol đều sử dụng chung API của node. Sử dụng cách tiếp cận này thì các chức năng của mạng hoạt động có thể được tích hợp vào AIPv6 node.



            I. Tổng quan về AIPv6 node:

            Một AIPv6 node xử lý cả AIPv6 packet và IPv6 packet. Các AIPv6 packet tương tự như ANTS capsule. Tất cả quá trình xử lý packet đều diễn ra trong module Forwarding engine có liên hệ với các module của các node khác. Các module của thiết bị và driver được xem như giao diện liên kết của forwarding engine.



            Giao tiếp giữa các module:

            Các packet đi vào một AIPv6 node có thể là từ mạng hay từ một ứng dụng (nếu AIPv6 node được sử dụng như một end node thì ứng dụng sẽ là đường chính để đi vào node. Một ứng dụng cũng thể gắn vào một node trung gian nếu nó được sử dụng như một network manager). Vì Java Runtime không dễ dàng hỗ trợ quá trình xử lý hướng sự kiện và ngắt ở lớp lập trình nên các AIPv6 module sẽ di chuyển những packet giữa chúng bằng cách sử dụng upcall. Mỗi module thực thi một phương thức send và receive giúp thiết lập giao diện giao tiếp giữa các module. Giao diện này làm cho việc tương tác giữa các module dễ thực thi hơn và cũng làm cho việc thêm những module trở nên dễ dàng hơn. Các phương thức send tương ứng với việc gửi một packet ra mạng, còn phương thức receive tương ứng với việc nhận một packet từ mạng. Các module sẽ không chấp nhận cùng một đối số cho các phương thức send và receive. Khi node đã thu thập đủ thông tin về packet buffer, nó sẽ chuyển module của nó lên stack.



            Xử lý constant:

            Là quá trình xử lý chung cho tất cả packet (cả IPv6 và AIPv6), nó đại diện cho một tập con các giao thức IPv6 phải được áp vào mọi packet.Forwarding engine sẽ xem việc giảm hop count của một packet như là một xử lý constant. Bằng cách yêu cầu mọi node mà packet đi qua sẽ giảm hop count của packet, giao thức IPv6 sử dụng một trường hop count để tránh loop trong mạng.

            Xử lý variable:

            Việc xử lý variable trong một active node là những xử lý phụ thuộc vào ứng dụng. Loại xử lý này xảy ra sau quá trình xử lý constant và có thể là một application-specific network protocol, hay mặc định sẽ được sử dụng. Tất cả phương pháp xử lý variable gồm cả tiến trình forward IP mặc định sử dụng cùng các đăc tính gốc của node để xử lý và truyền các packet.

            Các đường đi của packet:

            Hình sau mô tả các luồng packet di chuyển trong Forwarding engine. Các packet có thể vào frowarding engine từ 2 điểm: từ thiết bị thông qua phương thức nhận hay từ một ứng dụng thông qua phương thức gửi. Vì Linux kernel cung cấp các hàng đợi cho các packet, nên một packet vào forwarding engine qua một trong những phương thức truyền thông không cần phải được bỏ vào bộ đệm và được xử lý ngay lập tức.



            Hai lớp đầu được liệt kê trong bảng sau: IPForwarder và ActiveForwarder là 2 lớp trung tâm của frowarding engine. Lớp IPForwarder cung cấp tất cả các phương thức xử lý IP packet cho AIPv6 node trong khi ActiveForwarder cung cấp tất cả phương thức xử lý active như sự thực thi của các gói AIPv6 và yêu cầu load code qua một mạng. ActiveForwarder được xem như một lớp con của IPForwarder và do đó có thể truy cập vào tất cả các phương thức của lớp cha của nó theo nguyên tắc kế thừa. Khi kết hợp các public method và các biến của các lớp IPForwarder và ActiveForwarder sẽ cung cấp một node API cho các gói AIPv6.

            Xử lý nhận:

            Phương thức nhận trong lớp IPForwarder định nghĩa quá trình khi các packet vào forwarding engine từ mạng. Phương thức này phân hoạch quá trình xử lý thành 2 phần: constant và variable. Các phương thức nhận cũng như quá trình xử lý constant trong phương thức nhận bị overwrite bởi các lớp con của lớp IPForwarder. Điều này đảm bảo các lớp như ActiveForwarder khi thêm các quá tèinh xử lý active vào một IP node phải áp một tập xác định quá trình xử lý IP vào mọi packet đi qua node. Phần variable của phương thức receive có thể bị overwrite và được sử dụng để thêm quá trinh xử lý application specific vào forwarding engine. Phần constant bảo đảm một packet không vượt quá thời gian sống của nó trong mạng. Nó sẽ kiểm tra hop limit của packet và drop nó nếu giá trị này bằng 0. Nếu khác 0 thì nó sẽ giảm giá trị này đi 1. Forwrding engine chứa 2 phương thức thuộc variable process-một trong lớp IPForwarder và một trong lớp ActiveForwarder. Hai phương thức này sẽ được phân tích chi tiết sau.



            Xử lý gửi:

            Các packet đi vào node qua phương thức gửi sẽ không phải qua quá trình xử lý constant, mà chúng sẽ được xử lý trực tiếp bởi giao thức của chúng hay quá trình IP forwarding mặc định.

            Quá trình xử lý IPv6 mặc định:

            Phương thức variableProcess cho lớp IPForwarder chỉ được gọi khi một packet cần trải qua quá trình xử lý IP. Sau khi xử lý header mở rộng hop-by-hop của packet, phương thức sẽ áp một số quá trình xử lý địa chỉ vào packet nếu cần thiết. Nếu packet không được đánh địa chỉ cho node thì engine sẽ gọi phương thức routeForNode để xử lý việc truyền packet. Phương thức này sẽ áp một giải thuật prunning vào những route trong bảng định tuyến của AIPv6 node để xác định next route cho packet. Route được trả về từ quá trình tìm đường sẽ chứa địa chỉ IP của next hop mà node sẽ gửi packet ra đó, và tên của thiết kết nối vào subnet của next hop. Phương thức dò đường hỗ trợ 2 đường xử lý: fast path và slow path. Các packet vào fast path khi địa chỉ đích của nó match một trong những entry trong bảng định tuyến của node. Nếu packet có địa chỉ đích không có trong bảng định tuyến thì phải tính lại đường bằng giải thuật prunning và sau khi tính thì route sẽ được lưu trong bảng định tuyến của node.

            Lớp IPv6Packet (được sử dụng bởi quá trình xử lý của lớp IPForwarder và ActiveForwarder) có 2 mục đích: nó cung cấp sự truy cập dễ dàng vào các trường của IPv6 header kể cả những header mở rộng cũng như payload trong gói tin IPv6.




            Active processing:

            Phương thức variableProcess trong lớp ActiveForwarder áp quá trình xử lý động vào tất cả các packet đi vào forwarding engine từ mạng. Các IPv6 packet không chứa các trường Active mặc định cho phương thức variableProcess trong lớp IPForwarder. Nếu packet là một AIPv6 thì nó sẽ đi qua quá trình xử lý dựa trên ANTS, trong đó, code kết hợp với một AIPv6 packet sẽ được load lên và thực thi. Quá trình thực thi của một AIPv6 packet liên quan đến việc gọi các phương thức thực thi của packet và cung cấp một tham khảo đến đối tượng ActiveForwarder như là một đối số của phương thức. Các ứng dụng thêm các giao thức mới vào mạng bằng cách định nghĩa các lớp con của lớp Capsule và overwrite các phương thức evaluate, serialize và deserialize. Vì lớp Capsule là một lớp con của IPv6Packet nên tất cả các capsule đều có thể truy cập vào các header mở rộng của packet.


            Các buffer của packet được bảo vệ:

            Code kết hợp với một AIPv6 packet cần truy cập vào packet buffer để thay đổi giá trị của các trường. Tuy nhiên, khi cho phép code được truy cập vào tất cả các phần của IPv6 packet có thể dẫn đến việc code thay đổi địa chỉ nguồn hay hop limit trong header và do đó có thể dẫn đến những vấn đề nghiêm trọng cho những node khác trong mạng.

            Protected buffer ngăn các phương thức variable process không thay đổi một số trường của packet như trường địa chỉ nguồn và hop limit bằng cách kiểm tra mỗi byte truy cập được thực hiện vào buffer. Mỗi lần code cố thay đổi byte đều sẽ được kiểm tra khi chạy. Lớp NetBuff hỗ trợ kỹ thuật protected buffer bằng cách cung cấp hai version của một phương thức: setElement. Version 1 được sử dụng bởi các lớp unfriend (class friend trong Java là những class chung package) với lớp NetBuff, thực hiện việc kiểm tra runtime. Version kia được sử dụng bởi các friend class không thực hiện kiểm tra runtime.

            API Available to Variable Processing:

            Phần thiết yếu của một Active node là API mà nó export các mobile code được nhúng trong các packet. Khi mobile code đi vào một AIPv6 node, nó sẽ cung cấp một tham khảo đến đối tượng forwarder. Code có thể truy cập đến tất cả các biến và phương thức public của forwarder. Bảng sau sẽ liệt kê tất cả các API được hỗ trợ bởi một AIPv6 node.




            Resource:

            Soft-state Cache: là một không gian hỗn hợp có thể được chia sẻ bởi một nhóm các packet kết hợp với cùng một nhóm ứng dụng hay một họ giao thức. Các packet từ cùgn một nhóm hay một họ có thể tạo, đọc hay ghi các entry vào cache, mặc dù node không đảm bảo về sự tồn tại của những dữ liệu đó.

            Bảng định tuyến:Là một resource quan trọng nhất của một IP node . Nó chứa tất cả thông tin định tuyến cần để gửi gói tin đến đích. Vì một AIPv6 không thể hoạt động nếu thiếu bảng định tuyến nên một AIPv6 packet chỉ có quyền đọc các thông tin định tuyến trong bảng định tuyến. Các AIPv6 packet yêu cầu các route khác những cái được chứa trong bảng định tuyến có thể add các route của nó vào soft-state cache.
            Email : vnpro@vnpro.org
            ---------------------------------------------------------------------------------------------------------------
            Trung Tâm Tin Học VnPro
            149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
            Tel : (08) 35124257 (5 lines)
            Fax: (08) 35124314

            Home page: http://www.vnpro.vn
            Support Forum: http://www.vnpro.org
            - Chuyên đào tạo quản trị mạng và hạ tầng Internet
            - Phát hành sách chuyên môn
            - Tư vấn và tuyển dụng nhân sự IT
            - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

            Network channel: http://www.dancisco.com
            Blog: http://www.vnpro.org/blog

            Comment


            • #7
              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:

              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.

              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.

              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.

              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.
              Email : vnpro@vnpro.org
              ---------------------------------------------------------------------------------------------------------------
              Trung Tâm Tin Học VnPro
              149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
              Tel : (08) 35124257 (5 lines)
              Fax: (08) 35124314

              Home page: http://www.vnpro.vn
              Support Forum: http://www.vnpro.org
              - Chuyên đào tạo quản trị mạng và hạ tầng Internet
              - Phát hành sách chuyên môn
              - Tư vấn và tuyển dụng nhân sự IT
              - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

              Network channel: http://www.dancisco.com
              Blog: http://www.vnpro.org/blog

              Comment


              • #8
                RE: IP v6

                Chương X : Các giao thức ứng dụng

                Chương này nói về các loại ứng dụng đặc tả các giao thức xây dựng nên mạng bao gồm AIPv6 nodes và IPv6 nodes. Các ràng buộc cần phải có ở các Active protocols khi chạy trên mạng không đồng nhất. Phần thứ 2 của chương này mô tả về tiềm năng của các ứng dụng để đe lại lợi ích cho kiến trúc AIPv6.

                I. Sự ràng buộc:

                Mạng lai giữa AIPv6 nodes và IPv6 nodes giải quyết vấn đề nhúng Active network layer vào trong IP layer.

                Trong kiến trúc này có những ràng buộc của Active protocols khi chuyển từ môi trường Active thuần sang môi trường active có sự lai hóa. Trong ANTS, ứng dụng cho rằng Active protocols sẽ thực thi ít nhất phải là 2 Active nodes, node nguồn và node đích. Nếu có thêm các node trung gian (intermediary nodes) thì Active protocols khi đi qua cũng sẽ được thực thi ngay chính trên các intermediary nodes ấy. Nhưng trong kiến trúc AIPv6 thì điều trên là không đúng. Bởi vì ứng dụng dùng AIPv6 protocols có thể kết nối đến các IPv6 destination nodes, nên ứng dụng cho rằng chỉ cần thực thi các protcols của chúng tại một node, đó là source node. Nếu source node biết trước destination node là AIPv6 node thì sự bảo đảm rằng Active protocols sẽ được thực thi chắc chắn hơn.

                Một ví dụ

                Hình 1 và 2 minh họa sự khác biệt khi chạy trên mạng ANTS network với chạy trên mạng AIPv6 nodes và IPv6 nodes. Source applications ở cả 2 hình đều được chèn vào các compression protocols trên mạng để được dùng bởi các packets. Không cần biết destination applications có phân tích được compressed data hay không, compression protocols nén payload của packet tại một node với bandwidth thấp, và phải giải nén payload đó trước khi nó đến ứng dụng đích.

                Đây là hình minh họa ANTS network:



                Trong ANTS network thì các compression protocols đều hoạt động chính xác. Có thể việc nén payload cũng được thực hiện ở node trung gian, và giải nén tại node đích. Destination application không bao giờ phát tán compressed data.

                Trong AIPv6 network, có thể end-node là non-Active node nên việc hoạt động vừa nêu sẽ không chính xác. Sự bảm đảm chính xác trong trường hợp này xảy ra nếu: source application truyền đến Active destination node hoặc truyền trên một lộ trình biết trước số các node trung gian (intermediary node), hoặc destination application hiểu được compressed data.

                Đây là hình minh họa mạng gồm có AIPv6 node va IPv6 node:



                II. Không phải các Active protocols đều truyền trực tiếp

                Ví dụ trên đã cho chúng ta thấy rằng Active network protocols không truyền trực tiếp mà phải đi qua trung gian để đến được những node nào hiểu Active protocols, rồi sau đó mới đếm đích.

                Active protocol trong tương lai: Load Balancing

                Phần này mô tả một giao thức mới có tính chất giả thiết để phục vụ cho mạng lai giữa AIPv6 nodes và IPv6 nodes. Việc tương tác giữa AIPv6 source node và IPv6 destination node có thể đưa ra những giao thức hữu ích.

                1 Tại sao dùng Load Balance

                Lấy một ví dụ: không có một server nào được thiết kế để giữ và nhanh chóng xử lý tất cả các http request từ hầu hết các site trên World Wide Web. Để giải quyết, người ta thiết kế một tập các server nối kết lại với nhau. Http request sẽ gửi yêu cầu đến tập các server này. Các site sẽ đảm bảo rằng phân đều mức độ làm việc của các server bằng cách dùng load-balancing.



                i. Coarse-grained load balancing

                Dùng DNS (Domain Name Service) để trả về IP address của web server có tải ít nhất.



                Bước 1, ứng dụng gửi một DNS resolution request cho www.mit.edu cho local DNS server. Bởi vì local DNS server không có kết nối với www.mit.edu nên nó liên hệ với MIT’s DNS server. Bước 2, MIT’s DNS server xác định web server nào là có tải ít nhất tại thời điểm request, và phân giải DNS request ấy thành server’s IP address. Hình vẽ ở ví dụ trên đưa DNS request đến web server A. Khi nhận được trả lời từ MIT’s DNS server, local DNS server sẽ lưu lại A’s IP address trong cache, và sau đó trả về IP address tới host cần tìm. Bước 3, host sẽ khởi tạo http request tới server A.

                Có hai vấn đề ở mô hình trên có thể dẫn đến phá vỡ các thuộc tính load balanced của MIT’s web server. Thứ nhất, bởi vì ứng dụng lưu giữ sự kết nối với hostname và IP address trong suốt session của nó, nên nó chỉ sẽ kết nối tới least-loaded server (server có tải ít nhất) trong suốt sự kết nối đầu tiên. Sau đó, least-load server sẽ nhanh chóng trở thành server có tải nhiều nhất (most-loaded server) bởi vì các request đều nhắm tới nó. Thứ hai, bởi vì local DNS server lưu trữ kết nốt hostname-IPaddress trong cache tại vài thời điểm, nên những nodes tại local site sẽ dùng kết nối ấy, điều này sẽ làm tăng tải của web server A. Điều này sẽ làm ảnh hưởng đến cả client lẫn MIT’s web server. Bởi vì, client sẽ đợi một khoảng thời gian lâu để nhận được data từ MIT’s web server, còn MIT’s web server không thể xử lý nhiều request tại thời điểm mà lẽ ra nó phải làm việc.





                ii. Fine-Grained Active Load Balancing

                Xây dựng những đặc tính bên trong giao thức TCP-nằm lót phía dưới giao thức HTTP. Nó cho phép web client kết nối tới least loaded server trong suối mỗi cuộc kết nối web. Những web clients không truy cập được bởi kỹ thuật Active Network sẽ luôn kết nói dùng sơ đồ coarse-grained load balancing.

                Bước 1, Active application cần truy vấn local DNS server của nó để lấy IP address của www.mit.edu . Local DNS sewrver không có nên mới liên hệ đến MIT’s DNS server.Bước 2, tại MIT’s DNS server sẽ dùng giải thuật coare-grained load balancing để trả về IP address của least loaded server. Khi nhận response từ MIT’s DNS server, loacal DNS server sẽ lưu trong cache kết nối www.mit.edu bởi địa chỉ IP nhận được từ MIT’s DNS server, và sau đó trả về địa chỉ IP cho request application. Bước 3, TCP connection packet đầu tiên do ứng dụng gửi sẽ tìm trên AIPv6 node một danh sách của các available web servers. Kế tiếp, nó sẽ chọn ra web server nào có tải ít nhất để bắt kết nối với server đó, và kết nốt trong suốt cuộc kết nối đó. Khi có một request mới thì sẽ tạo ra một TCP connection nữa và Active web client sẽ luôn chọn server có tải ít nhất.

                Nếu ứng dụng không chạy Active protocol này thì tất cả web connection của ứng dụng ấy sẽ mặc nhiên dùng coarse-grained load balancing.

                Những sự thay đổi cần để hiện thực Active protocol này là thay đổi ở điểm khởi đầu của quá trình hand shake code của TCP connection. Giao thức này cần phải nhận biết được sự thay đổi của destination address khi quá trình hand shake ở giai đoạn giữa. Địa chỉ destination address thay đổi ở giai đoạn giữa của hand shake có thể là một vấn đề bảo mật lớn.

                Giao thức này cũng đòi hỏi process chạy ở web site (web site truy vấn web servers) và chèn vào load table trong AIPv6 border router
                Email : vnpro@vnpro.org
                ---------------------------------------------------------------------------------------------------------------
                Trung Tâm Tin Học VnPro
                149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
                Tel : (08) 35124257 (5 lines)
                Fax: (08) 35124314

                Home page: http://www.vnpro.vn
                Support Forum: http://www.vnpro.org
                - Chuyên đào tạo quản trị mạng và hạ tầng Internet
                - Phát hành sách chuyên môn
                - Tư vấn và tuyển dụng nhân sự IT
                - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

                Network channel: http://www.dancisco.com
                Blog: http://www.vnpro.org/blog

                Comment


                • #9
                  RE: IP v6

                  Chương XI: Kết quả của việc phân tích và kết luận



                  Làm một thực nghiệm để test throughput và latency của một AIPv6 node. Hình vẽ sau:

                  Kết quả thu được ở AIPv6 router khi packet đi từ nguồn tới đích. Router là một node trung gian (intermediate node). Bảng định tuyến trên AIPv6 router này chứa 3 thông tin định tuyến: loopback route, route tới nguồn, và route tới đích. Cả 3 node đều chạy trên Linux 2.0.30 kernel. Máy nguồn chạy trên Pentium 120 MHz processors, máy giữa và máy đích chạy Pentium Pro 200 MHz processors.

                  Có 2 packet được gửi qua trong thí nghiệm trên: vanilla IPv6 packet (chỉ chứa IPv6 header) và Null capsule đơn giản (co thể tự định tuyến trên các node).



                  Vanilla IPv6 Packet :

                  Chỉ chứa IPv6 header, không chứa marshaled option. Vì thế nên node xử lý vanilla IPv6 packet bằng cách dùng IPv6 routine mặc định như sau:



                  Null capsule:

                  Mục đích của gói tin này là để kiểm tra sự thể hiện của việc xử lý đường đi ở Active node.



                  Fast Path và Slow Path:

                  Bởi vì thí nghiệm trên chỉ định tuyến giữa một nguồn và một đích nên packet sẽ theo dòng đi rất nhanh trên lộ trình định sẵn trong cache, gọi là fast path. Vì thế, để lấy được kết quả đầy đủ, ta phải tạo ra mô hình slow path (node trong dùng bảng định tuuyến được lưu sẵn trong cache).

                  Kết quả:

                  Kết quả dưới đây thực hiện trên 5500 packets đi qua IPv6 router. Node đích lưu lại những giá trị bằng cách tính toán throughput cho mỗi 500 packets nhận được. Throughput cho 500 packets đầu tiên không nằm trong tính toán (?) . Throughput trung bình lớn nhất ở imtermediate node (IPv6 router node) được thể hiện như sau:



                  SUMMARY

                  AIPv6 node đã chứng minh được rằng kiến trúc Active Network capsule có thể hòa nhập được vào kiến trúc IP packet. AIPv6 cho thấy những điểm giống nhau của các kiến trúc này bằng cách phân chia quá trình xử lý làm hai, là constant segment và variable segment. Baằng cách dùng cơ chế quản lý, ví dụ như proteced buffers, node bảm đảm rằng những capsules sẽ không bị thay đổi những trường quan trọng trong IPv6 packet header.

                  Điểm đặc trưng của kiến trúc AIPv6 là nó hỗ trợ giao tương tác Active node nguồn và non-Active node đích. Một tập các ràng buộc mới được đặt ra ở các Active protocols. Active protocols là các giao thức để thiết kế nên một mạng Active Network thuần khiết. Các ràng buộc ấy được đưa ra một số ý kiến trong phần 5.1.

                  Việc hỗ trợ tương tác ấy cũng tạo ra nhiều loại giao thức mới, các giao thức ấy được tả trong phần 5.2. Các giao thức mới ấy có thể không thực thi được khi chỉ dùng kiến trúc IP hoặc chỉ dùng kiến trúc Active Network.
                  Email : vnpro@vnpro.org
                  ---------------------------------------------------------------------------------------------------------------
                  Trung Tâm Tin Học VnPro
                  149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
                  Tel : (08) 35124257 (5 lines)
                  Fax: (08) 35124314

                  Home page: http://www.vnpro.vn
                  Support Forum: http://www.vnpro.org
                  - Chuyên đào tạo quản trị mạng và hạ tầng Internet
                  - Phát hành sách chuyên môn
                  - Tư vấn và tuyển dụng nhân sự IT
                  - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

                  Network channel: http://www.dancisco.com
                  Blog: http://www.vnpro.org/blog

                  Comment


                  • #10
                    RE: IP v6

                    Phụ lục: Định dạng của trường Option và Payload

                    Chương này mô tả định dạng của marshaled option và demand payload.

                    Đặc điểm chung của option và payload:

                    Code class có 128 bit để định danh. Trong cách hiện thực hiện nay, đây là con số được chọn ngẫu nhiên, nhưng trong tương lai, định danh ấy có thể là một MD5 fingerprint được xác nhận bởi mỗi code class.

                    Có chung trường Active Type, nhằm phục vụ cho việc phân biệt sự khác nhau giữa các loại định dạng marshaled option và system payload.

                    I. Ipv6 Option

                    Ipv6 cần mỗi option phải có một loại giá trị. 2 bit cao nhất của giá trị này là chỉ thị của tất cả các Ipv6 Nodes. Nếu các node này không hiểu được opyion thì nó sẽ bỏ qua option và tiếp tục xử lý packet. Bit thứ 3 dùng để thông báo cho các node biết nội dung của option, nội dung này có thể bị thay đổi trên đường đi. Các giao thức bảo mật end-to-end cần thông tin này khi tính toán checksums.

                    Length field: Giá trị của field này phụ thuộc vào số trạng thái được đưa vào option.

                    Padding field: đảm bảo sự sắp xếp thích hợp cáv byte trong các header. Ipv6 đã đặc tả padding field trong option field. Ipv6 cung cấp 2 lọai: Pad1 option và PadN option.

                    II. Marshaled option

                    Marshaled option chứa giá trị trạng thái cho các đoạn code có khả năng lập trình được xác định bởi trường định danh. Marshaled option có giá trị là 54. IPv6 node sẽ phải bỏ qua marshaled option nếu nó không “hiểu”.



                    Address of last active node (128 bit) : được thêm vào gói option này nhằm hỗ trợ cho ANTS-style, đó là giao thức demand-loading. Khi một node request code từ node kế cận phía trước thì trường này sẽ cung cấp địa chỉ ấy.

                    Để giảm chi phí cho việc demultiplexing một packet tới active processor hoặc tới một lộ trình IPv6 mặc định nào đó, marshaled option phải là option đầu tiên trong hop-by-hop option header. Thêm vào đó, giữa marshaled option với phần đầu của header phải không có một padding nào. Hop-by-hop header cũng phải là extension header đầu tiên trong packet. Nhưng điều trên sẽ làm giảm chi phí cho việc demultiplexing. Lý do là hop-by-hop header, marshaled option có chứa các thông tin quan trọng chỉ thị ban đầu.

                    Rủi ro cho việc dùng field option trong hop-by-hop option header để vận chuyển giá trị trạng thái là sự đặc tả IPv6 sẽ ngăn các IPv6 nodes phân mảnh hop-by-hop header. Vì thế, thậm chí packet bị phân mảnh, giá trị của trạng thái trong marshaled option cũng có thể được dùng để thực thi code tại mỗi node. Vấn đề ở chỗ code của một packet có thể được thực thi hơn một lần khi packet đó đi qua mỗi node, bởi vì code sẽ được thực thi cho mỗi phân mảnh. Đây có thể là có lợi hoặc có hại, tùy thuộc vào yêu cầu của ứng dụng. Bởi vì sự phân mảnh chỉ có thể xảy ra tại source node, nên gảii pháp tốt nhất là tắt chế độ phân mảnh tại source node.

                    III. System payload

                    Cả demand request và demand response sẽ được vận chuyển trong cùng 1 kiểu payload, đó là active payload. Active payload có protocol value là 89. Chỉ có AIPv6 node mới truyền payload từ nơi này đến nơi khác. Byte đầu tiên của payload là đặc tả chiều dài của payload này theo đơn vị 8 octec, không bao gồm field đầu tiên. Vì nhu cầu trong tương lai, người ta đề nghị 2 ensure byte dùng cho active networking. Có đề nghị tạo riêng hẳn một active ayload cho acitve networking.



                    Active type value = 2

                    Khi một AIPv6 node nhận một marshaled option mà nó không thấy code tương ứng (corresponding code) thì nó sẽ gởi một demand request payload tới upstream active node kế cận. Upstream active node kế cận này được xác định trong marshaled option. Trường định danh (identifier field đặc tả loại code mà requesting node cần).

                    Demand request payload được thiết kế phù hợp, tức là nhỏ hơn dung lượng tối đa của option để nó có khả năng hiện thực.

                    b. Demand response



                    Total (Tot) (4 bit): số phân mảnh của code.
                    Sequence (Seq) (4 bit): thứ tự các phân mảnh của bytecodes trong packet. Phân mảnh đầu tiên có giá trị là 0.
                    Email : vnpro@vnpro.org
                    ---------------------------------------------------------------------------------------------------------------
                    Trung Tâm Tin Học VnPro
                    149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
                    Tel : (08) 35124257 (5 lines)
                    Fax: (08) 35124314

                    Home page: http://www.vnpro.vn
                    Support Forum: http://www.vnpro.org
                    - Chuyên đào tạo quản trị mạng và hạ tầng Internet
                    - Phát hành sách chuyên môn
                    - Tư vấn và tuyển dụng nhân sự IT
                    - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

                    Network channel: http://www.dancisco.com
                    Blog: http://www.vnpro.org/blog

                    Comment

                    • Working...
                      X