Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

В vấn đề trước Tôi đã mô tả khuôn khổ tự động hóa mạng. Theo một số người, ngay cả cách tiếp cận vấn đề đầu tiên này cũng đã giải quyết được một số câu hỏi. Và điều này khiến tôi rất vui, vì mục tiêu của chúng tôi trong chu trình không phải là che đậy Ansible bằng các tập lệnh Python mà là xây dựng một hệ thống.

Khuôn khổ tương tự đặt ra thứ tự mà chúng ta sẽ giải quyết câu hỏi.
Và ảo hóa mạng, chủ đề mà vấn đề này đề cập đến, không đặc biệt phù hợp với chủ đề ADSM, nơi chúng tôi phân tích tự động hóa.

Nhưng hãy nhìn nó từ một góc độ khác.

Nhiều dịch vụ đã sử dụng cùng một mạng trong một thời gian dài. Trong trường hợp của một nhà khai thác viễn thông, đây là 2G, 3G, LTE, băng thông rộng và B2B chẳng hạn. Trong trường hợp DC: kết nối cho các máy khách khác nhau, Internet, lưu trữ khối, lưu trữ đối tượng.

Và tất cả các dịch vụ đều yêu cầu cách ly với nhau. Đây là cách các mạng lớp phủ xuất hiện.

Và tất cả các dịch vụ đều không muốn đợi một người cấu hình chúng theo cách thủ công. Đây là cách các nhà soạn nhạc và SDN xuất hiện.

Cách tiếp cận đầu tiên để tự động hóa mạng một cách có hệ thống, hay đúng hơn là một phần của mạng, đã được thực hiện và triển khai từ lâu ở nhiều nơi: VMWare, OpenStack, Google Computer Cloud, AWS, Facebook.

Đó là những gì chúng ta sẽ giải quyết ngày hôm nay.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

nội dung

  • Nguyên nhân
  • Thuật ngữ
  • Lớp lót - mạng vật lý
  • Lớp phủ - mạng ảo
    • Lớp phủ với ToR
    • Lớp phủ từ máy chủ
    • Lấy vải vonfram làm ví dụ
      • Giao tiếp trong một máy vật lý
      • Giao tiếp giữa các máy ảo nằm trên các máy vật lý khác nhau
      • Thoát ra thế giới bên ngoài

  • Câu Hỏi Thường Gặp
  • Kết luận
  • Liên kết hữu ích

Nguyên nhân

Và vì chúng ta đang nói về vấn đề này nên cần đề cập đến các điều kiện tiên quyết để ảo hóa mạng. Trên thực tế, quá trình này đã không bắt đầu ngày hôm qua.

Có lẽ bạn đã nhiều lần nghe nói rằng mạng luôn là bộ phận trì trệ nhất trong bất kỳ hệ thống nào. Và điều này đúng theo mọi nghĩa. Mạng là cơ sở để mọi thứ dựa vào đó và việc thực hiện các thay đổi trên mạng là khá khó khăn - các dịch vụ không chịu đựng được điều đó khi mạng ngừng hoạt động. Thông thường, việc ngừng hoạt động một nút có thể gỡ bỏ một phần lớn ứng dụng và ảnh hưởng đến nhiều khách hàng. Đây là một phần lý do tại sao nhóm mạng có thể chống lại bất kỳ thay đổi nào - bởi vì bây giờ bằng cách nào đó nó đã hoạt động (chúng ta thậm chí có thể không biết làm thế nào), nhưng ở đây bạn cần phải cấu hình một cái gì đó mới và không biết nó sẽ ảnh hưởng đến mạng như thế nào.

Để không phải chờ nhà mạng chèn VLAN và không đăng ký bất kỳ dịch vụ nào trên mỗi nút mạng, người ta đã nảy ra ý tưởng sử dụng các lớp phủ - mạng lớp phủ - trong đó có rất nhiều loại: GRE, IPinIP, MPLS, MPLS L2/L3VPN, VXLAN, GENEVE, MPLSoverUDP, MPLSoverGRE, v.v.

Sự hấp dẫn của họ nằm ở hai điều đơn giản:

  • Chỉ các nút cuối mới được định cấu hình—các nút chuyển tuyến không cần phải chạm vào. Điều này tăng tốc đáng kể quá trình và đôi khi cho phép bạn loại trừ hoàn toàn bộ phận cơ sở hạ tầng mạng khỏi quá trình giới thiệu các dịch vụ mới.
  • Tải được ẩn sâu bên trong các tiêu đề - các nút chuyển tuyến không cần biết gì về nó, về địa chỉ trên máy chủ hoặc về các tuyến của mạng lớp phủ. Điều này có nghĩa là bạn cần lưu trữ ít thông tin hơn trong bảng, nghĩa là sử dụng thiết bị đơn giản hơn/rẻ hơn.

Trong vấn đề chưa hoàn toàn chính thức này, tôi không có ý định phân tích tất cả các công nghệ có thể có mà chỉ mô tả khuôn khổ hoạt động của các mạng lớp phủ trong DC.

