Triển khai Virtual Routing Instance (VRF-Lite)trên JCNR bằng Network Attachment Definition (NAD)

Triển khai Virtual Routing Instance (VRF-Lite)trên JCNR bằng Network Attachment Definition (NAD)

**Tổng quan: hãy đọc chủ đề này để hiểu cách triển khai các phiên bản định tuyến ảo (virtual routing instances) trong JCNR.

Các phiên bản định tuyến ảo cho phép quản trị viên chia router cloud-native thành nhiều router ảo độc lập, mỗi router có bảng định tuyến riêng. Việc chia một thiết bị thành nhiều phiên bản định tuyến ảo giúp cách ly lưu lượng truyền qua mạng mà không cần nhiều thiết bị vật lý để phân đoạn mạng. Bạn có thể sử dụng các phiên bản định tuyến ảo để cách ly lưu lượng của từng khách hàng trên mạng và gán các phiên bản cụ thể cho các giao diện mà khách hàng sở hữu. Công nghệ Virtual Routing and Forwarding (VRF) thường được sử dụng kết hợp với các subinterface lớp 3 (Layer 3 subinterfaces), cho phép phân biệt lưu lượng trên cùng một cổng vật lý và liên kết chúng với nhiều router ảo. Mỗi subinterface lớp 3 logic chỉ có thể thuộc về một phiên bản định tuyến duy nhất. Hãy tham khảo chủ đề Virtual Router Instances để biết thêm thông tin chi tiết.

Cấu hình

Bạn có thể tạo một phiên bản định tuyến ảo trong Cloud-Native Router thông qua một manifest định nghĩa Network Attachment Definition (NAD). Dưới đây là một ví dụ về NAD để tạo phiên bản định tuyến ảo "bluenet":

apiVersion: "k8s.cni.cncf.io/v1"

kind: NetworkAttachmentDefinition

metadata:

  name: blue

spec:

  config: '{

    "cniVersion":"0.4.0",

    "name": "blue-net",

    "plugins": [

      {

        "type": "jcnr",

        "args": {

          "instanceName": "bluenet",

          "instanceType": "virtual-router"

        },

        "kubeConfig":"/root/.kube/config"

      }

    ]

  }'

**Lưu ý rằng giá trị instanceType được đặt là virtual-router. Tham khảo phần Cloud-Native Router Use-Cases and Configuration Overview để biết thêm thông tin về NAD.

Dưới đây là một ví dụ cấu hình cho pod có tên podblue, với một giao diện (192.168.11.10/24) được gắn vào mạng blue (đầu ra đã được rút gọn để ngắn gọn):

apiVersion: v1

kind: Pod

metadata:

  name: podblue

  annotations:

    k8s.v1.cni.cncf.io/networks: |

      [

        {

          "name": "blue",

          "interface":"net1",

          "cni-args": {

            "interfaceType":"veth",

            "dataplane":"dpdk",

            "mac":"aa:bb:cc:dd:ee:10",

            "ipConfig":{

              "ipv4":{

                "address":"192.168.11.10/24",

                "gateway":"192.168.11.1",

                "routes":["192.168.11.0/24"]

              },

              "ipv6":{

                "address":"abcd::192.168.11.10/112",

                "gateway":"abcd::192.168.11.1",

                "routes":["abcd::192.168.11.0/112"]

              }

            }

          }

        }

      ]

spec:

...

Khi bạn áp dụng các manifest NAD và pod bằng lệnh kubectl apply -f manifest, một phiên bản định tuyến bluenet và bảng định tuyến bluenet.inet.0 sẽ được tạo trong bộ điều khiển Cloud-Native Router. Bạn có thể cấu hình Cloud-Native Router để cho phép podblue giao tiếp với các pod trên mạng từ xa.

**Lưu ý: Sử dụng tài nguyên configlet để cấu hình các pod cRPD.

Dưới đây là một ví dụ cấu hình cho cRPD:

  • Cấu hình giao diện fabric cục bộ và giao thức BGP:

to set interfaces ens2f0 unit 0 family inet address 10.10.10.11/24

set protocols bgp group overlay type internal

set protocols bgp group overlay local-address 10.10.10.11

set protocols bgp group overlay local-as 64520

set protocols bgp group overlay neighbor 10.10.10.12 peer-as 64520

Trong đó 10.10.10.12/24 là địa chỉ IP của peer BGP hoặc router lân cận.

  • Xuất các tuyến inet bằng giao thức BGP:

set policy-options policy-statement send_direct term 1 from protocol direct

set policy-options policy-statement send_direct term 1 then accept

set policy-options policy-statement send_direct term reject then reject

set protocols bgp group overlay export send_direct

  • Rò (leak) các tuyến từ phiên bản định tuyến bluenet sang phiên bản định tuyến mặc định:

set groups cni routing-instances bluenet routing-options interface-routes rib-group inet blue_to_inet

set routing-options rib-groups blue_to_inet import-rib bluenet.inet.0

set routing-options rib-groups blue_to_inet import-rib inet.0

  • Chỉ rò rỉ các tuyến BGP khớp với tiền tố 192.168.12.0 từ inet.0 sang phiên bản định tuyến bluenet, trong đó 192.168.12.0/24 là mạng pod từ xa:

set policy-options policy-statement inet_to_blue term from_bgp from instance master

set policy-options policy-statement inet_to_blue term from_bgp from protocol bgp

set policy-options policy-statement inet_to_blue term from_bgp from route-filter 192.168.12.0/24 orlonger

set policy-options policy-statement inet_to_blue term from_bgp then accept

set policy-options policy-statement inet_to_blue term reject then reject

set routing-options rib-groups inet_to_blue import-rib inet.0

set routing-options rib-groups inet_to_blue import-rib bluenet.inet.0

set routing-options rib-groups inet_to_blue import-policy inet_to_blue

set groups cni routing-instances bluenet routing-options instance-import inet_to_blue

**Lưu ý: Cloud-Native Router hỗ trợ rò rỉ tuyến giữa các phiên bản định tuyến router ảo đối với các tuyến có next-hop dạng interface, receive, resolve và table.

 

Chúc các bạn thực hiện thành công. Hi vọng bài viết này sẽ giúp ích cho các bạn trong công việc. Nếu bạn có vấn đề gì thắc mắc đừng ngần ngại liên hệ với chúng tôi theo thông tin dưới đây để được hỗ trợ thêm.

Hẹn gặp lại các bạn trong các bài viết tiếp theo!

CÔNG TY CỔ PHẦN DỊCH VỤ CÔNG NGHỆ DATECH

• Địa chỉ: Số 23E4 KĐT Cầu Diễn, Tổ 7, Phú Diễn, Bắc Từ Liêm, Hà Nội

• Điện thoại: 02432012368

• Hotline: 098 115 6699

• Email: info@datech.vn

• Website: https://datech.vn