Wednesday, June 11, 2014

IP header và vấn đề định tuyến

1. IP Header
          Internet Protocol (IP) là một giao thức liên mạng hoạt động ở tầng Network trong mô hình OSI. IP quy định cách thức định địa chỉ các máy tính và cách thức chuyển tải các gói tin qua một liên mạng. IP được đặc tả trong bảng báo cáo kỹ thuật có tên Request For Comments (RFC). IP có hai chức năng chính: cung cấp dịch vụ truyền tải các gói tin qua một liên mạng, phân mảnh và hợp lại các gói tin. Các gói dữ liệu xuất phát từ tầng Application, đến tầng Network được thêm vào một cấu trúc IP Header. Gói dữ liệu sau khi được thêm vào cấu trúc IP Header thì được gọi là IP Diagram (Packet). Hiện nay, có hai phiên bản IP là IP Version 4 (IPv4) và IP Version 6 (IPv6), do đó có 2 cấu trúc tương ứng là IP Header Version 4 và IP header Version 6.
a. Cấu trúc IP Header Version 4
       IP Header Version 4 (tiêu đề gói tin IPv4) gồm 12 trường bắt buộc với tổng chiều dài là 20 byte (không tính các trường Options và Data). Cấu trúc của IP Header Version 4 như hình sau:
       

Hình 1 cấu trúc IP Header Version 4
          Theo cấu trúc trên:
-      Version (4 bit): Chỉ ra phiên bản IP đang được dùng là IPv4 (0100). Nếu trường này khác với phiên bản IP của thiết bị nhận, thiết bị nhận sẽ từ chối và loại bỏ các gói tin này. Bằng cách nhìn vào số phiên bản, Router có thể xác định phần còn lại của IP Datagram.
-      IP Header Length (IHL) (4 bit): Chỉ ra chiều dài của header, mỗi đơn vị là 1 word, mỗi word = 32 bit = 4 byte. Ở đây trường IP Header Length có 4 bit nên có 2^4 = 16 word = 16 x 4byte = 64 byte nên chiều dài header tối đa là 64 byte. Bình thường Hearder dài 20 byte. Đây là chiều dài của tất cả các thông tin Header.
-      Type Of Services (TOS) (8 bit): Chỉ ra cách thức xử lý gói dữ liệu, có độ ưu tiên hay không, độ trễ cho phép của gói dữ liệu. Trường này thường được dùng để thực hiện quản lý chất lượng dịch vụ mạng.
-      Total Length (16 bit): Chỉ ra chiều dài của toàn bộ IP Datagram tính theo byte, bao gồm data và phần header. Do có 16 bit nên tối đa là 2^16 = 65536 byte = 64 Kb nên chiều dài tối đa của 1 IP Datagram là 64 Kb.
-      Identification (16 bit): Chỉ mã số của  1 IP Datagram , giúp bên nhận có thể ghép các mảnh của 1 IP Datagram lại với nhau vì IP Datagram phân thành các mảnh và  các mảnh thuộc cùng  1 IP  Datagram sẽ có cùng Identification.
-      Flag (3 bit): Bit 0: không dùng, Bit 1: cho biết gói có phân mảnh hay không, Bit 2: nếu gói IP Datagram bị phân mảnh thì mảnh này cho biết mảnh này có phải là mảnh cuối không. Bao gồm 6 cờ: URG – cờ cho trường Urgent pointer, ACK – cờ cho trường Acknowledgement, PSH – hàm Push, RST – thiết lập lại đường truyền, SYN – đồng bộ lại số thứ tự, FIN – không gửi thêm dữ liệu.
-      Fragment Offset (13 bit): Báo bên nhận vị trí offset của các mảnh so với gói IP datagram gốc  để có thể ghép lại thành IP datagram gốc.
-      Time To Live (TTL) (8 bit): Chỉ ra số bước nhảy (hop) mà một gói có thể đi qua. Con số này sẽ giảm đi 1, khi gói tin đi qua 1 router. Khi router nào nhận gói tin thấy  TTL đạt tới 0 gói này sẽ bị loại. Đây là giải pháp nhằm ngăn chặn tình trạng lặp vòng vô hạn của gói tin trên mạng.
-      Protocol (8 bit): Chỉ ra giao thức nào của tầng trên (tầng Transport) sẽ nhận phần data sau khi công đoạn xử lí IP diagram ở tầng Network hoàn tất hoặc chỉ ra giao thức nào của tầng trên gởi segment xuống cho tầng Network đóng gói thành IP Diagram, mỗi giao thức có 1 mã (06:  TCP, 17: UDP, 01:  ICMP…).
-      Header CheckSum (16 bit): Hỗ trợ cho Router phát hiện lỗi bit trong khi nhận IP datagram. Giúp bảo đảm sự toàn vẹn của IP Header.
-      Source IP Address (32 bit): Chỉ ra địa chỉ của thiết bị truyền IP diagram (Xem cấu trúc của địa chỉ IPv4).
-      Destination IP Address (32 bit): Chỉ ra địa chỉ IP của thiết bị sẽ nhận IP diagram (Xem cấu trúc của địa chỉ IPv4).
-      IP Option: kích thước không cố định, chứa các thông tin tùy chọn như: Time stamp – thời điểm đã đi qua Router, Security – cho phép Router nhận gói dữ liệu không, nếu không thì gói sẽ bị hủy, Record Router – lưu danh sách địa chỉ IP của Router mà gói phải đi qua, Source Route – bắt buộc đi qua Router nào đó. Lúc này sẽ không cần dùng bảng định tuyến ở mỗi Router nữa.
-      Padding: Các số 0 được bổ sung vào trường này để đảm bảo IP Header luôn là bội số của 32 bit.
b. Cấu trúc IP Header Version 6
          Cấu trúc của IP Header Version 6 (tiêu đề gói tin IPv6) bao gồm vài trường có chức năng giống như IP Header Version 4 (nhưng tên các trường đã thay đổi) kết hợp thêm trường mới. Trường mới thể hiện được hiệu quả hoạt động của IPv6 hơn so với IPv4.
    