Toàn bộ loạt bài này sẽ mô tả một trung tâm dữ liệu bao gồm các dãy giá đỡ giống hệt nhau được lắp đặt cùng một thiết bị máy chủ.

Thiết bị này chạy các máy ảo/container/serverless triển khai các dịch vụ.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Thuật ngữ

Trong một chu kỳ người phục vụ Tôi sẽ đặt tên cho một chương trình thực hiện giao tiếp giữa máy khách và máy chủ ở phía máy chủ.

Máy vật lý trong rack được gọi là máy chủ không chúng tôi sẽ.

Máy vật lý — Máy tính x86 được cài đặt trong giá đỡ. Thuật ngữ được sử dụng thường xuyên nhất chủ nhà. Đó là những gì chúng tôi sẽ gọi nó là “xe hơi"Hoặc chủ nhà.

Trình giám sát ảo - một ứng dụng chạy trên máy vật lý mô phỏng các tài nguyên vật lý mà Máy ảo chạy trên đó. Đôi khi trong văn học và Internet từ “hypervisor” được sử dụng như một từ đồng nghĩa với “host”.

Máy ảo - một hệ điều hành chạy trên một máy vật lý nằm trên bộ ảo hóa. Đối với chúng tôi trong chu trình này, việc nó thực sự là một máy ảo hay chỉ là một thùng chứa thực sự không quan trọng. Hãy gọi nó là "máy ảo«

Người thuê nhà là một khái niệm rộng mà tôi sẽ định nghĩa trong bài viết này là một dịch vụ riêng biệt hoặc một ứng dụng khách riêng biệt.

Thuê nhiều kiểu hoặc multitenancy - việc sử dụng cùng một ứng dụng bởi các khách hàng/dịch vụ khác nhau. Đồng thời, việc cách ly các máy khách với nhau đạt được nhờ vào kiến ​​trúc ứng dụng chứ không phải thông qua các phiên bản chạy riêng biệt.

ToR - Công tắc trên cùng của Rack - một công tắc được lắp đặt trong một giá đỡ để kết nối tất cả các máy vật lý.

Ngoài cấu trúc liên kết ToR, nhiều nhà cung cấp khác nhau còn sử dụng End of Row (EoR) hoặc Middle of Row (mặc dù cái sau rất hiếm và tôi chưa thấy chữ viết tắt MoR).

Mạng lưới lót hoặc mạng bên dưới hoặc lớp lót là cơ sở hạ tầng mạng vật lý: bộ chuyển mạch, bộ định tuyến, cáp.

Mạng che phủ hoặc mạng lớp phủ hoặc lớp phủ - một mạng ảo gồm các đường hầm chạy trên mạng vật lý.

Vải L3 hoặc vải IP - một phát minh đáng kinh ngạc của nhân loại cho phép bạn tránh lặp lại STP và học TRILL cho các cuộc phỏng vấn. Một khái niệm trong đó toàn bộ mạng cho đến cấp độ truy cập chỉ là L3, không có Vlan và theo đó, các miền phát sóng mở rộng rất lớn. Chúng ta sẽ xem từ “nhà máy” xuất phát từ đâu trong phần tiếp theo.

SDN - Mạng được xác định bằng phần mềm. Hầu như không cần giới thiệu. Một cách tiếp cận quản lý mạng trong đó các thay đổi đối với mạng được thực hiện không phải bởi một người mà bởi một chương trình. Thông thường có nghĩa là di chuyển Mặt phẳng điều khiển ra ngoài các thiết bị mạng cuối tới bộ điều khiển.

NFV - Network Function Virtualization - ảo hóa các thiết bị mạng, gợi ý rằng một số chức năng mạng có thể chạy dưới dạng máy ảo hoặc container để tăng tốc độ triển khai các dịch vụ mới, tổ chức Service Chaining và khả năng mở rộng theo chiều ngang đơn giản hơn.

VNF - Chức năng mạng ảo. Thiết bị ảo cụ thể: bộ định tuyến, bộ chuyển mạch, tường lửa, NAT, IPS/IDS, v.v.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Bây giờ tôi đang cố tình đơn giản hóa phần mô tả thành một cách triển khai cụ thể để không khiến người đọc quá bối rối. Để đọc kỹ hơn, tôi giới thiệu anh ấy đến phần tài liệu tham khảo. Ngoài ra, Roma Gorge, người chỉ trích bài viết này thiếu chính xác, hứa hẹn sẽ viết một vấn đề riêng về công nghệ ảo hóa máy chủ và mạng, sâu hơn và chú ý đến từng chi tiết.

Hầu hết các mạng ngày nay có thể được chia thành hai phần rõ ràng:

Lớp lót - một mạng vật lý có cấu hình ổn định.
Che — sự trừu tượng hóa trên Underlay để cô lập người thuê.

Điều này đúng cho cả trường hợp của DC (mà chúng tôi sẽ phân tích trong bài viết này) và cho ISP (mà chúng tôi sẽ không phân tích vì nó đã được SDSM). Tất nhiên, với mạng doanh nghiệp, tình hình có phần khác.

Hình ảnh lấy nét trên mạng:

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Lớp lót

