
I roto i tenei tuhinga, ka whakaatu ahau ki a koe me pehea te whakarite marama tuwhera ki te mahi me nga taputapu whatunga, me te whakaatu hoki me pehea te whakamahi Kai-pou me te ngawari RESTCONF tono, ka taea te whakahaere i tenei taputapu. E kore matou e mahi me nga taputapu, engari ka tukuna e matou he taiwhanga mariko iti me te pouara kotahi e whakamahi ana Vrnetlab i runga ake Ubuntu 20.04 LTS.
Ka whakaatu ahau i nga tautuhinga taipitopito i te tuatahi ma te whakamahi i te tauira o te pouara Juniper vMX 20.1R1.11, katahi ka whakatauritea ki te whakatakotoranga Cisco xRV9000 7.0.2.
Tuhinga
- Te matauranga e hiahiatia ana
- Wāhanga 1: korero poto OpenDaylight (i muri nei ODL), Kai-pou и Vrnetlab he aha hoki ta tatou e hiahia ai
- Wāhanga 2: whakaahuatanga o te taiwhanga mariko
- Wāhanga 3: whakarite marama tuwhera
- Wāhanga 4: whakarite Vrnetlab
- Wāhanga 5: mā te whakamahi Kai-pou hono pouara mariko (Juniper vMX) Ki ODL
- Wāhanga 6: tiki me te huri i te whirihoranga pouara ma te whakamahi Kai-pou и ODL
- Wāhanga 7: tāpiri Cisco xRV9000
- mutunga
- PS
- pukapuka pukapuka
Te matauranga e hiahiatia ana
Kia kore ai te tuhinga e huri hei pepa, i whakarerea e ahau etahi korero hangarau (me nga hononga ki nga tuhinga ka taea e koe te panui mo ratou).
I tenei hononga, ka tukuna atu e ahau ki a koe nga kaupapa e pai ana (engari kaore e tika) kia mohio koe i mua i te panui:
- ,
- /
Wāhanga 1: etahi ariā

- He turanga SDN tuwhera mo te whakahaere me te whakaaunoa i nga momo whatunga katoa, e tautokohia ana e Linux Foundation
- Java i roto
- I runga i te Tauira-Aia Ratonga Taumata tangohanga (MD-SAL)
- Ka whakamahi i nga tauira YANG hei whakaputa aunoa i nga API RESTCONF mo nga taputapu whatunga
Ko te waahanga matua mo te whakahaere whatunga. Na roto i tera ka whakawhitiwhiti korero me nga taputapu hono. Ka whakahaerehia ma tana ake API.
Ka taea e koe te panui atu mo OpenDaylight .

- taputapu whakamatautau API
- Maama me te ngawari ki te whakamahi atanga
I roto i to maatau, e aro ana matou ki a ia hei huarahi mo te tuku tono REST ki te OpenDaylight API. Ae ra, ka taea e koe te tuku tono a-ringa, engari i roto i te Postman he tino marama te ahua o nga mea katoa me te pai ki o maatau kaupapa.
Mo te hunga e hiahia ana ki te keri: he maha nga rauemi whakangungu kua tuhia ki runga ().

- He taputapu mo te tuku pouara mariko ki Docker
- Tautoko: Cisco XRv, Juniper vMX, Arista vEOS, Nokia VSR, etc.
- Open Source
He taputapu tino whakamere, engari kāore i te tino mōhiotia. I roto i tā mātou take, ka whakamahia e mātou hei whakahaere i a Juniper vMX me Cisco xRV9000 i runga i te rorohiko noa. Ubuntu 20.04 LTS.
Ka taea e koe te panui atu mo tera i .
Wāhanga 2: Lab
I roto i tenei akoranga, ka whakaturia e matou te punaha e whai ake nei:

Nahea teie ohipa
- Juniper vMX ka piki ki roto Docker ipu (ma te tikanga Vrnetlab) me te mahi hei pouara mariko tino noa.
- ODL hono ki te pouara ka taea e koe te whakahaere.
- Kai-pou ka whakarewahia i runga i tetahi miihini motuhake ka tukuna e matou he whakahau ODL: ki te hono / tango i te pouara, huri i te whirihoranga, aha atu.
He korero mo te taputapu o te punaha
Juniper vMX и ODL me nui rawa nga rauemi mo a raatau mahi tuturu. Kotahi anake vMX ka tono mo te 6 Gb o te RAM me te 4 matua. Na reira, i whakatauhia kia nekehia nga "taimaha" katoa ki tetahi miihini motuhake (Heulett Packard Enterprise MicroServer ProLiant Gen8, Ubuntu 20.04 LTS). Ko te pouara, ko te tikanga, kaore e "rere" ki runga, engari he nui te mahi mo nga whakamatautau iti.
Wāhanga 3: Whakaritea OpenDaylight

Ko te putanga o naianei o ODL i te wa i tuhia ai tenei ko Magnesium SR1
1) Tāuta Java Tuwhera JDK 11 (mo etahi atu taipitopito whakaurunga )
ubuntu:~$ sudo apt install default-jdk2) Rapua me te tango i te hanga hou ODL
3) Wewetehia te puranga kua tikiakehia
4) Haere ki te whaiaronga hua
5) Whakarewa ./bin/karaf
I tenei taahiraa ODL me timata ka kitea tatou i roto i te papatohu (Ka whakamahia te Port 8181 mo te uru mai i waho, ka whakamahia e tatou i muri mai).
Whai muri, tāuta Nga waahanga ODLi hangaia hei mahi me nga kawa NETCONF и RESTCONF. Ki te mahi i tenei i roto i te papatohu ODL ka mahia e matou:
opendaylight-user@root> feature:install odl-netconf-topology odl-restconf-allKoinei te tatūnga māmā. ODL oti. (Mo etahi atu korero, tirohia ).
Wāhanga 4: Whakaritea Vrnetlab

