From c280d6965bcb8d440e0c95caff7ae68a0a70d271 Mon Sep 17 00:00:00 2001 From: Zhongtao Hu <zhongtaohu.tim@linux.alibaba.com> Date: Tue, 9 Aug 2022 15:19:22 +0800 Subject: [PATCH] runtime-rs: delete route model As route model is used for specific internal scenario, and it's not for the general requirement. Fixes:#4838 Signed-off-by: Zhongtao Hu <zhongtaohu.tim@linux.alibaba.com> --- docs/design/architecture_3.0/README.md | 1 - .../resource/src/network/network_model/mod.rs | 6 -- .../src/network/network_model/route_model.rs | 88 ------------------- 3 files changed, 95 deletions(-) delete mode 100644 src/runtime-rs/crates/resource/src/network/network_model/route_model.rs diff --git a/docs/design/architecture_3.0/README.md b/docs/design/architecture_3.0/README.md index 562404bd51..778c355890 100644 --- a/docs/design/architecture_3.0/README.md +++ b/docs/design/architecture_3.0/README.md @@ -98,7 +98,6 @@ In our case, there will be a variety of resources, and every resource has severa | | MACVTAP Endpoint | Stage 3 | | | `VhostUserEndpoint` | Stage 3 | | Network Interworking Model | Tc filter | Stage 1 | -| | Route | Stage 1 | | | `MacVtap` | Stage 3 | | Storage | Virtio-fs | Stage 1 | | | `nydus` | Stage 2 | diff --git a/src/runtime-rs/crates/resource/src/network/network_model/mod.rs b/src/runtime-rs/crates/resource/src/network/network_model/mod.rs index 16457f1e4f..d96abf3da6 100644 --- a/src/runtime-rs/crates/resource/src/network/network_model/mod.rs +++ b/src/runtime-rs/crates/resource/src/network/network_model/mod.rs @@ -5,7 +5,6 @@ // pub mod none_model; -pub mod route_model; pub mod tc_filter_model; pub mod test_network_model; use std::sync::Arc; @@ -16,12 +15,10 @@ use async_trait::async_trait; use super::NetworkPair; pub(crate) const TC_FILTER_NET_MODEL_STR: &str = "tcfilter"; -pub(crate) const ROUTE_NET_MODEL_STR: &str = "route"; pub enum NetworkModelType { NoneModel, TcFilter, - Route, } #[async_trait] @@ -36,9 +33,6 @@ pub fn new(model: &str) -> Result<Arc<dyn NetworkModel>> { TC_FILTER_NET_MODEL_STR => Ok(Arc::new( tc_filter_model::TcFilterModel::new().context("new tc filter model")?, )), - ROUTE_NET_MODEL_STR => Ok(Arc::new( - route_model::RouteModel::new().context("new route model")?, - )), _ => Ok(Arc::new( none_model::NoneModel::new().context("new none model")?, )), diff --git a/src/runtime-rs/crates/resource/src/network/network_model/route_model.rs b/src/runtime-rs/crates/resource/src/network/network_model/route_model.rs deleted file mode 100644 index cb47bdad21..0000000000 --- a/src/runtime-rs/crates/resource/src/network/network_model/route_model.rs +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright (c) 2019-2022 Alibaba Cloud -// Copyright (c) 2019-2022 Ant Group -// -// SPDX-License-Identifier: Apache-2.0 -// - -use anyhow::{anyhow, Context, Result}; -use async_trait::async_trait; -use tokio::process::Command; - -use super::{NetworkModel, NetworkModelType}; -use crate::network::NetworkPair; - -#[derive(Debug)] -pub(crate) struct RouteModel {} - -impl RouteModel { - pub fn new() -> Result<Self> { - Ok(Self {}) - } -} - -#[async_trait] -impl NetworkModel for RouteModel { - fn model_type(&self) -> NetworkModelType { - NetworkModelType::Route - } - - async fn add(&self, pair: &NetworkPair) -> Result<()> { - let tap_name = &pair.tap.tap_iface.name; - let virt_name = &pair.virt_iface.name; - let virt_iface_addr = pair.virt_iface.addrs[0].addr.to_string(); - - let commands_args = vec![ - vec![ - "rule", "add", "pref", "10", "from", "all", "lookup", "local", - ], - vec!["rule", "del", "pref", "0", "from", "all"], - vec!["rule", "add", "pref", "5", "iif", virt_name, "table", "10"], - vec![ - "route", "replace", "default", "dev", tap_name, "table", "10", - ], - vec![ - "neigh", - "replace", - &virt_iface_addr, - "lladdr", - &pair.virt_iface.hard_addr, - "dev", - tap_name, - ], - ]; - - for ca in commands_args { - let output = Command::new("/sbin/ip") - .args(&ca) - .output() - .await - .with_context(|| format!("run command ip args {:?}", &ca))?; - if !output.status.success() { - return Err(anyhow!( - "run command ip args {:?} error {}", - &ca, - String::from_utf8(output.stderr)? - )); - } - } - - // TODO: support ipv6 - // change sysctl for tap0_kata - // echo 1 > /proc/sys/net/ipv4/conf/tap0_kata/accept_local - let accept_local_path = format!("/proc/sys/net/ipv4/conf/{}/accept_local", &tap_name); - std::fs::write(&accept_local_path, "1") - .with_context(|| format!("Failed to echo 1 > {}", &accept_local_path))?; - - // echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp - // This enabled ARP reply on peer eth0 to prevent without any reply on VPC - let proxy_arp_path = format!("/proc/sys/net/ipv4/conf/{}/proxy_arp", &virt_name); - std::fs::write(&proxy_arp_path, "1") - .with_context(|| format!("Failed to echo 1 > {}", &proxy_arp_path))?; - - Ok(()) - } - - async fn del(&self, _pair: &NetworkPair) -> Result<()> { - todo!() - } -}