Lớp lót là một mạng vật lý: các thiết bị chuyển mạch và cáp phần cứng. Các thiết bị dưới lòng đất biết cách tiếp cận các máy móc vật lý.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Nó dựa trên các giao thức và công nghệ tiêu chuẩn. Ít nhất là vì các thiết bị phần cứng cho đến ngày nay hoạt động trên phần mềm độc quyền không cho phép lập trình chip hoặc thực hiện các giao thức riêng của nó; do đó, cần có khả năng tương thích với các nhà cung cấp khác và tiêu chuẩn hóa.

Nhưng ai đó như Google có đủ khả năng để phát triển các thiết bị chuyển mạch của riêng họ và từ bỏ các giao thức được chấp nhận rộng rãi. Nhưng LAN_DC không phải là Google.

Lớp nền thay đổi tương đối hiếm vì nhiệm vụ của nó là kết nối IP cơ bản giữa các máy vật lý. Underlay không biết gì về các dịch vụ, khách hàng hoặc đối tượng thuê chạy trên nó - nó chỉ cần phân phối gói từ máy này sang máy khác.
Lớp lót có thể như thế này:

  • IPv4+OSPF
  • IPv6+ISIS+BGP+L3VPN
  • L2+TRILL
  • L2+STP

Mạng Underlay được cấu hình theo cách cổ điển: CLI/GUI/NETCONF.

Thủ công, tập lệnh, tiện ích độc quyền.

Bài viết tiếp theo trong loạt bài này sẽ được dành cho lớp lót một cách chi tiết hơn.

Che

Lớp phủ là một mạng ảo gồm các đường hầm trải dài trên Underlay, nó cho phép các máy ảo của một máy khách giao tiếp với nhau, đồng thời cách ly với các máy khách khác.

Dữ liệu khách hàng được gói gọn trong một số tiêu đề đường hầm để truyền qua mạng công cộng.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Vì vậy, các máy ảo của một máy khách (một dịch vụ) có thể liên lạc với nhau thông qua Lớp phủ mà không cần biết gói thực sự đi theo đường dẫn nào.

Ví dụ, lớp phủ có thể giống như tôi đã đề cập ở trên:

  • đường hầm GRE
  • VXLAN
  • EVPN
  • L3VPN
  • GENEVA

Mạng lớp phủ thường được cấu hình và duy trì thông qua bộ điều khiển trung tâm. Từ đó, cấu hình, Mặt phẳng điều khiển và Mặt phẳng dữ liệu được phân phối tới các thiết bị định tuyến và đóng gói lưu lượng máy khách. Một chút dưới đây Hãy xem xét điều này với các ví dụ.

Vâng, đây là SDN ở dạng tinh khiết nhất.

Có hai cách tiếp cận cơ bản khác nhau để tổ chức mạng Lớp phủ:

  1. Lớp phủ với ToR
  2. Lớp phủ từ máy chủ

Lớp phủ với ToR

Lớp phủ có thể bắt đầu ở công tắc truy cập (ToR) đang đứng trong giá đỡ, chẳng hạn như xảy ra trong trường hợp vải VXLAN.

Đây là cơ chế đã được thử nghiệm theo thời gian trên mạng ISP và tất cả các nhà cung cấp thiết bị mạng đều hỗ trợ nó.

Tuy nhiên, trong trường hợp này, bộ chuyển mạch ToR phải có khả năng tách biệt các dịch vụ khác nhau tương ứng và ở một mức độ nhất định, quản trị viên mạng phải hợp tác với quản trị viên máy ảo và thực hiện các thay đổi (mặc dù tự động) đối với cấu hình của thiết bị. .

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Sau đây tôi sẽ giới thiệu đến bạn đọc một bài viết về VxLAN trên Habré người bạn cũ của chúng ta @bormoglotx.
Trong này thuyết trình với ENOG các phương pháp xây dựng mạng DC bằng cấu trúc EVPN VXLAN được mô tả chi tiết.

Và để đắm chìm hoàn toàn hơn vào thực tế, bạn có thể đọc cuốn sách của Tsiska Một kết cấu hiện đại, mở và có thể mở rộng: VXLAN EVPN.

Tôi lưu ý rằng VXLAN chỉ là một phương pháp đóng gói và việc chấm dứt các đường hầm có thể xảy ra không phải trên ToR mà trên máy chủ, chẳng hạn như trong trường hợp OpenStack.

Tuy nhiên, cấu trúc VXLAN, nơi lớp phủ bắt đầu ở ToR, là một trong những thiết kế mạng lớp phủ đã được thiết lập.

Lớp phủ từ máy chủ

Một cách tiếp cận khác là bắt đầu và kết thúc các đường hầm trên máy chủ cuối.
Trong trường hợp này, mạng (Underlay) vẫn đơn giản và tĩnh nhất có thể.
Và chính máy chủ thực hiện tất cả việc đóng gói cần thiết.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Tất nhiên, điều này sẽ yêu cầu chạy một ứng dụng đặc biệt trên máy chủ, nhưng nó đáng giá.