Whakaritenga punaha
I mua i te whakaurunga Vrnetlab me whakauru e koe nga kohinga e hiahiatia ana mo tana mahi. Pērā , , :
ubuntu:~$ sudo apt update
ubuntu:~$ sudo apt -y install python3-bs4 sshpass make
ubuntu:~$ sudo apt -y install git
ubuntu:~$ sudo apt install -y
apt-transport-https ca-certificates
curl gnupg-agent software-properties-common
ubuntu:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
ubuntu:~$ sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
ubuntu:~$ sudo apt update
ubuntu:~$ sudo apt install -y docker-ce docker-ce-cli containerd.ioTāuta Vrnetlab
Hei tāuta Vrnetlab katihia te rehitatanga mai i github:
ubuntu:~$ cd ~
ubuntu:~$ git clone https://github.com/plajjan/vrnetlab.gitHaere ki te whaiaronga vrnetlab:
ubuntu:~$ cd ~/vrnetlabI konei ka kite koe i nga tuhinga katoa e hiahiatia ana hei whakahaere. Kia mahara kua mahia he whaiaronga mo ia momo pouara:
ubuntu:~/vrnetlab$ ls
CODE_OF_CONDUCT.md config-engine-lite openwrt vr-bgp
CONTRIBUTING.md csr routeros vr-xcon
LICENSE git-lfs-repo.sh sros vrnetlab.sh
Makefile makefile-install.include topology-machine vrp
README.md makefile-sanity.include veos vsr1000
ci-builder-image makefile.include vmx xrv
common nxos vqfx xrv9kWaihangahia he ahua o te pouara
Ia pouara e tautokohia ana Vrnetlab, kei a ia ano te tikanga tatūnga ahurei. Ina Juniper vMX me tuku noa te .tgz pūranga me te pouara (ka taea e koe te tango mai i ) ki te whaiaronga vmx ka whakahaere i te whakahau make:
ubuntu:~$ cd ~/vrnetlab/vmx
ubuntu:~$ # Копируем в эту директорию .tgz архив с роутером
ubuntu:~$ sudo makeTe hanga whakaahua vMX ka 10-20 meneti pea. Kua tae ki te wa ki te tiki kawhe!
He aha te roa, ka patai koe?
Whakamaoritanga Kaituhi ki tenei patai:
"Koinei na te mea i te wa tuatahi i timata ai te VCP (Marerangi Mana), ka panuihia he konae whirihora e whakatau ana ka haere hei VRR VCP i roto i te vMX. I mua, i mahia tenei whakarewatanga i te wa o te tiimatanga a Docker, engari ko te tikanga ko te VCP I timata ano i nga wa kotahi i mua i te wa e waatea mai ai te pouara mariko, na te mea he roa te wa whakaoho (tata ki te 5 meneti) Inaianei kua oti te whakahaere tuatahi o te VCP i te wa e hanga ana te ahua Docker, a, na te mea kaore e taea te whakahaere i te hanga Docker me te - -kowhiringa whai mana, ko te tikanga ka mahi a qemu me te kore whakatere taputapu KVM, na reira he roa rawa te hanga. ehara i te mea tino mataku na te mea ka hangaia e matou he ahua kotahi, engari ka whakarewahia e matou he maha."
I muri ka taea e koe te kite i te ahua o to maatau pouara i roto Docker:
ubuntu:~$ sudo docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab/vr-vmx 20.1R1.11 b1b2369b453c 3 weeks ago 4.43GB
debian stretch 614bb74b620e 7 weeks ago 101MBWhakarewahia te ipu vr-vmx
Ka timata tatou me te whakahau:
ubuntu:~$ sudo docker run -d --privileged --name jun01 b1b2369b453cPanuku, ka kite tatou i nga korero mo nga ipu hohe:
ubuntu:~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
120f882c8712 b1b2369b453c "/launch.py" 2 minutes ago Up 2 minutes (unhealthy) 22/tcp, 830/tcp, 5000/tcp, 10000-10099/tcp, 161/udp jun01Te hono ki te pouara
Ko te wahitau IP o te atanga whatunga o te pouara ka taea te tiki ma te whakahau e whai ake nei:
ubuntu:~$ sudo docker inspect --format '{{.NetworkSettings.IPAddress}}' jun01
172.17.0.2Taunoa, Vrnetlab hanga he kaiwhakamahi i runga i te pouara vrnetlab/VR-netlab9.
Te hono ki ssh:
ubuntu:~$ ssh vrnetlab@172.17.0.2
The authenticity of host '172.17.0.2 (172.17.0.2)' can't be established.
ECDSA key fingerprint is SHA256:g9Sfg/k5qGBTOX96WiCWyoJJO9FxjzXYspRoDPv+C0Y.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.17.0.2' (ECDSA) to the list of known hosts.
Password:
--- JUNOS 20.1R1.11 Kernel 64-bit JNPR-11.0-20200219.fb120e7_buil
vrnetlab> show version
Model: vmx
Junos: 20.1R1.11Ka oti te tatūnga pouara.
Ko nga taunakitanga whakaurunga mo nga pouara o nga momo kaihoko ka kitea i i roto i ia whaiaronga.
Wāhanga 5: Poutapeta - hono te pouara ki OpenDaylight
Te whakaurunga poutapeta
Hei whakauru, tango noa i te tono .
Te hono i te pouara ki ODL
Kia hanga tatou hoatu tono:

- aho ui:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01 - Tono tinana (ripa Tinana):
<node xmlns="urn:TBD:params:xml:ns:yang:network-topology"> <node-id>jun01</node-id> <host xmlns="urn:opendaylight:netconf-node-topology">172.17.0.2</host> <port xmlns="urn:opendaylight:netconf-node-topology">22</port> <username xmlns="urn:opendaylight:netconf-node-topology">vrnetlab</username> <password xmlns="urn:opendaylight:netconf-node-topology">VR-netlab9</password> <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only> <schema-cache-directory xmlns="urn:opendaylight:netconf-node-topology">jun01_cache</schema-cache-directory> </node> - I runga i te ripa Whakamana, me whakarite e koe te tawhā
Basic Authme te takiuru/kupuhipa: admin/admin. Me uru tenei ki te ODL:

