mirror of
				https://github.com/vyos/vyos-documentation.git
				synced 2025-10-26 08:41:46 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			317 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			317 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| :lastproofread: 2023-01-20
 | |
| 
 | |
| .. _ethernet-interface:
 | |
| 
 | |
| ########
 | |
| Ethernet
 | |
| ########
 | |
| 
 | |
| This will be the most widely used interface on a router carrying traffic to the
 | |
| real world.
 | |
| 
 | |
| *************
 | |
| Configuration
 | |
| *************
 | |
| 
 | |
| Common interface configuration
 | |
| ==============================
 | |
| 
 | |
| .. cmdinclude:: /_include/interface-common-with-dhcp.txt
 | |
|    :var0: ethernet
 | |
|    :var1: eth0
 | |
| 
 | |
| .. cfgcmd:: set interface ethernet <interface> switchdev
 | |
| 
 | |
|   Switches this interface to `switchdev` mode that allows network interfaces to offload
 | |
|   certain networking functions directly to hardware, like a network switch or a SmartNIC.
 | |
|   This enables higher performance and lower latency for network processing by
 | |
|   bypassing the kernel's network stack for supported operations.
 | |
| 
 | |
| .. note:: This is only supported on certain physical network interfaces
 | |
|    and depends on specific models and drivers.
 | |
| 
 | |
| 
 | |
| Ethernet options
 | |
| ================
 | |
| 
 | |
| .. cfgcmd:: set interfaces ethernet <interface> duplex <auto | full | half>
 | |
| 
 | |
|    Configure physical interface duplex setting.
 | |
| 
 | |
|    * auto - interface duplex setting is auto-negotiated
 | |
|    * full - always use full-duplex
 | |
|    * half - always use half-duplex
 | |
| 
 | |
|    VyOS default will be `auto`.
 | |
| 
 | |
| .. cfgcmd:: set interfaces ethernet <interface> speed <auto | 10 | 100 | 1000 |
 | |
|   2500 | 5000 | 10000 | 25000 | 40000 | 50000 | 100000>
 | |
| 
 | |
|    Configure physical interface speed setting.
 | |
| 
 | |
|    * auto - interface speed is auto-negotiated
 | |
|    * 10 - 10 MBit/s
 | |
|    * 100 - 100 MBit/s
 | |
|    * 1000 - 1 GBit/s
 | |
|    * 2500 - 2.5 GBit/s
 | |
|    * 5000 - 5 GBit/s
 | |
|    * 10000 - 10 GBit/s
 | |
|    * 25000 - 25 GBit/s
 | |
|    * 40000 - 40 GBit/s
 | |
|    * 50000 - 50 GBit/s
 | |
|    * 100000 - 100 GBit/s
 | |
| 
 | |
|    VyOS default will be `auto`.
 | |
| 
 | |
| .. cfgcmd:: set interface ethernet <interface> ring-buffer rx <value>
 | |
| .. cfgcmd:: set interface ethernet <interface> ring-buffer tx <value>
 | |
| 
 | |
|   Configures the ring buffer size of the interface.
 | |
| 
 | |
|   The supported values for a specific interface can be obtained
 | |
|   with: `ethtool -g <interface>`
 | |
| 
 | |
| 
 | |
| Offloading
 | |
| ----------
 | |
| 
 | |
| .. cfgcmd:: set interfaces ethernet <interface> offload <gro | gso | lro | rps |
 | |
|   sg | tso>
 | |
| 
 | |
|   Enable different types of hardware offloading on the given NIC.
 | |
| 
 | |
|   :abbr:`LRO (Large Receive Offload)` is a technique designed to boost the
 | |
|   efficiency of how your computer's network interface card (NIC) processes
 | |
|   incoming network traffic. Typically, network data arrives in smaller chunks
 | |
|   called packets. Processing each packet individually consumes CPU (central
 | |
|   processing unit) resources. Lots of small packets can lead to a performance
 | |
|   bottleneck. Instead of handing the CPU each packet as it comes in, LRO
 | |
|   instructs the NIC to combine multiple incoming packets into a single, larger
 | |
|   packet. This larger packet is then passed to the CPU for processing.
 | |
| 
 | |
|   .. note:: Under some circumstances, LRO is known to modify the packet headers
 | |
|      of forwarded traffic, which breaks the end-to-end principle of computer
 | |
|      networking. LRO is also only able to offload TCP segments encapsulated in
 | |
|      IPv4 packets. Due to these limitations, it is recommended to use GRO
 | |
|      (Generic Receive Offload) where possible. More information on the
 | |
|      limitations of LRO can be found here: https://lwn.net/Articles/358910/
 | |
| 
 | |
|   :abbr:`GSO (Generic Segmentation Offload)` is a pure software offload that is
 | |
|   meant to deal with cases where device drivers cannot perform the offloads
 | |
|   described above. What occurs in GSO is that a given skbuff will have its data
 | |
|   broken out over multiple skbuffs that have been resized to match the MSS
 | |