Thứ nhất, việc chạy ứng dụng khách trên máy Linux dễ dàng hơn hoặc thậm chí có thể, trong khi trên switch, rất có thể bạn sẽ phải chuyển sang các giải pháp SDN độc quyền, điều này sẽ giết chết ý tưởng về nhiều nhà cung cấp.

Thứ hai, công tắc ToR trong trường hợp này có thể được để đơn giản nhất có thể, theo cả quan điểm của Mặt phẳng điều khiển và Mặt phẳng dữ liệu. Thật vậy, nó không cần giao tiếp với bộ điều khiển SDN và cũng không cần lưu trữ mạng/ARP của tất cả các máy khách được kết nối - chỉ cần biết địa chỉ IP của máy vật lý là đủ, điều này giúp đơn giản hóa rất nhiều việc chuyển đổi/ các bảng định tuyến.

Trong loạt bài ADSM, tôi chọn cách tiếp cận lớp phủ từ máy chủ - sau đó chúng tôi chỉ nói về nó và sẽ không quay lại nhà máy VXLAN.

Dễ dàng nhất là xem xét các ví dụ. Và làm đối tượng thử nghiệm, chúng tôi sẽ lấy nền tảng OpenSource SDN OpenContrail, hiện được gọi là Vải vonfram.

Ở cuối bài viết tôi sẽ đưa ra một số suy nghĩ về sự tương tự giữa OpenFlow và OpenvSwitch.

Lấy vải vonfram làm ví dụ

Mỗi máy vật lý có vRouter - một bộ định tuyến ảo biết về các mạng được kết nối với nó và chúng thuộc về những máy khách nào - về cơ bản là một bộ định tuyến PE. Đối với mỗi máy khách, nó duy trì một bảng định tuyến riêng biệt (đọc VRF). Và vRouter thực sự thực hiện việc tạo đường hầm lớp phủ.

Tìm hiểu thêm một chút về vRouter ở cuối bài viết.

Mỗi VM nằm trên bộ ảo hóa được kết nối với vRouter của máy này thông qua Giao diện TAP.

TAP - Terminal Access Point - một giao diện ảo trong nhân Linux cho phép tương tác mạng.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Nếu có một số mạng phía sau vRouter, thì một giao diện ảo sẽ được tạo cho mỗi mạng đó, địa chỉ IP được gán - đó sẽ là địa chỉ cổng mặc định.
Tất cả các mạng của một khách hàng được đặt trong một VRF (một bảng), những cái khác nhau - thành những cái khác nhau.
Tôi sẽ tuyên bố từ chối trách nhiệm ở đây rằng không phải mọi thứ đều đơn giản như vậy và tôi sẽ gửi người đọc tò mò đến cuối bài viết.

Để các vRouter có thể giao tiếp với nhau và theo đó, các máy ảo nằm phía sau chúng sẽ trao đổi thông tin định tuyến thông qua Bộ điều khiển SDN.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Để bước ra thế giới bên ngoài phải có điểm thoát khỏi ma trận - cổng mạng ảo VNWG — Cổng mạng ảo (nhiệm kỳ của tôi).

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Bây giờ chúng ta hãy xem các ví dụ về giao tiếp - và sẽ có sự rõ ràng.

Giao tiếp trong một máy vật lý

VM0 muốn gửi gói tới VM2. Bây giờ hãy giả sử rằng đây là một máy khách VM.

Mặt phẳng dữ liệu

  1. VM-0 có tuyến mặc định tới giao diện eth0 của nó. Gói hàng được gửi tới đó.
    Giao diện eth0 này thực sự được kết nối ảo với bộ định tuyến ảo vRouter thông qua giao diện TAP tap0.
  2. vRouter phân tích gói tin đã đến giao diện nào, tức là nó thuộc về máy khách (VRF) nào và kiểm tra địa chỉ của người nhận bằng bảng định tuyến của máy khách này.
  3. Sau khi phát hiện rằng người nhận trên cùng một máy đang ở một cổng khác, vRouter chỉ cần gửi gói đến máy đó mà không cần bất kỳ tiêu đề bổ sung nào - trong trường hợp này, vRouter đã có mục nhập ARP.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Trong trường hợp này, gói không vào mạng vật lý - nó được định tuyến bên trong vRouter.

Máy bay điều khiển

Khi máy ảo khởi động, trình ảo hóa sẽ thông báo cho nó:

  • Địa chỉ IP của chính cô ấy.
  • Lộ trình mặc định là thông qua địa chỉ IP của vRouter trên mạng này.

Trình ảo hóa báo cáo cho vRouter thông qua một API đặc biệt:

  • Những gì bạn cần để tạo một giao diện ảo.
  • Nó (VM) cần tạo loại mạng ảo nào?
  • VRF (VN) nào để liên kết với nó.
  • Một mục ARP tĩnh cho máy ảo này - giao diện nào nằm sau địa chỉ IP của nó và địa chỉ MAC nào được liên kết với nó.

Một lần nữa, quy trình tương tác thực tế được đơn giản hóa để hiểu được khái niệm này.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Do đó, vRouter coi tất cả các máy ảo của một máy khách trên một máy nhất định là các mạng được kết nối trực tiếp và có thể tự định tuyến giữa chúng.

