CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Phần đầu của chương này giới thiệu về thực trạng hiện tại của định tuyến liên vùng và giải thích cơ chế hoạt động của BGP. Phần tiếp theo giới thiệu về SDN và một số thông tin về Mininet – một chương trình mô phỏng SDN. Ta sẽ tìm hiểu kỹ hơn về việc thiết kế một bộ điều khiển định tuyến liên vùng SDN trong phần cuối của chương này. BGP BGP (Border Gateway Protocol) là giao thức chuẩn không chính thức của định tuyến liên vùng.
Nó là một giao thức định tuyến liên vùng phân tán, được định nghĩa trong các tài liệu RFC của IETF. Phiên bản mới nhất hiện nay là RFC 4271 [3]. BGP trong khuôn khổ luận văn này là eBGP (Định tuyến liên vùng giữa các Hệ thống tự trị khác nhau). Các nguyên lý cơ bản BGP là một giao thức vector đường đi phân tán dựa trên các chính sách.
Các bản tin quảng bá thông tin định tuyến luôn chứa đầy đủ thông tin về tuyến đường AS (AS Path). Đây là đường đi mà về mặt lý thuyết, gói tin sẽ đi qua để tới địa chỉ đích. Một miền định tuyến trong BGP được gọi là một “hệ thống tự trị” (Autonomous System hay AS). Mỗi AS được đánh số duy nhất, gọi là số AS.
Một AS có thể gồm nhiều router BGP. Khi một router kết nối với các router của AS khác, việc trao đổi thông tin định tuyến được thực hiện thông qua một ‘quan hệ BGP ngang hàng’ (BGP peering). Bản tin cập nhật Bản tin cập nhật BGP có thể chứa thông tin quảng bá hoặc thu hồi đường đi. Các bản tin này chứa một tuyến đường, một tác động (quảng bá, thu hồi) và một số thuộc tính khác như: tuyến đường AS, bước truyền kế tiếp.
Thông tin quan trọng nhất trong tuyến đường AS là chuỗi AS. Chuỗi AS chứa một danh sách thứ tự các AS mà gói tin sẽ đi qua khi được truyền đi theo tuyến này. Cách thức cập nhật 11 Sau khi BGP đã thiết lập kết nối, các cặp thiết bị có thể bắt đầu gửi các bản tin cập nhật cho nhau. BGP tiêu chuẩn chỉ chọn một tuyến đường tốt nhất và không hỗ trợ việc chọn đa tuyến.
Vì thế, khi một router quảng bá một tuyến đường tới địa chỉ đích nào đó với chuỗi AS là A, sau đó lại gửi đi một bản tin quảng bá khác cho cùng một địa chỉ đích tới cùng một láng giềng với một chuỗi AS khác là B thì chuỗi A sau đó sẽ được xem là hết hiệu lực. Hội tụ định tuyến Hội tụ là trạng thái khi một tập các bộ định tuyến trong mạng cùng có chung thông tin định tuyến phản ánh chính xác cấu trúc liên kết của mạng này. Thời gian hội tụ là đại lượng đo thời gian để một nhóm các bộ định tuyến đạt tới trạng thái hội tụ. Khi một mạng đã hội tụ, bất kỳ sự thay đổi nào trên mạng có ảnh hưởng tới bảng định tuyến sẽ tạm thời phá vỡ trạng thái hội tụ cho tới khi thông tin về sự thay đổi này được truyền tới tất cả các bộ định tuyến.
Thuật toán chọn đường Trong BGP, mỗi router tự tính toán và chọn tuyến đường cho riêng mình. Tuyến đường tốt nhất được lựa chọn dựa trên các chính sách được cấu hình cục bộ, chiều dài tuyến AS, nguồn gốc tuyến, tuổi của tuyến, định danh router láng giềng, địa chỉ IP của láng giềng, v. [4] Bộ đếm khoảng thời gian quảng bá định tuyến tối thiểu (Minimum Route Advertisement Interval – MRAI Timer) MRAI Timer làm trễ các bản tin cập nhật BGP tới các láng giềng để loại trừ các vấn đề liên quan tới việc định tuyến không ổn định. Khoảng thời gian này được cấu hình và áp dụng theo từng láng giềng (xem mục 9.
Chính sách Ta có thể thiết lập các chính sách sử dụng các tham số khác nhau. Các tham số này được thiết lập tùy thuộc vào thỏa thuận kinh doanh hoặc các lý do kỹ thuật (VD: các vấn đề liên quan tới băng thông, tắc nghẽn). 12 Vòng lặp BGP hoàn toàn có thể phát sinh các vòng lặp. Vì vậy mỗi router cần có cơ chế đảm bảo mỗi tuyến đường AS không bị lặp vòng trở lại chính nó.
Các router thực hiện việc này bằng cách kiểm tra xem liệu trong tuyến đường AS mà nó nhận được được có chứa số AS của chính nó hay không. Nếu có, các bản tin cập nhật tương ứng sẽ bị hủy bỏ. Tuy nhiên trong một số trường hợp, sự không nhất quán giữa các cơ sở dữ liệu thông tin định tuyến cũng có thể dẫn tới việc lặp. Quagga Quagga [5] là một phần mềm định tuyến, không những hỗ trợ BGP mà còn hỗ trợ cả các giao thức khác như RIP và OSPF.
Nó hiện là một trong những phần mềm định tuyến được sử dụng phổ biến nhất trong định tuyến liên vùng. Mạng định nghĩa bằng phần mềm Trong những năm gần đây, mạng định nghĩa bằng phần mềm (Software Defined Networking hay SDN) đã trở nên phổ biến trong định tuyến nội vùng. Dựa trên nhận định rằng: quyết định định tuyến và việc chuyển tiếp gói tin, trên thực tế, là hai vấn đề khác nhau, SDN đã tách rời mặt phẳng điều khiển và mặt phẳng dữ liệu. Khi quyết định định tuyến được thực hiện một cách tập trung, ta có thể thực hiện nhiều quyết định định tuyến nâng cao hơn và các vấn đề quản lý định tuyến, do đó, cũng có thể được giải quyết dễ dàng hơn, mà lại cho phép các phương án định tuyến thay thế và các ứng dụng mới (VD: định tuyến ‘xanh’, định tuyến thời gian ngày) có thể được triển khai.
OpenFlow OpenFlow là một giao thức Southbound Interface được triển khai cho SDN. OpenFlow bao gồm các OpenFLow switch và các bộ điều khiển. Các switch chuyển tiếp gói tin còn các bộ điều khiển có trách nhiệm tạo lập các luật quyết định và cài đặt chúng lên các switch. Việc trao đổi thông tin giữa switch và bộ điều khiển được thực hiện trên một kênh bảo mật riêng.
Các luật được gửi đi gọi là các bản ghi luồng và được lưu trên các bảng luồng của switch. Một bản ghi luồng bao gồm các trường so khớp, các bộ đếm và 13 các lệnh. Khi một gói tin khớp với các trường so khớp, các bộ đếm sẽ được cập nhật tương ứng và các lệnh sẽ được áp dụng cho gói tin đó. Các trường so khớp có thể gồm: địa chỉ nguồn và địa chỉ đích, VLAN ID, cổng TCP, v.
Ví dụ về một lệnh: thay thế địa chỉ IP đích của gói tin.1 là một ví dụ về mạng với 4 host, kết nối với một OpenFlow switch. OpenFlow switch được kết nối với một bộ điều khiển OpenFlow.1: Ví dụ về mạng OpenFlow 3. Mininet Mininet [10] là một chương trình mô phỏng SDN. Nó vận hành các host giống như các tiến trình trên hệ thống máy chủ, việc này rất có lợi cho việc cấp phát tài nguyên.
Mininet được viết chủ yếu dựa trên Python và cũng hỗ trợ các API cho việc tạo lập và giám sát mạng. Nó có thể mô phỏng các OpenFlow switch, các bộ điều khiển OpenFlow, các host và các kết nối cùng với các thuộc tính như: CPU tối đa dành cho host, độ trễ kết nối, băng thông kết nối, v. Thiết kế bộ điều khiển định tuyến liên vùng SDN 4. Mục đích thiết kế Luận văn muốn phát triển một bộ điều khiển để khai thác, tận dụng sự tập trung hóa các quyết định định tuyến ở mặt phẳng điều khiển và xây dựng các cụm hệ thống tự trị, nhằm đạt được thời gian hội tụ tốt hơn.
Điểm mấu chốt nằm ở chỗ bộ điều khiển này không chỉ được tối ưu hóa cho việc hội tụ mà còn có thể tương tác với các router BGP truyền thống. 14 Khai tác sự tập trung hóa Như đã nêu, luận văn muốn thành lập các cụm hệ thống tự trị sử dụng một bộ điều khiển tập trung. Với sự tập trung hóa này, luận văn chủ yếu muốn cải thiệu thời gian hội tụ chung, giúp các cụm kể trên và cả thành phần mạng truyền thống đạt tới việc định tuyến ổn định hơn. Tương thích với BGP Do các router BGP đã được triển khai rộng rãi trên toàn cầu và được quản lý bởi rất nhiều các bên khác nhau, việc bộ điều khiển cần phải tương thích với các router BGP truyền thống cũng như hỗ trợ các chuẩn BGP là yếu tố hết sức quan trọng.
Tuyến đường ngắn nhất Thuật toán định tuyến cần phải chọn tuyến đường ngắn nhất dựa trên số lượng các AS. Chính sách định tuyến cơ sở được triển khai trong khuôn khổ luận văn là: ưu tiên tuyến đường ngắn nhất về mặt số lượng AS. Không có các chính sách ngầm định Tất cả các chính sách ngầm định, ví dụ như: ưu tiên các tuyến đường nội bộ hơn các tuyến đường có một phần nằm ngoài các cụm, đều sẽ không được thực hiện. Như đã đề cập trước đó, luận văn sẽ tuân theo chính sách đơn giản: ưu tiên tuyến đường ngắn nhất về mặt số lượng AS trong mọi trường hợp.
Chọn đường đa tuyến Tính năng chọn đường đa tuyến không được hỗ trợ trong khuôn khổ luận văn này. Thuật toán chọn đường Để hiểu về hoạt động của thuật toán chọn đường, luận văn sẽ giới thiệu 2 sơ đồ rất quan trọng. Sơ đồ switch 15 Sơ đồ switch là một sơ đồ có hướng, hỗ trợ các cạnh đơn giữa một nút gốc và một nút ngọn với hướng từ gốc tới ngọn (không hỗ trợ đa cạnh). Sơ đồ này cũng được dùng cho tất cả các dải địa chỉ trong mạng.
Về cơ bản nó biểu diễn cấu trúc mạng vật lý, nhưng được nhìn từ góc nhìn của bộ điều khiển. Ta có hai loại nút trong sơ đồ này. Đầu tiên là nút switch, biểu diễn các SDN switch. Thứ hai là các nút địa chỉ.
Một cạnh cho ta biết dữ liệu có thể được chuyển tiếp từ nút gốc tới nút ngọn của cạnh đó. Sơ đồ switch được xây dựng một cách từ từ. Khi một nút switch phát hiện được một kết nối tới một nút switch theo một hướng cụ thể, ta sẽ thêm vào một cạnh giữa hai nút switch này với hướng của cạnh chính là hướng trên. Một cạnh từ một nút switch tới một nút địa chỉ được thêm vào khi địa chỉ đó được học từ BGP hoặc được kết nối trực tiếp với switch.
Do chỉ có thể có một cạnh theo mỗi hướng giữa hai nút nên ta sẽ chỉ thêm vào cạnh biểu diễn tuyến đường tốt nhất. Trên các cạnh học từ BGP, chuỗi AS sẽ được lưu như một thuộc tính của cạnh.2 là quy trình lựa chọn tuyến đường tốt nhất giữa một nút switch và một nút địa chỉ. Một cách tổng quát, ta lưu tất cả thông tin định tuyến được gửi tới cụm.