HIỂU VỀ NETWORK AUTOMATION QUA CÂU CHUYỆN CỦA MỘT NGƯỜI KỸ SƯ MẠNG
MỘT NGÀY BÌNH THƯỜNG CỦA MỘT NETWORK ADMIN
Minh là một người quản trị mạng sống tại Sài gòn, Việt nam. Một ngày làm việc của Min thường theo cùng kịch bản. Vào đầu buổi sáng, một người dùng trong công ty liên hệ bộ phận Hỗ trợ Helpdesk để mở một case nhờ trợ giúp về một vấn đề mạng. Minh phải login vào hệ thống helpdesk để bắt đầu điều tra về sự số, khởi sự bằng cách dùng CLI hoặc dùng GUI để xem tình trạng của mạng. Việc kiểm tra sẽ thực hiện tuần tự trên từng thiết bị, trên từng hệ thống. Nếu vấn đề trở nên quá khó khăn vượt ngoài khả năng, Minh sẽ nâng mức sự cố lên mức cao hơn và nhờ anh sếp trong phòng xử lý. Quá trình nâng mức sự cố này tiếp tục lặp lại cho đến khi nào vấn đề ban đầu được giải quyết, có thể nhờ đến nhà cung cấp thiết bị. Buổi chiều, nếu công ty đang trong dự án triển khai một chi nhánh mới, đôi khi Minh phải mang thiết bị đến onsite, lắp thiết bị vào rack, sau đó paste cấu hình mẫu vào router. Nếu cấu hình ban đầu không chạy thì Minh thử với vài cấu hình khác tìm thấy trên mạng hoặc trong các dự án tương tự của công ty trước đây.
Dù Minh và phòng IT đã rất cố gắng, công việc hàng ngày của phòng IT có vẻ như là duy trì hiện trạng mạng. Qui trình điều hành mạng thường ngày quá chậm, quá rời rạc và thường quá thủ công để nâng lên đến mức hỗ trợ cao hơn.
Tóm tắt: Cách cấu hình trên từng thiết bị là cách làm truyền thống trong hơn 20 năm qua. Những năm gần đây, phương thức triển khai kiểu thủ công này cho hàng trăm hoặc hàng ngàn thiết bị là một trở ngại lớn.
Minh nghe nói, trong tương lai gần, network automation sẽ đóng vai trò sống còn trong các hoạt động quản trị và bảo dưỡng mạng. Các công việc nhàm chán hay lặp lại hàng ngày sẽ được tự động hóa, các lỗi sai sót của con người sẽ được giảm thiểu. Cách troubleshooting cũng nhanh hơn, thậm chí sẽ có thể phản ứng trước khi lỗi xảy ra (!?). Minh quyết định tìm hiểu từ mức cơ bản nhất, tự động hóa là gì?
ĐỊNH NGHĨA AUTOMATION, NETWORK AUTOMATION
Từ điển Webster định nghĩa khái niệm tự động (automation) “là một hoạt động được điều khiển bởi máy móc, bởi một tiến trình, hoặc một hệ thống bằng phần cơ học hoặc bằng điện để thay thế con người và cho ra cùng một kết quả”.
Network Automation sẽ tách biệt người quản trị mạng ra khỏi các chi tiết phần cứng và các chi tiết phần mềm phức tạp. Nó sẽ cho phép các phần mềm tương tác trực tiếp với hạ tầng mạng.
VẬY NETWORK AUTOMATION LÀM ĐƯỢC NHỮNG GÌ MỘT CÁCH TỰ ĐỘNG?
Có vài công việc phổ biến mà trước đây Minh hay tự tay làm, tuy nhiên bây giờ sẽ do network automation đảm nhận.
Đầu tiên là triển khai một thiết bị mới hoàn toàn tự động (device provisioning). Một thiết bị mới chỉ cần cắm vào là tự động tham gia vào hạ tầng mạng và hoạt động như các node khác. Tính năng này giúp các thiết bị mới hoạt động với rất ít công sức. Một cấu hình đầy đủ hoặc một phần sẽ được đẩy xuống thiết bị. Sau khi thiết bị đã hoạt động thì các công việc thay đổi, giám sát, tối ưu đều trở nên dễ dàng hơn.
Thứ hai là chức năng quản lý phần mềm chạy trên thiết bị. Ví dụ để kiểm tra và đảm bảo 1000 thiết bị có cùng một phiên bản hệ điều hành thì network automation làm tốt hơn con người.
Thứ ba là kiểm tra tính tương thích. Network automation có khả năng độc đáo và duy nhất để audit một số lượng lớn các thiết bị xem có bị lỗi trong cấu hình hay không. Network Automation cũng sẽ tự động thực thi các điều chỉnh phù hợp bằng cách cơ chế kiểm định bên trong.
Thứ tư là tạo ra các báo cáo. Để trích xuất và tổng hợp các thông tin từ các nguồn thiết bị khác nhau thì network automation sẽ giúp ích rất nhiều. Các thông tin có thể được tổng hợp để trở nên hữu ích và con người có thể đọc được.
Khắc phục sự cố (troubleshooting): network automation giúp cho quá trình khắc phục sự cố trở nên dễ dàng hơn bằng cách phân tích các cấu hình hiện tại, các lỗi đang xảy ra ở thời gian thực, một cách đồng thời trên nhiều thiết bị.
Thu thập dữ liệu và chẩn đoán từ xa: Cách thức dữ liệu được thu thập bởi network automation sẽ khác vì các thiết bị sẽ đẩy các dữ liệu theo thời gian thực. Network automation sẽ tận dụng các API để thu thập thông tin về các tiến trình hoạt động và cho phép tích hợp dễ dàng với các ứng dụng quản lý bên trên.Để so sánh, trong cách làm cũ với SNMP, các dữ liệu hoạt động được truy xuất theo thời gian định kỳ.
NETWORK AUTOMATION LÀM ĐIỀU ĐÓ NHƯ THẾ NÀO?
Network Automation được hiện thực thông qua hai thành phần chủ chốt: mạng hỗ trợ lập trình (network programmability) và mạng định nghĩa bởi phần mềm (Software Define Networking - SDN).
Network programmability là gì?
Mạng hỗ trợ lập trình mô tả khả năng của một thiết bị có thể gửi các thông tin cấu hình, các trạng thái hoạt động, các thông tin về dòng lưu lượng thông qua các giao tiếp API. API là giao tiếp giữa máy với phần mềm. Kết quả thực thi của một lần gọi API từ phần mềm đến router sẽ được hiển thị ở dạng dữ liệu chuẩn gọi là các định dạng dữ liệu (data format).
Tóm tắt: Định dạng dữ liệu là cách thức router trả về các định dạng chuẩn để phần mềm và con người hiểu được.
Có ba dạng định dạng dữ liệu phổ biến là JSON, XML và YANG. Việc chọn định dạng dữ liệu nào sẽ phụ thuộc vào router API hỗ trợ định dạng nào. Nếu router API hỗ trợ nhiều loại định dạng, chúng ta hãy chọn loại mà chúng ta quen thuộc hơn.
Phần lớn các ngôn ngữ lập trình, ví dụ như Python, đều có các công cụ để làm việc với các định dạng dữ liệu khác nhau. Khi chúng ta viết vài đoạn mã Python để cấu hình router, chúng ta sẽ gửi đoạn mã đó đến router thông qua API để API thực thi tác vụ cấu hình mong muốn. Tuy nhiên, Python sẽ phải chuyển đổi các cấu trúc dữ liệu riêng biệt của chính nó sang định dạng YAML, JSON hay XML tùy theo yêu cầu của API.
Ở chiều ngược lại, có đôi khi chúng ta cần truy xuất thông tin về một cổng của switch cũng thông qua API đó. Chương trình Python sẽ nhận cấu hình từ switch thông qua định dạng YAML/JSON/XML. Để xử lý được thông tin đó, Python cũng sẽ chuyển đổi ngược lại thành các Python object.
Tóm tắt: Các định dạng dữ liệu chính là nền tảng của API. Các mô hình dữ liệu định nghĩa cách thức các dữ liệu hoạt động của router được lưu trữ và được sắp xếp cấu trúc như thế nào. Các apps phải thống nhất dùng các định dạng dữ liệu chuẩn này với router để có thể hiểu được các trạng thái hoạt động.
SDN là gì?
Bùng nổ từ những năm 2010, mạng định nghĩa bởi phần mềm SDN mô tả một mô hình kiến trúc mạng cho phép lập trình các tác vụ quản trị, điều khiển và tối ưu các tài nguyên mạng. Hiện nay có rất nhiều định nghĩa về mạng SDN nhưng theo ONF (Open Networking Foundation – một tổ chức phi lợi nhuận đang hỗ trợ việc phát triển SDN thông qua việc nghiên cứu các tiêu chuẩn mở phù hợp) thì mạng SDN được định nghĩa như sau: “SDN là một kiểu kiến trúc mạng mới, năng động, dễ quản lý, chi phí hiệu quả, dễ thích nghi và rất phù hợp với nhu cầu mạng ngày càng tăng hiện nay. Kiến trúc này chia tách phần điều khiển mạng (Control Plane) và chức năng vận chuyển dữ liệu (Forwarding Plane hay Data Plane). Cơ chế này cho phép việc điều khiển mạng trở nên có thể lập trình được dễ dàng và cơ sở hạ tầng mạng độc lập với các ứng dụng và dịch vụ mạng”.
SDN là một cách tiếp cận theo hướng tập trung hóa việc quản trị thiết bị mạng, giảm thiểu công việc riêng lẻ, tốn nhiều thời gian trên từng thiết bị cụ thể. Các thiết bị mạng như router hay switch chỉ đóng vai trò chuyển tiếp gói tin và không cần nắm giữ các nhiệm vụ điều khiển phức tạp nữa. Toàn bộ chức năng điều khiển này có thể được chuyển lên một thiết bị controller chuyên biệt. Controller bao gồm một hoặc nhiều bộ điều khiển được coi là bộ não của mạng SDN, là nơi kết hợp toàn bộ trí thông minh hay các thuật toán định tuyến, bảo mật của mạng. Khi chúng ta cần thay đổi thông số cho toàn bộ thiết bị, chúng ta chỉ cần lập trình trên network controller.
Trong hình vẽ, phương án 1 mô tả khả năng lập trình trên từng thiết bị. Phương án 2a mô tả một mô hình SDN thuần túy trong đó chức năng điều khiển đã tách biệt ra khỏi thiết bị và đưa vào controller. Giao thức OpenFlow là giao thức đầu tiên được dùng để controller nói chuyện với các thiết bị. Tuy nhiên ngày nay, nhiều giao thức đã được hỗ trợ hơn, ví dụ như NETCONF, PCEP, I2RS.
Mô hình lai (2b) là mô hình được dùng bởi phần lớn các nhà cung cấp giải pháp SDN. Trong mô hình lai này, chức năng điều khiển control plane vẫn còn nằm trên các thiết bị mạng sao cho nó có thể chạy vài giao thức định tuyến một cách độc lập. Controller giúp che dấu các chi tiết phức tạp bên dưới. Các apps có thể giao tiếp với controller thông qua các API và đạt được các mức độ tự động thông qua tiến trình này.
Tùy chọn cuối cùng (option 3) mô tả một cách tiếp cận dùng mạng ảo overlay, trong đó giao thức VxLAN được sử dụng phổ biến. Ý tưởng chính của cách thứ ba này là các thiết bị vẫn được giữ nguyên như cũ. Một mạng ảo mới gọi là overlay sẽ được tạo ra. Các cơ chế tự động hay lập trình sẽ thay đổi trên lớp mạng ảo overlay này. Phần mạng vật lý underlay không bị thay đổi. Hai kiến trúc tiêu biểu sử dụng hướng tiếp cận này là SDWAN và SDAccess của hãng Cisco.
Tóm tắt: Network Automation được xây dựng dựa trên hai thành phần chủ chốt: network programmability và SDN. SDN mô tả việc tách biệt chức năng điều khiển ra khỏi phần cứng vật lý và đưa lên bộ điều khiển tập trung. Network controller hỗ trợ các giao tiếp API, giúp lập trình toàn bộ hạ tầng mạng một cách nhất quán. Các giải pháp tự động thực tế cũng dùng mô hình lai hoặc sử dụng khái niệm mạng overlay.
Viết cho cộng đồng quản trị mạng, DEVNET
Tháng 3/2020
Đặng Quang Minh