Nhưng VM0 và VM1 thuộc về các máy khách khác nhau và do đó nằm trong các bảng vRouter khác nhau.

Việc họ có thể giao tiếp trực tiếp với nhau hay không tùy thuộc vào cài đặt vRouter và thiết kế mạng.
Ví dụ: nếu máy ảo của cả hai máy khách đều sử dụng địa chỉ công cộng hoặc NAT xảy ra trên chính vRouter thì có thể thực hiện định tuyến trực tiếp tới vRouter.

Trong tình huống ngược lại, có thể vượt qua các không gian địa chỉ - bạn cần phải đi qua máy chủ NAT để lấy địa chỉ công cộng - điều này tương tự như việc truy cập các mạng bên ngoài, được thảo luận dưới đây.

Giao tiếp giữa các máy ảo nằm trên các máy vật lý khác nhau

Mặt phẳng dữ liệu

  1. Sự khởi đầu hoàn toàn giống nhau: VM-0 gửi một gói có đích VM-7 (172.17.3.2) theo mặc định.
  2. vRouter nhận được nó và lần này thấy rằng đích đến nằm trên một máy khác và có thể truy cập được thông qua Tunnel0.
  3. Đầu tiên, nó treo nhãn MPLS xác định giao diện từ xa, để vRouter ở mặt sau có thể xác định vị trí đặt gói này mà không cần tra cứu thêm.

    Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

  4. Tunnel0 có nguồn 10.0.0.2, đích: 10.0.1.2.
    vRouter thêm các tiêu đề GRE (hoặc UDP) và IP mới vào gói gốc.
  5. Bảng định tuyến vRouter có tuyến mặc định thông qua địa chỉ ToR1 10.0.0.1. Đó là nơi anh ấy gửi nó.

    Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

  6. ToR1, với tư cách là thành viên của mạng Underlay, biết (ví dụ: thông qua OSPF) cách truy cập 10.0.1.2 và gửi gói dọc theo tuyến. Lưu ý rằng ECMP được bật ở đây. Có hai bước tiếp theo trong hình minh họa và các luồng khác nhau sẽ được sắp xếp theo hàm băm. Trong trường hợp là một nhà máy thực sự, nhiều khả năng sẽ có 4 bước tiếp theo.

    Đồng thời, anh ta không cần biết bên dưới tiêu đề IP bên ngoài là gì. Trên thực tế, đó là trong IP có thể có nhiều IPv6 qua MPLS qua Ethernet qua MPLS qua GRE hơn là tiếng Hy Lạp.

  7. Theo đó, về phía bên nhận, vRouter sẽ loại bỏ GRE và sử dụng thẻ MPLS để hiểu gói này sẽ được gửi đến giao diện nào, loại bỏ nó và gửi nó ở dạng ban đầu cho người nhận.

Máy bay điều khiển

Khi bạn khởi động xe, điều tương tự cũng xảy ra như mô tả ở trên.

Và cộng thêm những điều sau đây:

  • Đối với mỗi máy khách, vRouter phân bổ thẻ MPLS. Đây là nhãn dịch vụ L3VPN, theo đó các máy khách sẽ được phân tách trong cùng một máy vật lý.

    Trên thực tế, thẻ MPLS luôn được vRouter cấp phát vô điều kiện - xét cho cùng, người ta không biết trước rằng máy sẽ chỉ tương tác với các máy khác phía sau cùng một vRouter và điều này rất có thể thậm chí không đúng.

  • vRouter thiết lập kết nối với bộ điều khiển SDN bằng giao thức BGP (hoặc tương tự - trong trường hợp TF, đây là XMPP 0_o).
  • Thông qua phiên này, vRouter báo cáo các tuyến đến các mạng được kết nối tới bộ điều khiển SDN:
    • Địa chỉ mạng
    • Phương pháp đóng gói (MPLSoGRE, MPLSoUDP, VXLAN)
    • Thẻ khách hàng MPLS
    • Địa chỉ IP của bạn là nexthop

  • Bộ điều khiển SDN nhận các tuyến đường như vậy từ tất cả các vRouter được kết nối và phản ánh chúng cho những người khác. Tức là nó hoạt động như một Route Reflector.

Điều tương tự cũng xảy ra theo hướng ngược lại.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Lớp phủ có thể thay đổi ít nhất mỗi phút. Đây gần giống như những gì xảy ra trong các đám mây công cộng, nơi khách hàng thường xuyên khởi động và tắt máy ảo của họ.

Bộ điều khiển trung tâm sẽ xử lý tất cả sự phức tạp của việc duy trì cấu hình và giám sát các bảng chuyển mạch/định tuyến trên vRouter.

Nói một cách đại khái, bộ điều khiển giao tiếp với tất cả các vRouter thông qua BGP (hoặc một giao thức tương tự) và chỉ truyền thông tin định tuyến. Ví dụ: BGP đã có Địa chỉ-Family để truyền tải phương thức đóng gói MPLS-trong-GRE hoặc MPLS-trong-UDP.

Đồng thời, cấu hình của mạng Underlay không thay đổi theo bất kỳ cách nào, nhân tiện, điều này khó tự động hóa hơn nhiều và dễ bị phá vỡ hơn nếu có một chuyển động bất tiện.