|   provided via skb_shinfo()->gso_size.
 | |
| 
 | |
|   Before enabling any hardware segmentation offload a corresponding software
 | |
|   offload is required in GSO. Otherwise it becomes possible for a frame to be
 | |
|   re-routed between devices and end up being unable to be transmitted.
 | |
| 
 | |
|   :abbr:`GRO (Generic receive offload)` is the complement to GSO. Ideally any
 | |
|   frame assembled by GRO should be segmented to create an identical sequence of
 | |
|   frames using GSO, and any sequence of frames segmented by GSO should be able
 | |
|   to be reassembled back to the original by GRO. The only exception to this is
 | |
|   IPv4 ID in the case that the DF bit is set for a given IP header. If the
 | |
|   value of the IPv4 ID is not sequentially incrementing it will be altered so
 | |
|   that it is when a frame assembled via GRO is segmented via GSO.
 | |
| 
 | |
|   :abbr:`RPS (Receive Packet Steering)` is logically a software implementation
 | |
|   of :abbr:`RSS (Receive Side Scaling)`. Being in software, it is necessarily
 | |
|   called later in the datapath. Whereas RSS selects the queue and hence CPU that
 | |
|   will run the hardware interrupt handler, RPS selects the CPU to perform
 | |
|   protocol processing above the interrupt handler. This is accomplished by
 | |
|   placing the packet on the desired CPU's backlog queue and waking up the CPU
 | |
|   for processing. RPS has some advantages over RSS:
 | |
| 
 | |
|   - it can be used with any NIC
 | |
|   - software filters can easily be added to hash over new protocols
 | |
|   - it does not increase hardware device interrupt rate, although it does
 | |
|     introduce inter-processor interrupts (IPIs)
 | |
| 
 | |
|   .. note:: In order to use TSO/LRO with VMXNET3 adapters, the SG offloading
 | |
|      option must also be enabled.
 | |
| 
 | |
| Authentication (EAPoL)
 | |
| ----------------------
 | |
| 
 | |
| .. cmdinclude:: /_include/interface-eapol.txt
 | |
|    :var0: ethernet
 | |
|    :var1: eth0
 | |
| 
 | |
| EVPN Multihoming
 | |
| ----------------
 | |
| 
 | |
| Uplink/Core tracking.
 | |
| 
 | |
| .. cmdinclude:: /_include/interface-evpn-uplink.txt
 | |
|    :var0: ethernet
 | |
|    :var1: eth0
 | |
| 
 | |
| VLAN
 | |
| ====
 | |
| 
 | |
| Regular VLANs (802.1q)
 | |
| ----------------------
 | |
| 
 | |
| .. cmdinclude:: /_include/interface-vlan-8021q.txt
 | |
|    :var0: ethernet
 | |
|    :var1: eth0
 | |
| 
 | |
| QinQ (802.1ad)
 | |
| --------------
 | |
| 
 | |
| .. cmdinclude:: /_include/interface-vlan-8021ad.txt
 | |
|    :var0: ethernet
 | |
|    :var1: eth0
 | |
| 
 | |
| Port Mirror (SPAN)
 | |
| ==================
 | |
| .. cmdinclude:: ../../_include/interface-mirror.txt
 | |
|    :var0: ethernet
 | |
|    :var1: eth1
 | |
|    :var2: eth3
 | |
| 
 | |
| *********
 | |
| Operation
 | |
| *********
 | |
| 
 | |
| .. opcmd:: show interfaces ethernet
 | |
| 
 | |
|    Show brief interface information.
 | |
| 
 | |
|    .. code-block:: none
 | |
| 
 | |
|      vyos@vyos:~$ show interfaces ethernet
 | |
|      Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
 | |
|      Interface        IP Address                        S/L  Description
 | |
|      ---------        ----------                        ---  -----------
 | |
|      eth0             172.18.201.10/24                  u/u  LAN
 | |
|      eth1             172.18.202.11/24                  u/u  WAN
 | |
|      eth2             -                                 u/D
 | |
| 
 | |
| .. opcmd:: show interfaces ethernet <interface>
 | |
| 
 | |
|    Show detailed information on given `<interface>`
 | |
| 
 | |
|    .. code-block:: none
 | |
| 
 | |
|      vyos@vyos:~$ show interfaces ethernet eth0
 | |
|      eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 | |
|          link/ether 00:50:44:00:f5:c9 brd ff:ff:ff:ff:ff:ff
 | |
|          inet6 fe80::250:44ff:fe00:f5c9/64 scope link
 | |
|             valid_lft forever preferred_lft forever
 | |
| 
 | |
|          RX:  bytes    packets     errors    dropped    overrun      mcast
 | |
|            56735451     179841          0          0          0     142380
 | |
|          TX:  bytes    packets     errors    dropped    carrier collisions
 | |
|             5601460      62595          0          0          0          0
 | |
| 
 | |
| .. stop_vyoslinter
 | |
| 
 | |
| .. opcmd:: show interfaces ethernet <interface> physical
 | |
