Skip to content

Commit 4dc9978

Browse files
committed
feat: Remove legacy dst_vpcd_lookup stage
Now that we've transitioned to the new, more powerful/accurate flow-filter stage for looking up the destination VPC discriminant for packets, remove the legacy, redundant dst_vpcd_lookup stage. Signed-off-by: Quentin Monnet <[email protected]>
1 parent 4cb09b4 commit 4dc9978

File tree

11 files changed

+12
-977
lines changed

11 files changed

+12
-977
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dataplane/src/main.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@ fn main() {
154154
vpcmapw: setup.vpcmapw,
155155
nattablesw: setup.nattablesw,
156156
natallocatorw: setup.natallocatorw,
157-
vpcdtablesw: setup.vpcdtablesw,
158157
flowfilterw: setup.flowfiltertablesw,
159158
vpc_stats_store: setup.vpc_stats_store,
160159
},

dataplane/src/packet_processor/mod.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ use super::packet_processor::ipforward::IpForwarder;
1313
use concurrency::sync::Arc;
1414

1515
use flow_filter::{FlowFilter, FlowFilterTableWriter};
16-
use pkt_meta::dst_vpcd_lookup::{DstVpcdLookup, VpcDiscTablesWriter};
1716
use pkt_meta::flow_table::{ExpirationsNF, FlowTable, LookupNF};
1817