Thoát ra thế giới bên ngoài

Ở đâu đó quá trình mô phỏng phải kết thúc và bạn cần thoát khỏi thế giới ảo để bước vào thế giới thực. Và bạn cần một cổng điện thoại trả tiền.

Hai cách tiếp cận được thực hiện:

  1. Một bộ định tuyến phần cứng đã được cài đặt.
  2. Một thiết bị được ra mắt thực hiện các chức năng của bộ định tuyến (vâng, theo SDN, chúng tôi cũng đã gặp VNF). Hãy gọi nó là một cổng ảo.

Ưu điểm của phương pháp thứ hai là khả năng mở rộng theo chiều ngang rẻ - không có đủ năng lượng - chúng tôi đã khởi chạy một máy ảo khác có cổng. Trên bất kỳ máy vật lý nào, không cần phải tìm kiếm các giá đỡ, bộ phận, đầu ra nguồn miễn phí, hãy mua phần cứng, vận chuyển, cài đặt, chuyển đổi, định cấu hình và sau đó thay đổi các thành phần bị lỗi trong đó.

Nhược điểm của cổng ảo là bộ định tuyến vật lý vẫn mạnh hơn nhiều so với máy ảo đa lõi và phần mềm của nó, được điều chỉnh cho phù hợp với cơ sở phần cứng của chính nó, hoạt động ổn định hơn nhiều (không). Cũng khó có thể phủ nhận một thực tế rằng tổ hợp phần cứng và phần mềm hoạt động đơn giản, chỉ yêu cầu cấu hình, trong khi việc khởi chạy và bảo trì cổng ảo là nhiệm vụ của những kỹ sư giỏi.

Chỉ bằng một chân, cổng sẽ nhìn vào mạng ảo Overlay, giống như Máy ảo thông thường và có thể tương tác với tất cả các máy ảo khác. Đồng thời, nó có thể chấm dứt mạng của tất cả các máy khách và theo đó, thực hiện định tuyến giữa chúng.

Với chân còn lại, cổng nhìn vào mạng đường trục và biết cách truy cập Internet.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Mặt phẳng dữ liệu

Nghĩa là, quá trình này trông như thế này:

  1. VM-0, được mặc định là cùng một vRouter, sẽ gửi một gói có đích đến ở thế giới bên ngoài (185.147.83.177) tới giao diện eth0.
  2. vRouter nhận gói tin này và tra cứu địa chỉ đích trong bảng định tuyến - tìm tuyến đường mặc định qua cổng VNGW1 qua Tunnel 1.
    Anh cũng thấy đây là đường hầm GRE với SIP 10.0.0.2 và DIP 10.0.255.2 và trước tiên anh cũng cần gắn nhãn MPLS của client này, điều mà VNGW1 mong đợi.
  3. vRouter đóng gói gói ban đầu với các tiêu đề MPLS, GRE và IP mới rồi gửi nó tới ToR1 10.0.0.1 theo mặc định.
  4. Mạng cơ bản phân phối gói đến cổng VNGW1.
  5. Cổng VNGW1 loại bỏ các tiêu đề đường hầm GRE và MPLS, nhìn thấy địa chỉ đích, tham khảo bảng định tuyến của nó và hiểu rằng nó được hướng tới Internet - nghĩa là thông qua Chế độ xem đầy đủ hoặc Mặc định. Nếu cần, thực hiện dịch NAT.
  6. Có thể có mạng IP thường xuyên từ VNGW tới biên giới, điều này khó xảy ra.
    Có thể có mạng MPLS cổ điển (IGP+LDP/RSVP TE), có thể có mạng mặt sau với BGP LU hoặc đường hầm GRE từ VNGW đến biên giới qua mạng IP.
    Dù vậy, VNGW1 thực hiện việc đóng gói cần thiết và gửi gói ban đầu tới biên giới.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Xe đi ngược chiều cũng trải qua các bước tương tự theo thứ tự ngược lại.

  1. Border thả gói tin xuống VNGW1
  2. Anh ta cởi quần áo của anh ta, nhìn vào địa chỉ của người nhận và thấy rằng anh ta có thể truy cập được qua đường hầm Tunnel1 (MPLSoGRE hoặc MPLSoUDP).
  3. Theo đó, nó gắn nhãn MPLS, tiêu đề GRE/UDP và IP mới rồi gửi nó tới ToR3 10.0.255.1.
    Địa chỉ đích đường hầm là địa chỉ IP của vRouter mà phía sau máy ảo đích được đặt - 10.0.0.2.
  4. Mạng cơ bản phân phối gói đến vRouter mong muốn.
  5. vRouter đích đọc GRE/UDP, xác định giao diện bằng nhãn MPLS và gửi gói IP trần đến giao diện TAP được liên kết với eth0 của VM.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Máy bay điều khiển

VNGW1 thiết lập vùng lân cận BGP với bộ điều khiển SDN, từ đó nó nhận được tất cả thông tin định tuyến về máy khách: địa chỉ IP (vRouter) nào đứng sau máy khách nào và nhãn MPLS nào được xác định.

