@@ -25,7 +25,6 @@ import (
25
25
"k8s.io/client-go/tools/record"
26
26
"k8s.io/klog/v2"
27
27
utilnet "k8s.io/utils/net"
28
- "sigs.k8s.io/knftables"
29
28
30
29
"github.com/ovn-org/libovsdb/client"
31
30
@@ -41,7 +40,6 @@ import (
41
40
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/node/controllers/egressservice"
42
41
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/node/linkmanager"
43
42
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/node/managementport"
44
- nodenft "github.com/ovn-org/ovn-kubernetes/go-controller/pkg/node/nftables"
45
43
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/node/ovspinning"
46
44
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/node/routemanager"
47
45
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/ovn/controller/apbroute"
@@ -119,9 +117,6 @@ type DefaultNodeNetworkController struct {
119
117
// retry framework for endpoint slices, used for the removal of stale conntrack entries for services
120
118
retryEndpointSlices * retry.RetryFramework
121
119
122
- // retry framework for nodes, used for updating routes/nftables rules for node PMTUD guarding
123
- retryNodes * retry.RetryFramework
124
-
125
120
apbExternalRouteNodeController * apbroute.ExternalGatewayNodeController
126
121
127
122
networkManager networkmanager.Interface
@@ -186,23 +181,12 @@ func NewDefaultNodeNetworkController(cnnci *CommonNodeNetworkControllerInfo, net
186
181
187
182
nc .initRetryFrameworkForNode ()
188
183
189
- err = setupPMTUDNFTSets ()
190
- if err != nil {
191
- return nil , fmt .Errorf ("failed to setup PMTUD nftables sets: %w" , err )
192
- }
193
-
194
- err = setupPMTUDNFTChain ()
195
- if err != nil {
196
- return nil , fmt .Errorf ("failed to setup PMTUD nftables chain: %w" , err )
197
- }
198
-
199
184
return nc , nil
200
185
}
201
186
202
187
func (nc * DefaultNodeNetworkController ) initRetryFrameworkForNode () {
203
188
nc .retryNamespaces = nc .newRetryFrameworkNode (factory .NamespaceExGwType )
204
189
nc .retryEndpointSlices = nc .newRetryFrameworkNode (factory .EndpointSliceForStaleConntrackRemovalType )
205
- nc .retryNodes = nc .newRetryFrameworkNode (factory .NodeType )
206
190
}
207
191
208
192
func (oc * DefaultNodeNetworkController ) shouldReconcileNetworkChange (old , new util.NetInfo ) bool {
@@ -1254,10 +1238,6 @@ func (nc *DefaultNodeNetworkController) Start(ctx context.Context) error {
1254
1238
if err != nil {
1255
1239
return fmt .Errorf ("failed to watch endpointSlices: %w" , err )
1256
1240
}
1257
- err = nc .WatchNodes ()
1258
- if err != nil {
1259
- return fmt .Errorf ("failed to watch nodes: %w" , err )
1260
- }
1261
1241
}
1262
1242
1263
1243
if nc .healthzServer != nil {
@@ -1465,144 +1445,6 @@ func (nc *DefaultNodeNetworkController) WatchNamespaces() error {
1465
1445
return err
1466
1446
}
1467
1447
1468
- func (nc * DefaultNodeNetworkController ) WatchNodes () error {
1469
- _ , err := nc .retryNodes .WatchResource ()
1470
- return err
1471
- }
1472
-
1473
- // addOrUpdateNode handles creating flows or nftables rules for each node to handle PMTUD
1474
- func (nc * DefaultNodeNetworkController ) addOrUpdateNode (node * corev1.Node ) error {
1475
- var nftElems []* knftables.Element
1476
- var addrs []string
1477
- for _ , address := range node .Status .Addresses {
1478
- if address .Type != corev1 .NodeInternalIP {
1479
- continue
1480
- }
1481
- nodeIP := net .ParseIP (address .Address )
1482
- if nodeIP == nil {
1483
- continue
1484
- }
1485
-
1486
- addrs = append (addrs , nodeIP .String ())
1487
- klog .Infof ("Adding remote node %q, IP: %s to PMTUD blocking rules" , node .Name , nodeIP )
1488
- if utilnet .IsIPv4 (nodeIP ) {
1489
- nftElems = append (nftElems , & knftables.Element {
1490
- Set : types .NFTNoPMTUDRemoteNodeIPsv4 ,
1491
- Key : []string {nodeIP .String ()},
1492
- })
1493
- } else {
1494
- nftElems = append (nftElems , & knftables.Element {
1495
- Set : types .NFTNoPMTUDRemoteNodeIPsv6 ,
1496
- Key : []string {nodeIP .String ()},
1497
- })
1498
- }
1499
- }
1500
-
1501
- gw := nc .Gateway .(* gateway )
1502
- gw .openflowManager .updateBridgePMTUDFlowCache (getPMTUDKey (node .Name ), addrs )
1503
-
1504
- if len (nftElems ) > 0 {
1505
- if err := nodenft .UpdateNFTElements (nftElems ); err != nil {
1506
- return fmt .Errorf ("unable to update NFT elements for node %q, error: %w" , node .Name , err )
1507
- }
1508
- }
1509
-
1510
- return nil
1511
- }
1512
-
1513
- func removePMTUDNodeNFTRules (nodeIPs []net.IP ) error {
1514
- var nftElems []* knftables.Element
1515
- for _ , nodeIP := range nodeIPs {
1516
- // Remove IPs from NFT sets
1517
- if utilnet .IsIPv4 (nodeIP ) {
1518
- nftElems = append (nftElems , & knftables.Element {
1519
- Set : types .NFTNoPMTUDRemoteNodeIPsv4 ,
1520
- Key : []string {nodeIP .String ()},
1521
- })
1522
- } else {
1523
- nftElems = append (nftElems , & knftables.Element {
1524
- Set : types .NFTNoPMTUDRemoteNodeIPsv6 ,
1525
- Key : []string {nodeIP .String ()},
1526
- })
1527
- }
1528
- }
1529
- if len (nftElems ) > 0 {
1530
- if err := nodenft .DeleteNFTElements (nftElems ); err != nil {
1531
- return err
1532
- }
1533
- }
1534
- return nil
1535
- }
1536
-
1537
- func (nc * DefaultNodeNetworkController ) deleteNode (node * corev1.Node ) {
1538
- gw := nc .Gateway .(* gateway )
1539
- gw .openflowManager .deleteFlowsByKey (getPMTUDKey (node .Name ))
1540
- ipsToRemove := make ([]net.IP , 0 )
1541
- for _ , address := range node .Status .Addresses {
1542
- if address .Type != corev1 .NodeInternalIP {
1543
- continue
1544
- }
1545
- nodeIP := net .ParseIP (address .Address )
1546
- if nodeIP == nil {
1547
- continue
1548
- }
1549
- ipsToRemove = append (ipsToRemove , nodeIP )
1550
- }
1551
-
1552
- klog .Infof ("Deleting NFT elements for node: %s" , node .Name )
1553
- if err := removePMTUDNodeNFTRules (ipsToRemove ); err != nil {
1554
- klog .Errorf ("Failed to delete nftables rules for PMTUD blocking for node %q: %v" , node .Name , err )
1555
- }
1556
- }
1557
-
1558
- func (nc * DefaultNodeNetworkController ) syncNodes (objs []interface {}) error {
1559
- var keepNFTSetElemsV4 , keepNFTSetElemsV6 []* knftables.Element
1560
- var errors []error
1561
- klog .Infof ("Starting node controller node sync" )
1562
- start := time .Now ()
1563
- for _ , obj := range objs {
1564
- node , ok := obj .(* corev1.Node )
1565
- if ! ok {
1566
- klog .Errorf ("Spurious object in syncNodes: %v" , obj )
1567
- continue
1568
- }
1569
- if node .Name == nc .name {
1570
- continue
1571
- }
1572
- for _ , address := range node .Status .Addresses {
1573
- if address .Type != corev1 .NodeInternalIP {
1574
- continue
1575
- }
1576
- nodeIP := net .ParseIP (address .Address )
1577
- if nodeIP == nil {
1578
- continue
1579
- }
1580
-
1581
- // Remove IPs from NFT sets
1582
- if utilnet .IsIPv4 (nodeIP ) {
1583
- keepNFTSetElemsV4 = append (keepNFTSetElemsV4 , & knftables.Element {
1584
- Set : types .NFTNoPMTUDRemoteNodeIPsv4 ,
1585
- Key : []string {nodeIP .String ()},
1586
- })
1587
- } else {
1588
- keepNFTSetElemsV6 = append (keepNFTSetElemsV6 , & knftables.Element {
1589
- Set : types .NFTNoPMTUDRemoteNodeIPsv6 ,
1590
- Key : []string {nodeIP .String ()},
1591
- })
1592
- }
1593
- }
1594
- }
1595
- if err := recreateNFTSet (types .NFTNoPMTUDRemoteNodeIPsv4 , keepNFTSetElemsV4 ); err != nil {
1596
- errors = append (errors , err )
1597
- }
1598
- if err := recreateNFTSet (types .NFTNoPMTUDRemoteNodeIPsv6 , keepNFTSetElemsV6 ); err != nil {
1599
- errors = append (errors , err )
1600
- }
1601
-
1602
- klog .Infof ("Node controller node sync done. Time taken: %s" , time .Since (start ))
1603
- return utilerrors .Join (errors ... )
1604
- }
1605
-
1606
1448
// validateVTEPInterfaceMTU checks if the MTU of the interface that has ovn-encap-ip is big
1607
1449
// enough to carry the `config.Default.MTU` and the Geneve header. If the MTU is not big
1608
1450
// enough, it will return an error
@@ -1643,10 +1485,6 @@ func (nc *DefaultNodeNetworkController) validateVTEPInterfaceMTU() error {
1643
1485
return nil
1644
1486
}
1645
1487
1646
- func getPMTUDKey (nodeName string ) string {
1647
- return fmt .Sprintf ("%s_pmtud" , nodeName )
1648
- }
1649
-
1650
1488
func configureSvcRouteViaBridge (routeManager * routemanager.Controller , bridge string ) error {
1651
1489
return configureSvcRouteViaInterface (routeManager , bridge , DummyNextHopIPs ())
1652
1490
}
0 commit comments