aarnet
Australia's Academic and Research Network
A I S I C T M a n a g e m e n t a n d L e a d e r s h i p C
- n
f e r e n c e C a n b e r r a 2 1 5
- 5
- 6
G l e n T u r n e r
B u i l d i n g I P v 6 i n t
- y
- u
r s c h
- l
' s n e t w
- r
B u i l d i n g I P v 6 i n t o y o u r s c h - - PowerPoint PPT Presentation
B u i l d i n g I P v 6 i n t o y o u r s c h o o l ' s n e t w o r k A I S I C T M a n a g e m e n t a n d L e a d e r s h i p C o n f e r e n c e C a n b e r r a 2
Australia's Academic and Research Network
A I S I C T M a n a g e m e n t a n d L e a d e r s h i p C
f e r e n c e C a n b e r r a 2 1 5
G l e n T u r n e r
Router> show ip cef linux$ route -n linux$ ip route show C:\> route print C:\> netsh interface ipv6 show route PS C:\> Get-NetRoute
– BSD commands
– netsh commands
– PowerShell cmdlets in Windows 2012R2, 8.1
Destination: e0:f8:47:42:79:c2 (e0:f8:47:42:79:c2) Source: b8:27:eb:f1:71:fc (b8:27:eb:f1:71:fc) Type: ARP (0x0806) Address Resolution Protocol (reply) Hardware type: Ethernet (1) Protocol type: IP (0x0800) Hardware size: 6 Protocol size: 4 Opcode: reply (2) Sender MAC address: b8:27:eb:f1:71:fc Sender IP address: 192.168.255.254 Target MAC address: e0:f8:47:42:79:c2 Target IP address: 192.168.255.69
Destination: ff:ff:ff:ff:ff:ff (ff:ff:ff:ff:ff:ff) Source: e0:f8:47:42:79:c2 (e0:f8:47:42:79:c2) Type: ARP (0x0806) Address Resolution Protocol (request) Hardware type: Ethernet (1) Protocol type: IP (0x0800) Hardware size: 6 Protocol size: 4 Opcode: request (1) Sender MAC address: e0:f8:47:42:79:c2 Sender IP address: 192.168.255.69 Target MAC address: 00:00:00:00:00:00 Target IP address: 192.168.255.254
linux$ arp -s linux$ ip neigh show C:\> arp -a C:\> netsh interface ipv4 show neighbors PS C:\> Get-NetNeighbor
– No records are kept: if we forward one packet or
– Forwarding is moving packets from a ingress to
– Routing is placing entries in the forwarding table – In IP routers are just ordinary user-space
– Compare with ethernet transparent bridging
– Collect (src_addr, src_port, dst_addr, dst_port)
(10.1.1.1, 10000, 202.158.201.38, 80) (150.101.30.33, 20000, 202.158.201.38, 80) (150.101.30.33, 20000, 10.1.1.1, 10000, 202.158.201.38, 80)
(202.158.201.38, 80 10.1.1.1, 10000) (202.158.201.33, 80 150.101.30.33, 20000) (150.101.30.33, 20000, 10.1.1.1, 10000, 202.158.201.38, 80)
– A necessary part of NAT – But a DPI firewall can also work without altering
– The disconnect between exterior and interior
– Router memory is proportional to usage
– Except when the traffic has lots of flows
– Internet of Things device has to turn on the WLAN
– Over 50% of battery use for small embedded
– Arrgh, all my web banking just broke
FAIL
– The ISP chooses who can run a server – The ISP can choose not to take action, and thus
linux$ conntrack -L C:\> netsh routing ip nat show PS C:\> Get-NetNATSession
– Cheap, easy
– No address shortage, so let's IP forward
'80s hair optional
– 252 hosts a subnet – 255 subnets per university – One address per interface
– Even Novell's IPX and Apple's EtherTalk had that!
– Even Banyan VINES and EtherTalk...
– Address more networks and hosts
– But also to trade off address space for features
– On the wire: drawings are best – Textual representations
– State diagrams
– Interfaces, tables, log messages
20010388000100000000000000000003
2001:0388:0001:0000:0000:0000:0000:0003
2001:0388:1:0:0:0:0:3
2001:388:1::3
2001:388:1::3/128
fe80::e2f8:47ff:fe42:79c2%eth0
– Write a regular expression which captures all IPv6
[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
– IPv6 addresses are unique in not being regular, so
http://[2001:388:4000:4001:ba27:ebff:fed3:9fa1]/
ssh -6 2001:388:4000:4001:ba27:ebff:fed3:9fa1
ping6 2001:388:4000:4001:ba27:ebff:fed3:9fa1
[http://\[2001\:388\:4000\:4001\:ba27\:ebff\:fed3\:9fa1\]/]
– Even without global connectivity – Automatically configures – Good only for talking within a subnet
– Options are in headers which appear before the
– The last option indicates the Protocol of the data
– A better name for Time To Live
– IPv6 was designed at the height of interest in “flow
– This lost popularity as offering differing resource
– We now don't have a use for it
– Options are in headers which appear before the
– The last option indicates the Protocol of the data
– A better name for Time To Live
– Corrupting an address will lead to re-transmission
– And a similar argument for the other fields
– Please explain what this does
– Fragmentation is difficult to implement in hardware – But if you implement it in software then bad people
Ethernet II Destination: e0:f8:47:42:79:c2 Source: b8:27:eb:f1:71:fc Type: IPv6 (0x86dd) Internet Protocol Version 6 0110 .... = Version: 6 .... 0000 0000 .... .... .... .... .... = Traffic class: 0x00000000 .... .... .... 0000 0000 0000 0000 0000 = Flowlabel: 0x00000000 Payload length: 32 Next header: ICMPv6 (58) Hop limit: 255 Source: fe80::ba27:ebff:fef1:71fc Destination: 2001:44b8:1d2:bb00:e2f8:47ff:fe42:79c2 Internet Control Message Protocol v6 Type: Neighbor Solicitation (135) Code: 0 Checksum: 0xc2e3 Reserved: 00000000 Target Address: 2001:44b8:1d2:bb00:e2f8:47ff:fe42:79c2 ICMPv6 Option Type: Source link-layer address (1) Length: 1 (8 bytes) Link-layer address: b8:27:eb:f1:71:fc
Ethernet II Destination: b8:27:eb:f1:71:fc Source: e0:f8:47:42:79:c2 Type: IPv6 (0x86dd) Internet Protocol Version 6 0110 .... = Version: 6 .... 0000 0000 .... .... .... .... .... = Traffic class: 0x00000000 .... .... .... 0000 0000 0000 0000 0000 = Flowlabel: 0x00000000 Payload length: 24 Next header: ICMPv6 (58) Hop limit: 255 Source: 2001:44b8:1d2:bb00:e2f8:47ff:fe42:79c2 Destination: fe80::ba27:ebff:fef1:71fc Internet Control Message Protocol v6 Type: Neighbor Advertisement (136) Code: 0 Checksum: 0x9902 Flags: 0x40000000 Target Address: 2001:44b8:1d2:bb00:e2f8:47ff:fe42:79c2
linux$ ip -f inet6 neigh show C:\> netsh interface ipv6 show neighbors PS C:\> Get-NetNeighbors
– The EUI-64 format of a MAC address – A random number
– Typically the interface name or its SNMP ifIndex
– If DAD fails interface won't come up
– DAD yet to run
– DAD has succeeded, new connections use this
– DAD has succeeded, some connections have
– Address lifetime has expired, traffic to this address
– because the system can't use its tentative address
linux$ ip -f inet6 addr show C:\> netsh interface ipv6 show addresses
– EUI-64 – Randomly – Configuration
– A global address is pointless without a router
ipv6 unicast-routing ipv6 multicast-routing no ipv6 source-route interface Ethernet0 ipv6 enable ipv6 address 2001:DB8:1234:1234::/64 eui-64 ipv6 verify unicast source reachable-via rx ipv6 traffic-filter ETH0-IN-LIST6 in ipv6 traffic-filter ETH0-OUT-LIST6 out ipv6 nd router-preference medium
– Prefixes – Hop limit – Interface MTU – Recently, DNS forwarder and domain name suffix
$ sudo dnf install ndisc6 $ sudo rdisc -n eth0
Soliciting ff02::2 (ff02::2) on em1... Hop limit : 64 ( 0x40) Stateful address conf. : No Stateful other conf. : No Router preference : medium Router lifetime : 1800 (0x00000708) seconds Reachable time : unspecified (0x00000000) Retransmit time : unspecified (0x00000000) Source link-layer address: 00:0F:23:A3:EC:01 MTU : 9000 bytes (valid) Prefix : 2001:388:4000:4002::/64 Valid time : 2592000 (0x00278d00) seconds
from fe80::20f:23ff:fea3:ec01
linux$ ip -f inet6 route show C:\> netsh interface ipv6 show route
– This has moved into the Router Advertisement – This use is stateless: the same answer is give to
– Client support is poor – Much less resilient to network faults that SLAAC
– Ships in the night: distinct protocols, two routing
– Extensions to IPv4 protocol to carry IPv6 prefixes
– OSPFv3 – BGP and IS-IS already multiprotocol – EIGRP extended
– IPv6 forwarding fails – But IPv6 routing still learned from protocol using
– BGP: run two neighbours, IPv4 routes over IPv4
– More CPU
– eg: use OSPFv3 for IPv6, continue to use EIGRP
– Once IPv6 deployed, you can log into routers on
yoyo.adelaide.aarnet.edu.au. AAAA 2001:388:4000:4002:230:48ff:fefd:d2de
e.d.2.d.d.f.e.f.f.f.8.4.0.3.2.0.2.0.0.4. 0.0.0.4.8.8.3.0.1.0.0.2.ip6.arpa. PTR yoyo.adelaide.aarnet.edu.au.
– This allows very effective DNS caching – The genius of DNS is that it is hugely inefficient
– So despite hosts being very powerful we still use
– It exists? Well use that IPv6 address – NXDOMAIN? Typo, fail – Answers = 0? Try to resolve a A record
– AAAA lookup will almost always fail, wasting that
– Libraries often send the AAAA and A queries in
– Since there will be a IPv4 answer – But if it's a IPv6-only website, that's bad news
import socket print socket.getaddrinfo('www.facebook.com', 'http', 0, socket.SOCK_STREAM) [( 2, 1, 6, '', ('179.60.193.3', 80)), (10, 1, 6, '', ('2a03:2880:f019:2:face:b00c:0:1', 80, 0, 0))]
– 16 bits of subnetting – free
– 32 bits of subnetting – Ongoing APNIC membership
– Fewer routes advertised – Backbone doesn't see events which only happen
– eg: Use the top four bits of the subnet ID – Remember to keep 0 free so save typing – So start numbering sites from 1
– Not a risk like with IPv4
– We often put routers on the ::1 address – So put services on the :1: address
– We can then solve firewall transition issues
– So we get real hosts and can look at how our
– Get early adopters on board – Easy opt-in for people who want to check their
– Brings up traffic control and accounting
– Many have supported IPv6 for a decade
– The bulk of the school is IPv4 users, they don't
– We know the operating system – We have good control and visibility
– The rubber hits the road – Status information and communication essential
– Replace gethostbyname() with getaddrinfo() – Alter fields and text parsing for the longer and
– IPv4 and IPv6 are different protocols, so modify
– ffff::1.2.3.4 – Semantically valid, unroutable
– Need to write another set of firewall rules – Convention is to use existing name with 6 at end
interface Ethernet 0 ip access-list ETH0-IN-LIST ipv6 filter-list ETH0-IN-LIST6
– Often assumes fixed IP addresses – Sometimes assumes a tap into DHCP database – Large amount of textual messing about – Netflow version change, you want IPFIX for IPv6
– Small scale: MAC addresses, or 802.1x – Large scale: SCU/DCU
– For so long and so badly that it's often hard to see
– I rebooted my home router and none of my
– You want to address 100,000 Internet-visible
– It's going to cost you a million dollars – The sum's aren't going to get better