Skip to content

Commit f1d5e25

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 <qmo@qmon.net>
1 parent 4acdc7f commit f1d5e25

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
@@ -152,7 +152,6 @@ fn main() {
152152
vpcmapw: setup.vpcmapw,
153153
nattablesw: setup.nattablesw,
154154
natallocatorw: setup.natallocatorw,
155-
vpcdtablesw: setup.vpcdtablesw,
156155
flowfilterw: setup.flowfiltertablesw,
157156
vpc_stats_store: setup.vpc_stats_store,
158157
},

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_filter)
10397
.add_stage(flow_lookup_nf)
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
@@ -16,7 +16,6 @@ pub mod test {
1616
use nat::stateless::NatTablesWriter;
1717
use net::eth::mac::Mac;
1818
use net::interface::Mtu;
19-
use pkt_meta::dst_vpcd_lookup::VpcDiscTablesWriter;
2019
use std::net::IpAddr;
2120
use std::net::Ipv4Addr;
2221
use std::str::FromStr;
@@ -425,9 +424,6 @@ pub mod test {
425424
/* create NatAllocator for stateful nat */
426425
let natallocatorw = NatAllocatorWriter::new();
427426

428-
/* create VniTables for dst_vni_lookup */
429-
let vpcdtablesw = VpcDiscTablesWriter::new();
430-
431427
/* create FlowFilterTable for flow filtering */
432428
let flowfilterw = FlowFilterTableWriter::new();
433429

@@ -440,7 +436,6 @@ pub mod test {
440436
vpcmapw,
441437
nattablesw,
442438
natallocatorw,
443-
vpcdtablesw,
444439
flowfilterw,
445440
vpc_stats_store,
446441
};

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
@@ -22,6 +22,7 @@ mod tests {
2222
use config::internal::routing::vrf::VrfConfig;
2323
use config::{ConfigError, GwConfig};
2424
use etherparse::Icmpv4Type;
25+
use flow_filter::{FlowFilter, FlowFilterTable, FlowFilterTableWriter};
2526
use net::buffer::{PacketBufferMut, TestBuffer};
2627
use net::eth::mac::Mac;
2728
use net::headers::{
@@ -38,8 +39,6 @@ mod tests {
3839
use net::udp::{TruncatedUdp, UdpPort};
3940
use net::vxlan::Vni;
4041
use pipeline::NetworkFunction;
41-
use pkt_meta::dst_vpcd_lookup::setup::build_dst_vni_lookup_configuration;
42-
use pkt_meta::dst_vpcd_lookup::{DstVpcdLookup, VpcDiscTablesWriter};
4342
use pkt_meta::flow_table::flow_key::Uni;
4443
use pkt_meta::flow_table::{FlowKey, FlowTable, IpProtoKey, LookupNF, UdpProtoKey};
4544
use std::net::{IpAddr, Ipv4Addr};
@@ -1167,7 +1166,7 @@ mod tests {
11671166
#[allow(clippy::too_many_arguments)]
11681167
fn check_packet_with_vpcd_lookup(
11691168
nat: &mut StatefulNat,
1170-
vpcdlookup: &mut DstVpcdLookup,
1169+
vpcdlookup: &mut FlowFilter,
11711170
flow_lookup_stage: Option<&mut LookupNF>,
11721171
src_vni: Vni,
11731172
src_ip: &str,
@@ -1245,10 +1244,10 @@ mod tests {
12451244
config.validate().unwrap();
12461245

12471246
// Build VPC discriminant lookup stage
1248-
let vpcd_tables = build_dst_vni_lookup_configuration(&config.external.overlay).unwrap();
1249-
let mut vpcdtablesw = VpcDiscTablesWriter::new();
1250-
vpcdtablesw.update_vpcd_tables(vpcd_tables);
1251-
let mut vpcdlookup = DstVpcdLookup::new("vpcd-lookup", vpcdtablesw.get_reader());
1247+
let vpcd_tables = FlowFilterTable::build_from_overlay(&config.external.overlay).unwrap();
1248+
let mut vpcdtablesw = FlowFilterTableWriter::new();
1249+
vpcdtablesw.update_flow_filter_table(vpcd_tables);
1250+
let mut vpcdlookup = FlowFilter::new("vpcd-lookup", vpcdtablesw.get_reader());
12521251

12531252
/////////////////////////////////////////////////////////////////
12541253
// First NAT stage: We do not search for the destination VPC discriminant in the flow table.
@@ -1541,10 +1540,10 @@ mod tests {
15411540
);
15421541

15431542
// Build VPC discriminant lookup stage
1544-
let vpcd_tables = build_dst_vni_lookup_configuration(&config.external.overlay).unwrap();
1545-
let mut vpcdtablesw = VpcDiscTablesWriter::new();
1546-
vpcdtablesw.update_vpcd_tables(vpcd_tables);
1547-
let mut vpcdlookup = DstVpcdLookup::new("vpcd-lookup", vpcdtablesw.get_reader());
1543+
let vpcd_tables = FlowFilterTable::build_from_overlay(&config.external.overlay).unwrap();
1544+
let mut vpcdtablesw = FlowFilterTableWriter::new();
1545+
vpcdtablesw.update_flow_filter_table(vpcd_tables);
1546+
let mut vpcdlookup = FlowFilter::new("vpcd-lookup", vpcdtablesw.get_reader());
15481547

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

0 commit comments

Comments
 (0)