1918
use nat::stateful::NatAllocatorWriter;
@@ -39,7 +38,6 @@ where
3938
pub vpcmapw: VpcMapWriter<VpcMapName>,
4039
pub nattablesw: NatTablesWriter,
4140
pub natallocatorw: NatAllocatorWriter,
42-
pub vpcdtablesw: VpcDiscTablesWriter,
4341
pub flowfiltertablesw: FlowFilterTableWriter,
4442
pub stats: StatsCollector,
4543
pub vpc_stats_store: Arc<VpcStatsStore>,
@@ -51,7 +49,6 @@ pub(crate) fn start_router<Buf: PacketBufferMut>(
5149
) -> Result<InternalSetup<Buf>, RouterError> {
5250
let nattablesw = NatTablesWriter::new();
5351
let natallocatorw = NatAllocatorWriter::new();
54-
let vpcdtablesw = VpcDiscTablesWriter::new();
5552
let flowfiltertablesw = FlowFilterTableWriter::new();
5653
let router = Router::new(params)?;
5754
let vpcmapw = VpcMapWriter::<VpcMapName>::new();
@@ -68,7 +65,6 @@ pub(crate) fn start_router<Buf: PacketBufferMut>(
6865

6966
let iftr_factory = router.get_iftabler_factory();
7067
let fibtr_factory = router.get_fibtr_factory();
71-
let vpcdtablesr_factory = vpcdtablesw.get_reader_factory();
7268
let flowfiltertablesr_factory = flowfiltertablesw.get_reader_factory();
7369
let atabler_factory = router.get_atabler_factory();
7470
let nattabler_factory = nattablesw.get_reader_factory();
@@ -78,7 +74,6 @@ pub(crate) fn start_router<Buf: PacketBufferMut>(
7874
// Build network functions
7975
let stage_ingress = Ingress::new("Ingress", iftr_factory.handle());
8076
let stage_egress = Egress::new("Egress", iftr_factory.handle(), atabler_factory.handle());
81-
let dst_vpcd_lookup = DstVpcdLookup::new("dst-vni-lookup", vpcdtablesr_factory.handle());
8277
let iprouter1 = IpForwarder::new("IP-Forward-1", fibtr_factory.handle());
8378
let iprouter2 = IpForwarder::new("IP-Forward-2", fibtr_factory.handle());
8479
let stateless_nat = StatelessNat::with_reader("stateless-NAT", nattabler_factory.handle());
@@ -98,7 +93,6 @@ pub(crate) fn start_router<Buf: PacketBufferMut>(
9893
DynPipeline::new()
9994
.add_stage(stage_ingress)
10095
.add_stage(iprouter1)
101-
.add_stage(dst_vpcd_lookup)
10296
.add_stage(flow_lookup_nf)
10397
.add_stage(flow_filter)
10498
.add_stage(stateless_nat)
@@ -116,7 +110,6 @@ pub(crate) fn start_router<Buf: PacketBufferMut>(
116110
vpcmapw,
117111
nattablesw,
118112
natallocatorw,
119-
vpcdtablesw,
120113
flowfiltertablesw,
121114
stats,
122115
vpc_stats_store,

mgmt/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ k8s-less = { workspace = true }
2828
lpm = { workspace = true }
2929
nat = { workspace = true }
3030
net = { workspace = true }
31-
pkt-meta = { workspace = true }
3231
rekon = { workspace = true }
3332
routing = { workspace = true }
3433
stats = { workspace = true }

mgmt/src/processor/proc.rs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ use flow_filter::{FlowFilterTable, FlowFilterTableWriter};
2323
use nat::stateful::NatAllocatorWriter;
2424
use nat::stateless::NatTablesWriter;
2525
use nat::stateless::setup::build_nat_configuration;
26-
use pkt_meta::dst_vpcd_lookup::VpcDiscTablesWriter;
27-
use pkt_meta::dst_vpcd_lookup::setup::build_dst_vni_lookup_configuration;
2826

2927
use crate::processor::display::ConfigHistory;
3028
use crate::processor::gwconfigdb::GwConfigDatabase;
@@ -82,9 +80,6 @@ pub struct ConfigProcessorParams {
8280
// writer for stateful NAT allocator
8381
pub natallocatorw: NatAllocatorWriter,
8482

85-
// writer for VPC routing table
86-
pub vpcdtablesw: VpcDiscTablesWriter,
87-
8883
// writer for flow filter table
8984
pub flowfilterw: FlowFilterTableWriter,
9085

@@ -486,16 +481,6 @@ fn apply_stateful_nat_config(
486481
Ok(())
487482
}
488483

489-
/// Update the VNI tables for dst_vni_lookup
490-
fn apply_dst_vpcd_lookup_config(
491-
overlay: &Overlay,
492-
vpcdtablesw: &mut VpcDiscTablesWriter,
493-
) -> ConfigResult {
494-
let vpcd_tables = build_dst_vni_lookup_configuration(overlay)?;
495-
vpcdtablesw.update_vpcd_tables(vpcd_tables);
496-
Ok(())
497-
}
498-
499484
fn apply_flow_filtering_config(
500485
overlay: &Overlay,
501486
flowfilterw: &mut FlowFilterTableWriter,
@@ -535,7 +520,6 @@ impl ConfigProcessor {
535520
let vpcmapw = &mut self.proc_params.vpcmapw;
536521
let nattablesw = &mut self.proc_params.nattablesw;
537522
let natallocatorw = &mut self.proc_params.natallocatorw;
538-
let vpcdtablesw = &mut self.proc_params.vpcdtablesw;
539523
let flowfilterw = &mut self.proc_params.flowfilterw;
540524

541525
/* build internal config if it hasn't been built */
@@ -573,9 +557,6 @@ impl ConfigProcessor {
573557
/* apply stateful NAT config */
574558
apply_stateful_nat_config(&config.external.overlay.vpc_table, natallocatorw)?;
575559

576-
/* apply dst_vpcd_lookup config */
577-
apply_dst_vpcd_lookup_config(&config.external.overlay, vpcdtablesw)?;
578-
579560
/* apply flow filtering config */
580561
apply_flow_filtering_config(&config.external.overlay, flowfilterw)?;
581562

mgmt/src/tests/mgmt.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ pub mod test {
1717
use nat::stateless::NatTablesWriter;
1818
use net::eth::mac::Mac;
1919
use net::interface::Mtu;
20-
use pkt_meta::dst_vpcd_lookup::VpcDiscTablesWriter;
2120
use std::net::IpAddr;
2221
use std::net::Ipv4Addr;
2322
use std::str::FromStr;
@@ -429,9 +428,6 @@ pub mod test {
429428
/* create NatAllocator for stateful nat */
430429
let natallocatorw = NatAllocatorWriter::new();
431430

432-
/* create VniTables for dst_vni_lookup */
433-
let vpcdtablesw = VpcDiscTablesWriter::new();
434-
435431
/* create FlowFilterTable for flow filtering */
436432
let flowfilterw = FlowFilterTableWriter::new();
437433

@@ -444,7 +440,6 @@ pub mod test {
444440
vpcmapw,
445441
nattablesw,
446442
natallocatorw,
447-
vpcdtablesw,
448443
flowfilterw,
449444
vpc_stats_store,
450445
};

nat/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ arc-swap = { workspace = true }
1414
bnum = { workspace = true }
1515
concurrency = { workspace = true, features = [] }
1616
config = { workspace = true }
17+
flow-filter = { workspace = true }
1718
flow-info = { workspace = true }
1819
left-right = { workspace = true }
1920
linkme = { workspace = true }

nat/src/stateful/test.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ mod tests {
2323
use config::{ConfigError, GwConfig};
2424
use etherparse::Icmpv4Type;
2525
use fixin::wrap;
26+
use flow_filter::{FlowFilter, FlowFilterTable, FlowFilterTableWriter};
2627
use net::buffer::{PacketBufferMut, TestBuffer};
2728
use net::eth::mac::Mac;
2829
use net::headers::{
@@ -39,8 +40,6 @@ mod tests {
3940
use net::udp::{TruncatedUdp, UdpPort};
4041
use net::vxlan::Vni;
4142
use pipeline::NetworkFunction;
42-
use pkt_meta::dst_vpcd_lookup::setup::build_dst_vni_lookup_configuration;
43-
use pkt_meta::dst_vpcd_lookup::{DstVpcdLookup, VpcDiscTablesWriter};
4443
use pkt_meta::flow_table::flow_key::Uni;
4544
use pkt_meta::flow_table::{FlowKey, FlowTable, IpProtoKey, LookupNF, UdpProtoKey};
4645
use std::net::{IpAddr, Ipv4Addr};
@@ -1175,7 +1174,7 @@ mod tests {
11751174
#[allow(clippy::too_many_arguments)]
11761175
fn check_packet_with_vpcd_lookup(
11771176
nat: &mut StatefulNat,
1178-
vpcdlookup: &mut DstVpcdLookup,
1177+
vpcdlookup: &mut FlowFilter,
11791178
flow_lookup_stage: Option<&mut LookupNF>,
11801179
src_vni: Vni,
11811180
src_ip: &str,
@@ -1254,10 +1253,10 @@ mod tests {
12541253
config.validate().unwrap();
12551254

12561255
// Build VPC discriminant lookup stage
1257-
let vpcd_tables = build_dst_vni_lookup_configuration(&config.external.overlay).unwrap();
1258-
let mut vpcdtablesw = VpcDiscTablesWriter::new();
1259-
vpcdtablesw.update_vpcd_tables(vpcd_tables);
1260-
let mut vpcdlookup = DstVpcdLookup::new("vpcd-lookup", vpcdtablesw.get_reader());
1256+
let vpcd_tables = FlowFilterTable::build_from_overlay(&config.external.overlay).unwrap();
1257+
let mut vpcdtablesw = FlowFilterTableWriter::new();
1258+
vpcdtablesw.update_flow_filter_table(vpcd_tables);
1259+
let mut vpcdlookup = FlowFilter::new("vpcd-lookup", vpcdtablesw.get_reader());
12611260

12621261
/////////////////////////////////////////////////////////////////
12631262
// First NAT stage: We do not search for the destination VPC discriminant in the flow table.
@@ -1551,10 +1550,10 @@ mod tests {
15511550
);
15521551

15531552
// Build VPC discriminant lookup stage
1554-
let vpcd_tables = build_dst_vni_lookup_configuration(&config.external.overlay).unwrap();
1555-
let mut vpcdtablesw = VpcDiscTablesWriter::new();
1556-
vpcdtablesw.update_vpcd_tables(vpcd_tables);
1557-
let mut vpcdlookup = DstVpcdLookup::new("vpcd-lookup", vpcdtablesw.get_reader());
1553+
let vpcd_tables = FlowFilterTable::build_from_overlay(&config.external.overlay).unwrap();
1554+
let mut vpcdtablesw = FlowFilterTableWriter::new();
1555+
vpcdtablesw.update_flow_filter_table(vpcd_tables);
1556+
let mut vpcdlookup = FlowFilter::new("vpcd-lookup", vpcdtablesw.get_reader());
15581557

15591558
// Build flow table lookup stage
15601559
let flow_table = Arc::new(FlowTable::default());

0 commit comments

Comments
 (0)