Hình 2 Cấu trúc của IP Header Version 4 thay đổi so với IP Header version 6
Theo hình 5.2, các trường đã xóa bỏ trong hình (IHL, Identification, Flags, Fragment Offset, Header Checksum, IP Options, Padding) đã bị bỏ hoàn toàn trong cấu trúc của IP Header Version 4. Các trường được tô xám (Type of Service, Total Length, Time to Live, Protocol) chức năng vẫn được giữ trong IP Header Version 6 nhưng tên và vị trí đặt các trường này đã bị thay đổi.
                 

Hình 3 Cấu trúc của IP Header Version 6
Theo cấu trúc trên, các trường Traffic Class, Playload Length, Next Header, Hop Limit được đổi tên và vị trì trong IP Header Version 6. IP Header Version 6 có xuất hiện một trường mới hoàn toàn là Flow Label.
-      Version (4bit): Chỉ ra phiên bản IP đang được dùng là IPv6 (0110).
-      Traffice Class (8 bit): Chức năng giống với trường Type of Service trong IP Header Version 4.
-      Playload Header (16 bit): Chức năng giống với trường Total Length trong IP Header Version 4.
-      Next Header (8 bit): Chức năng giống với trường Protocol trong IP Header Version 4.
-      Hop Limit (8 bit): Chức năng giống với trường Time to Live trong IP Header Version 4.
-      Source IP Address (128 bit): Chỉ ra địa chỉ của thiết bị truyền IP diagram (xem cấu trúc của địa chỉ IPv6).
-      Destination IP Address (128 bit): Chỉ ra địa chỉ của thiết bị nhận IP diagram (xem cấu trúc của địa chỉ IPv6).
-      Flow Label (20 bit): Trường này cho phép một luồng cụ thể của lưu lượng phải được dán nhãn. Do đó, trường này hỗ trợ tính năng quản trị chất lượng dịch vụ mạng. Nó còn được sử dụng cho kỹ thuật chuyển mạch đa lớp.
  
Định tuyến
          Hoạt động định tuyến được thực hiện bởi các thiết bị định tuyến (Router) tại tầng Network trong mô hình OSI.
a. Tổng quan định tuyến
          Xét một ví dụ cụ thể như sau: sinh viên A đang đứng tại trường Đại Học Công Nghê TP.HCM đang muốn đi đến chợ Bến Thành. A có thể đi đến chợ Bến Thành bằng 1 trong 3 đường sau đây:
