A. Mục tiêu
Sau khi học xong chương này, anh/ chị sẽ nắm được:
Nắm được các phương pháp định tuyến trên IP
Nắm được kiến trúc của Ipv4 và Ipv6
Quản lý thông tin với TCP
B. Nội dung
1 Định tuyến trên giao thức IP ... 2 1.1 Multicast routing ... 2 1.2 Anycast routing ... 6
2 Ipv4 và Ipv6 ... 8 2.1 Cấu trúc gói tin Ipv4 ... 8 2.2 Ipv6 ... 9
3 Quản lý thông tin với TCP ... 10 3.1 Định dạng gói tin TCP ... 10 3.2 Điều khiển luồng dữ liệu ... 12 3.3 Điều khiển tắc nghẽn ... 14
C. Tài liệu tham khảo
[1] TCP Illustrated – Volume 1, Kevin R. Fall, W. Richard Stevens, Pearson Education Inc, 2012 [2] Computer Networks, TanenBaum, Wetherall, Peason Education Inc, 2011
[3] Computer Networking A top-down approach, Kurose, Ross, 2017
[4] Privacy preservation using spherical chord, Doyal Tapan Mukherjee, Master Thesis, Misouri University, 2014.
[5] A brief introduction and analysis of the Gnutella protocol, Gayatri Tribhuvan, University of Freiburg
Mạng Nâng Cao – Bài 2 Trang 2
CÁC GIAO THỨC ĐỊNH TUYẾN
1 Định tuyến trên giao thức IP
Chức năng chính của tầng mạng là định tuyến các gói tin từ nút nguồn đến nút đích. Trong hầu hết các mạng, các gói tin sẽ yêu cầu nhiều hops để di chuyển theo hành trình xác định được. Chỉ có duy nhất 1 ngoại lệ được phép không thông qua định tuyến là trường hợp các mạng quảng bá, trong trường hợp nút nguồn và nút đích không cùng phân đoạn mạng. Các giải thuật định tuyến lựa chọn các tuyến đường và cấu trúc dữ liệu mà chúng sử dụng phần lớn trong lớp mạng.
Giải thuật định tuyến là một phần của lớp ứng dụng mạng chịu trách nhiệm quyết định đường vào, ra của các gói tin khi đi qua bộ định tuyến (router). Nếu mạng sử dụng gói tin nội bộ, giải thuật sẽ thực hiện lặp lại đối với các gói tin đến theo định tuyến đã được chọn trong lần gần nhất. Nếu mạng sử dụng chuyển mạch
ảo, giải thuật định tuyến chỉ được tạo ra khi có chuyển mạch mới được thiết lập. Sau
đó, các gói tin được chuyển tiếp trên tuyến đã được thiết lập bởi bộ định tuyến. Trường hợp trên đôi lúc gọi là định tuyến phiên (session routing) bởi vì bộ định tuyến duy trì hiệu lực cho mỗi phiên làm việc (VD: Khi đăng nhập bằng VPN). Các giải thuật định tuyến cơ bản đã được đề cập trong môn học Mạng truyền thông, trong phần này chúng ta sẽ tìm hiểu thêm về cơ chế quảng quá định tuyến là định tuyến nhiều nút (multicast routing) và định tuyến nút bất kỳ (anycast routing)
1.1 Multicast routing
Trong một vài ứng dụng như trò chơi trực tuyến nhiều người chơi hoặc truyền hình trực tiếp các sự kiện thể thao có rất nhiều người theo dõi ở các địa điểm khác nhau, các gói tin sẽ phải gửi đến nhiều người nhận. Trừ khi nhóm người nhận rất nhỏ, quá trình gửi các gói tin riêng biệt đến từng nút sẽ làm tiêu tốn nhiều chi phí về băng thông và thời gian. Mặt khác, nếu sử dụng các gói tin quảng bá lại gây lãng phĩ tài nguyên nếu các nút nhận trong một thời điểm lại giảm xuống (vd chỉ còn 1,000 nút mạng đang theo dõi trong khi cả hệ thống mạng lên đến 1,000,000 nút), vì vậy
Mạng Nâng Cao – Bài 2 Trang 3
các nút mạng còn lại không có nhu cầu để nhận các bản tin mà 1,000 nút mạng kia đang theo và yêu cầu nhận. Để giải quyết yêu cầu này, chúng ta cần gửi các gói tin đến các nhóm nút mạng đã được xác định trước thay vì phải thực hiện quảng bá toàn
bộ hệ thông mạng. Phương pháp gửi gói tin đến nhóm các nút mạng được gọi là định tuyến nhiều nút (multicasting) và giải thuật định tuyến được gọi là giải thuật định tuyến nhiều nút (multicasting routing). Tất cả các nút định tuyến theo nhóm đều có cơ chế để tạo và hủy nhóm và địa chỉ của nhóm gồm cả các thành viên đều
có khả năng định danh được bởi bộ định tuyến.
Cơ chế định tuyến nhiều nút được xây dựng dựa trên định tuyến quảng bá mà chúng ta đã đề cập đến trước đây, các gói tin được gửi thông qua một cây khung để chuyển tiếp các gói tin để các thành viên trong nhóm mà không ảnh hưởng đến băng thông chung của toàn mạng. Tuy nhiên, cây khung tốt nhất được sử dụng sẽ phụ thuộc vào thời điểm nhóm được tạo gồm nhiều nút dày đặc hoặc thưa nút, điều này
sẽ làm cho phần lớn các nút đều yêu cầu được nhận như mạng quảng bá hoặc chỉ có một vài nút có yêu cầu nhận tin.
Nếu trong một nhóm lớn, thay vì sử dụng định tuyến nhiều nút, định tuyến quảng bá được kiến nghị sử dụng bởi vì hiệu quả của nó sẽ gửi đến toàn bộ hệ thống mạng và chỉ ảnh hưởng nhỏ đến các nút không có nhu cầu nhận tin (vì số lượng các nút này nhỏ). Nhưng quảng bá sẽ gửi đến các bộ định tuyến không nằm trong cùng nhóm, điều này sẽ gây lãng phí băng thông. Giải pháp được khám phá bởi 2 nhà khoa học Deering và Cheriton (1990) là sử dụng truyền quảng bá trên cây khung đã được cắt tỉa các đường liên khết không liên quan đến các thành viên trong nhóm. Kết quả làm tăng được hiệu quả quảng bá nhiều nút với cây khung.
Mạng Nâng Cao – Bài 2 Trang 4
Ví dụ với hình trên, ta có hai nhóm 1 và 2 trong hệ thống mạng (a). Một vài
bộ định tuyến đính kèm các nút mạng thuộc một nhóm mạng 1 hoặc 2, trong khi đó một vài bộ định tuyến thuộc cả 2 nhóm. Ta xây dựng một cây khung cho phần lớn các bộ định tuyến theo hình bên trái (a) để tạo được cây khung với nhóm mạng trên
ở hình (b). Cây khung này các thể được sử dụng để quảng bá nhưng như vậy thì không còn tồn tại định tuyến nhiều nút tại hệ thống mạng này nữa (vì đã quảng bá đến toàn mạng). Trong hình (c), cây khung chỉ tạo cho với các nút mạng thuộc nhóm
1, các đường liên kết có nhóm 2 đều bị loại bỏ. Kết quả là cây khung này chỉ quảng
bá cho nhóm 1 thay vì quảng bá toàn mạng như cây khung (b). Kết quả tương tự với cây khung (d) chỉ quảng bá tới các nút mạng thuộc nhóm 2.
Có nhiều cách để cắt tỉa một cây khung. Cách đơn giản nhất được sử dụng nếu các liên kết định tuyến trạng thái liên kết được sử dụng, nó cần thêm thông tin hoàn chỉnh về cấu hình mạng trong đó chứa thêm thông tin các nút mạng nào thuộc
về nhóm nào. Khi đã có thông tin từng nút mạng, mỗi bộ định tuyến có thể tự tạo
Mạng Nâng Cao – Bài 2 Trang 5
một cây khung và cắt tỉa nó cho mỗi nút gửi đến nhóm bằng cách loại bỏ liên kết của các nút không thuộc nhóm đó. MOSPF (Multicast OSPF) là một ví dụ về giao thức định tuyến nhiều nút theo phương pháp trên, giao thức được đề xuất bởi Moy (1994).
Với định tuyến vector khoảng cách, một phương pháp cắt tỉa khác được sử dụng. Ý tưởng của giải thuật tìm đường chuyển tiếp ngược. Tuy nhiên, khi một bộ định tuyến với không có nút mạng quan tâm trong các nhóm riêng biệt và không có liên kết tới các bộ định tuyến khác sẽ nhận được các gói tin dạng multicast, nó sẽ phản hồi bằng một thông điệp “cắt tỉa” (PRUNE) thông báo với các nút lân cận rằng gói tin không được gửi đến bất kỳ nhóm multicast nào từ nút gửi cho nó. Khi bộ định tuyến không có thành viên nào của nhóm thuộc về máy chủ của nó nhận được thông điệp trên, nó cũng phản hồi thông điệp PRUNE. Theo cách này, cây khung được cắt tỉa theo giải thuật đệ quy. DVMRP (Distance Vector Multicast Routing Protocol) là một ví dụ về giao thức định tuyến đa nút nhận hoạt động theo giải thuật trên (Waitzman et al., 1988).
Một trong những nhược điểm của cây khung là tiêu tốn tài nguyên của bộ định tuyến, đặc biệt là trong các hệ thống mạng lớn. Giả sử rằng một mạng có n nhóm, mỗi nhóm có m nút. Tại mỗi bộ định tuyến và đối với mỗi nhóm, m cây khung cắt tỉa sẽ phải được lưu trữ, do vậy tổng số cây sẽ lên đến m * n cây.
Một các thiết kế thay thế khác là sử dụng cây cơ sở (core-based tree) để tính toán mỗi cây khung đơn cho từng nhóm (Ballardie et al., 1993). Tất cả các bộ định tuyến đồng thuận tại nút gốc gọi là nút core hoặc rendezvous point và bắt đầu xây dựng cây bằng cách gửi các gói tin từ các thành viên đến nút gốc. Cây là sự hợp nhất của các đường đi mà đã được dò vết bởi các gói tin này. Hình (a) dưới đây biểu diễn cây cơ sở cho nhóm 1. Để gửi đến nhóm này, nút gửi sẽ gửi một gói tin đến nút gốc. Khi gói tin đến nút gốc, nó được chuyển tiếp xuống dưới cây. Hình (b) biểu diễn nút gửi ở phía bên phải của mạng. Để tối ưu hóa hiệu suất, các gói tin đích của nhóm sẽ không cần phải gửi đến nút gốc trước khi chúng được gửi multicast. Ngay khi các
Mạng Nâng Cao – Bài 2 Trang 6
gói tin đến được cây, nó được chuyển tiếp đến nút gốc, sau đó tiếp tục được chuyển tiếp về các nhánh.
Một cây được chia sẻ không phải là tối ưu cho tất cả các nguồn. Ví dụ như hình (b), gói tin từ nút gửi bên phải chuyển đến đỉnh trên cùng bên phải nhóm các thành viên thông qua nút core bằng 3 hops, thay vì chuyển đến trực tiếp. Sự kém hiệu quả phụ thuốc vào vị trí của điểm core, nhưng thông thường điểm lõi core sẽ được đặt ở vị trí giữa so với nút gửi. Khi chỉ có một nút gửi đơn, như trong các ứng dụng video trực tuyến, sử dụng chính nút gửi làm nút core là một cách tối ưu nhất. Cũng cần lưu ý rằng các cây chia sẻ có thể tiết kiệm được phần lớn chi phí lưu trữ, gửi bản tin và khả năng tính toán. Mỗi bộ định tuyến chỉ lưu trữ duy nhất một cây cho mỗi nhóm, thay vì phải lưu trữ m cây. Ngoài ra, các bộ định tuyến không thuộc cây được giải phóng để thực thi nhiệm vụ riêng không liên quan đến nhóm. Chính vì lý do đó, cách tiếp cận cây chia sẻ như là cây lõi cơ sở được sử dụng cho định tuyến đa điểm đến các nhóm thưa trên Internet như là giao thức phổ biến PIM (Protocol Independent Multicast) (Ferner et al., 2006).
1.2 Anycast routing
Một mô hình vận chuyển gói tin khác gọi là định tuyến nút bất kỳ (anycast) cũng được sử dụng trong nhiều trường hợp. Trong định tuyến nút bất kỳ, một gói tin
Mạng Nâng Cao – Bài 2 Trang 7
được chuyển tới thành viên gần nhất của nhóm (Partdge et al., 1993). Cơ chế tìm đường theo hướng này được gọi là định tuyến nút bất kỳ.
Giả sử rằng, chúng ta muốn định tuyến bất kỳ đến các thành viên trong nhóm
số 1. Chúng sẽ được gán địa chỉ là “1” thay vì mỗi thành viên có một địa chỉ riêng. Định tuyến vector khoảng cách sẽ phân phối các vector đường đi bình thường và các nút sẽ chọn đường ngắn nhất tới địa chỉ 1. Kết quả là nút phát sẽ gửi gói tin tới nút đích gần nhất đại diện cho nhóm 1. Bộ định tuyến trong hình (a) biểu diễn ý nghĩa này. Thủ tục này hoạt động bởi vì giao thức định tuyến không nhận ra có nhiều địa chỉ 1 trên mạng thay vào đó nó chỉ nhận diện ra một nút có địa chỉ “1” gần nó nhất.
Do vậy, bộ định tuyến sẽ coi toàn bộ các nút có địa chỉ 1 là một nút duy nhất, trong hình (b)
Đối với định tuyến trạng thái liên kết cũng tương tự, mặc dù có một sự cân nhắc rằng giao thức định tuyến chưa phải là đường ngắn nhất đi qua nút 1. Điều này có thể dẫn đến bước nhảy siêu không gian từ nút 1 thực sự gần nút gửi nhất mà thay vào đó nó định tuyến tới nút 1 nằm ở mạng khác. Tuy nhiên, giao thức định tuyến trạng thái liên két săn sàng tạo các đường liên kết duy nhất giữa các bộ định tuyến
và máy chủ.
Mạng Nâng Cao – Bài 2 Trang 8
2 Ipv4 và Ipv6
2.1 Cấu trúc gói tin Ipv4
Cấu trúc và hoạt động của bản tin Ipv4 đã được nghiên cứu trong giáo trình Mạng máy tính trong phần này chúng ta sẽ nhắc lại các thành phần của gói tin Ipv4, địa chỉ Ipv4 trước khi chuyển sang so sánh và tìm hiểu kiến trúc của Ipv6. Kiến trúc header của gói tin Ipv4 bao gồm các trường như sau:
Version: đánh dấu phiên bản của gói tin IP.
Header length: độ dài vùng header của gói tin IP
ToS (Type of Service): phân biệt loại dịch vụ của tầng trên và mức ưu tiên của dịch vụ được cung cấp.
Total length: độ dài gói tin IP.
Identifier, flags, fragment offset: ba trường dùng để định danh mảnh (fragment) của gói tin IP.
TTL (Time-to-live) quy định số bước nhảy hops của mỗi gói tin IP khi di chuyển trên mạng.
Protocol: xác định loại giao thức tầng giao vận.
Header Checksum: xác định lỗi trên gói tin IP nhận được.
Source Address, Destination Addess: địa chỉ IP nguồn và địa chỉ IP đích.
Options, tùy chọn cho phép mở rộng vùng header của gói tin IP.
Data (payload): dữ liệu của gói tin IP được đóng gói trong Transport Segment.
Mạng Nâng Cao – Bài 2 Trang 9
Các nghiên cứu về hoạt động và phân mảnh của Ipv4 đã được tìm hiểu trong các môn học trước, chúng ta sẽ so sanh với Ipv6 để thấy được các nâng cấp, cải tiến trong công nghệ hiện nay.
2.2 Ipv6
Nhưng năm 1990, sự ra đời của Ipv4 đã tạo ra thành công của giao thức IP, song song với đó việc nghiên cứu phát triển các giao thức mở rộng tiếp tục được thực hiện nhằm mở rộng giới hạn của Ipv4. Năm 2011, IANA thông báo đã cạn kiệt nguồn tài nguyên địa chỉ Ipv4 cung cấp cho các khu vực và chuyển sang sử dụng
Ipv6. Kiến trúc của Ipv6 header tương tự như Ipv4 đã được biểu diễn ở trên, chỉ có một số điểm khác biệt như:
Mở rộng vùng địa chỉ: vùng địa chỉ được mở rộng từ 32 bit lên 128 bits cung cấp một không gian địa chỉ cực lớn cho các ứng dụng và thiết bị sử dụng sau này. Ipv6 cung cấp loại địa chỉ mới gọi là anycast address, cho phép các gói tin được chuyển đến nút gấn nhất trong một nhóm.
Tăng kích thước vùng header: để chứa nhiều thông tin quản lý gói tin và cố định tại 40 byte. Điều này làm giảm việc tính toán độ dài header cho mỗi gói tin nhận được.
Mạng Nâng Cao – Bài 2 Trang 10
Đánh nhãn luồng: Ipv6 có một đinh nghĩa về trạng thái luồng [RFC 2460] cho phép gán nhãn các gói tin thuộc từng luồng của mỗi nút gửi.
Traffic class: tương tụ như trường TOS trong Ipv4
Flow Label: định danh và đánh dấu luồng dữ liệu
Next header: tương tự trường Protocol trong Ipv4
Hop limit: tương tự TTL
Source Address, Destination Addres: địa chỉ trong Ipv6 được mở rộng lên 128 bit
Phân mảnh và gộp gói tin: Ipv6 không cho phép phân mảnh và gộp mảnh tại các router, thao tác này chỉ được thực hiện tại nguồn phát và đích nhận.
Với kiến trúc không có nhiều thay đổi nhưng lại có nhiều cải tiến trong phương pháp tổ chức, định tuyến và quản lý gói tin, Ipv6 hiện tại đã là giao thức phổ biến trên nền tảng Internet hiện nay. Không gian địa chỉ mở rộng, tính hiệu quả trong định tuyến sẽ là yếu tố để các ứng dụng hiện đại sẽ chuyển dịch từ Ipv4 sang Ipv6.
3 Quản lý thông tin với TCP
3.1 Định dạng gói tin TCP
TCP là giao thức truyền thông hướng kết nối bởi vì các ứng dụng phải thiết lập giai đoạn “bắt tay” trước khi thực hiện truyền tin. Thủ tục bắt tay ba bước là yêu cầu đặc trưng của truyền thông tin cây TCP. Trong thủ tục này cả hai bên truyền thông đều phải khởi tạo các biến trạng thái kết hợp với kết nối TCP để quản lý thông tin và điều khiển luồng tin.
Khi kết nối TCP được thiết lập, hai ứng dụng đầu cuối TCP có thể trao đổi dữ liệu với nhau. Khi dữ liệu được gửi qua lớp TCP xuống bộ đệm TCP với kích thước được khởi tạo trong phiên bắt tay. Ở đầu nhận, TCP liên tục thu thập các gói tin TPC
và lưu vào vùng đệm trước khi chuyển lên tầng ứng dụng. Trong quá trình truyền tin kích thước của mỗi bản tin được đặt giới hạn bằng giá trị MTU (maximum transmission unit) để đảm bảo rằng gói tin TCP sau khi đóng gói cũng sẽ không
Mạng Nâng Cao – Bài 2 Trang 11
vượt quá kích thước của một khung dữ liệu quy định tại lớp liên kết mạng (link- layer).
Khi các segment về đến đầu nhận, chúng được đặt tại bộ đệm nhận trước khi chuyển lên cho ứng dụng. Mỗi đầu kết nối đều thiết lập một vùng đệm gọi là bộ đệm gửi và bộ đệm nhận được sử dụng để điều khiển luồng truyền trên TCP. Trước khi tìm hiểu về cơ chế điều khiển luồng, chúng ta hãy ôn lại kiến trúc của một gói tin TCP như sau.
Source Port, Destination Port (32 bit): địa chỉ cổng nguồn, đích được sử dụng để tách và dồn kênh cho các ứng dụng lớp trên, nó được sử dụng để định danh dịch
vụ tầng ứng khi truyền dữ liệu qua các cổng tầng giao vận.