Liên mạng
Đến thời điểm này, chúng ta đều ngầm định rằng chúng ta đang làm việc trên một mạng đơn đồng nhất với mọi máy tính chạy cùng một giao thức trong cùng một tầng. Không may là sự ngầm hiểu này hơi quá lạc quan. Đã và đang tồn tại nhiều loại mạng ...
Đến thời điểm này, chúng ta đều ngầm định rằng chúng ta đang làm việc trên một mạng đơn đồng nhất với mọi máy tính chạy cùng một giao thức trong cùng một tầng. Không may là sự ngầm hiểu này hơi quá lạc quan. Đã và đang tồn tại nhiều loại mạng khác nhau bao gồm LAN, WAN, MAN. Nhiều giao thức khác nhau đang được sử dụng rộng rãi trên nhiều tầng mạng khác nhau. Trong phần này, chúng ta sẽ có cái nhìn cẩn trọng hơn về các vấn đề phát sinh khi hai hoặc nhiều mạng được nối kết với nhau thành một liên mạng (internet).
Các mạng máy tính đã đa dạng và sẽ vẫn đa dạng, và có nhiều lý do lý giải cho nhận định này. Trước tiên, cơ sở để cài đặt các mạng là khác nhau. Gần như tất cả các máy PC đều cài đặt TCP/IP. Nhiều công ty lớn sử dụng máy mainframe của IBM sử dụng mạng SNA. Một số lượng lớn các công ty điện thoại đang điều hành các mạng ATM. Một số mạng LAN dùng cho các máy tính PC vẫn còn sử dụng Novell IPX hoặc AppleTalk. Cuối cùng, mạng không dây là một lĩnh vực đang phát triển rộng với nhiều giao thức hoạt động trong đó. Chiều hướng sử dụng mạng phức tạp này sẽ còn tiếp diễn nhiều năm nữa với nhiều lý do về tính kế thừa, kỹ thuật mới, và thực tế là không phải nhà sản xuất nào cũng thích thú với việc giúp cho khách hàng của họ dễ dàng chuyển đổi sang hệ thống của nhà sản xuất khác.
Thứ hai, do máy tính và thiết bị mạng ngày càng rẻ, cho nên cấp có thẩm quyền quyết định mua sắm mạng máy tính ngày càng xuống thấp trong cơ cấu các công ty, tổ chức. Nhiều công ty đưa ra chính sách: dự trù mua sắm trên 1 triệu USD do cấp quản lý cao nhất quyết định, mua sắm trên 100.000 USD do cấp trung quyết định, dưới 100.000 USD thì cấp trưởng bộ phận có toàn quyền quyết định. Vì thế, ví dụ, bộ phận kỹ thuật thì có thể cài đặt các máy trạm Unix chạy TCP/IP, còn bộ phận tiếp thị có quyền cài các máy Mac với giao thức AppleTalk.
Thứ ba, các mạng khác khau sử dụng các công nghệ hoàn toàn khác nhau. Vì thế sẽ không mấy ngạc nhiên nếu thấy một sản phẩm phần cứng mới thì cũng xuất hiện phần mềm mới đi kèm. Ví dụ, một gia đình trung bình hiện nay trang bị mạng giống như một văn phòng trung bình ngày xưa: đầy các máy tính không thể nói chuyện với nhau. Nhưng ở tương lai không xa, đấy sẽ là nơi có đầy đủ điện thoại, TV, máy tính và các dụng cụ khác, tất cả được nối kết với nhau và có thể được điều khiển từ xa. Kỹ thuật mới này chắc chắn sẽ sinh ra một kiểu mạng mới với các giao thức mới.
Một liên mạng (H6.22)
Để lấy ví dụ về cách thức các mạng khác nhau được nối kết với nhau như thế nào, hãy xem xét hình H6.22. Ở đây, ta có một mạng tổ hợp với nhiều địa bàn khác nhau, được kết dính với nhau bởi một mạng WAN/ATM. Tại một địa bàn, một back-bone FDDI được dùng để nối kết một mạng Ethernet, một mạng không dây 802.11 và một trung tâm dữ liệu dùng mạng SNA.
Mục tiêu của nối kết liên mạng là cho phép người dùng trên một mạng con có thể liên lạc được với người dùng trên các mạng con khác. Để làm được việc này, ta phải đảm bảo gởi cho được gói tin từ mạng con này đến bất kỳ mạng con khác. Do các mạng con khác nhau về nhiều lĩnh vực, cho nên không dễ để truyền một gói tin từ nơi này đến nơi kia.
Các mạng con được nối kết với nhau ra sao?
Các mạng có thể được nối liên thông bằng nhiều kiểu thiết bị khác nhau:
- Ở tầng vật lý: Các mạng có thể được nối kết bằng các repeater hoặc hub, những thiết bị chỉ đơn thuần làm nhiệm vụ di chuyển các bit từ mạng này sang mạng kia.
- Ở tầng LKDL: Người ta dùng các cầu nối (bridges) hoặc switches. Chúng có thể nhận các khung, phân tích địa chỉ MAC và cuối cùng chuyển khung sang mạng khác trong khi song song đó, chúng vừa làm nhiệm vụ giám sát quá trình chuyển đổi giao thức, ví dụ như từ Ethernet sang FDDI hoặc 802.11.
- Ở tầng mạng: Người ta dùng các router để nối kết các mạng với nhau. Nếu hai mạng có tầng mạng khác nhau, router có thể chuyển đổi khuôn dạng gói tin, quản lý nhiều giao thức khác nhau trên các mạng khác nhau.
- Ở tầng vận chuyển: Người ta dùng các gateway vận chuyển, thiết bị có thể làm giao diện giữa hai đầu nối kết mức vận chuyển. Ví dụ gateway có thể làm giao diện trao đổi giữa hai nối kết TCP và NSA.
- Ở tầng ứng dụng: Các gateway ứng dụng sẽ làm nhiệm vụ chuyển đổi ngữ cảnh của các thông điệp. Ví dụ như gateway giữa hệ thống email Internet và X.400 sẽ làm nhiệm vụ chuyển đổi nhiều trường trong header của email.
Trong chương này, chúng ta chỉ quan tâm đến việc nối kết liên mạng ở tầng mạng dùng các router. Phương thức hoạt động của router được chỉ ra trong hình H5.23.
Hai mạng Ethernet được nối kết bằng các routers (H6.23)Ở đây, hai router được nối với nhau bằng đường nối điểm-điểm, có thể là đường leased-line dài hàng trăm km. Máy S muốn gởi cho máy D một gói tin, do đó nó đóng gói gói tin này thành một khung và gởi lên đường truyền. Khung đến được router của LAN1, router này liền bóc vỏ khung, lấy gói tin ra. Gói tin này sẽ được phân tích để tìm ra địa chỉ mạng (IP) của máy đích, địa chỉ này sẽ được tham khảo trong bảng vạch đường của router LAN1. Dựa trên địa chỉ này, router LAN1 quyết định chuyển gói sang router LAN2 bằng cách đóng thành khung gởi cho router LAN2.
Nối kết các mạng con dạng mạch ảo
Có hai kiểu liên mạng: dạng mạch ảo và datagram. Trong quá khứ, hầu hết các mạng công cộng là hướng nối kết (các mạng Frame Relay, SNA, ATM cũng vậy). Rồi với sự chấp nhận rộng rãi của công chúng đối với mạng Internet, mạng dạng datagram lên ngôi. Tuy nhiên sẽ là không chính xác khi nói mạng datagram là mãi mãi. Với sự phát triển quan trọng của các mạng đa phương tiện, có vẻ như liên lạc hướng nối kết đang trở lại ở dạng này hay dạng khác, do dễ đảm bảo chất lượng dịch vụ hơn. Vì thế cũng nên dành một chút thời gian để nói về mạng dạng mạch ảo.
Trong liên mạng dạng mạch ảo như trong hình H6.24, một nối kết tới một host ở mạng xa được thực hiện giống như truyền thống. Mạng con thấy rằng đích đến ở xa và nó sẽ phác thảo một mạch ảo đến router gần mạng đích nhất. Rồi nó tạo một mạch ảo từ router đấy đến một gateway của nó (thực chất là router đa giao thức). Gateway này ghi lại thông tin về mạch ảo này trong bảng vạch đường và tiếp tục xây dựng một mạch ảo khác từ nó đến mạng con kế tiếp. Quá trình này cứ tiếp diễn cho đến khi mạch ảo đến được host đích.
dạng mạch ảo (H6.24)
Mỗi khi có một gói tin trung chuyển qua, một gateway lưu gói tin này lại, chuyển đổi khuôn dạng gói tin này và số hiệu mạch ảo khi cần thiết, rồi chuyển nó qua gateway tiếp theo trên con đường mà mạch ảo chỉ ra.
Đặc điểm quan trọng của cách làm này là: một dãy các mạch ảo được thiết lập từ host nguồn, qua một hoặc nhiều gateway rồi mới đến đích. Mỗi gateway duy trì các bảng lưu lại những mạch ảo nào đi qua nó, chúng sẽ được vạch đường ra đâu và số mạch ảo mới là gì.
Nối kết các mạng con dạng datagram
Mô hình liên mạng dạng datagram được chỉ ra trong hình H6.25.
dạng datagram (H6.25)Trong mô hình này, dịch vụ duy nhất mà tầng mạng cung cấp cho tầng vận chuyển là khả năng đẩy gói tin vào mạng con và hy vọng nó đến đích. Mô hình này không đòi hỏi mọi gói tin phải đi đến đích trên cùng một con đường. Trong hình trên, các gói tin đi từ host 1 đến host 2 theo nhiều đường khác nhau. Quyết định vạch đường được đưa ra riêng lẻ cho từng gói tin, tùy thuộc vào lưu lượng thông tin tại thời điểm gói tin được gởi. Chiến lược này cho phép lựa chọn nhiều đường đi cho các gói tin và như vậy sẽ giúp đạt được nhiều băng thông hơn dạng mạch ảo. Mặt trái của nó là: không có sự đảm bảo gói tin có thể đến đích được.
Mô hình như trong hình H6.25 thật ra không đơn giản như ta thấy. Thứ nhất, nếu mỗi mạng con có một tầng mạng riêng thì một gói tin từ một mạng không thể trung chuyển qua mạng khác được. Người ta có thể nghĩ là sẽ có các router đa giao thức làm nhiệm vụ chuyển đổi khuôn dạng gói tin từ dạng này sang dạng kia. Nhưng trừ khi dạng thức của hai gói tin có mối liên hệ gần với nhau và có cùng trường thông tin, không thì việc chuyển đổi khuôn dạng thường kết thúc thất bại. Với lý do này, giải pháp chuyển đổi khuôn dạng thường ít khi được chọn.
Thứ hai, nghiêm trọng hơn, là vấn đề về cơ chế định địa chỉ. Thử tưởng tượng một trường hợp đơn giản: một host trên Internet đang cố gởi một gói tin IP đến một host trong một mạng SNA láng giềng. Địa chỉ IP và SNA là khác nhau. Người ta sẽ cần một cơ chế ánh xạ địa chỉ giữa IP và SNA theo hai chiều. Thêm nữa, quan niệm như thế nào là địa chỉ trong hai mạng trên là hoàn toàn khác nhau. Trong IP, một host (thực ra là một card mạng) có một địa chỉ. Trong SNA, các thực thể khác host (ví dụ thiết bị phần cứng) cũng có thể có địa chỉ. Trong trường hợp tốt nhất, người ta có thể duy trì một cơ sở dữ liệu để ánh xạ mọi thứ này sang mọi thứ kia và ngược lại, và cơ sở dữ liệu này có thể mở rộng được, nhưng nó lại thường là ngọn nguồn của lắm rắc rối.
Một giải pháp khác là xây dựng gói tin internet có hiệu lực toàn cầu, và tất cả các router đều có thể hiểu được nó. Gói tin IP chính là sản phẩm của ý tưởng này. Tuy rằng việc kêu gọi mọi người chấp nhận một khuôn dạng duy nhất là khó do nhiều công ty có tham vọng xây dựng khuôn dạng độc quyền của mình, gói tin IP tự nó vẫn phát triển rộng rãi và được coi là chuẩn toàn cầu.
Vạch đường trong liên mạng
Vạch đường trong liên mạng cũng tương tự như trong mạng con đơn, nhưng thêm vào một chút phức tạp. Xét một liên mạng được cho trong hình 5.23
(a) Một liên mạng. (b) Đồ thị biểu diễn liên mạng (H6.26)
Có sáu mạng con được nối kết với nhau bởi sáu router. Tạo ra mô hình đồ thị trong tình huống này là phức tạp do mỗi router đều có thể truy cập trực tiếp (gởi gói tin) đến router khác. Ví dụ, B trong hình 6.2H6(a) có thể nối kết trực tiếp tới A qua mạng 2, C qua mạng 2, và D qua mạng 3. Điều đó dẫn đến đồ thị như trong hình H6.26(b).
Một khi đồ thị đã được dựng lên, các giải thuật vạch đường đã biết, như Distance-Vector hoặc Link-State, có thể được áp dụng bởi các router đa giao thức. Như vậy sẽ dẫn đến giải thuật vạch đường hai mức: trong nội bộ một mạng con – vạch đường nội hạt (interior gateway protocol) và giữa các mạng con với nhau – vạch đường liên mạng (exterior gateway protocol). Thực tế, do các mạng con là độc lập với nhau, chúng có thể sử dụng các giải thuật khác nhau. Mỗi mạng con được gọi là một hệ thống tự trị (Autonomous System – AS).
Một gói tin liên mạng khởi đầu bằng địa chỉ LAN cục bộ của nó, được phát tới router đa giao thức nội bộ, tại đó, mã lệnh ở lớp mạng sẽ quyết định chuyển gói tin đó qua router nào kế tiếp. Nếu router đó có thể đối thoại được bằng giao thức của mạng nội bộ, thì gói tin sẽ được chuyển trực tiếp. Ngược lại, gói tin sẽ được đóng khung bằng giao thức của router đó trước khi chuyển tiếp. Tiến trình này cứ tiếp diễn cho đến khi gói tin đến được đích.
Một trong những điểm khác nhau giữa vạch đường liên mạng và vạch đường nội hạt là vạch đường liên mạng đòi hỏi việc đi qua nhiều lãnh địa quốc tế. Nhiều luật khác nhau được đặt ra. Chẳng hạn luật của Canada nói rằng: dữ liệu từ Canada gởi đến một nơi của Canada thì không được quá cảnh ra bên ngoài. Nghĩa là lưu thông từ Windsor, Ontario đến Vancouver không được quá cảnh sang Detroit của Mỹ, trong khi con đường ngang qua Detroit là con đường ngắn nhất và rẻ nhất.
Điểm khác nhau nữa giữa vạch đường nội hạt và liên mạng là chi phí. Trong cùng một mạng, một giải thuật tính cước phí duy nhất được áp dụng. Tuy nhiên, nhiều mạng khác nhau sẽ có cơ chế quản lý cước phí khác nhau.
Phân mảnh và tái hợp
Mỗi mạng sẽ qui định kích cỡ tối đa của các datagram chạy trong nó. Sự giới hạn này xuất phát từ nhiều lý do:
- Phần cứng: ví dụ như kích cỡ giới hạn của khung Ethernet.
- Hệ điều hành: ví dụ như tất cả các buffer đều có kích thước 512 bytes.
- Giao thức: số lượng các bits trong trường chỉ chiều dài của gói tin.
- Tương thích với một chuẩn quốc gia hay quốc tế nào đó.
- Mong muốn giảm thiểu tác động của việc truyền lại do lỗi gây ra.
- Mong muốn ngăn chặn một gói tin chiếm đường truyền quá lâu.
Và kết quả là các nhân viên thiết kế mạng không được tự do chọn kích thước gói tin tối đa như ý thích của họ. Kích thước dữ liệu tối đa của gói tin thay đổi từ 45 bytes (ATM cell) đến 65515 (gói tin IP).
Vấn đề xuất hiện rõ ràng khi môt gói tin lớn muốn đi ngang một mạng con có kích thước gói tin tối đa quá nhỏ. Một giải pháp là làm cho vấn đề này không xảy ra. Nói cách khác, liên mạng nên sử dụng một giải thuật vạch đường có thể tránh được việc gởi gói tin qua các mạng không có khả năng tiếp nhận. Tuy nhiên giải pháp này thực ra không giải quyết được vấn đề. Nếu mạng đích không đủ khả năng tiếp nhận gói tin thì sao?
Giải pháp duy nhất là cho phép các gateway chia nhỏ gói tin thành nhiều mảnh (fragment), gởi các mảnh này đi như là một gói tin độc lập. Tuy nhiên việc tái hợp các mảnh con này lại là việc khó.
(a) Sự phân mảnh trong suốt. (b) Sự phân mảnh không trong suốt (H6.27)Có hai chiến lược tái hợp các mảnh lại thành gói tin gốc: trong suốt và không trong suốt.
Trong chiến lược phân mảnh trong suốt, khi một gói tin lớn đi qua một mạng con và mạng con này quyết định phải phân mảnh gói tin, một gateway của mạng con này sẽ làm nhiệm vụ phân mảnh gói tin lớn đó. Khi các mảnh đi hết qua mạng con, phải có một gateway khác đứng ra tập hợp lại chúng, tái tạo lại gói tin ban đầu và chuyển tiếp đến mạng con kế tiếp. Ví dụ trong hình H6.27, ở ngõ vào Mạng 1, gói tin lớn được phân mảnh bởi gateway G1, sau khi các mảnh đi qua hết Mạng 1, gateway G2 sẽ tập hợp chúng lại và tái tạo thành gói tin ban đầu.
Chiến lược phân mảnh trong suốt rất trực quan, tuy nhiên có nhiều vấn đề phải bàn. Thứ nhất, gateway ở đầu ra phải biết khi nào nó đã thu lượm lại hết các phân mảnh. Thứ hai, làm sao để mọi phân mảnh phải đi ra cùng một gateway. Thứ ba, chi phí bỏ ra để phân mảnh và tái hợp gói tin lớn khi nó đi qua hàng loạt các mạng con.
Với chiến lược phân mảnh không trong suốt, các mạng con trung gian có thể phân mảnh gói tin lớn, nhưng không có nhiệm vụ tái hợp lại nó. Việc tái hợp chỉ được thực hiện tại đích đến của gói tin này.
Chiến lượt phân mảnh không trong suốt đòi hỏi mọi host trên mạng đều có khả năng tái hợp thông tin. Ngoài ra nó còn làm phát sinh chi phí cho các header của các mảnh con. Tuy nhiên cái lợi đạt được là: do chiến lược này có quyền chọn lựa nhiều gateway ở đầu ra của mạng con, cho nên hiệu suất vạch đường và truyền gói tin tăng lên nhiều lần.
Từ đây, phát sinh nhu cầu về một cách thức đánh số các mảnh sao cho quá trình tái hợp được dễ dàng. Một cách đánh số thông dụng nhất là cách đánh số của internet.
Ví dụ một gói tin có 10 bytes, số thứ tự của gói tin là 27 sẽ được biểu diễn như sau:
(a) Hình dạng gói tin ban dầu (H6.28)Offset của mảnh là 0 vì đây chính là mảnh đầu tiên hay duy nhất trong gói tin. Bit kết thúc khung là 1 nghĩa là đã hết gói tin, là 0 nghĩa là còn mảnh nằm sau.
Bây giờ gói tin này đi qua một mạng con có giới hạn kích thước gói tin tối đa là 8 bytes, nó sẽ bị phân làm hai mảnh:
Gói bị chia thành hai mảnh 8 bytes và 2 bytes (H6.28(b))Mảnh đầu tiên có offset trong gói tin là 0, bit kết thúc là 0 (còn mảnh thứ hai). Mảnh thứ hai có offset trong gói tin là 8 (nó bắt đầu ở vị trí thứ 8), và là mảnh cuối cùng.
Nếu hai mảnh trên lại đi ngang qua gateway có giới hạn gói tin là 5 bytes, thì chúng sẽ bị phân mảnh như sau:
Gói tin bị phân làm 3 mảnh (H6.28(c))