-      Đường 1: Đi Điện Biên Phủ à Võ Thị Sáu à Nam Kỳ khởi Nghĩa à Bến Thành.
-      Đường 2: Đi Điện Biên Phủ à Bạch Đằng à Phan Đăng Lưu à Hoàng Văn Thụ à Cách Mạng Tháng Tám à Bến Thành.
-      Đường 3: Qua cầu Sài Gòn à ngã tư Thủ Đức à Kha Vạn Cân à Bến Thành.
Chắc chắn A sẽ chọn Đường 1 vì đây là đường tối ưu nhất (ngắn nhất và tốt nhất). Để đi được bằng Đường 1 đến Bến Thành, A cũng cần biết được điểm kế tiếp khi đang đi trên Điện Biên Phủ là Võ Thị Sáu chứ không phải Bạch Đằng. Nhưng A cũng phải biết 2 đường đi còn lại. Vì nếu như Đường 1 bị hư hỏng thì  A cũng biết đi con đường thứ 2.
Ví dụ trên cũng tương tự như hoạt động định tuyến. Hoạt động định tuyến đầy đủ được thể hiện bằng 4 điều sau:
-          Định tuyến là việc Router xác định đường đi tối ưu nhất từ một điểm này đến một điểm khác trên mạng.
-          Router cần phải xác định được Router kế tiếp mà gói tin cần phải đi qua.
-          Router cũng cần biết tất cả đường có thể đến điểm đích.
-          Router tiến hành phân tích IP Header của gói tin và đọc trường Destination IP Address để xác định tuyến đường đi cho gói tin.
b. Bảng định tuyến và hoạt động định tuyến
Khi Router tính toán xong và chọn được đường đi tối ưu nhất bằng các giao thức định tuyến (Routing Protocol). Router cần lưu lại thông tin những đường đi tối ưu này trong một bảng gọi là bảng định tuyến. Router sẽ sử dụng bảng định tuyến này trong việc quyết định đường đi của các gói tin từ nguồn đến đích.
Xét một ví dụ cụ thể như sau:
       

Hình 3 Ví dụ cụ thể về định tuyến
Theo ví dụ trong hình 5.4 thì Router R2 kết nối với Router R3 bằng địa chỉ mạng 192.168.23.0/24. Router R2 còn kết nối với hệ thống mạng nội bộ bằng địa chỉ mạng 192.168.1.0/24. Câu hỏi đặt ra ở đây là: Các máy tính (có địa chỉ IP lần lượt là 192.168.1.1 và 192.168.1.2) có ping (một ứng dụng phổ biến nhất của giao thức Internet Control Message Protocol – ICMP) thành công đến các địa chỉ 192.168.23.2 và 192.168.23.3 không.
Để trả lời được câu hỏi trên thì chỉ cần giải quyết được vấn đề bảng định tuyến trên các Router R2 và R3 được hình thành khi nào. Bảng định tuyến trên Router được hình thành khi và chỉ khi: các giao diện của Router được đặt địa chỉ IP và đảm bảo cổng này ở trạng thái up/up (thực hiện bằng các câu lệnh cấu hình). Cần chú ý một vấn đề là không cần phải chạy các giao thức định tuyến trên Router thì Router mới có bảng định tuyến. Lúc này bảng định tuyến của Router sẽ bao gồm các địa chỉa mạng kết nối trực tiếp. Xét lại ví dụ trên, bảng định tuyến trên Router R2 và Router R3 sẽ gồm các thông tin như sau (cổng của các router này phải được đặt IP và trạng thái cổng là up/up):
     

Hình 5 Bảng định tuyến của Router R3
 Một dòng thông tin trong bảng định tuyến như trên gọi là 1 route (1 entry). Hiện tại, Router R2 có 2 route và Router R3 có 1 route. Dựa vào bào định tuyến trong Hình 5.5 và Hình 5.6 có thể trả lời cho câu hỏi trên như sau:
-          Trường hợp 1: Lấy máy tính có IP 192.168.1.1 ping đến 192.168.23.2. Trong trường hợp này, gói tin sẽ có cấu trúc (Source IP Address: 192.168.1.1, Destination IP Address: 192.168.23.2) xuất phát từ máy tính. Khi gói tin này đến Router R2, R2 sẽ kiểm tra gói tin, tìm ra Destination IP Address có trong gói tin là 192.168.23.2. Router nhận ra gói tin này cần đến mạng 192.168.23.0/24 (vì 192.168.23.2 thuộc 192.168.23.0). Sau đó Router R2 quan sát bảng định tuyến của mình có 1 entry là 192.168.23.0. Do đó, Router R2 quyết định sẽ đẩy gói tin này ra giao diện s0/0. Chú ý, trong trường hợp này thì Destination IP Address 192.168.23.2 cũng chính là địa chỉ của s0/0 của R2. Vì vậy, chính Router R2 sẽ hình thành gói tin trả lời với cấu trúc (Source IP Address: 192.168.23.2, Destination IP Address: 192.168.1.1). Tương tự, Router R2 tiếp tục quan sát bảng định tuyến của mình và quyết định đẩy gói tin trả lời này ra khỏi giao diện f0/1. Do đó, kết quả của ping từ 192.168.1.1 đến 192.168.23.2 là thành công.
-          Trường hợp 2: Lấy máy tính có IP 192.168.1.1 ping đến 192.168.23.3. Trong trường hợp này, gói tin sẽ có cấu trúc (Source IP Address: 192.168.1.1, Destination IP Address: 192.168.23.3) xuất phát từ máy tính. Khi gói tin này đến Router R2, R2 sẽ kiểm tra gói tin, tìm ra Destination IP Address có trong gói tin là 192.168.23.3. Sau đó Router R2 quan sát bảng định tuyến của mình có 1 entry là 192.168.23.0. Do đó, Router R2 quyết định sẽ đẩy gói tin này ra giao diện s0/0. Nhưng trong trường hợp này 192.168.23.3 lại là địa chỉ của giao diện s0/1 của Router R3. Gói tin được đẩy ra khỏi giao diện s0/0 của R2 đến được với Router R3. Do đó, Router R3 sẽ hình thành gói tin trả lời với cấu trúc (Source IP Address: 192.168.23.3, Destination IP Address: 192.168.1.1). Tương tự, Router R3, quan sát bảng định tuyến của mình. Nhưng lúc này, bảng định tuyến của R3 lại không có thông tin gì về 192.168.1.0. Cuối cùng, Router R3 quyết định đánh rớt gói tin. Trong trường hợp này gói tin biết đường đi nhưng không biết đường về. Kết quả của ping từ 192.168.1.1 đến 192.168.23.3 là không thành công.
Qua ví dụ cụ thể trên, có thể rút ra được hoạt động định tuyến của Router là như sau: Router thực hiện việc định tuyến dựa vào một công cụ gọi là bảng định tuyến (routing table). Nguyên tắc là mọi gói tin IP khi đi đến router sẽ đều được tra bảng định tuyến, nếu đích đến của gói tin thuộc về một entry có trong bảng định tuyến thì gói tin sẽ được chuyển đi tiếp, nếu không, gói tin sẽ bị loại bỏ. Bảng định tuyến trên Router thể hiện ra rằng Router biết được hiện nay có những địa chỉ mạng nào đang tồn tại trên mạng mà nó tham gia và muốn đến được những địa chỉ mạng ấy thì phải đi theo đường nào.
Để các máy tính có ping thành công đến 192.168.23.3 thì trong bảng định tuyến của R3 cần có entry 192.168.1.0/24. Để đạt được mục đích này thì Router R2 và Router R3 phải sử dụng đến các giao thức định tuyến.
Chú ý phân biệt fast switching và process switching. Fast switching thì chỉ thực hiện xem bảng định tuyến đối với gói đầu tiên, Router sau đó lưu kết quả vào bộ nhớ cache tốc độ cao và dùng thông tin trong cache để chuyển tiếp các gói tin sau đến đích. Process switching thì yêu cầu Router xem xét mạng cần tới trong mỗi gói và đối chiếu với bảng định tuyến để chọn đường phù hợp.
c. Sơ đồ các giao thức định tuyến
          Định tuyến được chia thành 2 loại: Static Route và Dynamic Route. Static Routing và Dynamic Routing được thể hiện qua sơ đồ sau:




 Hình 6 Sơ đồ các giao thức định tuyến