Tương tự, anh ta tự mình thông báo cho bộ điều khiển SDN về tuyến đường mặc định với nhãn của máy khách này, cho biết anh ta là chặng tiếp theo. Và sau đó mặc định này sẽ đến vRouters.

Trên VNGW, việc tổng hợp tuyến đường hoặc dịch NAT thường xảy ra.

Và theo hướng khác, nó sẽ gửi chính xác tuyến đường tổng hợp này đến phiên có đường viền hoặc Bộ phản xạ tuyến đường. Và từ họ, nó nhận được tuyến đường mặc định hoặc Chế độ xem đầy đủ hoặc thứ gì đó khác.

Về khả năng đóng gói và trao đổi lưu lượng, VNGW không khác vRouter.
Nếu bạn mở rộng phạm vi một chút, thì bạn có thể thêm các thiết bị mạng khác vào VNGW và vRouters, chẳng hạn như tường lửa, làm sạch lưu lượng hoặc trang trại làm giàu, IPS, v.v.

Và với sự trợ giúp của việc tạo tuần tự các VRF và thông báo chính xác các tuyến đường, bạn có thể buộc lưu lượng truy cập lặp lại theo cách bạn muốn, được gọi là Chuỗi dịch vụ.

Nghĩa là, ở đây, bộ điều khiển SDN cũng hoạt động như một Bộ phản ánh tuyến đường giữa VNGW, vRouters và các thiết bị mạng khác.

Nhưng trên thực tế, bộ điều khiển cũng đưa ra thông tin về ACL và PBR (Định tuyến dựa trên chính sách), khiến các luồng lưu lượng riêng lẻ đi khác với tuyến đường yêu cầu chúng.

Tự động hóa cho các bạn nhỏ. Phần một (sau số XNUMX). Ảo hóa mạng

Câu Hỏi Thường Gặp

Tại sao bạn luôn đưa ra nhận xét về GRE/UDP?

Chà, nói chung, điều này có thể nói là dành riêng cho Vải Vonfram - bạn hoàn toàn không cần phải tính đến nó.

Nhưng nếu chúng ta sử dụng nó, thì bản thân TF, trong khi vẫn là OpenContrail, đã hỗ trợ cả hai cách đóng gói: MPLS trong GRE và MPLS trong UDP.

UDP tốt vì trong Cổng nguồn rất dễ mã hóa hàm băm từ Cổng IP+Proto+ban đầu trong tiêu đề của nó, điều này sẽ cho phép bạn thực hiện cân bằng.

Trong trường hợp của GRE, than ôi, chỉ có các tiêu đề IP và GRE bên ngoài, giống nhau cho tất cả lưu lượng được đóng gói và không có vấn đề gì về việc cân bằng - rất ít người có thể nhìn sâu vào bên trong gói tin như vậy.

Cho đến một thời điểm nào đó, các bộ định tuyến, nếu biết cách sử dụng đường hầm động, thì chỉ làm như vậy trong MPLSoGRE và chỉ gần đây họ mới học cách sử dụng MPLSoUDP. Vì vậy, chúng ta luôn phải lưu ý về khả năng có hai cách đóng gói khác nhau.

Công bằng mà nói, điều đáng chú ý là TF hỗ trợ đầy đủ kết nối L2 bằng VXLAN.

Bạn đã hứa sẽ tạo ra sự tương đồng với OpenFlow.
Họ thực sự đang yêu cầu nó. vSwitch trong cùng OpenStack thực hiện những việc rất giống nhau, sử dụng VXLAN, nhân tiện, cũng có tiêu đề UDP.

Trong Mặt phẳng dữ liệu, chúng hoạt động gần giống nhau; Mặt phẳng điều khiển khác nhau đáng kể. Tungsten Fabric sử dụng XMPP để cung cấp thông tin định tuyến tới vRouter, trong khi OpenStack chạy Openflow.

Bạn có thể cho tôi biết thêm một chút về vRouter không?
Nó được chia thành hai phần: vRouter Agent và vRouter Forwarder.

Cái đầu tiên chạy trong Không gian người dùng của HĐH máy chủ và liên lạc với bộ điều khiển SDN, trao đổi thông tin về các tuyến đường, VRF và ACL.

Cái thứ hai triển khai Mặt phẳng dữ liệu - thường là trong Không gian hạt nhân, nhưng cũng có thể chạy trên SmartNIC - card mạng có CPU và chip chuyển mạch có thể lập trình riêng, cho phép bạn loại bỏ tải khỏi CPU của máy chủ và làm cho mạng nhanh hơn và nhanh hơn có thể đoán trước được.

Một tình huống khác có thể xảy ra là vRouter là ứng dụng DPDK trong Không gian người dùng.

vRouter Agent gửi cài đặt tới vRouter Forwarder.

Mạng ảo là gì?
Tôi đã đề cập ở đầu bài viết về VRF rằng mỗi người thuê nhà được gắn với VRF của riêng mình. Và nếu điều này là đủ để hiểu biết hời hợt về hoạt động của mạng lớp phủ, thì ở lần lặp tiếp theo, cần phải làm rõ.