| 
 | |
|    Show information about physical `<interface>`
 | |
| 
 | |
|    .. code-block:: none
 | |
| 
 | |
|      vyos@vyos:~$ show interfaces ethernet eth0 physical
 | |
|      Settings for eth0:
 | |
|              Supported ports: [ TP ]
 | |
|              Supported link modes:   1000baseT/Full
 | |
|                                      10000baseT/Full
 | |
|              Supported pause frame use: No
 | |
|              Supports auto-negotiation: No
 | |
|              Supported FEC modes: Not reported
 | |
|              Advertised link modes:  Not reported
 | |
|              Advertised pause frame use: No
 | |
|              Advertised auto-negotiation: No
 | |
|              Advertised FEC modes: Not reported
 | |
|              Speed: 10000Mb/s
 | |
|              Duplex: Full
 | |
|              Port: Twisted Pair
 | |
|              PHYAD: 0
 | |
|              Transceiver: internal
 | |
|              Auto-negotiation: off
 | |
|              MDI-X: Unknown
 | |
|              Supports Wake-on: uag
 | |
|              Wake-on: d
 | |
|              Link detected: yes
 | |
|      driver: vmxnet3
 | |
|      version: 1.4.16.0-k-NAPI
 | |
|      firmware-version:
 | |
|      expansion-rom-version:
 | |
|      bus-info: 0000:0b:00.0
 | |
|      supports-statistics: yes
 | |
|      supports-test: no
 | |
|      supports-eeprom-access: no
 | |
|      supports-register-dump: yes
 | |
|      supports-priv-flags: no
 | |
| 
 | |
| .. start_vyoslinter
 | |
| 
 | |
| .. opcmd:: show interfaces ethernet <interface> physical offload
 | |
| 
 | |
|    Show available offloading functions on given `<interface>`
 | |
| 
 | |
|    .. code-block:: none
 | |
| 
 | |
|      vyos@vyos:~$ show interfaces ethernet eth0 physical offload
 | |
|      rx-checksumming               on
 | |
|      tx-checksumming               on
 | |
|      tx-checksum-ip-generic        on
 | |
|      scatter-gather                off
 | |
|      tx-scatter-gather             off
 | |
|      tcp-segmentation-offload      off
 | |
|      tx-tcp-segmentation           off
 | |
|      tx-tcp-mangleid-segmentation  off
 | |
|      tx-tcp6-segmentation          off
 | |
|      udp-fragmentation-offload     off
 | |
|      generic-segmentation-offload  off
 | |
|      generic-receive-offload       off
 | |
|      large-receive-offload         off
 | |
|      rx-vlan-offload               on
 | |
|      tx-vlan-offload               on
 | |
|      ntuple-filters                off
 | |
|      receive-hashing               on
 | |
|      tx-gre-segmentation           on
 | |
|      tx-gre-csum-segmentation      on
 | |
|      tx-udp_tnl-segmentation       on
 | |
|      tx-udp_tnl-csum-segmentation  on
 | |
|      tx-gso-partial                on
 | |
|      tx-nocache-copy               off
 | |
|      rx-all                        off
 | |
| 
 | |
| .. opcmd:: show interfaces ethernet <interface> transceiver
 | |
| 
 | |
|    Show transceiver information from plugin modules, e.g SFP+, QSFP
 | |
| 
 | |
|    .. code-block:: none
 | |
| 
 | |
|      vyos@vyos:~$ show interfaces ethernet eth5 transceiver
 | |
|         Identifier              : 0x03 (SFP)
 | |
|         Extended identifier     : 0x04 (GBIC/SFP defined by 2-wire interface ID)
 | |
|         Connector               : 0x07 (LC)
 | |
|         Transceiver codes       : 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00
 | |
|         Transceiver type        : Ethernet: 1000BASE-SX
 | |
|         Encoding                : 0x01 (8B/10B)
 | |
|         BR, Nominal             : 1300MBd
 | |
|         Rate identifier         : 0x00 (unspecified)
 | |
|         Length (SMF,km)         : 0km
 | |
|         Length (SMF)            : 0m
 | |
|         Length (50um)           : 550m
 | |
|         Length (62.5um)         : 270m
 | |
|         Length (Copper)         : 0m
 | |
|         Length (OM3)            : 0m
 | |
|         Laser wavelength        : 850nm
 | |
|         Vendor name             : CISCO-FINISAR
 | |
|         Vendor OUI              : 00:90:65
 | |
|         Vendor PN               : FTRJ-8519-7D-CS4
 | |
|         Vendor rev              : A
 | |
|         Option values           : 0x00 0x1a
 | |
|         Option                  : RX_LOS implemented
 | |
|         Option                  : TX_FAULT implemented
 | |
|         Option                  : TX_DISABLE implemented
 | |
|         BR margin, max          : 0%
 | |
|         BR margin, min          : 0%
 | |
|         Vendor SN               : FNS092xxxxx
 | |
|         Date code               : 0506xx
 |