Giữa Static Route với Dynamic Route và giữa các giao thức định tuyến trong cùng nhóm Dynamic Route khác nhau rất lớn về bản chất hoạt động, cách cấu hình và khả năng ứng dụng tùy thuộc vào các mô hình mạng khác nhau. Để nắm rõ được vấn đề này, cần đi sâu vào tìm hiểu các cơ chế hoạt động, cách tính toán để tìm ra đường đi tốt ưu nhất dựa trên các thuật toán định tuyến. Mỗi giao thức định tuyến sẽ có một thuật toán định tuyến riêng.
d. Các khái niệm trong định tuyến
          Các khái niệm trong định tuyến rất quan trọng khi khảo sát một giao thức định tuyến cụ thể. Các khái niệm được quan tâm nhiều nhất bao gồm: số Autonomous System (AS), Administrative Distance (AD), Metric và Convergence.
Autonomous System (AS) là một hệ thống tự trị. Ý nghĩa của hệ thống tự trị ở đầy là tập hợp các thiết bị định tuyến thuộc cùng một sự quản lý về kỹ thuật và sở hữu của một doanh nghiệp nào đó, cùng chịu chung một chính sách về định tuyến. Các AS thường được sử dụng cho là các nhà cung cấp dịch vụ. Như vậy định tuyến với số AS thường được dùng cho mạng Internet toàn cầu, trao đổi số lượng thông tin định tuyến rất lớn giữa các nhà cung cấp dịch vụ với nhau và hình thức định tuyến mang nặng hình thức chính sách. Giao thức định tuyến thể hiện rõ nhất số AS là Border Gateway Protocol – BGP (quan sát lại sơ đồ các giao thức định tuyến).
Administrative Distance (AD), mỗi giao thức định tuyến có một giá trị AD mặc định cụ thể. AD càng nhỏ thì giao thức định tuyến đó được xem là tốt hơn. Router sẽ chọn đường đi theo giao thức định tuyến nào có giá trị AD nhỏ hơn khi mô hình có sử dụng nhiều giao thức định tuyến. Những giá trị này được cấu hình tùy chỉnh theo chính sách của người quản trị. Điều này rất quan trọng khi thực hiện điều chỉnh đường đi của gói tin trên mạng. Theo mặc định thì giá trị AD của các giao thức sẽ được thể hiện trong bảng sau:
Connected
0
Static
0 hoặc 1
RIP
120
OSPF
110
EIGRP
90
Bảng 1. Giá trị AD mặc định của các giao thức định tuyến
Metric, trong cùng một giao thức định tuyến, metric là giá trị giúp Router xét tất cả các đường đi và kết luận đường đi này là tốt hay xấu. Mỗi giao thức định tuyến có cách tính metric khác nhau. Vậy để xem xét định tuyến tối ưu cần chú ý đến AD nhỏ và Metric nhỏ.
Convergence, còn gọi là sự hội tụ mạng. Mạng hội tụ là mạng mà đứng tại 1 điểm có thể liên lạc đến tất cả các điểm còn lại. Mạng đang hội tụ thì có một hoặc một vài thiết bị định tuyến bị hư hỏng (ví dụ như mất cấu hình) sẽ dẫn đến mạng mất sự hội tụ. Thời gian mà mạng mất đi sự hội tụ đến khi hội tụ trở lại nhờ các giao thức định tuyến gọi là độ hội tụ. Sự hội tụ nhanh hay chậm là tùy thuộc vào giao thức định tuyến được sử dụng.
Static
Không hội tụ
RIP
Chậm
OSPF
Nhanh
EIGRP
Rất nhanh
Bảng 2. Độ hội tụ của các giao thức định tuyến
Một thiết bị định tuyến có thể chạy nhiều giao thức định tuyến cùng một lúc, tùy thuộc vào mô hình và chính sách của người quản trị đưa ra. Do định tuyến dựa trên IP nên tương ứng với IPv4 và IPv6 thì các giao thức định tuyến cũng có các phiên bản khác nhau.
IPv4
IPv6
RIP Version 1 và Version 2
RIPng
OSPF
OSPF Version 3
EIGRP Version 2
EIGRP For IPv6

Bảng 3 Phiên bản của các giao thức định tuyến

1 comment