- I te ripa Pane, me taapiri kia rua nga pane:
- Whakaaetia te tono/xml
- Ihirangi-Momo tono/xml
Kua puta ta matou tono. Ka tukuna e matou. Mena i tika te whirihora o nga mea katoa, me whakahoki te mana "201 Hanga":
![]()
He aha te mahi a tenei tono?
Ka hangahia e matou he pona ki roto ODL me nga tawhā o te tino pouara e hiahia ana matou ki te uru.
xmlns="urn:TBD:params:xml:ns:yang:network-topology"
xmlns="urn:opendaylight:netconf-node-topology"He waahi ingoa o roto enei XML (Mokowāingoa XML) mo ODL e ai ki te hanga i te kōpuku.
I tua atu, ia, ko te ingoa o te pouara kōpuku-id, wāhitau pouara - ope me te pera.
Ko te rarangi tino pai ko te mea whakamutunga. Raupapa-keteroki-whaiaronga ka hangaia he whaiaronga kei reira nga konae katoa e tikiakehia ana Kaupapa YANG pouara hono. Ka kitea e koe i roto $ODL_ROOT/cache/jun01_cache.
Te tirotiro i te hononga o te pouara
Kia hanga tatou GET tono:
- aho ui:
GET http://10.132.1.202:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/ - I runga i te ripa Whakamana, me whakarite e koe te tawhā
Basic Authme te takiuru/kupuhipa: admin/admin.
Ka tukuna e matou. Me whiwhi mana "200 OK" me te rarangi o nga mea katoa e tautokohia ana e te taputapu Kaupapa YANG:

kōrero: Ki te kite i te whakamutunga, i roto i toku take i tika ki te tatari mo te 10 meneti i muri i te mahi hoatutae noa ki te katoa Kaupapa YANG wetewete i runga ODL. Tae noa ki tenei wa, i te wa e mahi ana i tenei GET ka whakaatuhia e te patai enei e whai ake nei:

Mukua te pouara
Kia hanga tatou DELETE tono:
- aho ui:
DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01 - I runga i te ripa Whakamana, me whakarite e koe te tawhā
Basic Authme te takiuru/kupuhipa: admin/admin.
Wāhanga 6: Hurihia te whirihoranga pouara
Te tiki i te whirihoranga
Kia hanga tatou GET tono:
- aho ui:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/ - I runga i te ripa Whakamana, me whakarite e koe te tawhā
Basic Authme te takiuru/kupuhipa: admin/admin.
Ka tukuna e matou. Me whiwhi te mana "200 OK" me te whirihoranga pouara:

Waihangatia he whirihoranga
Hei tauira, me hanga e tatou te whirihoranga e whai ake nei ka whakarereketia:
protocols {
bgp {
disable;
shutdown;
}
}Kia hanga tatou POST tono:
- aho ui:
POST http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols - Tono tinana (ripa Tinana):
<bgp xmlns="http://yang.juniper.net/junos/conf/protocols"> <disable/> <shutdown> </shutdown> </bgp> - I runga i te ripa Whakamana, me whakarite e koe te tawhā
Basic Authme te takiuru/kupuhipa: admin/admin. - I te ripa Pane, me taapiri kia rua nga pane:
- Whakaaetia te tono/xml
- Ihirangi-Momo tono/xml
I muri i te tuku, me whiwhi ratou i te mana "204 No Content"
Hei taki kua huri te whirihoranga, ka taea e koe te whakamahi i te patai o mua. Engari hei tauira, ka hangaia e matou tetahi atu ka whakaatu i nga korero mo nga kawa kua whirihorahia ki te pouara.
Kia hanga tatou GET tono:
- aho ui:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols - I runga i te ripa Whakamana, me whakarite e koe te tawhā
Basic Authme te takiuru/kupuhipa: admin/admin.
I muri i te mahi i te tono, ka kite tatou i nga mea e whai ake nei:

Hurihia te whirihoranga
Me huri nga korero mo te kawa BGP. I muri i a maatau mahi, ka penei te ahua:
protocols {
bgp {
disable;
}
}Kia hanga tatou hoatu tono:
- aho ui:
PUT http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols - Tono tinana (ripa Tinana):
<protocols xmlns="http://yang.juniper.net/junos/conf/protocols"> <bgp> <disable/> </bgp> </protocols> - I runga i te ripa Whakamana, me whakarite e koe te tawhā
Basic Authme te takiuru/kupuhipa: admin/admin. - I te ripa Pane, me taapiri kia rua nga pane:
- Whakaaetia te tono/xml
- Ihirangi-Momo tono/xml
Ma te whakamahi i mua GET tono, ka kite tatou i nga huringa:

Mukua te whirihoranga
Kia hanga tatou DELETE tono:
- aho ui:
DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/jun01/yang-ext:mount/junos-conf-root:configuration/junos-conf-protocols:protocols - I runga i te ripa Whakamana, me whakarite e koe te tawhā
Basic Authme te takiuru/kupuhipa: admin/admin.
Ka karangahia GET tono me nga korero mo nga tikanga, ka kite tatou i enei e whai ake nei:

Tāpiri:
Hei whakarereke i te whirihoranga, kaore e tika kia tukuna te tinana tono ki te whakatakotoranga XML. Ka taea hoki tenei ma te whakatakotoranga JSON.
Hei mahi i tenei, hei tauira, i roto i te patai hoatu hei huri i te whirihoranga, whakakapihia te tinana tono ki:
{
"junos-conf-protocols:protocols": {
"bgp": {
"description" : "Changed in postman"
}
}
}Kaua e wareware ki te huri i nga pane o te ripa Pane ki:
- Whakaaetia te tono/json
- Ihirangi-Momo tono / json
I muri i te tukunga, ka whiwhi tatou i nga hua e whai ake nei (Ka tirohia te whakautu ma te whakamahi GET tono):

Wāhanga 7: Te taapiri i te Cisco xRV9000
He aha tatou katoa mo Juniper, ae Juniper? Me korero mo Cisco!
I kitea e ahau te xRV9000 putanga 7.0.2 (he kararehe e hiahia ana ki te 8Gb RAM me te 4 cores. Kaore i te waatea noa, no reira whakapā atu ) - me whakahaere.
Te whakahaere ipu
Ko te tukanga o te hanga ipu Docker kaore i rereke mai i te Juniper. Waihoki, ka tukuna e matou te konae .qcow2 me te pouara ki roto i te raarangi e rite ana ki tona ingoa (i tenei keehi, xrv9k) ka mahia te whakahau make docker-image.
I muri i etahi meneti, ka kite tatou kua hangaia te ahua:
ubuntu:~$ sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
vrnetlab/vr-xrv9k 7.0.2 54debc7973fc 4 hours ago 1.7GB
vrnetlab/vr-vmx 20.1R1.11 b1b2369b453c 4 weeks ago 4.43GB
debian stretch 614bb74b620e 7 weeks ago 101MBKa timata tatou i te ipu:
ubuntu:~$ sudo docker run -d --privileged --name xrv01 54debc7973fcI muri i etahi wa, ka titiro tatou kua timata te ipu:
ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
058c5ecddae3 54debc7973fc "/launch.py" 4 hours ago Up 4 hours (healthy) 22/tcp, 830/tcp, 5000-5003/tcp, 10000-10099/tcp, 161/udp xrv01Tūhono mā ssh:
ubuntu@ubuntu:~$ ssh vrnetlab@172.17.0.2
Password:
RP/0/RP0/CPU0:ios#show version
Mon Jul 6 12:19:28.036 UTC
Cisco IOS XR Software, Version 7.0.2
Copyright (c) 2013-2020 by Cisco Systems, Inc.
Build Information:
Built By : ahoang
Built On : Fri Mar 13 22:27:54 PDT 2020
Built Host : iox-ucs-029
Workspace : /auto/srcarchive15/prod/7.0.2/xrv9k/ws
Version : 7.0.2
Location : /opt/cisco/XR/packages/
Label : 7.0.2
cisco IOS-XRv 9000 () processor
System uptime is 3 hours 22 minutesTe hono i te pouara ki OpenDaylight
He rite tonu te taapiri ki te vMX. Me huri noa nga ingoa.
hoatu tono:

Karangahia i muri i etahi wa GET Uiui ki te tirotiro kei te hono nga mea katoa:

Hurihia te whirihoranga
Me whakarite e tatou te whirihoranga e whai ake nei:
!
router ospf LAB
mpls ldp auto-config
!Kia hanga tatou POST tono:
- aho ui:
POST http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/xrv01/yang-ext:mount/Cisco-IOS-XR-ipv4-ospf-cfg:ospf - Tono tinana (ripa Tinana):
{ "processes": { "process": [ { "process-name": "LAB", "default-vrf": { "process-scope": { "ldp-auto-config": [ null ] } } } ] } } - I runga i te ripa Whakamana, me whakarite e koe te tawhā
Basic Authme te takiuru/kupuhipa: admin/admin. - I te ripa Pane, me taapiri kia rua nga pane:
- Whakaaetia te tono/json
- Ihirangi-Momo tono / json
I muri i tana mahi, me whiwhi ratou i te mana "204 No Content".
Kia tirohia nga mea i riro mai.
Ki te mahi i tenei, ka hanga e matou GET tono:
- aho ui:
GET http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/xrv01/yang-ext:mount/Cisco-IOS-XR-ipv4-ospf-cfg:ospf - I runga i te ripa Whakamana, me whakarite e koe te tawhā
Basic Authme te takiuru/kupuhipa: admin/admin.
I muri i te mahi, me kite koe i nga mea e whai ake nei:

Hei tango i te whakamahi whirihoranga DELETE:
- aho ui:
DELETE http://10.132.1.202:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/xrv01/yang-ext:mount/Cisco-IOS-XR-ipv4-ospf-cfg:ospf - I runga i te ripa Whakamana, me whakarite e koe te tawhā
Basic Authme te takiuru/kupuhipa: admin/admin.
mutunga
I te katoa, kua kite pea koe, ko nga tikanga mo te hono atu ki a Cisco me Juniper ki OpenDaylight kaore i te rereke - ka tuwhera tenei i te whanuitanga mo te mahi auaha. Ka timata mai i te whakahaere whirihoranga o nga waahanga whatunga katoa ka mutu ki te hanga i o ake kaupapa here whatunga.
I roto i tenei akoranga, kua hoatu e ahau nga tauira ngawari o te pehea e taea ai e koe te taunekeneke me nga taputapu whatunga ma te whakamahi i te OpenDaylight. Karekau he feaa, ko nga patai mai i nga tauira i runga ake nei ka tino uaua ake ka whakarite i nga ratonga katoa me te paatoo o te kiore - he iti noa nga mea katoa ma to whakaaro *
Kia haere tonu ...
PS
Mena kua mohio kua mohio koe ki enei mea katoa, kua uru ranei, kua totohu ki roto i te wairua o ODL, katahi ahau ka tūtohu kia titiro ki te whakawhanake i nga tono mo te kaiwhakahaere ODL. Ka taea e koe te timata .
Nga whakamatautau angitu!
Nga korero
- /Brian Linkletter
- OpenDaylight Cookbook / Mathieu Lemay, Alexis de Talhouet, Et al
- Te Papatonotanga Whatunga me YANG / Benoît Claise, Loe Clarke, Jan Lindblad
- Ako XML, Putanga Tuarua / Erik T. Ray
- DevOps whai hua / Jennifer Davis, Ryn Daniels
Source: will.com