Thông thường, trong các cơ chế ảo hóa, thực thể Virtual Network (bạn có thể coi đây là danh từ riêng) được giới thiệu tách biệt với client/tenants/máy ảo - một thứ hoàn toàn độc lập. Và Mạng ảo này đã có thể được kết nối thông qua giao diện với một người thuê, với người thuê khác, với hai hoặc bất cứ nơi nào. Vì vậy, ví dụ, Chuỗi dịch vụ được triển khai khi lưu lượng truy cập cần được chuyển qua các nút nhất định theo trình tự được yêu cầu, chỉ bằng cách tạo và kết nối Mạng ảo theo đúng trình tự.

Do đó, không có sự tương ứng trực tiếp giữa Mạng ảo và người thuê.

Kết luận

Đây là mô tả rất hời hợt về hoạt động của mạng ảo với lớp phủ từ máy chủ và bộ điều khiển SDN. Nhưng cho dù bạn chọn nền tảng ảo hóa nào hôm nay, nó sẽ hoạt động theo cách tương tự, có thể là VMWare, ACI, OpenStack, CloudStack, Tungsten Fabric hoặc Juniper Contrail. Chúng sẽ khác nhau về kiểu đóng gói và tiêu đề, giao thức cung cấp thông tin đến các thiết bị mạng cuối, nhưng nguyên tắc của mạng lớp phủ có thể định cấu hình bằng phần mềm hoạt động trên mạng lớp phủ tĩnh tương đối đơn giản và sẽ vẫn giống nhau.
Có thể nói rằng ngày nay SDN dựa trên mạng lớp phủ đã giành chiến thắng trong lĩnh vực tạo đám mây riêng. Tuy nhiên, điều này không có nghĩa là Openflow không có chỗ đứng trong thế giới hiện đại - nó được sử dụng trong OpenStacke và trong cùng VMWare NSX, theo như tôi biết, Google sử dụng nó để thiết lập mạng ngầm.

Dưới đây tôi đã cung cấp các liên kết đến các tài liệu chi tiết hơn nếu bạn muốn nghiên cứu vấn đề sâu hơn.

Còn lớp lót của chúng tôi thì sao?

Nhưng nói chung là không có gì. Anh ấy đã không thay đổi toàn bộ. Tất cả những gì anh ta cần làm trong trường hợp có lớp phủ từ máy chủ là cập nhật các tuyến đường và ARP khi vRouter/VNGW xuất hiện và biến mất và mang các gói giữa chúng.

Hãy lập danh sách các yêu cầu đối với mạng Underlay.

  1. Có thể sử dụng một số loại giao thức định tuyến, trong trường hợp của chúng tôi - BGP.
  2. Có băng thông rộng, tốt nhất là không đăng ký quá mức để các gói không bị mất do quá tải.
  3. Hỗ trợ ECMP là một phần không thể thiếu của kết cấu.
  4. Có thể cung cấp QoS, bao gồm cả những thứ phức tạp như ECN.
  5. Hỗ trợ NETCONF là nền tảng cho tương lai.

Tôi dành rất ít thời gian ở đây cho công việc của mạng Underlay. Điều này là do ở phần sau của loạt bài này tôi sẽ tập trung vào nó và chúng ta sẽ chỉ đề cập đến Lớp phủ khi vượt qua.

Rõ ràng, tôi đang hạn chế nghiêm ngặt tất cả chúng ta bằng cách lấy mạng DC được xây dựng trong nhà máy Cloz làm ví dụ với định tuyến IP thuần túy và lớp phủ từ máy chủ.

Tuy nhiên, tôi tin tưởng rằng bất kỳ mạng nào có thiết kế đều có thể được mô tả bằng thuật ngữ chính thức và tự động. Chỉ là mục tiêu của tôi ở đây là hiểu các phương pháp tiếp cận tự động hóa và không làm mọi người nhầm lẫn bằng cách giải quyết vấn đề ở dạng tổng quát.

Là một phần của ADSM, Roman Gorge và tôi dự định xuất bản một ấn bản riêng về ảo hóa sức mạnh tính toán và sự tương tác của nó với ảo hóa mạng. Giữ liên lạc.

Liên kết hữu ích

Cảm ơn

  • La Mã Gorga - cựu người dẫn chương trình podcast linkmeup và hiện là chuyên gia trong lĩnh vực nền tảng đám mây. Để nhận xét và chỉnh sửa. Chà, chúng tôi đang chờ đợi bài viết chuyên sâu hơn của anh ấy về ảo hóa trong thời gian sắp tới.
  • Alexander Shalimov - đồng nghiệp và chuyên gia của tôi trong lĩnh vực phát triển mạng ảo. Để nhận xét và chỉnh sửa.
  • Valentin Sinitsyn - đồng nghiệp và chuyên gia của tôi trong lĩnh vực Vải Vonfram. Để nhận xét và chỉnh sửa.
  • Artyom Chernobay — linkmeup họa sĩ minh họa. Đối với KDPV.
  • Alexander Limonov. Đối với meme "tự động".

Nguồn: www.habr.com

Thêm một lời nhận xét