diff --git a/slides/assets/complex.png b/slides/assets/complex.png new file mode 100755 index 0000000..be1f912 Binary files /dev/null and b/slides/assets/complex.png differ diff --git a/slides/assets/one-arrow.png b/slides/assets/one-arrow.png index 370171f..e65364d 100755 Binary files a/slides/assets/one-arrow.png and b/slides/assets/one-arrow.png differ diff --git a/slides/assets/two-arrow.png b/slides/assets/two-arrow.png index 018ebbd..06ecdf1 100755 Binary files a/slides/assets/two-arrow.png and b/slides/assets/two-arrow.png differ diff --git a/slides/presentation.md b/slides/presentation.md index f46eace..d07007e 100644 --- a/slides/presentation.md +++ b/slides/presentation.md @@ -14,6 +14,7 @@ CHI-NOG 10, Oct 2022
* reducing complexitiy in datacenter configuration * complexity means more data collection and entry * more touches means more opportunity for error +* Examples today in Aristese due to my familiarity ---

Talk Contents

@@ -58,7 +59,7 @@ background-image: url(assets/months_later.png) class: middle

Complexity

-.image-60[![horizontal](assets/horizontal.png)] +.image-60[![horizontal](assets/complex.png)] ??? Datacenters spread across regions @@ -242,7 +243,7 @@ tacacs-server 192.168.14.10 * Make sure your application withdraws itself if not healthy * Avoid ECMP through policy * Global services with fallbacks if not - * If RTT is important, programatticaly order them with template logic + * If RTT is important, programmatically order them with template logic ??? You don't have to golf if you don't want to @@ -865,6 +866,46 @@ router bgp 65001.1034 class: middle, inverse

Context

+.row.table.middle[ +.col-6[ +```yaml +nodes: +- hostname: dc1-leaf1 + region: dc1 + role: leaf + aaa: + - 192.168.3.2 + - 192.168.10.1 + - 192.168.14.10 + addresses: + Loopback0: + ipv4: + - 172.18.4.10/32 + ipv6: + - "2001:db8::1/128" + Ethernet1/1: + ipv4: + - 10.0.0.0/31 + ipv6: + - "2001:2b8:1::1/64" + bgp: + router-id: 172.18.4.10 + asn: "65534" + ipv4: + peer-groups: + - name: SPINE-LEAF + outbound-policy: SPINE-TO-LEAF + inbound-policy: LEAF-TO-SPINE + neighbors: + - address: 10.0.0.1 + asn: "65234" + dns: + search: warningg.com + servers: + - 8.8.8.8 +``` +] +.col-6[ ```yaml nodes: - router-id: 172.18.8.0 # site1-spine @@ -882,8 +923,51 @@ nodes: - router-id: 172.18.16.12 # site2-server ``` +]] + ---
---
+ + +--- +class: inverse, center, middle + +# Thank you
+## Questions ?

+[www.github.com/bewing/chinog-10](https://www.github.com/bewing/chinog-10/) + +--- + +# Bitshifting +```golang +func loadNodeData(routerId string) (NodeData, error) { + nd := NodeData{} + ip, err := netip.ParseAddr(routerId) + if err != nil { + return nd, err + } + data := ip.AsSlice()[2] + typeByte := data & 12 >> 2 + if typeByte^1 == 0 { + nd.Type = "leaf" + nd.Layer = 1 + } else if typeByte^2 == 0 { + nd.Type = "spine" + nd.Layer = 2 + } else if typeByte^3 == 0 { + nd.Type = "superspine" + nd.Layer = 3 + } else { + nd.Type = "server" + nd.Layer = 0 + } + nd.Region = int(data & 192 >> 6) + nd.Site = int(data & 48 >> 4) + + nd.ASN = fmt.Sprintf("65%d%d%d.%d", nd.Region, nd.Site, nd.Layer, int(ip.AsSlice()[2])*256+int(ip.AsSlice()[3])) + return nd, nil +} +```