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.

Cấu trúc mở rộng của Internet

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Cấu trúc mở rộng của Internet

    Tác giả:

    + Lê Anh Đức
    + Ngô Tự Nhiên


    3.1. Mô hình lập trình capsule

    Một mạng ANTS bao gồm: các ứng dụng sử dụng mạng bằng cách gửi và nhận những gói tin đặc biệt được gọi là các capsule qua một active node cục bộ (hay còn gọi là một router có khả năng lập trình). Mỗi active node được kết nối với với các node lân cận với nó. Các ứng dụng có thể lựa chọn các loại capcule khác nhau tùy thuộc vào phần mềm. Code sẽ được thực thi tại mỗi active node khi nó đi qua. Do đó, để tạo ra một dịch vụ mới thì nó chỉ cần xây dựng một tập các loại capsule mới với các code lập trình tương ứng. Vì vậy, mô hình này cho phép quá trình xử lý tùy biến dọc theo mạng, và cho phép các ứng dụng mới được triển khai chỉ bằng một bước mà không cần yêu cầu việc triển khai thêm hay xây dựng thử nghiệm. Và các ứng dụng mới được lựa chọn một cách rõ ràng bằng cách lựa chọn loại capsule hơn là việc nâng cấp router.

    3.2. Forward packet mở rộng

    Mô hình lập trình capsule dễ hiểu và linh hoạt nhưng lại khó thực thi. Để có thể thực thi ở hiệu suất cao cần được giới hạn theo 2 cách:
    • Việc forward một capsule được chia làm các phần như: truyền code và thực thi code. Việc phân chia việc thực thi những forwarding thành những phần trên cho phép mỗi phần được thực thi với các kỹ thuật phù hợp và cho phép code được cache ở những active node để tăng hiệu suất. Nhiều kỹ thuật có thể được sử dụng để truyền code phụ thuộc vào kích thước và tần suất của việc truyền
    • Mô hình capsule được sửa đổi để phù hợp với 1 mạng mà trong đó chỉ những node xác định mới là active node. Ở những node bình thường thì các capsule sẽ được forward như những gói tin IP bình thường. ANTS xem những active node như những node đặc biệt được nhúng vào mạng.



    Hình 3. 1 Các trường trong gói capsule

    3.3. Các thành phần kiến trúc

    Gồm một mô hình lập trình capsule, một giao thức demand pull code và hệ điều hành của node

    3.4. Capsule programing module

    Gồm 3 phần: định dạng của capsule; luật forward; và API của node

    3.4.1. Định dạng của capsule

    Mỗi capuslemang theo những trường sau: địa chỉ nguồn, đích; resource limit (tương tự như TTL của IPv4 và hopcount của IPv6); version( xác định version của ANTS); type(xác định loại forwarding routine tương ứng); previous address (được sử dụng để truyền code trong mạng); các trường header khác (phụ thuộc vào loại capsule được xác định ở trường type); payload.
    • Trong những trường này thì trường type là quan trong nhất vì nó xác định forwarding routine; code group và protocol mà capsule đó thuộc về. Mỗi bit đều được sử dụng để xử lý capsule ở mỗi node. Yêu cầu là type phải là duy nhất dễ dàng kiểm tra và phân phối.
    • Code group và protocol được xác định bởi các cấu trúc phân cấp vì vậy cho phép nó được sử dụng an toàn trong mạng mà trong đó các code không phải lúc nào cũng có. Định nghĩa các capsule type bằng cách sẽ cung cấp 2 đặc tính quan trọng:

    - Các type mới có thể được phân phối một cách nhanh chóng. Vì các dấu hiệu của nó là duy nhất và type phụ thuộc vào code tương ứng, do đó chỉ cần chọn một hàm dấu hiệu với một tầm lớn để làm cho khả năng đụng độ là nhỏ nhất. Với số hash 128 bit ngẫu nhiên như MD5 thì đụng độ xảy ra khi có 264 dầu hiệu đồng thời. Do đó, các dịch vụ mới có thể được hỗ trợ bằng sự đồng ý tương hỗ giữa những phần xác định.
    - Các type sẽ xác lập một secure binding giữa capsule và code tương ứng. Vì hash là một chiều nên sẽ xóa được nguy cơ giả code vì mỗi node có thể nhanh chóng xác minh (mà không cần thêm những thông tin bên ngoàni) rằng một tập các code xác định sẽ tương ứng với một capsule tương ứng.

    3.4.2. Active node API

    Trong thực tế, một loại routine có thể được xác định phụ thuộc vào active node API sẵn có. Ví dụ: nếu không thể lưu và truy cập các trạng thái node thì các chương trình capsule sẽ không thể giao tiếp với nhau. Ngoài ra việc thực thi code phụ thuộc vào API. Ví dụ: các hàng xóm của một node xác định có thể được tìm thấy bằng cách đi qua toànn bộ bảng định tuyến để hỏi những node kế cận hay hỏi trực tiếp node là phụ thuộc vào hàm API nào được hỗ trợ. Ví dụ: Các hàm API cho capsule forwarding routine:

    Bảng 3.1: Các phương thức của Node



    Khi kết hợp với các khả năng được cung cấp bởi mô hình forward mở rộng; những loại API này đủ để hỗ trợ các loại dịch vụ mới một cách hiệu quả:
    • Các đặc tính của mạng có thể được khám phá và những đường mới được tính toán bằng cách sử dụng các hàm truy nhập môi trường kết hợp với các header và việc truyền có kiểm soát.
    • Các dịch vụ định tuyến mới được cung cấp bằng cách sử dụng soft-store để duy trì những đường vừa được tính và forwarding sẽ đi theo những đường này.
    • Multicast có thề được cung cấp bằng cách tạo ra các capsule mới trong mạng và chúng sẽ đi theo những đường được duy trì trong soft-store.
    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
    3.4.3. Capsule forwarding:

    Quá trình forward phụ thuộc vào loại capsule trừ khi ở những node không phải active thì quá trình forward IP mặc định sẽ được sử dụng. Ở mỗi active node thì trường type sẽ được sử dụng để xác định loại forward tương ứng (được truyền riêng). Sau khi đã xác định thì routine tương ứng sẽ được thực thi để forward capsule. Việc này xảy ra bằng một mô hình thực thi.

    • Trước hết, các forarding routine được cho phép chạy trong một thời gian ngắn (phụ thuộc vào tốc độ truyền đích của capsule). Các active node sẽ ép buộc quá trình xử lý này bằng cách kiểm soát capsule runtime. Nếu tốc độ vượt quá, thì node sẽ bỏ forwarding và sẽ sử dụng quá trình forward mặc định.

    • Thứ 2, chỉ một lượng nhỏ các trạng thái được xác định một cách rõ ràng là được mang theo cùng với capsule.Các trạng thái khác phải được lưu ở node để xử lý sau, hay sẽ được phục hồi bởi active node runtime. ANTS cho phép các nhà phát triển dịch vụ định nghĩa những trường cho capsule để nó có thể được truy cập từ bên trong mạng. Những trường này được định nghĩa cùng với capsule forwarding routine.

    • Thứ 3, routine có thể được chạy mà không bị delay ở mỗi active node trong mạng. Các forwarding routine có thể thực hiện các lời gọi thông qua API ở mỗi node. Ví dụ: một capsule theo một route xác định có thể tạo và forward một capsule liên quan giúp tái thiết lập route nếu nó thấy route đó không còn tồn tại trong mạng nữa. Để lời gọi này thành công thì code của cả 2 loại capsule phải được truyền cùng nhau để tất cả những code được yêu cầu có sẳn, điều này dẫn đến việc định nghĩa một code group (một tập bao đóng các forwarding code được gọi từ forwarding code) được truyền bởi giao thức phân phát code.

    • Thứ 4, active node runtime bảo đảm rằng dưới góc nhìn của các nhà phát tirển ứng dụng thì các capsule được truyền một cách tuần tự.

    • cuối cùng, việc xử lý lỗi trong quá trình truyền. Các lỗi có thể là không đủ resource để truyền, thiếu một đường mặc định, và một số diều kiện khác. Để hiệu quả thì quá trình xử lý lỗi nên được thực hiện cục bộ.

    3.5. Việc truyền code

    Khi một ứng dụng mới được biểu diễn trong một capsule thì nó phải được thực thi trong hạ tầng mạng trước khi được sử dụng. ANTS cung cấp một giao thức phân phối code theo yêu cầu cho phép ứng dụng bắt đầu có thể sử dụng một ứng dụng mới.
    Việc phân phối code trong ANTS được thiết kế cho những mẫu traffic mà trong đó việc caching là hiệu quả. Hệ thống demand pull truyền code để thực thi một dịch vụ mới cho những node dọc theo đường mà một capsule sử dụng dịch vụ đi theo. Code sẽ được cache ở những node này cho những capsule sau sử dụng. Kỹ thuật này có ích lợi là kích thước nhỏ của code để cung cấp việc truyền không tin cậy: việc phân phối code sẽ thành công một cách nhanh chóng hay đôi khi fail.

    3.5.1. Các mục đích thiết kế

    Dễ thích ứng với việc thay đổi route và node failure; có thể thích hợp cho những mạng lớn, tối thiểu hóa lượng code được lưu tại những node và khỏang cách mà code được truyền. Lý tưởng là: một forward routine xác định chỉ nên được truyền một lần trên mỗi liên kết mạng và chỉ cho những active node yêu cầu nó; tối thiểu hóa khỏang thời gian kể từ khi một capsule đến một node cho đến lúc code tương ứng được lấy, chống việc giả code, không gây nghẽn.
    • Chiến lược của ANTS là sử dụng pull code dọc theo đường mà capsule đi theo với một giao thức connectionless và code ở các active node. Để khởi tạo quá trình này thì ứng dụng ở rìa của mạng phải lấy code để thực thi một ứng dụng mới trước khi chúng có thể sử dụng dịch vụ, và sau đó sử dụng kỹ thuật: duy trì trạng thái của code dọc theo đường khi chúng đang được sử dụng và được xem như là một loại kết nối mềm. Có thể thích ứng với việc thay đổi đường đi và không phụ thuộc vào các kỹ thuật truyền tin cậy cũng như pha thiết lập.

    3.5.2. Phân phối code ở các hệ thống đầu cuối

    Việc phân phối code cho một dịch vụ mới xảy ra ở các hệ thống đầu cuối nơi mà các ứng dụng có thể truy cập vào mạng ANTS. Một ứng dụng phải lấy code để thực thi một ứng dụng mới trước khi có thể thực thi nó. Nghĩa là tất cả các capsule forwarding routine thực thi giao thức tương ứng với dịch vụ. Để thực hiện việc này thì một ứng dụng phải tham khảo một thư mục để ánh xạ tên dịch vụ cho code tương ứng. Trong ANTS toolkit thì thư mục này là file system cục bộ. Việc ánh xạ này được sử dụng để tách biệt giao diện với việc thực thi. Các ứng dụng sử dụng các tên ở cấp cao để biểu thị một giao diện với mạng và con người có thể đọc được. Trong network layer thì các dịch vụ được thực thi dựa trên các capsule type.
    Khi một ứng dụng đã lấy được code cần thiết, nó sẽ đăng ký code với active node cục bộ của nó. Node sau đó sẽ có thể tính toán loại của capsule sử dụng dịch vụ khi nó vào mạng, và sẽ có code cần thiết để khởi tạo việc thực thi dịch vụ đó trong mạng. Lúc đó ứng dụng có thể tự do gửi các capsule thuộc về ứng dụng mới đó vào mạng thông qua node cục bộ. Những capsule này sẽ khởi tạo quá trình phân phối code trong mạng. Cuối cùng khi ứng dụng hoànn tất việc sử dụng dịch vụ mới, nó sẽ unregister code.

    3.5.3. Việc phân phối code trong mạng

    Ở các node trong mạng ANTS, việc phân phối code sẽ được thực thi khi node nhận được một loại capsule mà nó không biết. Kỹ thuật demand load sẽ được sử dụng để lấy code từ node trước mà capsule đã đi qua sau đó sẽ cache code tại node hiện tại để sử dụng sau.
    Code được truyền phải tuân theo một số yêu cầu sau: nó phải đủ thông tin để forward capsule khi đã load nó lên và phải nên có kích thước nhỏ để không tốn resource. Cuối cùng, nó phải cho phép các loại capsule dựa trên dấu hiệu được xác minh để code không thể bị giả.



    Hình 3. 2 Quá trình demand load

    Các bước trong giao thức demand load:

    • Một capsule được forward bởi một active node (được gọi là previous node) có sở hữu một code group tương ứng. Trước khi nó được gửi thì trường previuos address sẽ được thiết lập.
    • Khi capsule đến active node tiếp theo (loading node) và nếu code trùng với type của nó bị thiếu thì một capsule yêu cầu load sẽ được sinh ra và được gửi cho node được xác định bởi trường previous address.
    • Khi yêu cầu load đến previous node thì một nhóm các capsule load response sẽ được sinh ra, chúng sẽ chứa code group được yêu cầu và những thứ khác để load code.
    • Khi load response đến loading node thì chúng sẽ được tái tạo lại để xây dựng code group tương ứng và kết quả sẽ được kiểm tra và sau đó quá trình load sẽ hoànn tất, code group sau đó sẽ được sử dụng để forward capsule và quay lại bước 1.

    Trong ANTS, code được truyền thành những đơn vị forwarding routine thuộc về code group cần thiết cộng với các loại code group. Vì một giao thức được định nghĩa bởi code group type nên thông tin này đủ để tính capsule type và ngăn việc giả code.

    Một vấn đề thực tế nữa trong việc truyền các code group là việc mã hóa các lời gọi giữa những forwarding routine tạo nên một code group. Các lời gọi sẽ được biểu diễn bởi những tên cục bộ được nhúng thẳng trong code của forwarding routine. Những tên cục bộ này chỉ được liên kết trong code group được truyền để ngăn việc giả code.

    Ví dụ: Một routine xây dựng các route có thể có tên là “producer”, còn routine khác đi theo những route đó có thể có tên là “consumer”. Các producer routine có thể được kết với một code group với bất cứ consumer routine, vì vậy cho phép các lời gọi chỉ xảy ra một cách bảo mật giữa những routine được chọn.
    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