Das unter Cisco verfügbare CDP Protokoll (Cisco Discovery Protocol) kann man nutzen – wenn eingeschaltet – um den Port zu bestimmen, an dem ein Server angeschlossen ist. Dazu muss man lediglich per tcpdump das CDP Paket empfangen und anzeigen. Der Rest ist an sich verständlich.

tcpdump -nn -v -i  -s 1500 -c 1 'ether[20:2] == 0x2000'

Der Output dazu sieht dann beipielsweise so aus:

tcpdump: listening on bond0, link-type EN10MB (Ethernet), capture size 1500 bytes
15:16:16.901794 CDPv2, ttl: 180s, checksum: 692 (unverified), length 364
	Device-ID (0x01), length: 8 bytes: 'SWITCH1'
	Version String (0x05), length: 251 bytes:
	  Cisco IOS Software, Catalyst 4000 L3 Switch Software (cat4000-I5S-M), Version 12.2(25)EWA7, RELEASE SOFTWARE (fc1)
	  Technical Support: http://www.cisco.com/techsupport
	  Copyright (c) 1986-2006 by Cisco Systems, Inc.
	  Compiled Mon 16-Oct-06 18:52 by dchih
	Platform (0x06), length: 14 bytes: 'cisco WS-C4948'
	Address (0x02), length: 13 bytes: IPv4 (1) 192.168.151.2
	Port-ID (0x03), length: 19 bytes: 'GigabitEthernet1/27'
	Capability (0x04), length: 4 bytes: (0x00000029): Router, L2 Switch, IGMP snooping
	VTP Management Domain (0x09), length: 2 bytes: ''''
	Native VLAN ID (0x0a), length: 2 bytes: 157
	Duplex (0x0b), length: 1 byte: full
	AVVID trust bitmap (0x12), length: 1 byte: 0x00
	AVVID untrusted ports CoS (0x13), length: 1 byte: 0x00
1 packets captured
1 packets received by filter
0 packets dropped by kernel

Daraus lässt sich der Switchname (SWITCH1) herauslesen, der Port (GigabitEthernet1/27) und auch die VLAN ID (157) uvm. Wenn das Interface per Bonding betrieben wird, bekommt man hiermit lediglich die Information des aktiven Ports.