[c-nsp] Cisco 1841 with IOS 12.4(3i) does not pad frame to 68 bytes if it adds the 802.1q field?
Martin T
m4rtntns at gmail.com
Thu Jan 22 06:12:20 EST 2015
Hi,
I upgraded switch software from c2960-lanbasek9-mz.122-35.SE5.bin to
c2960-lanbasek9-mz.150-2.SE7.bin and after that the 64 byte frames
including the 802.1q
field(https://www.cloudshark.org/captures/6c935c056545) are no longer
counted as "Undersize" in "sh int Gi0/23 counters errors" output.
So my hypothesis is that router, which will route packet to 802.1q
sub-interface, checks the total length field in IPv4 header and if it
is <42 bytes, then the router will pad the packet with zeros besides
inserting the 802.1q field. Now if the switch receives a 64 byte frame
including the 802.1q header on a trunk port, the switch has to pop the
4 byte 802.1q header, pad the frame with 4 bytes and send a 64 byte
frame out of an access port. Is my train of thought correct?
thanks,
Martin
On Tue, Jan 20, 2015 at 1:24 PM, Martin T <m4rtntns at gmail.com> wrote:
> Hi,
>
> WS-C2960G-24TC-L supports only 802.1q "encapsulation":
>
>
> WS-C2960G-24TC-L(config-if)#switchport trunk ?
> allowed Set allowed VLAN characteristics when interface is in trunking mode
> native Set trunking native characteristics when interface is in trunking
> mode
> pruning Set pruning VLAN characteristics when interface is in trunking mode
>
> WS-C2960G-24TC-L(config-if)#do sh int Gi0/23 trunk
>
> Port Mode Encapsulation Status Native vlan
> Gi0/23 on 802.1q trunking 1
>
> Port Vlans allowed on trunk
> Gi0/23 1-4094
>
> Port Vlans allowed and active in management domain
> Gi0/23 1-4
>
> Port Vlans in spanning tree forwarding state and not pruned
> Gi0/23 1-4
> WS-C2960G-24TC-L(config-if)#
>
>
>
> regards,
> Martin
>
> On 1/20/15, Rich Davies <rich.davies at gmail.com> wrote:
>>
>> On your 2960 trunk port you may be missing
>>
>> switchport trunk encapsulation dot1q
>>
>>
>> Sent from my iPhone
>>
>>> On Jan 20, 2015, at 5:23 AM, Martin T <m4rtntns at gmail.com> wrote:
>>>
>>> Hi,
>>>
>>> I have a following network-topology:
>>>
>>> T60_laptop[eth2] <-> [Fa0/1]C1841_1[Fa0/0] <-> [Fa0/1]C1841_2[Fa0/0]
>>> <-> [Fa0/0]C1841_3[Fa0/1] <-> passive_network_tap <->
>>> [Gi0/23]C2960[Gi0/1] <-> [eth0]HP_laptop
>>>
>>>
>>> "C2960" interface Gi0/23 is a 802.1q trunk interface with very simple
>>> configuration:
>>>
>>> interface GigabitEthernet0/23
>>> switchport mode trunk
>>> media-type rj45
>>> speed auto 100
>>> spanning-tree portfast trunk
>>> spanning-tree bpduguard enable
>>> end
>>>
>>>
>>> Likewise, there is a 802.1q sub-interface configured to "C1841_3":
>>>
>>> interface FastEthernet0/1
>>> no ip address
>>> duplex auto
>>> speed auto
>>> !
>>> interface FastEthernet0/1.2
>>> encapsulation dot1Q 2
>>> ip address 192.168.23.254 255.255.255.0
>>> no ip redirects
>>> ip nat inside
>>> no ip virtual-reassembly
>>> no snmp trap link-status
>>> !
>>>
>>>
>>> Now if I send ICMP "echo request" messages with no payload(ping
>>> 192.168.23.1 -s 0) from "T60_laptop" to "HP_laptop", then "T60_laptop"
>>> puts following frames onto wire:
>>> https://www.cloudshark.org/captures/19068f94522c As seen from the
>>> packet capture, packets are padded with zeros correctly to 64
>>> bytes(includes FCS). So far everything looks good. Now the packet is
>>> sent over IPsec tunnel to "C1841_3" router, which needs to send the
>>> packet over Fa0/1.2 interface. This means that "C1841_3" has to add
>>> the IEEE 802.1q field. Now if I packet-capture those ICMP "echo
>>> request" messages originated from "T60_laptop" with a passive network
>>> tap right before they reach the "C2960" switch port Gi0/23, then
>>> "C1841_3" puts following frames onto wire:
>>> https://www.cloudshark.org/captures/6c935c056545 As seen from the
>>> packet-capture, 4-byte 802.1q field is added to the frame as it
>>> should, but for some reason, packet is not padded to 68 bytes, but
>>> left to 64 bytes(again, capture results include the FCS).
>>> WS-C2960G-24TC-L switch port Gi0/23 receives those frames, counts
>>> those properly as "TrunkFramesRx" according to "sh int Gi0/23 counters
>>> trunk", but also counts those frames as "Undersize" according to "sh
>>> int Gi0/23 counters errors":
>>>
>>> WS-C2960G-24TC-L#sh int Gi0/23 counters errors
>>>
>>> Port Align-Err FCS-Err Xmit-Err Rcv-Err UnderSize
>>> Gi0/23 0 0 0 0 12
>>>
>>> Port Single-Col Multi-Col Late-Col Excess-Col Carri-Sen
>>> Runts Giants
>>> Gi0/23 0 0 0 0 0
>>> 0 0
>>> WS-C2960G-24TC-L#
>>>
>>> This makes sense as after popping the 802.1q field, the frame is 60
>>> bytes in length. Am I correct that this is an erroneous behavior and
>>> thus a bug in "C1841_3" router? I also checked with Cisco "Bug Search"
>>> for bugs for 1841 platform and c1841-advsecurityk9-mz.124-3i.bin
>>> software release, but found nothing related. Has anyone seen something
>>> like this before? In addition, what I also find strange, is that
>>> "C2960" switch forwards frames to "HP_laptop" instead of dropping
>>> those.. Or maybe it is the switch which should pad the frame back to
>>> 64 bytes according to RFC's and thus the router behaves correctly?
>>>
>>> Please let me know if additional information is needed.
>>>
>>>
>>> thanks,
>>> Martin
>>> _______________________________________________
>>> cisco-nsp mailing list cisco-nsp at puck.nether.net
>>> https://puck.nether.net/mailman/listinfo/cisco-nsp
>>> archive at http://puck.nether.net/pipermail/cisco-nsp/
>>
More information about the cisco-nsp
mailing list