use of org.onlab.packet.ICMP6.ECHO_REPLY in project trellis-control by opennetworkinglab.
the class IcmpHandlerTest method testPing6GatewayPair.
// Ping6 to a dh gateway
@Test
public void testPing6GatewayPair() {
// Expected behavior
expect(segmentRoutingManager.deviceService.isAvailable(LOCAL_LEAF1)).andReturn(true).times(1);
expect(segmentRoutingManager.deviceService.isAvailable(LOCAL_LEAF2)).andReturn(true).times(1);
replay(segmentRoutingManager.deviceService);
// Process
icmpHandler.processIcmpv6(ETH_REQ_IPV6_GATEWAY_PAIR, CP2021);
// Verify packet-out
Ethernet ethernet = packetService.getEthernetPacket(ETH_REQ_IPV6_GATEWAY_PAIR.getSourceMAC());
assertNotNull(ethernet);
assertThat(ethernet.getSourceMAC(), is(ETH_REQ_IPV6_GATEWAY_PAIR.getDestinationMAC()));
assertThat(ethernet.getDestinationMAC(), is(ETH_REQ_IPV6_GATEWAY_PAIR.getSourceMAC()));
assertTrue(ethernet.getPayload() instanceof IPv6);
IPv6 ip = (IPv6) ethernet.getPayload();
assertThat(ip.getSourceAddress(), is(DST_IPV6_GATEWAY_PAIR.toOctets()));
assertThat(ip.getDestinationAddress(), is(SRC_IPV61.toOctets()));
assertTrue(ip.getPayload() instanceof ICMP6);
ICMP6 icmp = (ICMP6) ip.getPayload();
assertThat(icmp.getIcmpType(), is(ECHO_REPLY));
// Verify behavior
verify(segmentRoutingManager.deviceService);
}
use of org.onlab.packet.ICMP6.ECHO_REPLY in project trellis-control by opennetworkinglab.
the class IcmpHandlerTest method testPing6RemoteGatewaySamePair.
// Ping6 to a gateway attached only to the pair leaf (routing through spine)
@Test
public void testPing6RemoteGatewaySamePair() {
// Expected behavior
expect(segmentRoutingManager.deviceService.isAvailable(LOCAL_LEAF1)).andReturn(true).times(1);
expect(segmentRoutingManager.deviceService.isAvailable(LOCAL_LEAF2)).andReturn(true).times(1);
replay(segmentRoutingManager.deviceService);
// Process
icmpHandler.processIcmpv6(ETH_REQ_IPV6_SAME, CP2025);
// Verify packet-out
Ethernet ethernet = packetService.getEthernetPacket(ETH_REQ_IPV6_SAME.getSourceMAC());
assertNotNull(ethernet);
assertThat(ethernet.getSourceMAC(), is(ETH_REQ_IPV6_SAME.getDestinationMAC()));
assertThat(ethernet.getDestinationMAC(), is(ETH_REQ_IPV6_SAME.getSourceMAC()));
assertTrue(ethernet.getPayload() instanceof MPLS);
MPLS mpls = (MPLS) ethernet.getPayload();
assertThat(mpls.getLabel(), is(LOCAL_LEAF1_SID6));
assertTrue(mpls.getPayload() instanceof IPv6);
IPv6 ip = (IPv6) mpls.getPayload();
assertThat(ip.getSourceAddress(), is(DST_IPV6_SAME.toOctets()));
assertThat(ip.getDestinationAddress(), is(SRC_IPV61.toOctets()));
assertTrue(ip.getPayload() instanceof ICMP6);
ICMP6 icmp = (ICMP6) ip.getPayload();
assertThat(icmp.getIcmpType(), is(ECHO_REPLY));
// Verify behavior
verify(segmentRoutingManager.deviceService);
}
use of org.onlab.packet.ICMP6.ECHO_REPLY in project trellis-control by opennetworkinglab.
the class IcmpHandlerTest method testPing6LoopbackPairDifferentLeaf.
// Ping6 to the loopback of the leaf but hashing of the bond interfaces sends to wrong leaf
@Test
public void testPing6LoopbackPairDifferentLeaf() {
// Expected behavior
expect(segmentRoutingManager.deviceService.isAvailable(LOCAL_LEAF1)).andReturn(true).times(1);
expect(segmentRoutingManager.deviceService.isAvailable(LOCAL_LEAF2)).andReturn(true).times(1);
replay(segmentRoutingManager.deviceService);
// Process
icmpHandler.processIcmpv6(ETH_REQ_IPV6_LOOPBACK_PAIR, CP2011);
// Verify packet-out
Ethernet ethernet = packetService.getEthernetPacket(ETH_REQ_IPV6_LOOPBACK_PAIR.getSourceMAC());
assertNotNull(ethernet);
assertThat(ethernet.getSourceMAC(), is(ETH_REQ_IPV6_LOOPBACK_PAIR.getDestinationMAC()));
assertThat(ethernet.getDestinationMAC(), is(ETH_REQ_IPV6_LOOPBACK_PAIR.getSourceMAC()));
assertTrue(ethernet.getPayload() instanceof IPv6);
IPv6 ip = (IPv6) ethernet.getPayload();
assertThat(ip.getSourceAddress(), is(DST_IPV6_LOOPBACK_PAIR.toOctets()));
assertThat(ip.getDestinationAddress(), is(SRC_IPV61.toOctets()));
assertTrue(ip.getPayload() instanceof ICMP6);
ICMP6 icmp = (ICMP6) ip.getPayload();
assertThat(icmp.getIcmpType(), is(ECHO_REPLY));
// Verify behavior
verify(segmentRoutingManager.deviceService);
}
use of org.onlab.packet.ICMP6.ECHO_REPLY in project trellis-control by opennetworkinglab.
the class IcmpHandlerTest method testPing6MyGateway.
// Ping6 to our gateway
@Test
public void testPing6MyGateway() {
// Expected behavior
expect(segmentRoutingManager.deviceService.isAvailable(REMOTE_LEAF)).andReturn(true).times(1);
replay(segmentRoutingManager.deviceService);
// Process
icmpHandler.processIcmpv6(ETH_REQ_IPV6_MY, CP12);
// Verify packet-out
Ethernet ethernet = packetService.getEthernetPacket(ETH_REQ_IPV6_MY.getSourceMAC());
assertNotNull(ethernet);
assertThat(ethernet.getSourceMAC(), is(ETH_REQ_IPV6_MY.getDestinationMAC()));
assertThat(ethernet.getDestinationMAC(), is(ETH_REQ_IPV6_MY.getSourceMAC()));
assertTrue(ethernet.getPayload() instanceof IPv6);
IPv6 ip = (IPv6) ethernet.getPayload();
assertThat(ip.getSourceAddress(), is(DST_IPV6.toOctets()));
assertThat(ip.getDestinationAddress(), is(SRC_IPV6_MY.toOctets()));
assertTrue(ip.getPayload() instanceof ICMP6);
ICMP6 icmp = (ICMP6) ip.getPayload();
assertThat(icmp.getIcmpType(), is(ECHO_REPLY));
// Verify behavior
verify(segmentRoutingManager.deviceService);
}
use of org.onlab.packet.ICMP6.ECHO_REPLY in project trellis-control by opennetworkinglab.
the class IcmpHandlerTest method testPing6LocalGateway.
// Ping6 to a gateway attached to our leaf
@Test
public void testPing6LocalGateway() {
// Expected behavior
expect(segmentRoutingManager.deviceService.isAvailable(REMOTE_LEAF)).andReturn(true).times(1);
replay(segmentRoutingManager.deviceService);
// Process
icmpHandler.processIcmpv6(ETH_REQ_IPV6_LOCAL, CP12);
// Verify packet-out
Ethernet ethernet = packetService.getEthernetPacket(ETH_REQ_IPV6_LOCAL.getSourceMAC());
assertNotNull(ethernet);
assertThat(ethernet.getSourceMAC(), is(ETH_REQ_IPV6_LOCAL.getDestinationMAC()));
assertThat(ethernet.getDestinationMAC(), is(ETH_REQ_IPV6_LOCAL.getSourceMAC()));
assertTrue(ethernet.getPayload() instanceof IPv6);
IPv6 ip = (IPv6) ethernet.getPayload();
assertThat(ip.getSourceAddress(), is(DST_IPV6_LOCAL.toOctets()));
assertThat(ip.getDestinationAddress(), is(SRC_IPV6_MY.toOctets()));
assertTrue(ip.getPayload() instanceof ICMP6);
ICMP6 icmp = (ICMP6) ip.getPayload();
assertThat(icmp.getIcmpType(), is(ECHO_REPLY));
// Verify behavior
verify(segmentRoutingManager.deviceService);
}